Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

names.GlobalRegionID -> endpoints.AwsGlobalRegionID #40339

Merged
merged 42 commits into from
Dec 3, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
42 commits
Select commit Hold shift + click to select a range
e9dbbd7
'names.GlobalRegionID' -> 'endpoints.AwsGlobalRegionID'.
ewbankkit Nov 28, 2024
705ad76
Correct S3 object tagging via S3 access point in 'us-east-1'.
ewbankkit Nov 28, 2024
ff91be8
Slight correction.
ewbankkit Nov 28, 2024
7d93756
Fix 'TestAccS3ObjectCopy_basicViaAccessPoint'.
ewbankkit Dec 2, 2024
4c2b8ab
Fix 'TestAccS3ObjectCopy_directoryBucket'.
ewbankkit Dec 2, 2024
9c76f65
Merge branch 'main' into td-names-use-endpoints-aws-global-region
ewbankkit Dec 2, 2024
4a5139f
Add 'TestBucketNameTypeFor'.
ewbankkit Dec 2, 2024
988b345
Fix 'bucketNameTypeFor'.
ewbankkit Dec 2, 2024
5fe03df
bucketNameTypeFor: Add support for S3 on Outposts access points (ARN …
ewbankkit Dec 2, 2024
2e9883a
r/aws_s3_directory_bucket: Add support for Amazon S3 Express One Zone…
ewbankkit Dec 2, 2024
5f676c2
Fix providerlint 'AWSAT003' and 'AWSAT005'.
ewbankkit Dec 2, 2024
02ee6d0
Merge branch 'main' into td-names-use-endpoints-aws-global-region
ewbankkit Dec 2, 2024
ea815b1
Fix 'TestAccS3BucketServerSideEncryptionConfiguration_directoryBucket…
ewbankkit Dec 3, 2024
7d76955
Fix listing tags for directory buckets (and objects) in 'us-east-1'.
ewbankkit Dec 3, 2024
1a94842
Skip errors like 'AccessDenied: User: ... is not authorized to perfor…
ewbankkit Dec 3, 2024
d3a6ea1
r/aws_s3_bucket_accelerate_configuration: Handle directory buckets co…
ewbankkit Dec 3, 2024
e14fb50
r/aws_s3_bucket_acl: Handle directory buckets correctly.
ewbankkit Dec 3, 2024
38a5920
r/aws_s3_bucket_analytics_configuration: Handle directory buckets cor…
ewbankkit Dec 3, 2024
876823c
r/aws_s3_bucket_cors_configuration: Handle directory buckets correctly.
ewbankkit Dec 3, 2024
3a4cd8a
r/aws_s3_bucket_intelligent_tiering_configuration: Handle directory b…
ewbankkit Dec 3, 2024
f07201b
r/aws_s3_bucket_inventory: Handle directory buckets correctly.
ewbankkit Dec 3, 2024
0be0fab
r/aws_s3_bucket_lifecycle_configuration: Handle directory buckets cor…
ewbankkit Dec 3, 2024
708c9c3
r/aws_s3_bucket_logging: Handle directory buckets correctly.
ewbankkit Dec 3, 2024
81d04f4
r/aws_s3_bucket_metric: Handle directory buckets correctly.
ewbankkit Dec 3, 2024
b330bba
r/aws_s3_bucket_notification: Handle directory buckets correctly.
ewbankkit Dec 3, 2024
603d1a9
r/aws_s3_bucket_ownership_controls: Handle directory buckets correctly.
ewbankkit Dec 3, 2024
14de648
r/aws_s3_bucket_policy: Handle directory buckets correctly.
ewbankkit Dec 3, 2024
e9ace3a
d/aws_s3_bucket_policy: Handle directory buckets correctly.
ewbankkit Dec 3, 2024
4376738
r/aws_s3_bucket_public_access_block: Handle directory buckets correctly.
ewbankkit Dec 3, 2024
945eb8e
r/aws_s3_bucket_replication_configuration: Handle directory buckets c…
ewbankkit Dec 3, 2024
f2899e9
r/aws_s3_bucket_request_payment_configuration: Handle directory bucke…
ewbankkit Dec 3, 2024
60b572e
r/aws_s3_bucket_versioning: Handle directory buckets correctly.
ewbankkit Dec 3, 2024
b12581c
r/aws_s3_bucket_website_configuration: Handle directory buckets corre…
ewbankkit Dec 3, 2024
9cb8505
Cosmetics.
ewbankkit Dec 3, 2024
6d9be5a
Merge branch 'main' into td-names-use-endpoints-aws-global-region
ewbankkit Dec 3, 2024
f8bc98d
Fix golangci-lint 'ineffassign'.
ewbankkit Dec 3, 2024
0e004a0
Fix golangci-lint 'whitespace'.
ewbankkit Dec 3, 2024
05a290b
r/aws_s3_bucket_notification: Handle empty read result as NotFound.
ewbankkit Dec 3, 2024
d4f89b3
TestAccS3BucketObjectDataSource_basicViaAccessPoint: Don't test in 'u…
ewbankkit Dec 3, 2024
751e144
r/aws_s3_bucket_object_lock_configuration: Handle directory buckets c…
ewbankkit Dec 3, 2024
f188dcc
TestAccS3BucketObject_updatesWithVersioningViaAccessPoint: Don't test…
ewbankkit Dec 3, 2024
1c4cf00
Fix 'TestAccS3Object_crossRegion' in 'us-east-1'.
ewbankkit Dec 3, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .changelog/40339.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
```release-note:enhancement
resource/aws_s3_directory_bucket: Support `LocalZone` as a valid value for `location.type`, enabling support for [Amazon S3 Express One Zone in AWS Dedicated Local Zones](https://docs.aws.amazon.com/AmazonS3/latest/userguide/directory-bucket-data-residency.html)
```
1 change: 1 addition & 0 deletions internal/conns/awsclient.go
Original file line number Diff line number Diff line change
Expand Up @@ -137,6 +137,7 @@ func (c *AWSClient) S3ExpressClient(ctx context.Context) *s3.Client {

if c.s3ExpressClient == nil {
if s3Client.Options().Region == endpoints.AwsGlobalRegionID {
// No global endpoint for S3 Express.
c.s3ExpressClient = errs.Must(client[*s3.Client](ctx, c, names.S3, map[string]any{
"s3_us_east_1_regional_endpoint": "regional",
}))
Expand Down
15 changes: 15 additions & 0 deletions internal/service/s3/bucket_accelerate_configuration.go
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,9 @@ func resourceBucketAccelerateConfigurationCreate(ctx context.Context, d *schema.
conn := meta.(*conns.AWSClient).S3Client(ctx)

bucket := d.Get(names.AttrBucket).(string)
if isDirectoryBucket(bucket) {
conn = meta.(*conns.AWSClient).S3ExpressClient(ctx)
}
ewbankkit marked this conversation as resolved.
Show resolved Hide resolved
expectedBucketOwner := d.Get(names.AttrExpectedBucketOwner).(string)
input := &s3.PutBucketAccelerateConfigurationInput{
Bucket: aws.String(bucket),
Expand Down Expand Up @@ -107,6 +110,10 @@ func resourceBucketAccelerateConfigurationRead(ctx context.Context, d *schema.Re
return sdkdiag.AppendFromErr(diags, err)
}

if isDirectoryBucket(bucket) {
conn = meta.(*conns.AWSClient).S3ExpressClient(ctx)
}

output, err := findBucketAccelerateConfiguration(ctx, conn, bucket, expectedBucketOwner)

if !d.IsNewResource() && tfresource.NotFound(err) {
Expand Down Expand Up @@ -135,6 +142,10 @@ func resourceBucketAccelerateConfigurationUpdate(ctx context.Context, d *schema.
return sdkdiag.AppendFromErr(diags, err)
}

if isDirectoryBucket(bucket) {
conn = meta.(*conns.AWSClient).S3ExpressClient(ctx)
}

input := &s3.PutBucketAccelerateConfigurationInput{
Bucket: aws.String(bucket),
AccelerateConfiguration: &types.AccelerateConfiguration{
Expand Down Expand Up @@ -163,6 +174,10 @@ func resourceBucketAccelerateConfigurationDelete(ctx context.Context, d *schema.
return sdkdiag.AppendFromErr(diags, err)
}

if isDirectoryBucket(bucket) {
conn = meta.(*conns.AWSClient).S3ExpressClient(ctx)
}

input := &s3.PutBucketAccelerateConfigurationInput{
Bucket: aws.String(bucket),
AccelerateConfiguration: &types.AccelerateConfiguration{
Expand Down
12 changes: 10 additions & 2 deletions internal/service/s3/bucket_accelerate_configuration_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -189,9 +189,9 @@ func TestAccS3BucketAccelerateConfiguration_directoryBucket(t *testing.T) {

func testAccCheckBucketAccelerateConfigurationDestroy(ctx context.Context) resource.TestCheckFunc {
return func(s *terraform.State) error {
conn := acctest.Provider.Meta().(*conns.AWSClient).S3Client(ctx)

for _, rs := range s.RootModule().Resources {
conn := acctest.Provider.Meta().(*conns.AWSClient).S3Client(ctx)

if rs.Type != "aws_s3_bucket_accelerate_configuration" {
continue
}
Expand All @@ -201,6 +201,10 @@ func testAccCheckBucketAccelerateConfigurationDestroy(ctx context.Context) resou
return err
}

if tfs3.IsDirectoryBucket(bucket) {
conn = acctest.Provider.Meta().(*conns.AWSClient).S3ExpressClient(ctx)
}

_, err = tfs3.FindBucketAccelerateConfiguration(ctx, conn, bucket, expectedBucketOwner)

if tfresource.NotFound(err) {
Expand Down Expand Up @@ -232,6 +236,10 @@ func testAccCheckBucketAccelerateConfigurationExists(ctx context.Context, n stri
return err
}

if tfs3.IsDirectoryBucket(bucket) {
conn = acctest.Provider.Meta().(*conns.AWSClient).S3ExpressClient(ctx)
}

_, err = tfs3.FindBucketAccelerateConfiguration(ctx, conn, bucket, expectedBucketOwner)

return err
Expand Down
11 changes: 11 additions & 0 deletions internal/service/s3/bucket_acl.go
Original file line number Diff line number Diff line change
Expand Up @@ -153,6 +153,9 @@ func resourceBucketACLCreate(ctx context.Context, d *schema.ResourceData, meta i
conn := meta.(*conns.AWSClient).S3Client(ctx)

bucket := d.Get(names.AttrBucket).(string)
if isDirectoryBucket(bucket) {
conn = meta.(*conns.AWSClient).S3ExpressClient(ctx)
}
expectedBucketOwner := d.Get(names.AttrExpectedBucketOwner).(string)
acl := d.Get("acl").(string)
input := &s3.PutBucketAclInput{
Expand Down Expand Up @@ -203,6 +206,10 @@ func resourceBucketACLRead(ctx context.Context, d *schema.ResourceData, meta int
return sdkdiag.AppendFromErr(diags, err)
}

if isDirectoryBucket(bucket) {
conn = meta.(*conns.AWSClient).S3ExpressClient(ctx)
}

bucketACL, err := findBucketACL(ctx, conn, bucket, expectedBucketOwner)

if !d.IsNewResource() && tfresource.NotFound(err) {
Expand Down Expand Up @@ -234,6 +241,10 @@ func resourceBucketACLUpdate(ctx context.Context, d *schema.ResourceData, meta i
return sdkdiag.AppendFromErr(diags, err)
}

if isDirectoryBucket(bucket) {
conn = meta.(*conns.AWSClient).S3ExpressClient(ctx)
}

input := &s3.PutBucketAclInput{
Bucket: aws.String(bucket),
}
Expand Down
3 changes: 3 additions & 0 deletions internal/service/s3/bucket_acl_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -653,6 +653,9 @@ func testAccCheckBucketACLExists(ctx context.Context, n string) resource.TestChe
}

conn := acctest.Provider.Meta().(*conns.AWSClient).S3Client(ctx)
if tfs3.IsDirectoryBucket(bucket) {
conn = acctest.Provider.Meta().(*conns.AWSClient).S3ExpressClient(ctx)
}

_, err = tfs3.FindBucketACL(ctx, conn, bucket, expectedBucketOwner)

Expand Down
11 changes: 11 additions & 0 deletions internal/service/s3/bucket_analytics_configuration.go
Original file line number Diff line number Diff line change
Expand Up @@ -149,6 +149,9 @@ func resourceBucketAnalyticsConfigurationPut(ctx context.Context, d *schema.Reso
}

bucket := d.Get(names.AttrBucket).(string)
if isDirectoryBucket(bucket) {
conn = meta.(*conns.AWSClient).S3ExpressClient(ctx)
}
input := &s3.PutBucketAnalyticsConfigurationInput{
Bucket: aws.String(bucket),
Id: aws.String(name),
Expand Down Expand Up @@ -191,6 +194,10 @@ func resourceBucketAnalyticsConfigurationRead(ctx context.Context, d *schema.Res
return sdkdiag.AppendFromErr(diags, err)
}

if isDirectoryBucket(bucket) {
conn = meta.(*conns.AWSClient).S3ExpressClient(ctx)
}

ac, err := findAnalyticsConfiguration(ctx, conn, bucket, name)

if !d.IsNewResource() && tfresource.NotFound(err) {
Expand Down Expand Up @@ -224,6 +231,10 @@ func resourceBucketAnalyticsConfigurationDelete(ctx context.Context, d *schema.R
return sdkdiag.AppendFromErr(diags, err)
}

if isDirectoryBucket(bucket) {
conn = meta.(*conns.AWSClient).S3ExpressClient(ctx)
}

log.Printf("[DEBUG] Deleting S3 Bucket Analytics Configuration: %s", d.Id())
_, err = conn.DeleteBucketAnalyticsConfiguration(ctx, &s3.DeleteBucketAnalyticsConfigurationInput{
Bucket: aws.String(bucket),
Expand Down
12 changes: 10 additions & 2 deletions internal/service/s3/bucket_analytics_configuration_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -483,9 +483,9 @@ func TestAccS3BucketAnalyticsConfiguration_directoryBucket(t *testing.T) {

func testAccCheckBucketAnalyticsConfigurationDestroy(ctx context.Context) resource.TestCheckFunc {
return func(s *terraform.State) error {
conn := acctest.Provider.Meta().(*conns.AWSClient).S3Client(ctx)

for _, rs := range s.RootModule().Resources {
conn := acctest.Provider.Meta().(*conns.AWSClient).S3Client(ctx)

if rs.Type != "aws_s3_bucket_analytics_configuration" {
continue
}
Expand All @@ -495,6 +495,10 @@ func testAccCheckBucketAnalyticsConfigurationDestroy(ctx context.Context) resour
return err
}

if tfs3.IsDirectoryBucket(bucket) {
conn = acctest.Provider.Meta().(*conns.AWSClient).S3ExpressClient(ctx)
}

_, err = tfs3.FindAnalyticsConfiguration(ctx, conn, bucket, name)

if tfresource.NotFound(err) {
Expand Down Expand Up @@ -526,6 +530,10 @@ func testAccCheckBucketAnalyticsConfigurationExists(ctx context.Context, n strin

conn := acctest.Provider.Meta().(*conns.AWSClient).S3Client(ctx)

if tfs3.IsDirectoryBucket(bucket) {
conn = acctest.Provider.Meta().(*conns.AWSClient).S3ExpressClient(ctx)
}

output, err := tfs3.FindAnalyticsConfiguration(ctx, conn, bucket, name)

if err != nil {
Expand Down
15 changes: 15 additions & 0 deletions internal/service/s3/bucket_cors_configuration.go
Original file line number Diff line number Diff line change
Expand Up @@ -95,6 +95,9 @@ func resourceBucketCorsConfigurationCreate(ctx context.Context, d *schema.Resour
conn := meta.(*conns.AWSClient).S3Client(ctx)

bucket := d.Get(names.AttrBucket).(string)
if isDirectoryBucket(bucket) {
conn = meta.(*conns.AWSClient).S3ExpressClient(ctx)
}
expectedBucketOwner := d.Get(names.AttrExpectedBucketOwner).(string)
input := &s3.PutBucketCorsInput{
Bucket: aws.String(bucket),
Expand Down Expand Up @@ -140,6 +143,10 @@ func resourceBucketCorsConfigurationRead(ctx context.Context, d *schema.Resource
return sdkdiag.AppendFromErr(diags, err)
}

if isDirectoryBucket(bucket) {
conn = meta.(*conns.AWSClient).S3ExpressClient(ctx)
}

corsRules, err := findCORSRules(ctx, conn, bucket, expectedBucketOwner)

if !d.IsNewResource() && tfresource.NotFound(err) {
Expand Down Expand Up @@ -170,6 +177,10 @@ func resourceBucketCorsConfigurationUpdate(ctx context.Context, d *schema.Resour
return sdkdiag.AppendFromErr(diags, err)
}

if isDirectoryBucket(bucket) {
conn = meta.(*conns.AWSClient).S3ExpressClient(ctx)
}

input := &s3.PutBucketCorsInput{
Bucket: aws.String(bucket),
CORSConfiguration: &types.CORSConfiguration{
Expand Down Expand Up @@ -198,6 +209,10 @@ func resourceBucketCorsConfigurationDelete(ctx context.Context, d *schema.Resour
return sdkdiag.AppendFromErr(diags, err)
}

if isDirectoryBucket(bucket) {
conn = meta.(*conns.AWSClient).S3ExpressClient(ctx)
}

input := &s3.DeleteBucketCorsInput{
Bucket: aws.String(bucket),
}
Expand Down
11 changes: 9 additions & 2 deletions internal/service/s3/bucket_cors_configuration_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -351,9 +351,9 @@ func TestAccS3BucketCORSConfiguration_directoryBucket(t *testing.T) {

func testAccCheckBucketCORSConfigurationDestroy(ctx context.Context) resource.TestCheckFunc {
return func(s *terraform.State) error {
conn := acctest.Provider.Meta().(*conns.AWSClient).S3Client(ctx)

for _, rs := range s.RootModule().Resources {
conn := acctest.Provider.Meta().(*conns.AWSClient).S3Client(ctx)

if rs.Type != "aws_s3_bucket_cors_configuration" {
continue
}
Expand All @@ -363,6 +363,10 @@ func testAccCheckBucketCORSConfigurationDestroy(ctx context.Context) resource.Te
return err
}

if tfs3.IsDirectoryBucket(bucket) {
conn = acctest.Provider.Meta().(*conns.AWSClient).S3ExpressClient(ctx)
}

_, err = tfs3.FindCORSRules(ctx, conn, bucket, expectedBucketOwner)

if tfresource.NotFound(err) {
Expand Down Expand Up @@ -393,6 +397,9 @@ func testAccCheckBucketCORSConfigurationExists(ctx context.Context, n string) re
}

conn := acctest.Provider.Meta().(*conns.AWSClient).S3Client(ctx)
if tfs3.IsDirectoryBucket(bucket) {
conn = acctest.Provider.Meta().(*conns.AWSClient).S3ExpressClient(ctx)
}

_, err = tfs3.FindCORSRules(ctx, conn, bucket, expectedBucketOwner)

Expand Down
7 changes: 5 additions & 2 deletions internal/service/s3/bucket_data_source.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import (

"github.com/aws/aws-sdk-go-v2/aws/arn"
"github.com/aws/aws-sdk-go-v2/service/s3"
"github.com/hashicorp/aws-sdk-go-base/v2/endpoints"
"github.com/hashicorp/terraform-plugin-sdk/v2/diag"
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
"github.com/hashicorp/terraform-provider-aws/internal/conns"
Expand Down Expand Up @@ -63,13 +64,15 @@ func dataSourceBucketRead(ctx context.Context, d *schema.ResourceData, meta inte
var diags diag.Diagnostics
awsClient := meta.(*conns.AWSClient)
conn := awsClient.S3Client(ctx)
var optFns []func(*s3.Options)

bucket := d.Get(names.AttrBucket).(string)

var optFns []func(*s3.Options)
// Via S3 access point: "Invalid configuration: region from ARN `us-east-1` does not match client region `aws-global` and UseArnRegion is `false`".
if arn.IsARN(bucket) && conn.Options().Region == names.GlobalRegionID {
if arn.IsARN(bucket) && conn.Options().Region == endpoints.AwsGlobalRegionID {
optFns = append(optFns, func(o *s3.Options) { o.UseARNRegion = true })
}

err := findBucket(ctx, conn, bucket, optFns...)

if err != nil {
Expand Down
11 changes: 11 additions & 0 deletions internal/service/s3/bucket_intelligent_tiering_configuration.go
Original file line number Diff line number Diff line change
Expand Up @@ -114,6 +114,9 @@ func resourceBucketIntelligentTieringConfigurationPut(ctx context.Context, d *sc
}

bucket := d.Get(names.AttrBucket).(string)
if isDirectoryBucket(bucket) {
conn = meta.(*conns.AWSClient).S3ExpressClient(ctx)
}
input := &s3.PutBucketIntelligentTieringConfigurationInput{
Bucket: aws.String(bucket),
Id: aws.String(name),
Expand Down Expand Up @@ -156,6 +159,10 @@ func resourceBucketIntelligentTieringConfigurationRead(ctx context.Context, d *s
return sdkdiag.AppendFromErr(diags, err)
}

if isDirectoryBucket(bucket) {
conn = meta.(*conns.AWSClient).S3ExpressClient(ctx)
}

output, err := findIntelligentTieringConfiguration(ctx, conn, bucket, name)

if !d.IsNewResource() && tfresource.NotFound(err) {
Expand Down Expand Up @@ -194,6 +201,10 @@ func resourceBucketIntelligentTieringConfigurationDelete(ctx context.Context, d
return sdkdiag.AppendFromErr(diags, err)
}

if isDirectoryBucket(bucket) {
conn = meta.(*conns.AWSClient).S3ExpressClient(ctx)
}

log.Printf("[DEBUG] Deleting S3 Bucket Intelligent-Tiering Configuration: %s", d.Id())
_, err = conn.DeleteBucketIntelligentTieringConfiguration(ctx, &s3.DeleteBucketIntelligentTieringConfigurationInput{
Bucket: aws.String(bucket),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -227,6 +227,9 @@ func testAccCheckBucketIntelligentTieringConfigurationExists(ctx context.Context
}

conn := acctest.Provider.Meta().(*conns.AWSClient).S3Client(ctx)
if tfs3.IsDirectoryBucket(bucket) {
conn = acctest.Provider.Meta().(*conns.AWSClient).S3ExpressClient(ctx)
}

output, err := tfs3.FindIntelligentTieringConfiguration(ctx, conn, bucket, name)

Expand All @@ -242,9 +245,9 @@ func testAccCheckBucketIntelligentTieringConfigurationExists(ctx context.Context

func testAccCheckBucketIntelligentTieringConfigurationDestroy(ctx context.Context) resource.TestCheckFunc {
return func(s *terraform.State) error {
conn := acctest.Provider.Meta().(*conns.AWSClient).S3Client(ctx)

for _, rs := range s.RootModule().Resources {
conn := acctest.Provider.Meta().(*conns.AWSClient).S3Client(ctx)

if rs.Type != "aws_s3_bucket_intelligent_tiering_configuration" {
continue
}
Expand All @@ -254,6 +257,10 @@ func testAccCheckBucketIntelligentTieringConfigurationDestroy(ctx context.Contex
return err
}

if tfs3.IsDirectoryBucket(bucket) {
conn = acctest.Provider.Meta().(*conns.AWSClient).S3ExpressClient(ctx)
}

_, err = tfs3.FindIntelligentTieringConfiguration(ctx, conn, bucket, name)

if tfresource.NotFound(err) {
Expand Down
11 changes: 11 additions & 0 deletions internal/service/s3/bucket_inventory.go
Original file line number Diff line number Diff line change
Expand Up @@ -210,6 +210,9 @@ func resourceBucketInventoryPut(ctx context.Context, d *schema.ResourceData, met
}

bucket := d.Get(names.AttrBucket).(string)
if isDirectoryBucket(bucket) {
conn = meta.(*conns.AWSClient).S3ExpressClient(ctx)
}
input := &s3.PutBucketInventoryConfigurationInput{
Bucket: aws.String(bucket),
Id: aws.String(name),
Expand Down Expand Up @@ -252,6 +255,10 @@ func resourceBucketInventoryRead(ctx context.Context, d *schema.ResourceData, me
return sdkdiag.AppendFromErr(diags, err)
}

if isDirectoryBucket(bucket) {
conn = meta.(*conns.AWSClient).S3ExpressClient(ctx)
}

ic, err := findInventoryConfiguration(ctx, conn, bucket, name)

if !d.IsNewResource() && tfresource.NotFound(err) {
Expand Down Expand Up @@ -296,6 +303,10 @@ func resourceBucketInventoryDelete(ctx context.Context, d *schema.ResourceData,
return sdkdiag.AppendFromErr(diags, err)
}

if isDirectoryBucket(bucket) {
conn = meta.(*conns.AWSClient).S3ExpressClient(ctx)
}

input := &s3.DeleteBucketInventoryConfigurationInput{
Bucket: aws.String(bucket),
Id: aws.String(name),
Expand Down
Loading
Loading