Skip to content

Commit 2d83506

Browse files
authored
Merge pull request #37999 from theipster/macie-sdk-v2
Migrate `macie2` service to AWS SDK for Go v2
2 parents 0bed8e5 + 8526080 commit 2d83506

31 files changed

+930
-755
lines changed

docs/aws-go-sdk-migrations.md

+7-7
Original file line numberDiff line numberDiff line change
@@ -61,27 +61,27 @@ In each go source file with a V1 SDK import, the library should be replaced with
6161

6262
```go
6363
// Remove
64-
github.com/aws-sdk-go/service/<service>
64+
github.com/aws/aws-sdk-go/service/<service>
6565
```
6666

6767
```go
6868
// Add
69-
github.com/aws-sdk-go-v2/service/<service>
70-
awstypes github.com/aws-sdk-go-v2/service/<service>/types
69+
github.com/aws/aws-sdk-go-v2/service/<service>
70+
awstypes github.com/aws/aws-sdk-go-v2/service/<service>/types
7171
```
7272

7373
If the `aws` or `arn` packages are used, these should also be upgraded.
7474

7575
```
7676
// Remove
77-
github.com/aws-sdk-go/aws
78-
github.com/aws-sdk-go/aws/arn
77+
github.com/aws/aws-sdk-go/aws
78+
github.com/aws/aws-sdk-go/aws/arn
7979
```
8080

8181
```
8282
// Add
83-
github.com/aws-sdk-go-v2/aws
84-
github.com/aws-sdk-go-v2/aws/arn
83+
github.com/aws/aws-sdk-go-v2/aws
84+
github.com/aws/aws-sdk-go-v2/aws/arn
8585
```
8686

8787
## Client

go.mod

+1
Original file line numberDiff line numberDiff line change
@@ -153,6 +153,7 @@ require (
153153
github.com/aws/aws-sdk-go-v2/service/location v1.40.4
154154
github.com/aws/aws-sdk-go-v2/service/lookoutmetrics v1.29.4
155155
github.com/aws/aws-sdk-go-v2/service/m2 v1.15.4
156+
github.com/aws/aws-sdk-go-v2/service/macie2 v1.41.4
156157
github.com/aws/aws-sdk-go-v2/service/mediaconnect v1.32.1
157158
github.com/aws/aws-sdk-go-v2/service/mediaconvert v1.57.4
158159
github.com/aws/aws-sdk-go-v2/service/medialive v1.56.1

go.sum

+2
Original file line numberDiff line numberDiff line change
@@ -336,6 +336,8 @@ github.com/aws/aws-sdk-go-v2/service/lookoutmetrics v1.29.4 h1:/5v33qVCLvDyFAPnF
336336
github.com/aws/aws-sdk-go-v2/service/lookoutmetrics v1.29.4/go.mod h1:5urDGJAkBOW2EdWwqRyYDD+hCeFzVJRHLpw4uiofEUM=
337337
github.com/aws/aws-sdk-go-v2/service/m2 v1.15.4 h1:DTpdJEOUv0KDYwIra7mEbhUBOmjnMLsyLRVXlbGfupw=
338338
github.com/aws/aws-sdk-go-v2/service/m2 v1.15.4/go.mod h1:fZvkRkEuM134TYrlBAnvGnnNJgktI+lsqvMBVm0EZnY=
339+
github.com/aws/aws-sdk-go-v2/service/macie2 v1.41.4 h1:9AedML/OxIW4wgBp5fFcMR6rcpfumYjKG/us7bjX3BQ=
340+
github.com/aws/aws-sdk-go-v2/service/macie2 v1.41.4/go.mod h1:+M7r+IBjxp0/2Fl/8e8o/oRVse0m6cmfZ7pjV0gXYWI=
339341
github.com/aws/aws-sdk-go-v2/service/mediaconnect v1.32.1 h1:PYni+DLl+pbogWtsCSc03V1gRoxlF0HJyL3Ajw6ODtc=
340342
github.com/aws/aws-sdk-go-v2/service/mediaconnect v1.32.1/go.mod h1:/XSvJbNxkshCmWUz4ttx1p8CcChD57lpEfvpVXtCQTQ=
341343
github.com/aws/aws-sdk-go-v2/service/mediaconvert v1.57.4 h1:hBSknrr7iKWg2AMrCCQCxf4P80kKAEJ4WJf2GjJtM6o=

internal/conns/awsclient_gen.go

+3-3
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

internal/service/macie2/account.go

+41-38
Original file line numberDiff line numberDiff line change
@@ -8,43 +8,46 @@ import (
88
"log"
99
"time"
1010

11-
"github.com/aws/aws-sdk-go/aws"
12-
"github.com/aws/aws-sdk-go/service/macie2"
13-
"github.com/hashicorp/aws-sdk-go-base/v2/awsv1shim/v2/tfawserr"
11+
"github.com/aws/aws-sdk-go-v2/aws"
12+
"github.com/aws/aws-sdk-go-v2/service/macie2"
13+
awstypes "github.com/aws/aws-sdk-go-v2/service/macie2/types"
14+
"github.com/hashicorp/aws-sdk-go-base/v2/tfawserr"
1415
"github.com/hashicorp/terraform-plugin-sdk/v2/diag"
1516
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/id"
1617
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/retry"
1718
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
18-
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
1919
"github.com/hashicorp/terraform-provider-aws/internal/conns"
20+
"github.com/hashicorp/terraform-provider-aws/internal/enum"
21+
"github.com/hashicorp/terraform-provider-aws/internal/errs"
2022
"github.com/hashicorp/terraform-provider-aws/internal/errs/sdkdiag"
2123
"github.com/hashicorp/terraform-provider-aws/internal/tfresource"
2224
"github.com/hashicorp/terraform-provider-aws/names"
2325
)
2426

25-
// @SDKResource("aws_macie2_account")
26-
func ResourceAccount() *schema.Resource {
27+
// @SDKResource("aws_macie2_account", name="Account")
28+
func resourceAccount() *schema.Resource {
2729
return &schema.Resource{
2830
CreateWithoutTimeout: resourceAccountCreate,
2931
ReadWithoutTimeout: resourceAccountRead,
3032
UpdateWithoutTimeout: resourceAccountUpdate,
3133
DeleteWithoutTimeout: resourceAccountDelete,
34+
3235
Importer: &schema.ResourceImporter{
3336
StateContext: schema.ImportStatePassthroughContext,
3437
},
3538

3639
Schema: map[string]*schema.Schema{
3740
"finding_publishing_frequency": {
38-
Type: schema.TypeString,
39-
Optional: true,
40-
Computed: true,
41-
ValidateFunc: validation.StringInSlice(macie2.FindingPublishingFrequency_Values(), false),
41+
Type: schema.TypeString,
42+
Optional: true,
43+
Computed: true,
44+
ValidateDiagFunc: enum.Validate[awstypes.FindingPublishingFrequency](),
4245
},
4346
names.AttrStatus: {
44-
Type: schema.TypeString,
45-
Optional: true,
46-
Computed: true,
47-
ValidateFunc: validation.StringInSlice(macie2.MacieStatus_Values(), false),
47+
Type: schema.TypeString,
48+
Optional: true,
49+
Computed: true,
50+
ValidateDiagFunc: enum.Validate[awstypes.MacieStatus](),
4851
},
4952
names.AttrServiceRole: {
5053
Type: schema.TypeString,
@@ -65,23 +68,23 @@ func ResourceAccount() *schema.Resource {
6568
func resourceAccountCreate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
6669
var diags diag.Diagnostics
6770

68-
conn := meta.(*conns.AWSClient).Macie2Conn(ctx)
71+
conn := meta.(*conns.AWSClient).Macie2Client(ctx)
6972

7073
input := &macie2.EnableMacieInput{
7174
ClientToken: aws.String(id.UniqueId()),
7275
}
7376

7477
if v, ok := d.GetOk("finding_publishing_frequency"); ok {
75-
input.FindingPublishingFrequency = aws.String(v.(string))
78+
input.FindingPublishingFrequency = awstypes.FindingPublishingFrequency(v.(string))
7679
}
7780
if v, ok := d.GetOk(names.AttrStatus); ok {
78-
input.Status = aws.String(v.(string))
81+
input.Status = awstypes.MacieStatus(v.(string))
7982
}
8083

8184
err := retry.RetryContext(ctx, 4*time.Minute, func() *retry.RetryError {
82-
_, err := conn.EnableMacieWithContext(ctx, input)
85+
_, err := conn.EnableMacie(ctx, input)
8386
if err != nil {
84-
if tfawserr.ErrCodeEquals(err, macie2.ErrorCodeClientError) {
87+
if tfawserr.ErrCodeEquals(err, string(awstypes.ErrorCodeClientError)) {
8588
return retry.RetryableError(err)
8689
}
8790

@@ -92,7 +95,7 @@ func resourceAccountCreate(ctx context.Context, d *schema.ResourceData, meta int
9295
})
9396

9497
if tfresource.TimedOut(err) {
95-
_, err = conn.EnableMacieWithContext(ctx, input)
98+
_, err = conn.EnableMacie(ctx, input)
9699
}
97100

98101
if err != nil {
@@ -107,14 +110,14 @@ func resourceAccountCreate(ctx context.Context, d *schema.ResourceData, meta int
107110
func resourceAccountRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
108111
var diags diag.Diagnostics
109112

110-
conn := meta.(*conns.AWSClient).Macie2Conn(ctx)
113+
conn := meta.(*conns.AWSClient).Macie2Client(ctx)
111114

112115
input := &macie2.GetMacieSessionInput{}
113116

114-
resp, err := conn.GetMacieSessionWithContext(ctx, input)
117+
resp, err := conn.GetMacieSession(ctx, input)
115118

116-
if !d.IsNewResource() && (tfawserr.ErrCodeEquals(err, macie2.ErrCodeResourceNotFoundException) ||
117-
tfawserr.ErrMessageContains(err, macie2.ErrCodeAccessDeniedException, "Macie is not enabled")) {
119+
if !d.IsNewResource() && (errs.IsA[*awstypes.ResourceNotFoundException](err) ||
120+
errs.IsAErrorMessageContains[*awstypes.AccessDeniedException](err, "Macie is not enabled")) {
118121
log.Printf("[WARN] Macie not enabled for AWS account (%s), removing from state", d.Id())
119122
d.SetId("")
120123
return diags
@@ -127,28 +130,28 @@ func resourceAccountRead(ctx context.Context, d *schema.ResourceData, meta inter
127130
d.Set(names.AttrStatus, resp.Status)
128131
d.Set("finding_publishing_frequency", resp.FindingPublishingFrequency)
129132
d.Set(names.AttrServiceRole, resp.ServiceRole)
130-
d.Set(names.AttrCreatedAt, aws.TimeValue(resp.CreatedAt).Format(time.RFC3339))
131-
d.Set("updated_at", aws.TimeValue(resp.UpdatedAt).Format(time.RFC3339))
133+
d.Set(names.AttrCreatedAt, aws.ToTime(resp.CreatedAt).Format(time.RFC3339))
134+
d.Set("updated_at", aws.ToTime(resp.UpdatedAt).Format(time.RFC3339))
132135

133136
return diags
134137
}
135138

136139
func resourceAccountUpdate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
137140
var diags diag.Diagnostics
138141

139-
conn := meta.(*conns.AWSClient).Macie2Conn(ctx)
142+
conn := meta.(*conns.AWSClient).Macie2Client(ctx)
140143

141144
input := &macie2.UpdateMacieSessionInput{}
142145

143146
if d.HasChange("finding_publishing_frequency") {
144-
input.FindingPublishingFrequency = aws.String(d.Get("finding_publishing_frequency").(string))
147+
input.FindingPublishingFrequency = awstypes.FindingPublishingFrequency(d.Get("finding_publishing_frequency").(string))
145148
}
146149

147150
if d.HasChange(names.AttrStatus) {
148-
input.Status = aws.String(d.Get(names.AttrStatus).(string))
151+
input.Status = awstypes.MacieStatus(d.Get(names.AttrStatus).(string))
149152
}
150153

151-
_, err := conn.UpdateMacieSessionWithContext(ctx, input)
154+
_, err := conn.UpdateMacieSession(ctx, input)
152155
if err != nil {
153156
return sdkdiag.AppendErrorf(diags, "updating Macie Account (%s): %s", d.Id(), err)
154157
}
@@ -159,20 +162,20 @@ func resourceAccountUpdate(ctx context.Context, d *schema.ResourceData, meta int
159162
func resourceAccountDelete(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
160163
var diags diag.Diagnostics
161164

162-
conn := meta.(*conns.AWSClient).Macie2Conn(ctx)
165+
conn := meta.(*conns.AWSClient).Macie2Client(ctx)
163166

164167
input := &macie2.DisableMacieInput{}
165168

166169
err := retry.RetryContext(ctx, 4*time.Minute, func() *retry.RetryError {
167-
_, err := conn.DisableMacieWithContext(ctx, input)
170+
_, err := conn.DisableMacie(ctx, input)
168171

169-
if tfawserr.ErrMessageContains(err, macie2.ErrCodeConflictException, "Cannot disable Macie while associated with an administrator account") {
172+
if errs.IsAErrorMessageContains[*awstypes.ConflictException](err, "Cannot disable Macie while associated with an administrator account") {
170173
return retry.RetryableError(err)
171174
}
172175

173176
if err != nil {
174-
if tfawserr.ErrCodeEquals(err, macie2.ErrCodeResourceNotFoundException) ||
175-
tfawserr.ErrMessageContains(err, macie2.ErrCodeAccessDeniedException, "Macie is not enabled") {
177+
if errs.IsA[*awstypes.ResourceNotFoundException](err) ||
178+
errs.IsAErrorMessageContains[*awstypes.AccessDeniedException](err, "Macie is not enabled") {
176179
return nil
177180
}
178181
return retry.NonRetryableError(err)
@@ -182,12 +185,12 @@ func resourceAccountDelete(ctx context.Context, d *schema.ResourceData, meta int
182185
})
183186

184187
if tfresource.TimedOut(err) {
185-
_, err = conn.DisableMacieWithContext(ctx, input)
188+
_, err = conn.DisableMacie(ctx, input)
186189
}
187190

188191
if err != nil {
189-
if tfawserr.ErrCodeEquals(err, macie2.ErrCodeResourceNotFoundException) ||
190-
tfawserr.ErrMessageContains(err, macie2.ErrCodeAccessDeniedException, "Macie is not enabled") {
192+
if errs.IsA[*awstypes.ResourceNotFoundException](err) ||
193+
errs.IsAErrorMessageContains[*awstypes.AccessDeniedException](err, "Macie is not enabled") {
191194
return diags
192195
}
193196
return sdkdiag.AppendErrorf(diags, "disabling Macie Account (%s): %s", d.Id(), err)

0 commit comments

Comments
 (0)