Skip to content

Commit 5abfb89

Browse files
authored
Merge pull request #33304 from hashicorp/f-s3-aws-sdk-v2
s3: Enable use of AWS SDK for Go v2
2 parents 2ee2262 + 1fb7ac9 commit 5abfb89

14 files changed

+321
-344
lines changed

.changelog/#####.txt

+11
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
```release-note:enhancement
2+
data-source/aws_s3_objects: Add `request_payer` argument and `request_charged` attribute
3+
```
4+
5+
```release-note:enhancement
6+
data-source/aws_s3_objects: Add plan-time validation of `encoding_type`
7+
```
8+
9+
```release-note:bug
10+
data-source/aws_s3_objects: Respect configured `max_keys` value if it's greater than `1000`
11+
```

go.mod

+4
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ require (
5252
github.com/aws/aws-sdk-go-v2/service/resourceexplorer2 v1.3.5
5353
github.com/aws/aws-sdk-go-v2/service/rolesanywhere v1.3.5
5454
github.com/aws/aws-sdk-go-v2/service/route53domains v1.17.3
55+
github.com/aws/aws-sdk-go-v2/service/s3 v1.38.5
5556
github.com/aws/aws-sdk-go-v2/service/s3control v1.33.0
5657
github.com/aws/aws-sdk-go-v2/service/scheduler v1.2.5
5758
github.com/aws/aws-sdk-go-v2/service/securitylake v1.7.0
@@ -117,7 +118,10 @@ require (
117118
github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.41 // indirect
118119
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.35 // indirect
119120
github.com/aws/aws-sdk-go-v2/internal/ini v1.3.39 // indirect
121+
github.com/aws/aws-sdk-go-v2/internal/v4a v1.1.4 // indirect
120122
github.com/aws/aws-sdk-go-v2/service/iam v1.22.5 // indirect
123+
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.9.14 // indirect
124+
github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.1.36 // indirect
121125
github.com/aws/aws-sdk-go-v2/service/internal/endpoint-discovery v1.7.35 // indirect
122126
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.35 // indirect
123127
github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.15.4 // indirect

go.sum

+8
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,8 @@ github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.35 h1:SijA0mgjV8E+8G45lt
4444
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.35/go.mod h1:SJC1nEVVva1g3pHAIdCp7QsRIkMmLAgoDquQ9Rr8kYw=
4545
github.com/aws/aws-sdk-go-v2/internal/ini v1.3.39 h1:fc0ukRAiP1syoSGZYu+DaE+FulSYhTiJ8WpVu5jElU4=
4646
github.com/aws/aws-sdk-go-v2/internal/ini v1.3.39/go.mod h1:WLAW8PT7+JhjZfLSWe7WEJaJu0GNo0cKc2Zyo003RBs=
47+
github.com/aws/aws-sdk-go-v2/internal/v4a v1.1.4 h1:6lJvvkQ9HmbHZ4h/IEwclwv2mrTW8Uq1SOB/kXy0mfw=
48+
github.com/aws/aws-sdk-go-v2/internal/v4a v1.1.4/go.mod h1:1PrKYwxTM+zjpw9Y41KFtoJCQrJ34Z47Y4VgVbfndjo=
4749
github.com/aws/aws-sdk-go-v2/service/accessanalyzer v1.20.5 h1:1w0ELQMC3AptxEFS4A+vJuhyIuC9IoNN2YxNKK5pSYQ=
4850
github.com/aws/aws-sdk-go-v2/service/accessanalyzer v1.20.5/go.mod h1:zwKhX2c7u7XDz2ToVE+qunfyoy9+3AO0rZynN5TwXCc=
4951
github.com/aws/aws-sdk-go-v2/service/account v1.11.5 h1:UX7HDdPZwTmrr1zu1j8e9QNINZS2YSJ+DoxhnnPyJY8=
@@ -92,6 +94,10 @@ github.com/aws/aws-sdk-go-v2/service/identitystore v1.17.6 h1:1+CSnP3TCGEnv6D12I
9294
github.com/aws/aws-sdk-go-v2/service/identitystore v1.17.6/go.mod h1:uP4598oNnSTY5AClqIoK6QHQnwz7cuRS8CBkVMXuxOU=
9395
github.com/aws/aws-sdk-go-v2/service/inspector2 v1.16.6 h1:HhLDyWzcq1QAQM9/D6r49CA1NX7mSuE77XruZ/GM0tI=
9496
github.com/aws/aws-sdk-go-v2/service/inspector2 v1.16.6/go.mod h1:ZThso1NAB0Pt7ZHiE8QjGxZsdSq3yE3IHTO8DSsIj0Y=
97+
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.9.14 h1:m0QTSI6pZYJTk5WSKx3fm5cNW/DCicVzULBgU/6IyD0=
98+
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.9.14/go.mod h1:dDilntgHy9WnHXsh7dDtUPgHKEfTJIBUTHM8OWm0f/0=
99+
github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.1.36 h1:eev2yZX7esGRjqRbnVk1UxMLw4CyVZDpZXRCcy75oQk=
100+
github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.1.36/go.mod h1:lGnOkH9NJATw0XEPcAknFBj3zzNTEGRHtSw+CwC1YTg=
95101
github.com/aws/aws-sdk-go-v2/service/internal/endpoint-discovery v1.7.35 h1:UKjpIDLVF90RfV88XurdduMoTxPqtGHZMIDYZQM7RO4=
96102
github.com/aws/aws-sdk-go-v2/service/internal/endpoint-discovery v1.7.35/go.mod h1:B3dUg0V6eJesUTi+m27NUkj7n8hdDKYUpxj8f4+TqaQ=
97103
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.32/go.mod h1:4jwAWKEkCR0anWk5+1RbfSg1R5Gzld7NLiuaq5bTR/Y=
@@ -141,6 +147,8 @@ github.com/aws/aws-sdk-go-v2/service/rolesanywhere v1.3.5 h1:tfmJZFDrma1cgraLRuE
141147
github.com/aws/aws-sdk-go-v2/service/rolesanywhere v1.3.5/go.mod h1:vXPkNV5GGPdMjRRNzO45nX3qsNTgB5lP19Tk4Go30xQ=
142148
github.com/aws/aws-sdk-go-v2/service/route53domains v1.17.3 h1:aaHlZb06fyEQ3uqEVJiN3hLt8syCzX+tWZiz40S4c0Y=
143149
github.com/aws/aws-sdk-go-v2/service/route53domains v1.17.3/go.mod h1:SK+5R1cYgVgSfBGi9T/gPGNIuLInF3eIRYNruia62rg=
150+
github.com/aws/aws-sdk-go-v2/service/s3 v1.38.5 h1:A42xdtStObqy7NGvzZKpnyNXvoOmm+FENobZ0/ssHWk=
151+
github.com/aws/aws-sdk-go-v2/service/s3 v1.38.5/go.mod h1:rDGMZA7f4pbmTtPOk5v5UM2lmX6UAbRnMDJeDvnH7AM=
144152
github.com/aws/aws-sdk-go-v2/service/s3control v1.33.0 h1:f4qHghGTcns4L4F7u8AHH6pcVLwgtTMNkNZeRJZ5xlA=
145153
github.com/aws/aws-sdk-go-v2/service/s3control v1.33.0/go.mod h1:YSdqo9knBVm5H3JVmWDhx9Wts9828nColUJzL3OKXDk=
146154
github.com/aws/aws-sdk-go-v2/service/scheduler v1.2.5 h1:AGRPn7Hef59Eb9zfXjf6MGn0xRPpO73dIV8u8pfo5Z8=

internal/conns/awsclient_gen.go

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

internal/service/s3/bucket_objects_data_source_test.go

-8
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,6 @@ func TestAccS3BucketObjectsDataSource_basic(t *testing.T) {
3434
{
3535
Config: testAccBucketObjectsDataSourceConfig_basic(rInt),
3636
Check: resource.ComposeTestCheckFunc(
37-
testAccCheckObjectsExistsDataSource("data.aws_s3_objects.yesh"),
3837
resource.TestCheckResourceAttr("data.aws_s3_objects.yesh", "keys.#", "2"),
3938
resource.TestCheckResourceAttr("data.aws_s3_objects.yesh", "keys.0", "arch/navajo/north_window"),
4039
resource.TestCheckResourceAttr("data.aws_s3_objects.yesh", "keys.1", "arch/navajo/sand_dune"),
@@ -61,7 +60,6 @@ func TestAccS3BucketObjectsDataSource_basicViaAccessPoint(t *testing.T) {
6160
{
6261
Config: testAccBucketObjectsDataSourceConfig_basicViaAccessPoint(rInt),
6362
Check: resource.ComposeTestCheckFunc(
64-
testAccCheckObjectsExistsDataSource("data.aws_s3_objects.yesh"),
6563
resource.TestCheckResourceAttr("data.aws_s3_objects.yesh", "keys.#", "2"),
6664
resource.TestCheckResourceAttr("data.aws_s3_objects.yesh", "keys.0", "arch/navajo/north_window"),
6765
resource.TestCheckResourceAttr("data.aws_s3_objects.yesh", "keys.1", "arch/navajo/sand_dune"),
@@ -88,7 +86,6 @@ func TestAccS3BucketObjectsDataSource_all(t *testing.T) {
8886
{
8987
Config: testAccBucketObjectsDataSourceConfig_all(rInt),
9088
Check: resource.ComposeTestCheckFunc(
91-
testAccCheckObjectsExistsDataSource("data.aws_s3_objects.yesh"),
9289
resource.TestCheckResourceAttr("data.aws_s3_objects.yesh", "keys.#", "7"),
9390
resource.TestCheckResourceAttr("data.aws_s3_objects.yesh", "keys.0", "arch/courthouse_towers/landscape"),
9491
resource.TestCheckResourceAttr("data.aws_s3_objects.yesh", "keys.1", "arch/navajo/north_window"),
@@ -120,7 +117,6 @@ func TestAccS3BucketObjectsDataSource_prefixes(t *testing.T) {
120117
{
121118
Config: testAccBucketObjectsDataSourceConfig_prefixes(rInt),
122119
Check: resource.ComposeTestCheckFunc(
123-
testAccCheckObjectsExistsDataSource("data.aws_s3_objects.yesh"),
124120
resource.TestCheckResourceAttr("data.aws_s3_objects.yesh", "keys.#", "1"),
125121
resource.TestCheckResourceAttr("data.aws_s3_objects.yesh", "keys.0", "arch/rubicon"),
126122
resource.TestCheckResourceAttr("data.aws_s3_objects.yesh", "common_prefixes.#", "4"),
@@ -151,7 +147,6 @@ func TestAccS3BucketObjectsDataSource_encoded(t *testing.T) {
151147
{
152148
Config: testAccBucketObjectsDataSourceConfig_encoded(rInt),
153149
Check: resource.ComposeTestCheckFunc(
154-
testAccCheckObjectsExistsDataSource("data.aws_s3_objects.yesh"),
155150
resource.TestCheckResourceAttr("data.aws_s3_objects.yesh", "keys.#", "2"),
156151
resource.TestCheckResourceAttr("data.aws_s3_objects.yesh", "keys.0", "arch/ru+b+ic+on"),
157152
resource.TestCheckResourceAttr("data.aws_s3_objects.yesh", "keys.1", "arch/rubicon"),
@@ -178,7 +173,6 @@ func TestAccS3BucketObjectsDataSource_maxKeys(t *testing.T) {
178173
{
179174
Config: testAccBucketObjectsDataSourceConfig_maxKeys(rInt),
180175
Check: resource.ComposeTestCheckFunc(
181-
testAccCheckObjectsExistsDataSource("data.aws_s3_objects.yesh"),
182176
resource.TestCheckResourceAttr("data.aws_s3_objects.yesh", "keys.#", "2"),
183177
resource.TestCheckResourceAttr("data.aws_s3_objects.yesh", "keys.0", "arch/courthouse_towers/landscape"),
184178
resource.TestCheckResourceAttr("data.aws_s3_objects.yesh", "keys.1", "arch/navajo/north_window"),
@@ -205,7 +199,6 @@ func TestAccS3BucketObjectsDataSource_startAfter(t *testing.T) {
205199
{
206200
Config: testAccBucketObjectsDataSourceConfig_startAfter(rInt),
207201
Check: resource.ComposeTestCheckFunc(
208-
testAccCheckObjectsExistsDataSource("data.aws_s3_objects.yesh"),
209202
resource.TestCheckResourceAttr("data.aws_s3_objects.yesh", "keys.#", "1"),
210203
resource.TestCheckResourceAttr("data.aws_s3_objects.yesh", "keys.0", "arch/three_gossips/turret"),
211204
),
@@ -231,7 +224,6 @@ func TestAccS3BucketObjectsDataSource_fetchOwner(t *testing.T) {
231224
{
232225
Config: testAccBucketObjectsDataSourceConfig_owners(rInt),
233226
Check: resource.ComposeTestCheckFunc(
234-
testAccCheckObjectsExistsDataSource("data.aws_s3_objects.yesh"),
235227
resource.TestCheckResourceAttr("data.aws_s3_objects.yesh", "keys.#", "2"),
236228
resource.TestCheckResourceAttr("data.aws_s3_objects.yesh", "owners.#", "2"),
237229
),

internal/service/s3/canonical_user_id_data_source.go

+10-12
Original file line numberDiff line numberDiff line change
@@ -5,18 +5,17 @@ package s3
55

66
import (
77
"context"
8-
"log"
98

10-
"github.com/aws/aws-sdk-go/aws"
11-
"github.com/aws/aws-sdk-go/service/s3"
9+
"github.com/aws/aws-sdk-go-v2/aws"
10+
"github.com/aws/aws-sdk-go-v2/service/s3"
1211
"github.com/hashicorp/terraform-plugin-sdk/v2/diag"
1312
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
1413
"github.com/hashicorp/terraform-provider-aws/internal/conns"
1514
"github.com/hashicorp/terraform-provider-aws/internal/errs/sdkdiag"
1615
)
1716

1817
// @SDKDataSource("aws_canonical_user_id")
19-
func DataSourceCanonicalUserID() *schema.Resource {
18+
func dataSourceCanonicalUserID() *schema.Resource {
2019
return &schema.Resource{
2120
ReadWithoutTimeout: dataSourceCanonicalUserIDRead,
2221

@@ -31,21 +30,20 @@ func DataSourceCanonicalUserID() *schema.Resource {
3130

3231
func dataSourceCanonicalUserIDRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
3332
var diags diag.Diagnostics
34-
conn := meta.(*conns.AWSClient).S3Conn(ctx)
33+
conn := meta.(*conns.AWSClient).S3Client(ctx)
3534

36-
log.Printf("[DEBUG] Reading S3 Buckets")
35+
output, err := conn.ListBuckets(ctx, &s3.ListBucketsInput{})
3736

38-
req := &s3.ListBucketsInput{}
39-
resp, err := conn.ListBucketsWithContext(ctx, req)
4037
if err != nil {
4138
return sdkdiag.AppendErrorf(diags, "listing S3 Buckets: %s", err)
4239
}
43-
if resp == nil || resp.Owner == nil {
44-
return sdkdiag.AppendErrorf(diags, "no canonical user ID found")
40+
41+
if output == nil || output.Owner == nil {
42+
return sdkdiag.AppendErrorf(diags, "S3 Canonical User ID not found")
4543
}
4644

47-
d.SetId(aws.StringValue(resp.Owner.ID))
48-
d.Set("display_name", resp.Owner.DisplayName)
45+
d.SetId(aws.ToString(output.Owner.ID))
46+
d.Set("display_name", output.Owner.DisplayName)
4947

5048
return diags
5149
}

internal/service/s3/canonical_user_id_data_source_test.go

+8-25
Original file line numberDiff line numberDiff line change
@@ -4,50 +4,33 @@
44
package s3_test
55

66
import (
7-
"fmt"
87
"testing"
98

10-
"github.com/aws/aws-sdk-go/service/s3"
119
"github.com/hashicorp/terraform-plugin-testing/helper/resource"
12-
"github.com/hashicorp/terraform-plugin-testing/terraform"
1310
"github.com/hashicorp/terraform-provider-aws/internal/acctest"
11+
"github.com/hashicorp/terraform-provider-aws/names"
1412
)
1513

1614
func TestAccS3CanonicalUserIDDataSource_basic(t *testing.T) {
1715
ctx := acctest.Context(t)
16+
dataSourceName := "data.aws_canonical_user_id.test"
17+
1818
resource.ParallelTest(t, resource.TestCase{
1919
PreCheck: func() { acctest.PreCheck(ctx, t) },
20-
ErrorCheck: acctest.ErrorCheck(t, s3.EndpointsID),
20+
ErrorCheck: acctest.ErrorCheck(t, names.S3EndpointID),
2121
ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories,
2222
Steps: []resource.TestStep{
2323
{
2424
Config: testAccCanonicalUserIDDataSourceConfig_basic,
25-
Check: resource.ComposeTestCheckFunc(
26-
testAccCanonicalUserIdCheckExistsDataSource("data.aws_canonical_user_id.current"),
25+
Check: resource.ComposeAggregateTestCheckFunc(
26+
resource.TestCheckResourceAttrSet(dataSourceName, "display_name"),
27+
resource.TestCheckResourceAttrSet(dataSourceName, "id"),
2728
),
2829
},
2930
},
3031
})
3132
}
3233

33-
func testAccCanonicalUserIdCheckExistsDataSource(name string) resource.TestCheckFunc {
34-
return func(s *terraform.State) error {
35-
rs, ok := s.RootModule().Resources[name]
36-
if !ok {
37-
return fmt.Errorf("Can't find Canonical User ID resource: %s", name)
38-
}
39-
40-
if rs.Primary.Attributes["id"] == "" {
41-
return fmt.Errorf("Missing Canonical User ID")
42-
}
43-
if rs.Primary.Attributes["display_name"] == "" {
44-
return fmt.Errorf("Missing Display Name")
45-
}
46-
47-
return nil
48-
}
49-
}
50-
5134
const testAccCanonicalUserIDDataSourceConfig_basic = `
52-
data "aws_canonical_user_id" "current" {}
35+
data "aws_canonical_user_id" "test" {}
5336
`

0 commit comments

Comments
 (0)