From f86df23a30b89033b491a16a3eef154205fdd57a Mon Sep 17 00:00:00 2001 From: skotambkar Date: Sun, 8 Nov 2020 22:16:05 -0800 Subject: [PATCH 01/21] add arn parsing utility for s3, s3control --- .../internal/s3shared/arn/accesspoint_arn.go | 50 ++++ .../s3shared/arn/accesspoint_arn_test.go | 107 +++++++ service/internal/s3shared/arn/arn.go | 69 +++++ service/internal/s3shared/arn/arn_test.go | 170 +++++++++++ service/internal/s3shared/arn/outpost_arn.go | 126 ++++++++ .../internal/s3shared/arn/outpost_arn_test.go | 271 ++++++++++++++++++ service/internal/s3shared/endpoint_error.go | 194 +++++++++++++ service/internal/s3shared/resource_request.go | 74 +++++ service/internal/s3shared/update_endpoint.go | 22 +- 9 files changed, 1080 insertions(+), 3 deletions(-) create mode 100644 service/internal/s3shared/arn/accesspoint_arn.go create mode 100644 service/internal/s3shared/arn/accesspoint_arn_test.go create mode 100644 service/internal/s3shared/arn/arn.go create mode 100644 service/internal/s3shared/arn/arn_test.go create mode 100644 service/internal/s3shared/arn/outpost_arn.go create mode 100644 service/internal/s3shared/arn/outpost_arn_test.go create mode 100644 service/internal/s3shared/endpoint_error.go create mode 100644 service/internal/s3shared/resource_request.go diff --git a/service/internal/s3shared/arn/accesspoint_arn.go b/service/internal/s3shared/arn/accesspoint_arn.go new file mode 100644 index 00000000000..93e358a4a1a --- /dev/null +++ b/service/internal/s3shared/arn/accesspoint_arn.go @@ -0,0 +1,50 @@ +package arn + +import ( + "strings" + + "github.com/aws/aws-sdk-go-v2/aws/arn" +) + +// AccessPointARN provides representation +type AccessPointARN struct { + arn.ARN + AccessPointName string +} + +// GetARN returns the base ARN for the Access Point resource +func (a AccessPointARN) GetARN() arn.ARN { + return a.ARN +} + +// ParseAccessPointResource attempts to parse the ARN's resource as an +// AccessPoint resource. +// +// Supported Access point resource format: +// - Access point format: arn:{partition}:s3:{region}:{accountId}:accesspoint/{accesspointName} +// - example: arn.aws.s3.us-west-2.012345678901:accesspoint/myaccesspoint +// +func ParseAccessPointResource(a arn.ARN, resParts []string) (AccessPointARN, error) { + if len(a.Region) == 0 { + return AccessPointARN{}, InvalidARNError{ARN: a, Reason: "region not set"} + } + if len(a.AccountID) == 0 { + return AccessPointARN{}, InvalidARNError{ARN: a, Reason: "account-id not set"} + } + if len(resParts) == 0 { + return AccessPointARN{}, InvalidARNError{ARN: a, Reason: "resource-id not set"} + } + if len(resParts) > 1 { + return AccessPointARN{}, InvalidARNError{ARN: a, Reason: "sub resource not supported"} + } + + resID := resParts[0] + if len(strings.TrimSpace(resID)) == 0 { + return AccessPointARN{}, InvalidARNError{ARN: a, Reason: "resource-id not set"} + } + + return AccessPointARN{ + ARN: a, + AccessPointName: resID, + }, nil +} diff --git a/service/internal/s3shared/arn/accesspoint_arn_test.go b/service/internal/s3shared/arn/accesspoint_arn_test.go new file mode 100644 index 00000000000..bba458b8909 --- /dev/null +++ b/service/internal/s3shared/arn/accesspoint_arn_test.go @@ -0,0 +1,107 @@ +package arn + +import ( + "reflect" + "strings" + "testing" + + "github.com/aws/aws-sdk-go-v2/aws/arn" +) + +func TestParseAccessPointResource(t *testing.T) { + cases := map[string]struct { + ARN arn.ARN + ExpectErr string + ExpectARN AccessPointARN + }{ + "region not set": { + ARN: arn.ARN{ + Partition: "aws", + Service: "s3", + AccountID: "012345678901", + Resource: "accesspoint/myendpoint", + }, + ExpectErr: "region not set", + }, + "account-id not set": { + ARN: arn.ARN{ + Partition: "aws", + Service: "s3", + Region: "us-west-2", + Resource: "accesspoint/myendpoint", + }, + ExpectErr: "account-id not set", + }, + "resource-id not set": { + ARN: arn.ARN{ + Partition: "aws", + Service: "s3", + Region: "us-west-2", + AccountID: "012345678901", + Resource: "accesspoint", + }, + ExpectErr: "resource-id not set", + }, + "resource-id empty": { + ARN: arn.ARN{ + Partition: "aws", + Service: "s3", + Region: "us-west-2", + AccountID: "012345678901", + Resource: "accesspoint:", + }, + ExpectErr: "resource-id not set", + }, + "resource not supported": { + ARN: arn.ARN{ + Partition: "aws", + Service: "s3", + Region: "us-west-2", + AccountID: "012345678901", + Resource: "accesspoint/endpoint/object/key", + }, + ExpectErr: "sub resource not supported", + }, + "valid resource-id": { + ARN: arn.ARN{ + Partition: "aws", + Service: "s3", + Region: "us-west-2", + AccountID: "012345678901", + Resource: "accesspoint/endpoint", + }, + ExpectARN: AccessPointARN{ + ARN: arn.ARN{ + Partition: "aws", + Service: "s3", + Region: "us-west-2", + AccountID: "012345678901", + Resource: "accesspoint/endpoint", + }, + AccessPointName: "endpoint", + }, + }, + } + + for name, c := range cases { + t.Run(name, func(t *testing.T) { + resParts := SplitResource(c.ARN.Resource) + a, err := ParseAccessPointResource(c.ARN, resParts[1:]) + + if len(c.ExpectErr) == 0 && err != nil { + t.Fatalf("expect no error but got %v", err) + } else if len(c.ExpectErr) != 0 && err == nil { + t.Fatalf("expect error %q, but got nil", c.ExpectErr) + } else if len(c.ExpectErr) != 0 && err != nil { + if e, a := c.ExpectErr, err.Error(); !strings.Contains(a, e) { + t.Fatalf("expect error %q, got %q", e, a) + } + return + } + + if e, a := c.ExpectARN, a; !reflect.DeepEqual(e, a) { + t.Errorf("expect %v, got %v", e, a) + } + }) + } +} diff --git a/service/internal/s3shared/arn/arn.go b/service/internal/s3shared/arn/arn.go new file mode 100644 index 00000000000..c6153464696 --- /dev/null +++ b/service/internal/s3shared/arn/arn.go @@ -0,0 +1,69 @@ +package arn + +import ( + "fmt" + "strings" + + "github.com/aws/aws-sdk-go-v2/aws/arn" +) + +// Resource provides the interfaces abstracting ARNs of specific resource +// types. +type Resource interface { + GetARN() arn.ARN + String() string +} + +// ResourceParser provides the function for parsing an ARN's resource +// component into a typed resource. +type ResourceParser func(arn.ARN) (Resource, error) + +// ParseResource parses an AWS ARN into a typed resource for the S3 API. +func ParseResource(a arn.ARN, resParser ResourceParser) (resARN Resource, err error) { + if len(a.Partition) == 0 { + return nil, InvalidARNError{ARN: a, Reason: "partition not set"} + } + + if a.Service != "s3" && a.Service != "s3-outposts" { + return nil, InvalidARNError{ARN: a, Reason: "service is not supported"} + } + if len(a.Resource) == 0 { + return nil, InvalidARNError{ARN: a, Reason: "resource not set"} + } + + return resParser(a) +} + +// SplitResource splits the resource components by the ARN resource delimiters. +func SplitResource(v string) []string { + var parts []string + var offset int + + for offset <= len(v) { + idx := strings.IndexAny(v[offset:], "/:") + if idx < 0 { + parts = append(parts, v[offset:]) + break + } + parts = append(parts, v[offset:idx+offset]) + offset += idx + 1 + } + + return parts +} + +// IsARN returns whether the given string is an ARN +func IsARN(s string) bool { + return arn.IsARN(s) +} + +// InvalidARNError provides the error for an invalid ARN error. +type InvalidARNError struct { + ARN arn.ARN + Reason string +} + +// Error returns a string denoting the occurred InvalidARNError +func (e InvalidARNError) Error() string { + return fmt.Sprintf("invalid Amazon %s ARN, %s, %s", e.ARN.Service, e.Reason, e.ARN.String()) +} diff --git a/service/internal/s3shared/arn/arn_test.go b/service/internal/s3shared/arn/arn_test.go new file mode 100644 index 00000000000..db7beaaf8f5 --- /dev/null +++ b/service/internal/s3shared/arn/arn_test.go @@ -0,0 +1,170 @@ +package arn + +import ( + "reflect" + "strings" + "testing" + + "github.com/aws/aws-sdk-go-v2/aws/arn" +) + +func TestParseResource(t *testing.T) { + cases := map[string]struct { + Input string + MappedResources map[string]func(arn.ARN, []string) (Resource, error) + Expect Resource + ExpectErr string + }{ + "Empty ARN": { + Input: "", + ExpectErr: "arn: invalid prefix", + }, + "No Partition": { + Input: "arn::sqs:us-west-2:012345678901:accesspoint", + ExpectErr: "partition not set", + }, + "Not S3 ARN": { + Input: "arn:aws:sqs:us-west-2:012345678901:accesspoint", + ExpectErr: "service is not supported", + }, + "No Resource": { + Input: "arn:aws:s3:us-west-2:012345678901:", + ExpectErr: "resource not set", + }, + "Unknown Resource Type": { + Input: "arn:aws:s3:us-west-2:012345678901:myresource", + ExpectErr: "unknown resource type", + }, + "Unknown BucketARN Resource Type": { + Input: "arn:aws:s3:us-west-2:012345678901:bucket_name:mybucket", + ExpectErr: "unknown resource type", + }, + "Unknown Resource Type with Resource and Sub-Resource": { + Input: "arn:aws:s3:us-west-2:012345678901:somethingnew:myresource/subresource", + ExpectErr: "unknown resource type", + }, + "Access Point with sub resource": { + Input: "arn:aws:s3:us-west-2:012345678901:accesspoint:myresource/subresource", + MappedResources: map[string]func(arn.ARN, []string) (Resource, error){ + "accesspoint": func(a arn.ARN, parts []string) (Resource, error) { + return ParseAccessPointResource(a, parts) + }, + }, + ExpectErr: "resource not supported", + }, + "AccessPoint Resource Type": { + Input: "arn:aws:s3:us-west-2:012345678901:accesspoint:myendpoint", + MappedResources: map[string]func(arn.ARN, []string) (Resource, error){ + "accesspoint": func(a arn.ARN, parts []string) (Resource, error) { + return ParseAccessPointResource(a, parts) + }, + }, + Expect: AccessPointARN{ + ARN: arn.ARN{ + Partition: "aws", + Service: "s3", + Region: "us-west-2", + AccountID: "012345678901", + Resource: "accesspoint:myendpoint", + }, + AccessPointName: "myendpoint", + }, + }, + "AccessPoint Resource Type With Path Syntax": { + Input: "arn:aws:s3:us-west-2:012345678901:accesspoint/myendpoint", + MappedResources: map[string]func(arn.ARN, []string) (Resource, error){ + "accesspoint": func(a arn.ARN, parts []string) (Resource, error) { + return ParseAccessPointResource(a, parts) + }, + }, + Expect: AccessPointARN{ + ARN: arn.ARN{ + Partition: "aws", + Service: "s3", + Region: "us-west-2", + AccountID: "012345678901", + Resource: "accesspoint/myendpoint", + }, + AccessPointName: "myendpoint", + }, + }, + } + + for name, c := range cases { + t.Run(name, func(t *testing.T) { + var parsed Resource + arn, err := arn.Parse(c.Input) + if err == nil { + parsed, err = ParseResource(arn, mappedResourceParser(c.MappedResources)) + } + + if len(c.ExpectErr) == 0 && err != nil { + t.Fatalf("expect no error but got %v", err) + } else if len(c.ExpectErr) != 0 && err == nil { + t.Fatalf("expect error but got nil") + } else if len(c.ExpectErr) != 0 && err != nil { + if e, a := c.ExpectErr, err.Error(); !strings.Contains(a, e) { + t.Fatalf("expect error %q, got %q", e, a) + } + return + } + + if e, a := c.Expect, parsed; !reflect.DeepEqual(e, a) { + t.Errorf("Expect %v, got %v", e, a) + } + }) + } +} + +func mappedResourceParser(kinds map[string]func(arn.ARN, []string) (Resource, error)) ResourceParser { + return func(a arn.ARN) (Resource, error) { + parts := SplitResource(a.Resource) + + fn, ok := kinds[parts[0]] + if !ok { + return nil, InvalidARNError{ARN: a, Reason: "unknown resource type"} + } + return fn(a, parts[1:]) + } +} + +func TestSplitResource(t *testing.T) { + cases := []struct { + Input string + Expect []string + }{ + { + Input: "accesspoint:myendpoint", + Expect: []string{"accesspoint", "myendpoint"}, + }, + { + Input: "accesspoint/myendpoint", + Expect: []string{"accesspoint", "myendpoint"}, + }, + { + Input: "accesspoint", + Expect: []string{"accesspoint"}, + }, + { + Input: "accesspoint:", + Expect: []string{"accesspoint", ""}, + }, + { + Input: "accesspoint: ", + Expect: []string{"accesspoint", " "}, + }, + { + Input: "accesspoint:endpoint/object/key", + Expect: []string{"accesspoint", "endpoint", "object", "key"}, + }, + } + + for _, c := range cases { + t.Run(c.Input, func(t *testing.T) { + parts := SplitResource(c.Input) + if e, a := c.Expect, parts; !reflect.DeepEqual(e, a) { + t.Errorf("expect %v, got %v", e, a) + } + }) + } +} diff --git a/service/internal/s3shared/arn/outpost_arn.go b/service/internal/s3shared/arn/outpost_arn.go new file mode 100644 index 00000000000..66a0291fd8a --- /dev/null +++ b/service/internal/s3shared/arn/outpost_arn.go @@ -0,0 +1,126 @@ +package arn + +import ( + "strings" + + "github.com/aws/aws-sdk-go-v2/aws/arn" +) + +// OutpostARN interface that should be satisfied by outpost ARNs +type OutpostARN interface { + Resource + GetOutpostID() string +} + +// ParseOutpostARNResource will parse a provided ARNs resource using the appropriate ARN format +// and return a specific OutpostARN type +// +// Currently supported outpost ARN formats: +// * Outpost AccessPoint ARN format: +// - ARN format: arn:{partition}:s3-outposts:{region}:{accountId}:outpost/{outpostId}/accesspoint/{accesspointName} +// - example: arn:aws:s3-outposts:us-west-2:012345678901:outpost/op-1234567890123456/accesspoint/myaccesspoint +// +// * Outpost Bucket ARN format: +// - ARN format: arn:{partition}:s3-outposts:{region}:{accountId}:outpost/{outpostId}/bucket/{bucketName} +// - example: arn:aws:s3-outposts:us-west-2:012345678901:outpost/op-1234567890123456/bucket/mybucket +// +// Other outpost ARN formats may be supported and added in the future. +// +func ParseOutpostARNResource(a arn.ARN, resParts []string) (OutpostARN, error) { + if len(a.Region) == 0 { + return nil, InvalidARNError{ARN: a, Reason: "region not set"} + } + + if len(a.AccountID) == 0 { + return nil, InvalidARNError{ARN: a, Reason: "account-id not set"} + } + + // verify if outpost id is present and valid + if len(resParts) == 0 || len(strings.TrimSpace(resParts[0])) == 0 { + return nil, InvalidARNError{ARN: a, Reason: "outpost resource-id not set"} + } + + // verify possible resource type exists + if len(resParts) < 3 { + return nil, InvalidARNError{ + ARN: a, Reason: "incomplete outpost resource type. Expected bucket or access-point resource to be present", + } + } + + // Since we know this is a OutpostARN fetch outpostID + outpostID := strings.TrimSpace(resParts[0]) + + switch resParts[1] { + case "accesspoint": + accesspointARN, err := ParseAccessPointResource(a, resParts[2:]) + if err != nil { + return OutpostAccessPointARN{}, err + } + return OutpostAccessPointARN{ + AccessPointARN: accesspointARN, + OutpostID: outpostID, + }, nil + + case "bucket": + bucketName, err := parseBucketResource(a, resParts[2:]) + if err != nil { + return nil, err + } + return OutpostBucketARN{ + ARN: a, + BucketName: bucketName, + OutpostID: outpostID, + }, nil + + default: + return nil, InvalidARNError{ARN: a, Reason: "unknown resource set for outpost ARN"} + } +} + +// OutpostAccessPointARN represents outpost access point ARN. +type OutpostAccessPointARN struct { + AccessPointARN + OutpostID string +} + +// GetOutpostID returns the outpost id of outpost access point arn +func (o OutpostAccessPointARN) GetOutpostID() string { + return o.OutpostID +} + +// OutpostBucketARN represents the outpost bucket ARN. +type OutpostBucketARN struct { + arn.ARN + BucketName string + OutpostID string +} + +// GetOutpostID returns the outpost id of outpost bucket arn +func (o OutpostBucketARN) GetOutpostID() string { + return o.OutpostID +} + +// GetARN retrives the base ARN from outpost bucket ARN resource +func (o OutpostBucketARN) GetARN() arn.ARN { + return o.ARN +} + +// parseBucketResource attempts to parse the ARN's bucket resource and retrieve the +// bucket resource id. +// +// parseBucketResource only parses the bucket resource id. +// +func parseBucketResource(a arn.ARN, resParts []string) (bucketName string, err error) { + if len(resParts) == 0 { + return bucketName, InvalidARNError{ARN: a, Reason: "bucket resource-id not set"} + } + if len(resParts) > 1 { + return bucketName, InvalidARNError{ARN: a, Reason: "sub resource not supported"} + } + + bucketName = strings.TrimSpace(resParts[0]) + if len(bucketName) == 0 { + return bucketName, InvalidARNError{ARN: a, Reason: "bucket resource-id not set"} + } + return bucketName, err +} diff --git a/service/internal/s3shared/arn/outpost_arn_test.go b/service/internal/s3shared/arn/outpost_arn_test.go new file mode 100644 index 00000000000..36dbde688b5 --- /dev/null +++ b/service/internal/s3shared/arn/outpost_arn_test.go @@ -0,0 +1,271 @@ +package arn + +import ( + "reflect" + "strings" + "testing" + + "github.com/aws/aws-sdk-go-v2/aws/arn" +) + +func TestParseOutpostAccessPointARNResource(t *testing.T) { + cases := map[string]struct { + ARN arn.ARN + ExpectErr string + ExpectARN OutpostAccessPointARN + }{ + "region not set": { + ARN: arn.ARN{ + Partition: "aws", + Service: "s3-outposts", + AccountID: "012345678901", + Resource: "outpost/myoutpost/accesspoint/myendpoint", + }, + ExpectErr: "region not set", + }, + "account-id not set": { + ARN: arn.ARN{ + Partition: "aws", + Service: "s3-outposts", + Region: "us-west-2", + Resource: "outpost/myoutpost/accesspoint/myendpoint", + }, + ExpectErr: "account-id not set", + }, + "resource-id not set": { + ARN: arn.ARN{ + Partition: "aws", + Service: "s3-outposts", + Region: "us-west-2", + AccountID: "012345678901", + Resource: "myoutpost", + }, + ExpectErr: "resource-id not set", + }, + "resource-id empty": { + ARN: arn.ARN{ + Partition: "aws", + Service: "s3-outposts", + Region: "us-west-2", + AccountID: "012345678901", + Resource: "outpost:", + }, + ExpectErr: "resource-id not set", + }, + "resource not supported": { + ARN: arn.ARN{ + Partition: "aws", + Service: "s3-outposts", + Region: "us-west-2", + AccountID: "012345678901", + Resource: "outpost/myoutpost/accesspoint/endpoint/object/key", + }, + ExpectErr: "sub resource not supported", + }, + "access-point not defined": { + ARN: arn.ARN{ + Partition: "aws", + Service: "s3-outposts", + Region: "us-west-2", + AccountID: "012345678901", + Resource: "outpost/myoutpost/endpoint/object/key", + }, + ExpectErr: "unknown resource set for outpost ARN", + }, + "valid resource-id": { + ARN: arn.ARN{ + Partition: "aws", + Service: "s3-outposts", + Region: "us-west-2", + AccountID: "012345678901", + Resource: "outpost/myoutpost/accesspoint/myaccesspoint", + }, + ExpectARN: OutpostAccessPointARN{ + AccessPointARN: AccessPointARN{ + ARN: arn.ARN{ + Partition: "aws", + Service: "s3-outposts", + Region: "us-west-2", + AccountID: "012345678901", + Resource: "outpost/myoutpost/accesspoint/myaccesspoint", + }, + AccessPointName: "myaccesspoint", + }, + OutpostID: "myoutpost", + }, + }, + } + + for name, c := range cases { + t.Run(name, func(t *testing.T) { + resParts := SplitResource(c.ARN.Resource) + a, err := ParseOutpostARNResource(c.ARN, resParts[1:]) + + if len(c.ExpectErr) == 0 && err != nil { + t.Fatalf("expect no error but got %v", err) + } else if len(c.ExpectErr) != 0 && err == nil { + t.Fatalf("expect error %q, but got nil", c.ExpectErr) + } else if len(c.ExpectErr) != 0 && err != nil { + if e, a := c.ExpectErr, err.Error(); !strings.Contains(a, e) { + t.Fatalf("expect error %q, got %q", e, a) + } + return + } + + if e, a := c.ExpectARN, a; !reflect.DeepEqual(e, a) { + t.Errorf("expect %v, got %v", e, a) + } + }) + } +} + +func TestParseOutpostBucketARNResource(t *testing.T) { + cases := map[string]struct { + ARN arn.ARN + ExpectErr string + ExpectARN OutpostBucketARN + }{ + "region not set": { + ARN: arn.ARN{ + Partition: "aws", + Service: "s3-outposts", + AccountID: "012345678901", + Resource: "outpost/myoutpost/bucket/mybucket", + }, + ExpectErr: "region not set", + }, + "resource-id empty": { + ARN: arn.ARN{ + Partition: "aws", + Service: "s3-outposts", + Region: "us-west-2", + AccountID: "012345678901", + Resource: "outpost:", + }, + ExpectErr: "resource-id not set", + }, + "resource not supported": { + ARN: arn.ARN{ + Partition: "aws", + Service: "s3-outposts", + Region: "us-west-2", + AccountID: "012345678901", + Resource: "outpost/myoutpost/bucket/mybucket/object/key", + }, + ExpectErr: "sub resource not supported", + }, + "bucket not defined": { + ARN: arn.ARN{ + Partition: "aws", + Service: "s3-outposts", + Region: "us-west-2", + AccountID: "012345678901", + Resource: "outpost/myoutpost/endpoint/object/key", + }, + ExpectErr: "unknown resource set for outpost ARN", + }, + "valid resource-id": { + ARN: arn.ARN{ + Partition: "aws", + Service: "s3-outposts", + Region: "us-west-2", + AccountID: "012345678901", + Resource: "outpost/myoutpost/bucket/mybucket", + }, + ExpectARN: OutpostBucketARN{ + ARN: arn.ARN{ + Partition: "aws", + Service: "s3-outposts", + Region: "us-west-2", + AccountID: "012345678901", + Resource: "outpost/myoutpost/bucket/mybucket", + }, + BucketName: "mybucket", + OutpostID: "myoutpost", + }, + }, + } + + for name, c := range cases { + t.Run(name, func(t *testing.T) { + resParts := SplitResource(c.ARN.Resource) + a, err := ParseOutpostARNResource(c.ARN, resParts[1:]) + + if len(c.ExpectErr) == 0 && err != nil { + t.Fatalf("expect no error but got %v", err) + } else if len(c.ExpectErr) != 0 && err == nil { + t.Fatalf("expect error %q, but got nil", c.ExpectErr) + } else if len(c.ExpectErr) != 0 && err != nil { + if e, a := c.ExpectErr, err.Error(); !strings.Contains(a, e) { + t.Fatalf("expect error %q, got %q", e, a) + } + return + } + + if e, a := c.ExpectARN, a; !reflect.DeepEqual(e, a) { + t.Errorf("expect %v, got %v", e, a) + } + }) + } +} + +func TestParseBucketResource(t *testing.T) { + cases := map[string]struct { + ARN arn.ARN + ExpectErr string + ExpectBucketName string + }{ + "resource-id empty": { + ARN: arn.ARN{ + Partition: "aws", + Service: "s3", + Region: "us-west-2", + AccountID: "012345678901", + Resource: "bucket:", + }, + ExpectErr: "bucket resource-id not set", + }, + "resource not supported": { + ARN: arn.ARN{ + Partition: "aws", + Service: "s3", + Region: "us-west-2", + AccountID: "012345678901", + Resource: "bucket/mybucket/object/key", + }, + ExpectErr: "sub resource not supported", + }, + "valid resource-id": { + ARN: arn.ARN{ + Partition: "aws", + Service: "s3", + Region: "us-west-2", + AccountID: "012345678901", + Resource: "bucket/mybucket", + }, + ExpectBucketName: "mybucket", + }, + } + + for name, c := range cases { + t.Run(name, func(t *testing.T) { + resParts := SplitResource(c.ARN.Resource) + a, err := parseBucketResource(c.ARN, resParts[1:]) + + if len(c.ExpectErr) == 0 && err != nil { + t.Fatalf("expect no error but got %v", err) + } else if len(c.ExpectErr) != 0 && err == nil { + t.Fatalf("expect error %q, but got nil", c.ExpectErr) + } else if len(c.ExpectErr) != 0 && err != nil { + if e, a := c.ExpectErr, err.Error(); !strings.Contains(a, e) { + t.Fatalf("expect error %q, got %q", e, a) + } + return + } + + if e, a := c.ExpectBucketName, a; !reflect.DeepEqual(e, a) { + t.Errorf("expect %v, got %v", e, a) + } + }) + } +} diff --git a/service/internal/s3shared/endpoint_error.go b/service/internal/s3shared/endpoint_error.go new file mode 100644 index 00000000000..f1688c35745 --- /dev/null +++ b/service/internal/s3shared/endpoint_error.go @@ -0,0 +1,194 @@ +package s3shared + +import ( + "fmt" + + "github.com/aws/aws-sdk-go-v2/service/internal/s3shared/arn" +) + +// TODO: fix these error statements to be relevant to v2 sdk + +const ( + invalidARNErrorErrCode = "InvalidARNError" + configurationErrorErrCode = "ConfigurationError" +) + +// InvalidARNError denotes the error for Invalid ARN +type InvalidARNError struct { + message string + resource arn.Resource + origErr error +} + +// Error returns the InvalidARNError +func (e InvalidARNError) Error() string { + var extra string + if e.resource != nil { + extra = "ARN: " + e.resource.String() + } + return (SprintError(e.Code(), e.Message(), extra, e.origErr)) +} + +// Code returns the invalid ARN error code +func (e InvalidARNError) Code() string { + return invalidARNErrorErrCode +} + +// Message returns the message for Invalid ARN error +func (e InvalidARNError) Message() string { + return e.message +} + +// OrigErr is the original error wrapped by Invalid ARN Error +func (e InvalidARNError) OrigErr() error { + return e.origErr +} + +// NewInvalidARNError denotes invalid arn error +func NewInvalidARNError(resource arn.Resource, err error) InvalidARNError { + return InvalidARNError{ + message: "invalid ARN", + origErr: err, + resource: resource, + } +} + +// NewInvalidARNWithUnsupportedPartitionError ARN not supported for the target partition +func NewInvalidARNWithUnsupportedPartitionError(resource arn.Resource, err error) InvalidARNError { + return InvalidARNError{ + message: "resource ARN not supported for the target ARN partition", + origErr: err, + resource: resource, + } +} + +// NewInvalidARNWithFIPSError ARN not supported for FIPS region +func NewInvalidARNWithFIPSError(resource arn.Resource, err error) InvalidARNError { + return InvalidARNError{ + message: "resource ARN not supported for FIPS region", + resource: resource, + origErr: err, + } +} + +// ConfigurationError is used to denote a client configuration error +type ConfigurationError struct { + message string + resource arn.Resource + clientPartitionID string + clientRegion string + origErr error +} + +// Error returns the Configuration error string +func (e ConfigurationError) Error() string { + extra := fmt.Sprintf("ARN: %s, client partition: %s, client region: %s", + e.resource, e.clientPartitionID, e.clientRegion) + + return SprintError(e.Code(), e.Message(), extra, e.origErr) +} + +// Code returns configuration error's error-code +func (e ConfigurationError) Code() string { + return configurationErrorErrCode +} + +// Message returns the configuration error message +func (e ConfigurationError) Message() string { + return e.message +} + +// OrigErr is the original error wrapped by Configuration Error +func (e ConfigurationError) OrigErr() error { + return e.origErr +} + +// NewClientPartitionMismatchError stub +func NewClientPartitionMismatchError(resource arn.Resource, clientPartitionID, clientRegion string, err error) ConfigurationError { + return ConfigurationError{ + message: "client partition does not match provided ARN partition", + origErr: err, + resource: resource, + clientPartitionID: clientPartitionID, + clientRegion: clientRegion, + } +} + +// NewClientRegionMismatchError denotes cross region access error +func NewClientRegionMismatchError(resource arn.Resource, clientPartitionID, clientRegion string, err error) ConfigurationError { + return ConfigurationError{ + message: "client region does not match provided ARN region", + origErr: err, + resource: resource, + clientPartitionID: clientPartitionID, + clientRegion: clientRegion, + } +} + +// NewFailedToResolveEndpointError denotes endpoint resolving error +func NewFailedToResolveEndpointError(resource arn.Resource, clientPartitionID, clientRegion string, err error) ConfigurationError { + return ConfigurationError{ + message: "endpoint resolver failed to find an endpoint for the provided ARN region", + origErr: err, + resource: resource, + clientPartitionID: clientPartitionID, + clientRegion: clientRegion, + } +} + +// NewClientConfiguredForFIPSError denotes client config error for unsupported cross region FIPS access +func NewClientConfiguredForFIPSError(resource arn.Resource, clientPartitionID, clientRegion string, err error) ConfigurationError { + return ConfigurationError{ + message: "client configured for fips but cross-region resource ARN provided", + origErr: err, + resource: resource, + clientPartitionID: clientPartitionID, + clientRegion: clientRegion, + } +} + +// NewClientConfiguredForAccelerateError denotes client config error for unsupported S3 accelerate +func NewClientConfiguredForAccelerateError(resource arn.Resource, clientPartitionID, clientRegion string, err error) ConfigurationError { + return ConfigurationError{ + message: "client configured for S3 Accelerate but is not supported with resource ARN", + origErr: err, + resource: resource, + clientPartitionID: clientPartitionID, + clientRegion: clientRegion, + } +} + +// NewClientConfiguredForCrossRegionFIPSError denotes client config error for unsupported cross region FIPS request +func NewClientConfiguredForCrossRegionFIPSError(resource arn.Resource, clientPartitionID, clientRegion string, err error) ConfigurationError { + return ConfigurationError{ + message: "client configured for FIPS with cross-region enabled but is supported with cross-region resource ARN", + origErr: err, + resource: resource, + clientPartitionID: clientPartitionID, + clientRegion: clientRegion, + } +} + +// NewClientConfiguredForDualStackError denotes client config error for unsupported S3 Dual-stack +func NewClientConfiguredForDualStackError(resource arn.Resource, clientPartitionID, clientRegion string, err error) ConfigurationError { + return ConfigurationError{ + message: "client configured for S3 Dual-stack but is not supported with resource ARN", + origErr: err, + resource: resource, + clientPartitionID: clientPartitionID, + clientRegion: clientRegion, + } +} + +// SprintError returns a formatted error message string +func SprintError(code, message, extra string, origErr error) string { + msg := code + " : " + message + if extra != "" { + msg = msg + "\n\t" + extra + } + if origErr != nil { + // TODO: replace origErr to use %w + msg = msg + "\ncaused by: " + origErr.Error() + } + return msg +} diff --git a/service/internal/s3shared/resource_request.go b/service/internal/s3shared/resource_request.go new file mode 100644 index 00000000000..e940b7f368a --- /dev/null +++ b/service/internal/s3shared/resource_request.go @@ -0,0 +1,74 @@ +package s3shared + +import ( + "fmt" + "strings" + + awsarn "github.com/aws/aws-sdk-go-v2/aws/arn" + "github.com/aws/aws-sdk-go-v2/service/internal/s3shared/arn" +) + +// ResourceRequest represents an ARN resource and api request metadata +type ResourceRequest struct { + Resource arn.Resource + // RequestRegion is the region configured on the request config + RequestRegion string + + // SigningRegion is the signing region resolved for the request + SigningRegion string + + // PartitionID is the resolved partition id for the provided request region + PartitionID string + + // UseARNRegion indicates if client should use the region provided in an ARN resource + UseARNRegion bool +} + +// ARN returns the resource ARN +func (r ResourceRequest) ARN() awsarn.ARN { + return r.Resource.GetARN() +} + +// UseFips returns true if request config region is FIPS region. +func (r ResourceRequest) UseFips() bool { + return IsFIPS(r.RequestRegion) +} + +// ResourceConfiguredForFIPS returns true if resource ARNs region is FIPS +func (r ResourceRequest) ResourceConfiguredForFIPS() bool { + return IsFIPS(r.ARN().Region) +} + +// AllowCrossRegion returns a bool value to denote if S3UseARNRegion flag is set +func (r ResourceRequest) AllowCrossRegion() bool { + return r.UseARNRegion +} + +// IsCrossPartition returns true if request is configured for region of another partition, than +// the partition that resource ARN region resolves to. +func (r ResourceRequest) IsCrossPartition() (bool, error) { + // These error checks should never be triggered, unless validations are turned off + rv := r.PartitionID + if len(rv) == 0 { + return false, fmt.Errorf("partition id was not found for provided request region") + } + + av := r.Resource.GetARN().Partition + if len(av) == 0 { + return false, fmt.Errorf("no partition id for provided ARN") + } + + return !strings.EqualFold(rv, av), nil +} + +// IsCrossRegion returns true if request signing region is not same as arn region +func (r ResourceRequest) IsCrossRegion() bool { + v := r.SigningRegion + return !strings.EqualFold(v, r.Resource.GetARN().Region) +} + +// IsFIPS returns true if region is a fips region +func IsFIPS(clientRegion string) bool { + return (strings.HasPrefix(clientRegion, "fips-") || + strings.HasSuffix(clientRegion, "-fips")) +} diff --git a/service/internal/s3shared/update_endpoint.go b/service/internal/s3shared/update_endpoint.go index c7e1eaee92b..84a06237776 100644 --- a/service/internal/s3shared/update_endpoint.go +++ b/service/internal/s3shared/update_endpoint.go @@ -7,6 +7,8 @@ import ( "github.com/awslabs/smithy-go/middleware" smithyhttp "github.com/awslabs/smithy-go/transport/http" + + awsmiddle "github.com/aws/aws-sdk-go-v2/aws/middleware" ) // EnableDualstack represents middleware struct for enabling dualstack support @@ -14,9 +16,9 @@ type EnableDualstack struct { // UseDualstack indicates if dualstack endpoint resolving is to be enabled UseDualstack bool - // ServiceID is the service id prefix used in endpoint resolving + // DefaultServiceID is the service id prefix used in endpoint resolving // by default service-id is 's3' and 's3-control' for service s3, s3control. - ServiceID string + DefaultServiceID string } // ID returns the middleware ID. @@ -30,10 +32,24 @@ func (u *EnableDualstack) HandleSerialize( ) ( out middleware.SerializeOutput, metadata middleware.Metadata, err error, ) { + + // check for host name immutable property if smithyhttp.GetHostnameImmutable(ctx) { return next.HandleSerialize(ctx, in) } + serviceID := awsmiddle.GetServiceID(ctx) + + // s3-control may be represented as `S3 Control` as in model + if serviceID == "S3 Control" { + serviceID = "s3-control" + } + + if len(serviceID) == 0 { + // default service id + serviceID = u.DefaultServiceID + } + req, ok := in.Request.(*smithyhttp.Request) if !ok { return out, metadata, fmt.Errorf("unknown request type %T", req) @@ -46,7 +62,7 @@ func (u *EnableDualstack) HandleSerialize( } for i := 0; i+1 < len(parts); i++ { - if strings.EqualFold(parts[i], u.ServiceID) { + if strings.EqualFold(parts[i], serviceID) { parts[i] = parts[i] + ".dualstack" break } From f1e9e6c6e25ed32e3ddffabd31c26b30c47954a8 Mon Sep 17 00:00:00 2001 From: skotambkar Date: Sun, 8 Nov 2020 22:17:20 -0800 Subject: [PATCH 02/21] add arn lookup middleware --- service/internal/s3shared/arn_lookup.go | 67 +++++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 service/internal/s3shared/arn_lookup.go diff --git a/service/internal/s3shared/arn_lookup.go b/service/internal/s3shared/arn_lookup.go new file mode 100644 index 00000000000..81854e96d79 --- /dev/null +++ b/service/internal/s3shared/arn_lookup.go @@ -0,0 +1,67 @@ +package s3shared + +import ( + "context" + "fmt" + + "github.com/awslabs/smithy-go/middleware" + + "github.com/aws/aws-sdk-go-v2/aws/arn" +) + +// ARNLookup is the initial middleware that looks up if an arn is provided. +// This middleware is responsible for fetching ARN from a arnable field, and registering the ARN on +// middleware context. This middleware must be executed before input validation step or any other +// arn processing middleware. +type ARNLookup struct { + + // GetARNValue takes in a input interface and returns a ptr to string and a bool + GetARNValue func(interface{}) (*string, bool) +} + +// ID for the middleware +func (m *ARNLookup) ID() string { + return "S3Shared:ARNLookup" +} + +// HandleInitialize handles the behavior of this initialize step +func (m *ARNLookup) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( + out middleware.InitializeOutput, metadata middleware.Metadata, err error, +) { + // check if GetARNValue is supported + if m.GetARNValue == nil { + return next.HandleInitialize(ctx, in) + } + + // check is input resource is an ARN; if not go to next + v, ok := m.GetARNValue(in.Parameters) + if !ok || v == nil || !arn.IsARN(*v) { + return next.HandleInitialize(ctx, in) + } + + // if ARN process ResourceRequest and put it on ctx + av, err := arn.Parse(*v) + if err != nil { + return out, metadata, fmt.Errorf("error parsing arn: %w", err) + } + // set parsed arn on context + ctx = setARNResourceOnContext(ctx, av) + + return next.HandleInitialize(ctx, in) +} + +// arnResourceValue is the key set on context used to identify, retrive an ARN resource +// if present on the context. +type arnResourceValue struct { +} + +// SetARNResourceOnContext sets arn on context +func setARNResourceOnContext(ctx context.Context, value arn.ARN) context.Context { + return context.WithValue(ctx, arnResourceValue{}, value) +} + +// GetARNResourceFromContext returns an ARN from context and a bool indicating presence of ARN on ctx +func GetARNResourceFromContext(ctx context.Context) (arn.ARN, bool) { + v, ok := ctx.Value(arnResourceValue{}).(arn.ARN) + return v, ok +} From a2905e23b3761bf9e57da35d66e828bce89f3683 Mon Sep 17 00:00:00 2001 From: skotambkar Date: Sun, 8 Nov 2020 22:18:43 -0800 Subject: [PATCH 03/21] codegen update to S3 Update Endpoint runtime plugin --- aws/middleware/metadata.go | 18 +- .../customization/S3UpdateEndpoint.java | 690 ++++++++++++++---- 2 files changed, 559 insertions(+), 149 deletions(-) diff --git a/aws/middleware/metadata.go b/aws/middleware/metadata.go index a67dc3f8e5f..9fb64df6b9b 100644 --- a/aws/middleware/metadata.go +++ b/aws/middleware/metadata.go @@ -25,7 +25,7 @@ func (s RegisterServiceMetadata) HandleInitialize( ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler, ) (out middleware.InitializeOutput, metadata middleware.Metadata, err error) { if len(s.ServiceID) > 0 { - ctx = setServiceID(ctx, s.ServiceID) + ctx = SetServiceID(ctx, s.ServiceID) } if len(s.SigningName) > 0 { ctx = SetSigningName(ctx, s.SigningName) @@ -46,6 +46,7 @@ type ( signingRegionKey struct{} regionKey struct{} operationNameKey struct{} + partitionIDKey struct{} ) // GetServiceID retrieves the service id from the context. @@ -78,6 +79,12 @@ func GetOperationName(ctx context.Context) (v string) { return v } +// GetPartitionID retrieves the endpoint partition id from the context. +func GetPartitionID(ctx context.Context) string { + v, _ := ctx.Value(partitionIDKey{}).(string) + return v +} + // SetSigningName set or modifies the signing name on the context. func SetSigningName(ctx context.Context, value string) context.Context { return context.WithValue(ctx, signingNameKey{}, value) @@ -88,8 +95,8 @@ func SetSigningRegion(ctx context.Context, value string) context.Context { return context.WithValue(ctx, signingRegionKey{}, value) } -// setServiceID sets the service id on the context. -func setServiceID(ctx context.Context, value string) context.Context { +// SetServiceID sets the service id on the context. +func SetServiceID(ctx context.Context, value string) context.Context { return context.WithValue(ctx, serviceIDKey{}, value) } @@ -102,3 +109,8 @@ func setRegion(ctx context.Context, value string) context.Context { func setOperationName(ctx context.Context, value string) context.Context { return context.WithValue(ctx, operationNameKey{}, value) } + +// SetPartitionID sets the partition id of a resolved region on the context +func SetPartitionID(ctx context.Context, value string) context.Context { + return context.WithValue(ctx, partitionIDKey{}, value) +} diff --git a/codegen/smithy-aws-go-codegen/src/main/java/software/amazon/smithy/aws/go/codegen/customization/S3UpdateEndpoint.java b/codegen/smithy-aws-go-codegen/src/main/java/software/amazon/smithy/aws/go/codegen/customization/S3UpdateEndpoint.java index 46638f3904b..b6ee59590c4 100644 --- a/codegen/smithy-aws-go-codegen/src/main/java/software/amazon/smithy/aws/go/codegen/customization/S3UpdateEndpoint.java +++ b/codegen/smithy-aws-go-codegen/src/main/java/software/amazon/smithy/aws/go/codegen/customization/S3UpdateEndpoint.java @@ -17,12 +17,15 @@ package software.amazon.smithy.aws.go.codegen.customization; +import java.util.ArrayList; import java.util.List; import java.util.Set; import java.util.stream.Collectors; import software.amazon.smithy.aws.traits.ServiceTrait; import software.amazon.smithy.codegen.core.CodegenException; +import software.amazon.smithy.codegen.core.Symbol; import software.amazon.smithy.codegen.core.SymbolProvider; +import software.amazon.smithy.go.codegen.GoCodegenPlugin; import software.amazon.smithy.go.codegen.GoDelegator; import software.amazon.smithy.go.codegen.GoSettings; import software.amazon.smithy.go.codegen.GoWriter; @@ -46,22 +49,48 @@ * and modifies the resolved endpoint based on S3 client config or input shape values. */ public class S3UpdateEndpoint implements GoIntegration { - // options to be generated on Client's options type - private static final String USE_PATH_STYLE_OPTION = "UsePathStyle"; - private static final String USE_ACCELERATE_OPTION = "UseAccelerate"; + // Middleware name + private static final String UPDATE_ENDPOINT_INTERNAL_ADDER = "UpdateEndpoint"; + // Middleware options + private static final String UPDATE_ENDPOINT_INTERNAL_OPTIONS = + UPDATE_ENDPOINT_INTERNAL_ADDER + "Options"; + private static final String UPDATE_ENDPOINT_INTERNAL_PARAMETER_ACCESSOR = + UPDATE_ENDPOINT_INTERNAL_ADDER + "ParameterAccessor"; + + // s3 shared option constants private static final String USE_DUALSTACK_OPTION = "UseDualstack"; + private static final String USE_ARNREGION_OPTION = "UseARNRegion"; - // middleware addition constants - private static final String UPDATE_ENDPOINT_ADDER = "addUpdateEndpointMiddleware"; - private static final String UPDATE_ENDPOINT_INTERNAL_ADDER = "UpdateEndpoint"; + // list of runtime-client plugins + private static final List runtimeClientPlugins = new ArrayList<>(); - // private function getter constant - private static final String GET_BUCKET_FROM_INPUT = "getBucketFromInput"; - private static final String SUPPORT_ACCELERATE = "supportAccelerate"; + private static boolean isS3Service(Model model, ServiceShape service) { + return service.expectTrait(ServiceTrait.class).getSdkId().equalsIgnoreCase("S3"); + } - // list of operations that do not support accelerate - private static final Set NOT_SUPPORT_ACCELERATE = SetUtils.of( - "ListBuckets", "CreateBucket", "DeleteBucket"); + private static boolean isS3ControlService(Model model, ServiceShape service) { + return service.expectTrait(ServiceTrait.class).getSdkId().equalsIgnoreCase("S3 Control"); + } + + private static boolean isS3SharedService(Model model, ServiceShape service) { + return isS3Service(model, service) || isS3ControlService(model, service); + } + + private static String copyInputFuncName(String inputName) { + return String.format("copy%sForUpdateEndpoint", inputName); + } + + private static String getterFuncName(String operationName, String memberName) { + return String.format("get%s%s", operationName, memberName); + } + + private static String setterFuncName(String operationName, String memberName) { + return String.format("set%s%s", operationName, memberName); + } + + private static String addMiddlewareFuncName(String operationname, String middlewareName) { + return String.format("add%s%s", operationname, middlewareName); + } /** * Gets the sort order of the customization from -128 to 127, with lowest @@ -84,170 +113,539 @@ public void writeAdditionalFiles( ServiceShape service = settings.getService(model); // if service is s3control - if (isS3ControlService(model, service)){ - goDelegator.useShapeWriter(service, this::writeS3ControlMiddlewareHelper); + if (isS3ControlService(model, service)) { + s3control obj = new s3control(service); + obj.writeAdditionalFiles(settings, model, symbolProvider, goDelegator); } // check if service is s3 if (isS3Service(model, service)) { - goDelegator.useShapeWriter(service, this::writeS3MiddlewareHelper); - - goDelegator.useShapeWriter(service, writer -> { - writeInputGetter(writer, model, symbolProvider, service); - }); - - goDelegator.useShapeWriter(service, writer -> { - writeAccelerateValidator(writer, model, symbolProvider, service); - }); + s3 obj = new s3(service); + obj.writeAdditionalFiles(settings, model, symbolProvider, goDelegator); } } - private void writeAccelerateValidator(GoWriter writer, Model model, SymbolProvider symbolProvider, ServiceShape service) { - writer.writeDocs("supportAccelerate returns a boolean indicating if the operation associated with the provided input " - + "supports S3 Transfer Acceleration"); - writer.openBlock("func $L(input interface{}) bool {", "}", SUPPORT_ACCELERATE, () -> { - writer.openBlock("switch input.(type) {" , "}", () -> { - for (ShapeId operationId : service.getAllOperations()) { - // check if operation does not support s3 accelerate - if (NOT_SUPPORT_ACCELERATE.contains(operationId.getName())) { - OperationShape operation = model.expectShape(operationId, OperationShape.class); - StructureShape input = model.expectShape(operation.getInput().get(), StructureShape.class); - writer.write("case $P: return false", symbolProvider.toSymbol(input)); - } - } - writer.write("default: return true"); - }); - }); - } - - - private void writeInputGetter(GoWriter writer, Model model, SymbolProvider symbolProvider, ServiceShape service) { - writer.writeDocs("getBucketFromInput returns a boolean indicating if the input has a modeled bucket name, " + - " and a pointer to string denoting a provided bucket member value"); - writer.openBlock("func getBucketFromInput(input interface{}) (*string, bool) {","}", ()-> { - writer.openBlock("switch i:= input.(type) {", "}", () -> { - service.getAllOperations().forEach((operationId)-> { - OperationShape operation = model.expectShape(operationId, OperationShape.class); - StructureShape input = model.expectShape(operation.getInput().get(), StructureShape.class); - - List targetBucketShape = input.getAllMembers().values().stream() - .filter(m -> m.getTarget().getName().equals("BucketName")) - .collect(Collectors.toList()); - // if model has multiple top level shapes targeting `BucketName`, we throw a codegen exception - if (targetBucketShape.size()>1) { - throw new CodegenException("BucketName shape should be targeted by only one input member, found " + - targetBucketShape.size() +" for Input shape: "+ input.getId()); - } - - if (!targetBucketShape.isEmpty() && !operationId.getName().equalsIgnoreCase("GetBucketLocation")) { - writer.write("case $P: return i.$L, true", symbolProvider.toSymbol(input), targetBucketShape.get(0).getMemberName()); - } - }); - writer.write("default: return nil, false"); - }); - }); - } - - private void writeS3ControlMiddlewareHelper(GoWriter writer) { - // imports - writer.addUseImports(SmithyGoDependency.SMITHY_MIDDLEWARE); - writer.addUseImports(AwsCustomGoDependency.S3CONTROL_CUSTOMIZATION); - - writer.openBlock("func $L(stack *middleware.Stack, options Options) error {", "}", UPDATE_ENDPOINT_ADDER, () -> { - writer.write("return $T(stack, $T{UseDualstack: options.$L})", - SymbolUtils.createValueSymbolBuilder(UPDATE_ENDPOINT_INTERNAL_ADDER, - AwsCustomGoDependency.S3CONTROL_CUSTOMIZATION).build(), - SymbolUtils.createValueSymbolBuilder(UPDATE_ENDPOINT_INTERNAL_ADDER + "Options", - AwsCustomGoDependency.S3CONTROL_CUSTOMIZATION).build(), - USE_DUALSTACK_OPTION); - }); - writer.insertTrailingNewline(); - } + /** + * Builds the set of runtime plugs used by the presign url customization. + * + * @param settings codegen settings + * @param model api model + */ + @Override + public void processFinalizedModel(GoSettings settings, Model model) { + ServiceShape service = settings.getService(model); + for (ShapeId operationId : service.getAllOperations()) { + final OperationShape operation = model.expectShape(operationId, OperationShape.class); - private void writeS3MiddlewareHelper(GoWriter writer) { - // imports - writer.addUseImports(SmithyGoDependency.SMITHY_MIDDLEWARE); - writer.addUseImports(AwsCustomGoDependency.S3_CUSTOMIZATION); - - writer.openBlock("func $L(stack *middleware.Stack, options Options) error {", "}", UPDATE_ENDPOINT_ADDER, () -> { - writer.write("return $T(stack, $T{ \n" - + "Region: options.Region,\n GetBucketFromInput: $L,\n UsePathStyle: options.$L,\n " - + "UseAccelerate: options.$L,\n SupportsAccelerate: $L,\n UseDualstack: options.$L, \n})", - SymbolUtils.createValueSymbolBuilder(UPDATE_ENDPOINT_INTERNAL_ADDER, - AwsCustomGoDependency.S3_CUSTOMIZATION).build(), - SymbolUtils.createValueSymbolBuilder(UPDATE_ENDPOINT_INTERNAL_ADDER + "Options", - AwsCustomGoDependency.S3_CUSTOMIZATION).build(), - GET_BUCKET_FROM_INPUT, - USE_PATH_STYLE_OPTION, - USE_ACCELERATE_OPTION, - SUPPORT_ACCELERATE, - USE_DUALSTACK_OPTION + // Create a symbol provider because one is not available in this call. + SymbolProvider symbolProvider = GoCodegenPlugin.createSymbolProvider(model, settings.getModuleName()); + String helperFuncName = addMiddlewareFuncName( + symbolProvider.toSymbol(operation).getName(), + UPDATE_ENDPOINT_INTERNAL_ADDER ); - }); - writer.insertTrailingNewline(); + + runtimeClientPlugins.add(RuntimeClientPlugin.builder() + .servicePredicate((m, s) -> s.equals(service)) + .operationPredicate((m, s, o) -> o.equals(operation)) + .registerMiddleware(MiddlewareRegistrar.builder() + .resolvedFunction(SymbolUtils.createValueSymbolBuilder(helperFuncName) + .build()) + .useClientOptions() + .build()) + .build()); + } } @Override public List getClientPlugins() { - return ListUtils.of( - // Add S3 config to use path style host addressing. + runtimeClientPlugins.addAll(ListUtils.of( + // Add S3 shared config's dualstack option RuntimeClientPlugin.builder() - .servicePredicate(S3UpdateEndpoint::isS3Service) + .servicePredicate(S3UpdateEndpoint::isS3SharedService) .configFields(ListUtils.of( ConfigField.builder() - .name(USE_PATH_STYLE_OPTION) + .name(USE_DUALSTACK_OPTION) .type(SymbolUtils.createValueSymbolBuilder("bool") .putProperty(SymbolUtils.GO_UNIVERSE_TYPE, true) .build()) - .documentation("Allows you to enable the client to use path-style addressing, " - + "i.e., `https://s3.amazonaws.com/BUCKET/KEY`. By default, the S3 client " - + "will use virtual hosted bucket addressing when possible" - + "(`https://BUCKET.s3.amazonaws.com/KEY`).") + .documentation( + "Allows you to enable Dualstack endpoint support for the service.") .build(), ConfigField.builder() - .name(USE_ACCELERATE_OPTION) + .name(USE_ARNREGION_OPTION) .type(SymbolUtils.createValueSymbolBuilder("bool") .putProperty(SymbolUtils.GO_UNIVERSE_TYPE, true) .build()) - .documentation("Allows you to enable S3 Accelerate feature. All operations " - + "compatible with S3 Accelerate will use the accelerate endpoint for " - + "requests. Requests not compatible will fall back to normal S3 requests. " - + "The bucket must be enabled for accelerate to be used with S3 client with " - + "accelerate enabled. If the bucket is not enabled for accelerate an error " - + "will be returned. The bucket name must be DNS compatible to work " - + "with accelerate.") + .documentation("Allows you to enable arn region support for the service.") .build() - )) - .build(), - // Add S3 shared config's dualstack option - RuntimeClientPlugin.builder() - .servicePredicate(S3UpdateEndpoint::isS3SharedService) - .configFields(ListUtils.of( - ConfigField.builder() - .name(USE_DUALSTACK_OPTION) - .type(SymbolUtils.createValueSymbolBuilder("bool") - .putProperty(SymbolUtils.GO_UNIVERSE_TYPE, true) - .build()) - .documentation("Allows you to enable Dualstack endpoint support for the service.") - .build() )) - .registerMiddleware(MiddlewareRegistrar.builder() - .resolvedFunction(SymbolUtils.createValueSymbolBuilder(UPDATE_ENDPOINT_ADDER).build()) - .useClientOptions() - .build()) - .build() - ); + .build() + )); + runtimeClientPlugins.addAll(s3.getClientPlugins()); + return runtimeClientPlugins; } - private static boolean isS3Service(Model model, ServiceShape service) { - return service.expectTrait(ServiceTrait.class).getSdkId().equalsIgnoreCase("S3"); - } - private static boolean isS3ControlService(Model model, ServiceShape service) { - return service.expectTrait(ServiceTrait.class).getSdkId().equalsIgnoreCase("S3 Control"); + /* + * s3 class is the private class handling s3 goIntegration for endpoint mutations + */ + private static class s3 { + + // options to be generated on Client's options type + private static final String USE_PATH_STYLE_OPTION = "UsePathStyle"; + private static final String USE_ACCELERATE_OPTION = "UseAccelerate"; + + // private function getter constant + private static final String GET_BUCKET_FROM_INPUT = "getBucketFromInput"; + private static final String SUPPORT_ACCELERATE = "supportAccelerate"; + + // service shape representing s3 + private final ServiceShape service; + // list of operations that do not support accelerate + private final Set NOT_SUPPORT_ACCELERATE = SetUtils.of( + "ListBuckets", "CreateBucket", "DeleteBucket" + ); + + private s3(ServiceShape service) { + this.service = service; + } + + // getClientPlugins returns a list of client plugins for s3 service + private static List getClientPlugins() { + List list = ListUtils.of( + // Add S3 config to use path style host addressing. + RuntimeClientPlugin.builder() + .servicePredicate(S3UpdateEndpoint::isS3Service) + .configFields(ListUtils.of( + ConfigField.builder() + .name(USE_PATH_STYLE_OPTION) + .type(SymbolUtils.createValueSymbolBuilder("bool") + .putProperty(SymbolUtils.GO_UNIVERSE_TYPE, true) + .build()) + .documentation( + "Allows you to enable the client to use path-style addressing, " + + "i.e., `https://s3.amazonaws.com/BUCKET/KEY`. By default, the S3 client " + + "will use virtual hosted bucket addressing when possible" + + "(`https://BUCKET.s3.amazonaws.com/KEY`).") + .build(), + ConfigField.builder() + .name(USE_ACCELERATE_OPTION) + .type(SymbolUtils.createValueSymbolBuilder("bool") + .putProperty(SymbolUtils.GO_UNIVERSE_TYPE, true) + .build()) + .documentation("Allows you to enable S3 Accelerate feature. All operations " + + "compatible with S3 Accelerate will use the accelerate endpoint for " + + "requests. Requests not compatible will fall back to normal S3 requests. " + + "The bucket must be enabled for accelerate to be used with S3 client with " + + "accelerate enabled. If the bucket is not enabled for accelerate an error " + + "will be returned. The bucket name must be DNS compatible to work " + + "with accelerate.") + .build() + )) + .build() + ); + return list; + } + + private void writeAdditionalFiles( + GoSettings settings, + Model model, + SymbolProvider symbolProvider, + GoDelegator goDelegator + ) { + goDelegator.useShapeWriter(service, writer -> { + writeInputGetter(writer, model, symbolProvider, service); + }); + + goDelegator.useShapeWriter(service, writer -> { + writeAccelerateValidator(writer, model, symbolProvider, service); + }); + + for (ShapeId operationID : service.getAllOperations()) { + OperationShape operation = model.expectShape(operationID, OperationShape.class); + goDelegator.useShapeWriter(operation, writer -> { + // get input shape from operation + StructureShape input = model.expectShape(operation.getInput().get(), StructureShape.class); + // generate update endpoint middleware helper function + writeMiddlewareHelper(writer, model, symbolProvider, operation); + }); + } + } + + private void writeMiddlewareHelper( + GoWriter writer, Model model, SymbolProvider symbolProvider, OperationShape operationShape + ) { + // imports + writer.addUseImports(SmithyGoDependency.SMITHY_MIDDLEWARE); + + // operation name + String operationName = symbolProvider.toSymbol(operationShape).getName(); + + writer.openBlock("func $L(stack *middleware.Stack, options Options) error {", "}", + addMiddlewareFuncName(symbolProvider.toSymbol(operationShape).getName(), + UPDATE_ENDPOINT_INTERNAL_ADDER), () -> { + writer.write("return $T(stack, $T{ \n" + + "Accessor : $T{GetBucketFromInput: $L,\n SupportsAccelerate: $L,\n }, \n" + + "UsePathStyle: options.$L,\n " + + "UseAccelerate: options.$L,\n " + + "EndpointResolver: options.EndpointResolver,\n " + + "EndpointResolverOptions: options.EndpointOptions,\n" + + "UseDualstack: options.$L, \n UseARNRegion: options.$L, \n })", + SymbolUtils.createValueSymbolBuilder(UPDATE_ENDPOINT_INTERNAL_ADDER, + AwsCustomGoDependency.S3_CUSTOMIZATION).build(), + SymbolUtils.createValueSymbolBuilder(UPDATE_ENDPOINT_INTERNAL_OPTIONS, + AwsCustomGoDependency.S3_CUSTOMIZATION).build(), + SymbolUtils.createValueSymbolBuilder(UPDATE_ENDPOINT_INTERNAL_PARAMETER_ACCESSOR, + AwsCustomGoDependency.S3_CUSTOMIZATION).build(), + GET_BUCKET_FROM_INPUT, + SUPPORT_ACCELERATE, + USE_PATH_STYLE_OPTION, + USE_ACCELERATE_OPTION, + USE_DUALSTACK_OPTION, + USE_ARNREGION_OPTION + ); + }); + writer.insertTrailingNewline(); + } + + private void writeInputGetter( + GoWriter writer, Model model, SymbolProvider symbolProvider, ServiceShape service + ) { + writer.writeDocs( + "getBucketFromInput returns a boolean indicating if the input has a modeled bucket name, " + + " and a pointer to string denoting a provided bucket member value"); + writer.openBlock("func getBucketFromInput(input interface{}) (*string, bool) {", "}", () -> { + writer.openBlock("switch i:= input.(type) {", "}", () -> { + service.getAllOperations().forEach((operationId) -> { + OperationShape operation = model.expectShape(operationId, OperationShape.class); + StructureShape input = model.expectShape(operation.getInput().get(), StructureShape.class); + + List targetBucketShape = input.getAllMembers().values().stream() + .filter(m -> m.getTarget().getName().equals("BucketName")) + .collect(Collectors.toList()); + // if model has multiple top level shapes targeting `BucketName`, we throw a codegen exception + if (targetBucketShape.size() > 1) { + throw new CodegenException( + "BucketName shape should be targeted by only one input member, found " + + targetBucketShape.size() + " for Input shape: " + input.getId()); + } + + if (!targetBucketShape.isEmpty() && !operationId.getName().equalsIgnoreCase( + "GetBucketLocation")) { + writer.write("case $P: return i.$L, true", symbolProvider.toSymbol(input), + targetBucketShape.get(0).getMemberName()); + } + }); + writer.write("default: return nil, false"); + }); + }); + } + + private void writeAccelerateValidator( + GoWriter writer, Model model, SymbolProvider symbolProvider, ServiceShape service + ) { + writer.writeDocs( + "supportAccelerate returns a boolean indicating if the operation associated with the provided input " + + "supports S3 Transfer Acceleration"); + writer.openBlock("func $L(input interface{}) bool {", "}", SUPPORT_ACCELERATE, () -> { + writer.openBlock("switch input.(type) {", "}", () -> { + for (ShapeId operationId : service.getAllOperations()) { + // check if operation does not support s3 accelerate + if (NOT_SUPPORT_ACCELERATE.contains(operationId.getName())) { + OperationShape operation = model.expectShape(operationId, OperationShape.class); + StructureShape input = model.expectShape(operation.getInput().get(), StructureShape.class); + writer.write("case $P: return false", symbolProvider.toSymbol(input)); + } + } + writer.write("default: return true"); + }); + }); + } } - private static boolean isS3SharedService(Model model, ServiceShape service) { - return isS3Service(model,service) || isS3ControlService(model, service); + /** + * s3control class is the private class handling s3control goIntegration for endpoint mutations + */ + private static class s3control { + + // S3Control function getter constant + private static final String GET_OUTPOST_ID_FROM_INPUT = "getOutpostIDFromInput"; + // service associated with this class + private final ServiceShape service; + // List of operations that use Accesspoint field as ARN input source. + private final Set LIST_ACCESSPOINT_ARN_INPUT = SetUtils.of( + "GetAccessPoint", "DeleteAccessPoint", "PutAccessPointPolicy", + "GetAccessPointPolicy", "DeleteAccessPointPolicy" + ); + // List of operations that use OutpostID to resolve endpoint + private final Set LIST_OUTPOST_ID_INPUT = SetUtils.of( + "CreateBucket", "ListRegionalBuckets" + ); + + private s3control(ServiceShape service) { + this.service = service; + } + + // returns a function identifier string for backfillAccountID function + private static final String backFillAccountIDFuncName(String operation) { + return String.format("backFill%s%s", operation, "AccountID"); + } + + // returns a function identifier string for arn member setter function + private static final String setARNMemberFuncName(String operation) { + return setterFuncName(operation, "ARNMember"); + } + + // returns a function identifier string for arn member getter function + private static final String getARNMemberFuncName(String operation) { + return getterFuncName(operation, "ARNMember"); + } + + void writeAdditionalFiles( + GoSettings settings, + Model model, + SymbolProvider symbolProvider, + GoDelegator goDelegator + ) { + goDelegator.useShapeWriter(service, writer -> { + // generate outpost id helper function + writeOutpostIDHelper(writer, model, symbolProvider, service); + }); + + for (ShapeId operationID : service.getAllOperations()) { + OperationShape operation = model.expectShape(operationID, OperationShape.class); + goDelegator.useShapeWriter(operation, writer -> { + // get input shape from operation + StructureShape input = model.expectShape(operation.getInput().get(), StructureShape.class); + // generate input copy function + writeInputCopy(writer, symbolProvider, input); + // generate arn helper function + writeARNHelper(writer, model, symbolProvider, operation); + // generate backfill account id helper function + writeBackfillAccountIDHelper(writer, model, symbolProvider, operation); + // generate update endpoint middleware helper function + writeMiddlewareHelper(writer, model, symbolProvider, operation); + }); + } + } + + private void writeMiddlewareHelper( + GoWriter writer, Model model, SymbolProvider symbolProvider, OperationShape operationShape + ) { + // imports + writer.addUseImports(SmithyGoDependency.SMITHY_MIDDLEWARE); + + // input shape + StructureShape inputShape = model.expectShape(operationShape.getInput().get(), StructureShape.class); + String operationName = symbolProvider.toSymbol(operationShape).getName(); + + writer.openBlock("func $L(stack *middleware.Stack, options Options) error {", "}", + addMiddlewareFuncName(symbolProvider.toSymbol(operationShape).getName(), + UPDATE_ENDPOINT_INTERNAL_ADDER), () -> { + writer.write("return $T(stack, $T{ \n" + + "Accessor : $T{GetARNInput: $L,\n BackfillAccountID: $L,\n" + + "GetOutpostIDInput: $L, \n UpdateARNField: $L,\n CopyInput: $L,\n }, \n" + + "EndpointResolver: options.EndpointResolver,\n " + + "EndpointResolverOptions: options.EndpointOptions,\n" + + "UseDualstack: options.$L, \n UseARNRegion: options.$L, \n })", + SymbolUtils.createValueSymbolBuilder(UPDATE_ENDPOINT_INTERNAL_ADDER, + AwsCustomGoDependency.S3CONTROL_CUSTOMIZATION).build(), + SymbolUtils.createValueSymbolBuilder(UPDATE_ENDPOINT_INTERNAL_OPTIONS, + AwsCustomGoDependency.S3CONTROL_CUSTOMIZATION).build(), + SymbolUtils.createValueSymbolBuilder(UPDATE_ENDPOINT_INTERNAL_PARAMETER_ACCESSOR, + AwsCustomGoDependency.S3CONTROL_CUSTOMIZATION).build(), + LIST_OUTPOST_ID_INPUT.contains(operationName) ? "nil" : getARNMemberFuncName( + operationName), + LIST_OUTPOST_ID_INPUT.contains(operationName) ? "nil" : backFillAccountIDFuncName( + operationName), + GET_OUTPOST_ID_FROM_INPUT, + LIST_OUTPOST_ID_INPUT.contains(operationName) ? "nil" : setARNMemberFuncName( + operationName), + copyInputFuncName(symbolProvider.toSymbol(inputShape).getName()), + USE_DUALSTACK_OPTION, + USE_ARNREGION_OPTION + ); + }); + writer.insertTrailingNewline(); + } + + /** + * Writes a accessor function that returns an address to copy of passed in input + * + * @param writer + * @param symbolProvider + * @param input + */ + private void writeInputCopy( + GoWriter writer, + SymbolProvider symbolProvider, + StructureShape input + ) { + Symbol inputSymbol = symbolProvider.toSymbol(input); + writer.openBlock("func $L(params interface{}) (interface{}, error) {", "}", + copyInputFuncName(inputSymbol.getName()), + () -> { + writer.addUseImports(SmithyGoDependency.FMT); + writer.write("input, ok := params.($P)", inputSymbol); + writer.openBlock("if !ok {", "}", () -> { + writer.write("return nil, fmt.Errorf(\"expect $P type, got %T\", params)", inputSymbol); + }); + writer.write("cpy := *input"); + writer.write("return &cpy, nil"); + }); + } + + /** + * writes BackfillAccountID Helper function for s3 api operation + *

+ * Generates code: + * === api_operation.go=== + * func backfillAccountID(input interface{}, v string) error { + * in := input.(*OpInputType) + * if in.AccountId!=nil { + * iv := *in.AccountId + * if !strings.EqualFold(iv, v) { + * return fmt.Errorf("error backfilling account id") + * } + * return nil + * } + *

+ * in.AccountId = &v + * return nil + * } + */ + private void writeBackfillAccountIDHelper( + GoWriter writer, Model model, SymbolProvider symbolProvider, OperationShape operation + ) { + StructureShape input = model.expectShape(operation.getInput().get(), StructureShape.class); + List targetAccountIDShape = input.getAllMembers().values().stream() + .filter(m -> m.getMemberName().equals("AccountId")) + .collect(Collectors.toList()); + // if model has multiple top level shapes targeting `AccountId`, we throw a codegen exception + if (targetAccountIDShape.size() > 1) { + throw new CodegenException("AccountId shape should be targeted by only one input member, found " + + targetAccountIDShape.size() + " for Input shape: " + input.getId()); + } + + Symbol inputSymbol = symbolProvider.toSymbol(input); + writer.write("func $L (input interface{}, v string) error { ", + backFillAccountIDFuncName(symbolProvider.toSymbol(operation).getName())); + if (!targetAccountIDShape.isEmpty()) { + String memberName = targetAccountIDShape.get(0).getMemberName(); + writer.write("in := input.($P)", inputSymbol); + writer.write("if in.$L != nil {", memberName); + + writer.addUseImports(SmithyGoDependency.STRINGS); + writer.write("if !strings.EqualFold(*in.$L, v) {", memberName); + + writer.addUseImports(SmithyGoDependency.FMT); + writer.write("return fmt.Errorf(\"error backfilling account id\") }"); + writer.write("return nil }"); + writer.write("in.$L = &v", memberName); + } + writer.write("return nil }"); + } + + /** + * writes getARNMemberValue and updateARNMemberValue update function for all api input operations + */ + private void writeARNHelper( + GoWriter writer, Model model, SymbolProvider symbolProvider, OperationShape operation + ) { + // list of outpost id input require special behavior + if (LIST_OUTPOST_ID_INPUT.contains(operation.getId().getName())) { + return; + } + + // arn target shape + String arnType = LIST_ACCESSPOINT_ARN_INPUT.contains( + operation.getId().getName() + ) ? "AccessPointName" : "BucketName"; + + StructureShape input = model.expectShape(operation.getInput().get(), StructureShape.class); + List listOfARNMembers = input.getAllMembers().values().stream() + .filter(m -> m.getTarget().getName().equals(arnType)) + .collect(Collectors.toList()); + // if model has multiple top level shapes targeting arnable field, we throw a codegen exception + if (listOfARNMembers.size() > 1) { + throw new CodegenException(arnType + " shape should be targeted by only one input member, found " + + listOfARNMembers.size() + " for Input shape: " + input.getId()); + } + + Symbol inputSymbol = symbolProvider.toSymbol(input); + + // generate arn member accessor getter function + writer.write("func $L (input interface{}) (*string, bool) { ", + getARNMemberFuncName(symbolProvider.toSymbol(operation).getName())); + if (!listOfARNMembers.isEmpty()) { + String memberName = listOfARNMembers.get(0).getMemberName(); + writer.write("in := input.($P)", inputSymbol); + writer.write("if in.$L == nil {return nil, false }", memberName); + writer.write("return in.$L, true }", memberName); + } else { + writer.write("return nil, false }"); + } + + writer.insertTrailingNewline(); + + // generate arn member accessor setter function + writer.write("func $L (input interface{}, v string) error {", + setARNMemberFuncName(symbolProvider.toSymbol(operation).getName())); + if (!listOfARNMembers.isEmpty()) { + String memberName = listOfARNMembers.get(0).getMemberName(); + writer.write("in := input.($P)", inputSymbol); + writer.write("in.$L = &v", memberName); + } + writer.write("return nil }"); + } + + /** + * writes OutpostID Helper function for operations CreateBucket and ListRegionalBuckets + *

+ * Generates code: + * func getOutpostIDFromInput (in interface{}) (*string, bool) { + * switch in.(type) { + * case CreateBucket: return in.OutpostId, true + * case listRegionalBuckets : return in.OutpostID, true + * default: nil, false + * } + * } + */ + private void writeOutpostIDHelper( + GoWriter writer, Model model, SymbolProvider symbolProvider, ServiceShape service + ) { + writer.writeDocs( + "getOutpostIDFromInput returns a boolean indicating if the input has a modeled outpost-id, " + + " and a pointer to string denoting a provided outpost-id member value"); + writer.openBlock("func $L (input interface{}) (*string, bool) {", "}", + GET_OUTPOST_ID_FROM_INPUT, () -> { + writer.openBlock("switch i:= input.(type) {", "}", () -> { + for (ShapeId operationId : service.getAllOperations()) { + // customization only applied to operations CreateBucket, ListRegionalBuckets + if (!LIST_OUTPOST_ID_INPUT.contains(operationId.getName())) { + continue; + } + OperationShape operation = model.expectShape(operationId, OperationShape.class); + StructureShape input = model.expectShape(operation.getInput().get(), + StructureShape.class); + List outpostIDMemberShapes = input.getAllMembers().values().stream() + .filter(m -> m.getMemberName().equalsIgnoreCase("OutpostId")) + .collect(Collectors.toList()); + // if model has multiple top level shapes targeting `OutpostId`, we throw a codegen exception + if (outpostIDMemberShapes.size() > 1) { + throw new CodegenException( + "OutpostID shape should be targeted by only one input member, found " + + outpostIDMemberShapes.size() + " for Input shape: " + input.getId()); + } + + if (!outpostIDMemberShapes.isEmpty()) { + writer.write("case $P: return i.$L, true", symbolProvider.toSymbol(input), + outpostIDMemberShapes.get(0).getMemberName()); + } + } + writer.write("default: return nil, false"); + }); + }); + } } } From 04bc03b0a93a46ebcde0194ff794db418ff6e652 Mon Sep 17 00:00:00 2001 From: skotambkar Date: Sun, 8 Nov 2020 22:21:52 -0800 Subject: [PATCH 04/21] add s3 customization for accesspoint and outposts --- service/s3/internal/arn/accesspoint_arn.go | 45 -- .../s3/internal/arn/accesspoint_arn_test.go | 109 ----- service/s3/internal/arn/arn.go | 71 --- service/s3/internal/arn/arn_parser.go | 70 +++ service/s3/internal/arn/arn_test.go | 168 ------- service/s3/internal/customizations/doc.go | 26 +- .../customizations/process_arn_resource.go | 348 ++++++++++++++ .../remove_bucket_middleware.go | 49 ++ .../customizations/update_endpoint.go | 107 ++++- .../customizations/update_endpoint_test.go | 452 +++++++++++++++++- 10 files changed, 1025 insertions(+), 420 deletions(-) delete mode 100644 service/s3/internal/arn/accesspoint_arn.go delete mode 100644 service/s3/internal/arn/accesspoint_arn_test.go delete mode 100644 service/s3/internal/arn/arn.go create mode 100644 service/s3/internal/arn/arn_parser.go delete mode 100644 service/s3/internal/arn/arn_test.go create mode 100644 service/s3/internal/customizations/process_arn_resource.go create mode 100644 service/s3/internal/customizations/remove_bucket_middleware.go diff --git a/service/s3/internal/arn/accesspoint_arn.go b/service/s3/internal/arn/accesspoint_arn.go deleted file mode 100644 index 9368ed5de1f..00000000000 --- a/service/s3/internal/arn/accesspoint_arn.go +++ /dev/null @@ -1,45 +0,0 @@ -package arn - -import ( - "strings" - - "github.com/aws/aws-sdk-go-v2/aws/arn" -) - -// AccessPointARN provides representation -type AccessPointARN struct { - arn.ARN - AccessPointName string -} - -// GetARN returns the base ARN for the Access Point resource -func (a AccessPointARN) GetARN() arn.ARN { - return a.ARN -} - -// ParseAccessPointResource attempts to parse the ARN's resource as an -// AccessPoint resource. -func ParseAccessPointResource(a arn.ARN, resParts []string) (AccessPointARN, error) { - if len(a.Region) == 0 { - return AccessPointARN{}, InvalidARNError{a, "region not set"} - } - if len(a.AccountID) == 0 { - return AccessPointARN{}, InvalidARNError{a, "account-id not set"} - } - if len(resParts) == 0 { - return AccessPointARN{}, InvalidARNError{a, "resource-id not set"} - } - if len(resParts) > 1 { - return AccessPointARN{}, InvalidARNError{a, "sub resource not supported"} - } - - resID := resParts[0] - if len(strings.TrimSpace(resID)) == 0 { - return AccessPointARN{}, InvalidARNError{a, "resource-id not set"} - } - - return AccessPointARN{ - ARN: a, - AccessPointName: resID, - }, nil -} diff --git a/service/s3/internal/arn/accesspoint_arn_test.go b/service/s3/internal/arn/accesspoint_arn_test.go deleted file mode 100644 index e5e78ce6736..00000000000 --- a/service/s3/internal/arn/accesspoint_arn_test.go +++ /dev/null @@ -1,109 +0,0 @@ -// +build go1.7 - -package arn - -import ( - "reflect" - "strings" - "testing" - - "github.com/aws/aws-sdk-go-v2/aws/arn" -) - -func TestParseAccessPointResource(t *testing.T) { - cases := map[string]struct { - ARN arn.ARN - ExpectErr string - ExpectARN AccessPointARN - }{ - "region not set": { - ARN: arn.ARN{ - Partition: "aws", - Service: "s3", - AccountID: "012345678901", - Resource: "accesspoint/myendpoint", - }, - ExpectErr: "region not set", - }, - "account-id not set": { - ARN: arn.ARN{ - Partition: "aws", - Service: "s3", - Region: "us-west-2", - Resource: "accesspoint/myendpoint", - }, - ExpectErr: "account-id not set", - }, - "resource-id not set": { - ARN: arn.ARN{ - Partition: "aws", - Service: "s3", - Region: "us-west-2", - AccountID: "012345678901", - Resource: "accesspoint", - }, - ExpectErr: "resource-id not set", - }, - "resource-id empty": { - ARN: arn.ARN{ - Partition: "aws", - Service: "s3", - Region: "us-west-2", - AccountID: "012345678901", - Resource: "accesspoint:", - }, - ExpectErr: "resource-id not set", - }, - "resource not supported": { - ARN: arn.ARN{ - Partition: "aws", - Service: "s3", - Region: "us-west-2", - AccountID: "012345678901", - Resource: "accesspoint/endpoint/object/key", - }, - ExpectErr: "sub resource not supported", - }, - "valid resource-id": { - ARN: arn.ARN{ - Partition: "aws", - Service: "s3", - Region: "us-west-2", - AccountID: "012345678901", - Resource: "accesspoint/endpoint", - }, - ExpectARN: AccessPointARN{ - ARN: arn.ARN{ - Partition: "aws", - Service: "s3", - Region: "us-west-2", - AccountID: "012345678901", - Resource: "accesspoint/endpoint", - }, - AccessPointName: "endpoint", - }, - }, - } - - for name, c := range cases { - t.Run(name, func(t *testing.T) { - resParts := SplitResource(c.ARN.Resource) - a, err := ParseAccessPointResource(c.ARN, resParts[1:]) - - if len(c.ExpectErr) == 0 && err != nil { - t.Fatalf("expect no error but got %v", err) - } else if len(c.ExpectErr) != 0 && err == nil { - t.Fatalf("expect error %q, but got nil", c.ExpectErr) - } else if len(c.ExpectErr) != 0 && err != nil { - if e, a := c.ExpectErr, err.Error(); !strings.Contains(a, e) { - t.Fatalf("expect error %q, got %q", e, a) - } - return - } - - if e, a := c.ExpectARN, a; !reflect.DeepEqual(e, a) { - t.Errorf("expect %v, got %v", e, a) - } - }) - } -} diff --git a/service/s3/internal/arn/arn.go b/service/s3/internal/arn/arn.go deleted file mode 100644 index ae7df8f05fd..00000000000 --- a/service/s3/internal/arn/arn.go +++ /dev/null @@ -1,71 +0,0 @@ -package arn - -import ( - "strings" - - "github.com/aws/aws-sdk-go-v2/aws/arn" -) - -// Resource provides the interfaces abstracting ARNs of specific resource -// types. -type Resource interface { - GetARN() arn.ARN - String() string -} - -// ResourceParser provides the function for parsing an ARN's resource -// component into a typed resource. -type ResourceParser func(arn.ARN) (Resource, error) - -// ParseResource parses an AWS ARN into a typed resource for the S3 API. -func ParseResource(s string, resParser ResourceParser) (resARN Resource, err error) { - a, err := arn.Parse(s) - if err != nil { - return nil, err - } - - if len(a.Partition) == 0 { - return nil, InvalidARNError{a, "partition not set"} - } - if a.Service != "s3" { - return nil, InvalidARNError{a, "service is not S3"} - } - if len(a.Resource) == 0 { - return nil, InvalidARNError{a, "resource not set"} - } - - return resParser(a) -} - -// SplitResource splits the resource components by the ARN resource delimiters. -func SplitResource(v string) []string { - var parts []string - var offset int - - for offset <= len(v) { - idx := strings.IndexAny(v[offset:], "/:") - if idx < 0 { - parts = append(parts, v[offset:]) - break - } - parts = append(parts, v[offset:idx+offset]) - offset += idx + 1 - } - - return parts -} - -// IsARN returns whether the given string is an ARN -func IsARN(s string) bool { - return arn.IsARN(s) -} - -// InvalidARNError provides the error for an invalid ARN error. -type InvalidARNError struct { - ARN arn.ARN - Reason string -} - -func (e InvalidARNError) Error() string { - return "invalid Amazon S3 ARN, " + e.Reason + ", " + e.ARN.String() -} diff --git a/service/s3/internal/arn/arn_parser.go b/service/s3/internal/arn/arn_parser.go new file mode 100644 index 00000000000..dfe5c70f51b --- /dev/null +++ b/service/s3/internal/arn/arn_parser.go @@ -0,0 +1,70 @@ +package arn + +import ( + "strings" + + awsarn "github.com/aws/aws-sdk-go-v2/aws/arn" + "github.com/aws/aws-sdk-go-v2/service/internal/s3shared/arn" +) + +// ParseEndpointARN parses a given generic aws ARN into a s3 arn resource. +func ParseEndpointARN(v awsarn.ARN) (arn.Resource, error) { + return arn.ParseResource(v, accessPointResourceParser) +} + +func accessPointResourceParser(a awsarn.ARN) (arn.Resource, error) { + resParts := arn.SplitResource(a.Resource) + switch resParts[0] { + case "accesspoint": + if a.Service != "s3" { + return arn.AccessPointARN{}, arn.InvalidARNError{ARN: a, Reason: "service is not s3"} + } + return arn.ParseAccessPointResource(a, resParts[1:]) + case "outpost": + if a.Service != "s3-outposts" { + return arn.OutpostAccessPointARN{}, arn.InvalidARNError{ARN: a, Reason: "service is not s3-outposts"} + } + return parseOutpostAccessPointResource(a, resParts[1:]) + default: + return nil, arn.InvalidARNError{ARN: a, Reason: "unknown resource type"} + } +} + +func parseOutpostAccessPointResource(a awsarn.ARN, resParts []string) (arn.OutpostAccessPointARN, error) { + // outpost accesspoint arn is only valid if service is s3-outposts + if a.Service != "s3-outposts" { + return arn.OutpostAccessPointARN{}, arn.InvalidARNError{ARN: a, Reason: "service is not s3-outposts"} + } + + if len(resParts) == 0 { + return arn.OutpostAccessPointARN{}, arn.InvalidARNError{ARN: a, Reason: "outpost resource-id not set"} + } + + if len(resParts) < 3 { + return arn.OutpostAccessPointARN{}, arn.InvalidARNError{ + ARN: a, Reason: "access-point resource not set in Outpost ARN", + } + } + + resID := strings.TrimSpace(resParts[0]) + if len(resID) == 0 { + return arn.OutpostAccessPointARN{}, arn.InvalidARNError{ARN: a, Reason: "outpost resource-id not set"} + } + + var outpostAccessPointARN = arn.OutpostAccessPointARN{} + switch resParts[1] { + case "accesspoint": + accessPointARN, err := arn.ParseAccessPointResource(a, resParts[2:]) + if err != nil { + return arn.OutpostAccessPointARN{}, err + } + // set access-point arn + outpostAccessPointARN.AccessPointARN = accessPointARN + default: + return arn.OutpostAccessPointARN{}, arn.InvalidARNError{ARN: a, Reason: "access-point resource not set in Outpost ARN"} + } + + // set outpost id + outpostAccessPointARN.OutpostID = resID + return outpostAccessPointARN, nil +} diff --git a/service/s3/internal/arn/arn_test.go b/service/s3/internal/arn/arn_test.go deleted file mode 100644 index 80fbc3e02db..00000000000 --- a/service/s3/internal/arn/arn_test.go +++ /dev/null @@ -1,168 +0,0 @@ -// +build go1.7 - -package arn - -import ( - "reflect" - "strings" - "testing" - - "github.com/aws/aws-sdk-go-v2/aws/arn" -) - -func TestParseResource(t *testing.T) { - cases := map[string]struct { - Input string - MappedResources map[string]func(arn.ARN, []string) (Resource, error) - Expect Resource - ExpectErr string - }{ - "Empty ARN": { - Input: "", - ExpectErr: "arn: invalid prefix", - }, - "No Partition": { - Input: "arn::sqs:us-west-2:012345678901:accesspoint", - ExpectErr: "partition not set", - }, - "Not S3 ARN": { - Input: "arn:aws:sqs:us-west-2:012345678901:accesspoint", - ExpectErr: "service is not S3", - }, - "No Resource": { - Input: "arn:aws:s3:us-west-2:012345678901:", - ExpectErr: "resource not set", - }, - "Unknown Resource Type": { - Input: "arn:aws:s3:us-west-2:012345678901:myresource", - ExpectErr: "unknown resource type", - }, - "Unknown BucketARN Resource Type": { - Input: "arn:aws:s3:us-west-2:012345678901:bucket_name:mybucket", - ExpectErr: "unknown resource type", - }, - "Unknown Resource Type with Resource and Sub-Resource": { - Input: "arn:aws:s3:us-west-2:012345678901:somethingnew:myresource/subresource", - ExpectErr: "unknown resource type", - }, - "Access Point with sub resource": { - Input: "arn:aws:s3:us-west-2:012345678901:accesspoint:myresource/subresource", - MappedResources: map[string]func(arn.ARN, []string) (Resource, error){ - "accesspoint": func(a arn.ARN, parts []string) (Resource, error) { - return ParseAccessPointResource(a, parts) - }, - }, - ExpectErr: "resource not supported", - }, - "AccessPoint Resource Type": { - Input: "arn:aws:s3:us-west-2:012345678901:accesspoint:myendpoint", - MappedResources: map[string]func(arn.ARN, []string) (Resource, error){ - "accesspoint": func(a arn.ARN, parts []string) (Resource, error) { - return ParseAccessPointResource(a, parts) - }, - }, - Expect: AccessPointARN{ - ARN: arn.ARN{ - Partition: "aws", - Service: "s3", - Region: "us-west-2", - AccountID: "012345678901", - Resource: "accesspoint:myendpoint", - }, - AccessPointName: "myendpoint", - }, - }, - "AccessPoint Resource Type With Path Syntax": { - Input: "arn:aws:s3:us-west-2:012345678901:accesspoint/myendpoint", - MappedResources: map[string]func(arn.ARN, []string) (Resource, error){ - "accesspoint": func(a arn.ARN, parts []string) (Resource, error) { - return ParseAccessPointResource(a, parts) - }, - }, - Expect: AccessPointARN{ - ARN: arn.ARN{ - Partition: "aws", - Service: "s3", - Region: "us-west-2", - AccountID: "012345678901", - Resource: "accesspoint/myendpoint", - }, - AccessPointName: "myendpoint", - }, - }, - } - - for name, c := range cases { - t.Run(name, func(t *testing.T) { - parsed, err := ParseResource(c.Input, mappedResourceParser(c.MappedResources)) - - if len(c.ExpectErr) == 0 && err != nil { - t.Fatalf("expect no error but got %v", err) - } else if len(c.ExpectErr) != 0 && err == nil { - t.Fatalf("expect error but got nil") - } else if len(c.ExpectErr) != 0 && err != nil { - if e, a := c.ExpectErr, err.Error(); !strings.Contains(a, e) { - t.Fatalf("expect error %q, got %q", e, a) - } - return - } - - if e, a := c.Expect, parsed; !reflect.DeepEqual(e, a) { - t.Errorf("Expect %v, got %v", e, a) - } - }) - } -} - -func mappedResourceParser(kinds map[string]func(arn.ARN, []string) (Resource, error)) ResourceParser { - return func(a arn.ARN) (Resource, error) { - parts := SplitResource(a.Resource) - - fn, ok := kinds[parts[0]] - if !ok { - return nil, InvalidARNError{a, "unknown resource type"} - } - return fn(a, parts[1:]) - } -} - -func TestSplitResource(t *testing.T) { - cases := []struct { - Input string - Expect []string - }{ - { - Input: "accesspoint:myendpoint", - Expect: []string{"accesspoint", "myendpoint"}, - }, - { - Input: "accesspoint/myendpoint", - Expect: []string{"accesspoint", "myendpoint"}, - }, - { - Input: "accesspoint", - Expect: []string{"accesspoint"}, - }, - { - Input: "accesspoint:", - Expect: []string{"accesspoint", ""}, - }, - { - Input: "accesspoint: ", - Expect: []string{"accesspoint", " "}, - }, - { - Input: "accesspoint:endpoint/object/key", - Expect: []string{"accesspoint", "endpoint", "object", "key"}, - }, - } - - for _, c := range cases { - t.Run(c.Input, func(t *testing.T) { - parts := SplitResource(c.Input) - if e, a := c.Expect, parts; !reflect.DeepEqual(e, a) { - t.Errorf("expect %v, got %v", e, a) - } - }) - } -} diff --git a/service/s3/internal/customizations/doc.go b/service/s3/internal/customizations/doc.go index 5946e759955..2502b39fa5a 100644 --- a/service/s3/internal/customizations/doc.go +++ b/service/s3/internal/customizations/doc.go @@ -3,8 +3,12 @@ Package customizations provides customizations for the Amazon S3 API client. This package provides support for following S3 customizations + ProcessARN Middleware: processes an ARN if provided as input and updates the endpoint as per the arn type + UpdateEndpoint Middleware: resolves a custom endpoint as per s3 config options + RemoveBucket Middleware: removes a serialized bucket name from request url path + processResponseWith200Error Middleware: Deserializing response error with 200 status code @@ -29,24 +33,40 @@ acceleration only works with Virtual Host style addressing, and thus `UsePathSty option if set is ignored. Transfer acceleration is not supported for S3 operations DeleteBucket, ListBuckets, and CreateBucket. + Dualstack support By default dualstack support for s3 client is disabled. By enabling `UseDualstack` option on s3 client, you can enable dualstack endpoint support. -UpdateEndpoint middleware handler for modifying resolved endpoint needs to be -executed after request serialization. +Endpoint customizations + + +Customizations to lookup ARN, process ARN needs to happen before request serialization. +UpdateEndpoint middleware which mutates resources based on Options such as +UseDualstack, UseAccelerate for modifying resolved endpoint are executed after +request serialization. Remove bucket middleware is executed after +an request is serialized, and removes the serialized bucket name from request path Middleware layering: - HTTP Request -> operation serializer -> Update-Endpoint customization -> next middleware + + Initialize : HTTP Request -> ARN Lookup -> Input-Validation -> Serialize step + + Serialize : HTTP Request -> Process ARN -> operation serializer -> Update-Endpoint customization -> Remove-Bucket -> next middleware + Customization options: + UseARNRegion (Disabled by Default) + UsePathStyle (Disabled by Default) + UseAccelerate (Disabled by Default) + UseDualstack (Disabled by Default) + Handle Error response with 200 status code S3 operations: CopyObject, CompleteMultipartUpload, UploadPartCopy can have an diff --git a/service/s3/internal/customizations/process_arn_resource.go b/service/s3/internal/customizations/process_arn_resource.go new file mode 100644 index 00000000000..7dd7da7ea25 --- /dev/null +++ b/service/s3/internal/customizations/process_arn_resource.go @@ -0,0 +1,348 @@ +package customizations + +import ( + "context" + "fmt" + "net/url" + "strings" + + "github.com/awslabs/smithy-go/middleware" + "github.com/awslabs/smithy-go/transport/http" + + awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" + "github.com/aws/aws-sdk-go-v2/service/internal/s3shared" + "github.com/aws/aws-sdk-go-v2/service/internal/s3shared/arn" + s3arn "github.com/aws/aws-sdk-go-v2/service/s3/internal/arn" +) + +// processARNResource is used to process an ARN resource. +type processARNResource struct { + + // UseARNRegion indicates if region parsed from an ARN should be used. + UseARNRegion bool + + // UseAccelerate indicates if s3 transfer acceleration is enabled + UseAccelerate bool + + // UseDualstack instructs if s3 dualstack endpoint config is enabled + UseDualstack bool + + // EndpointResolver used to resolve endpoints. This may be a custom endpoint resolver + EndpointResolver EndpointResolver + + // EndpointResolverOptions used by endpoint resolver + EndpointResolverOptions EndpointResolverOptions +} + +// ID returns the middleware ID. +func (*processARNResource) ID() string { return "S3:ProcessARNResource" } + +func (m *processARNResource) HandleSerialize( + ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler, +) ( + out middleware.SerializeOutput, metadata middleware.Metadata, err error, +) { + // check if arn was provided, if not skip this middleware + arnValue, ok := s3shared.GetARNResourceFromContext(ctx) + if !ok { + return next.HandleSerialize(ctx, in) + } + + req, ok := in.Request.(*http.Request) + if !ok { + return out, metadata, fmt.Errorf("unknown request type %T", req) + } + + // parse arn into an endpoint arn wrt to service + resource, err := s3arn.ParseEndpointARN(arnValue) + if err != nil { + return out, metadata, err + } + + // build a resource request struct + resourceRequest := s3shared.ResourceRequest{ + Resource: resource, + UseARNRegion: m.UseARNRegion, + RequestRegion: awsmiddleware.GetRegion(ctx), + SigningRegion: awsmiddleware.GetSigningRegion(ctx), + PartitionID: awsmiddleware.GetPartitionID(ctx), + } + + // validate resource request + if err := validateResourceRequest(resourceRequest); err != nil { + return out, metadata, err + } + + // switch to correct endpoint updater + switch tv := resource.(type) { + case arn.AccessPointARN: + // check if accelerate + if m.UseAccelerate { + return out, metadata, s3shared.NewClientConfiguredForAccelerateError(tv, + resourceRequest.PartitionID, resourceRequest.RequestRegion, nil) + } + + // fetch arn region to resolve request + resolveRegion := tv.Region + // check if request region is FIPS + if resourceRequest.UseFips() { + // if use arn region is enabled and request signing region is not same as arn region + if m.UseARNRegion && resourceRequest.IsCrossRegion() { + // FIPS with cross region is not supported, the SDK must fail + // because there is no well defined method for SDK to construct a + // correct FIPS endpoint. + return out, metadata, + s3shared.NewClientConfiguredForCrossRegionFIPSError( + tv, + resourceRequest.PartitionID, + resourceRequest.RequestRegion, + nil, + ) + } + + // if use arn region is NOT set, we should use the request region + resolveRegion = resourceRequest.RequestRegion + } + + // build access point request + ctx, err = buildAccessPointRequest(ctx, accesspointOptions{ + processARNResource: *m, + request: req, + resource: tv, + resolveRegion: resolveRegion, + partitionID: resourceRequest.PartitionID, + requestRegion: resourceRequest.RequestRegion, + }) + if err != nil { + return out, metadata, err + } + + // process outpost accesspoint ARN + case arn.OutpostAccessPointARN: + // check if accelerate + if m.UseAccelerate { + return out, metadata, s3shared.NewClientConfiguredForAccelerateError(tv, + resourceRequest.PartitionID, resourceRequest.RequestRegion, nil) + } + + // check if dual stack + if m.UseDualstack { + return out, metadata, s3shared.NewClientConfiguredForDualStackError(tv, + resourceRequest.PartitionID, resourceRequest.RequestRegion, nil) + } + + // check if resource arn region is FIPS + if resourceRequest.ResourceConfiguredForFIPS() { + return out, metadata, s3shared.NewInvalidARNWithFIPSError(tv, nil) + } + + // build outpost access point request + ctx, err = buildOutpostAccessPointRequest(ctx, outpostAccessPointOptions{ + processARNResource: *m, + resource: tv, + request: req, + partitionID: resourceRequest.PartitionID, + requestRegion: resourceRequest.RequestRegion, + }) + if err != nil { + return out, metadata, err + } + + default: + return out, metadata, s3shared.NewInvalidARNError(resource, nil) + } + + return next.HandleSerialize(ctx, in) +} + +// validate if s3 resource and request config is compatible. +func validateResourceRequest(resourceRequest s3shared.ResourceRequest) error { + // check if resourceRequest leads to a cross partition error + v, err := resourceRequest.IsCrossPartition() + if err != nil { + return err + } + if v { + // if cross partition + return s3shared.NewClientPartitionMismatchError(resourceRequest.Resource, + resourceRequest.PartitionID, resourceRequest.RequestRegion, nil) + } + + // check if resourceRequest leads to a cross region error + if !resourceRequest.AllowCrossRegion() && resourceRequest.IsCrossRegion() { + // if cross region, but not use ARN region is not enabled + return s3shared.NewClientRegionMismatchError(resourceRequest.Resource, + resourceRequest.PartitionID, resourceRequest.RequestRegion, nil) + } + + return nil +} + +// === Accesspoint ========== + +type accesspointOptions struct { + processARNResource + request *http.Request + resource arn.AccessPointARN + resolveRegion string + partitionID string + requestRegion string +} + +func buildAccessPointRequest(ctx context.Context, options accesspointOptions) (context.Context, error) { + tv := options.resource + req := options.request + resolveRegion := options.resolveRegion + + resolveService := tv.Service + + // resolve endpoint + endpoint, err := options.EndpointResolver.ResolveEndpoint(resolveRegion, options.EndpointResolverOptions) + if err != nil { + return ctx, s3shared.NewFailedToResolveEndpointError( + tv, + options.partitionID, + options.requestRegion, + err, + ) + } + + // assign resolved endpoint url to request url + req.URL, err = url.Parse(endpoint.URL) + if err != nil { + return ctx, fmt.Errorf("failed to parse endpoint URL: %w", err) + } + + if len(endpoint.SigningName) != 0 { + ctx = awsmiddleware.SetSigningName(ctx, endpoint.SigningName) + } else { + ctx = awsmiddleware.SetSigningName(ctx, resolveService) + } + + if len(endpoint.SigningRegion) != 0 { + ctx = awsmiddleware.SetSigningRegion(ctx, endpoint.SigningRegion) + } else { + ctx = awsmiddleware.SetSigningRegion(ctx, resolveRegion) + } + + // skip arn processing, if arn region resolves to a immutable endpoint + if endpoint.HostnameImmutable { + return ctx, nil + } + + const serviceEndpointLabel = "s3-accesspoint" + cfgHost := req.URL.Host + if strings.HasPrefix(cfgHost, "s3") { + // replace service hostlabel "s3" to "s3-accesspoint" + req.URL.Host = serviceEndpointLabel + cfgHost[len("s3"):] + + // update serviceID to "s3-accesspoint" + ctx = awsmiddleware.SetServiceID(ctx, serviceEndpointLabel) + } + + // add host prefix for s3-accesspoint + accessPointHostPrefix := tv.AccessPointName + "-" + tv.AccountID + "." + req.URL.Host = accessPointHostPrefix + req.URL.Host + if len(req.Host) > 0 { + req.Host = accessPointHostPrefix + req.Host + } + + // validate the endpoint host + if err := http.ValidateEndpointHost(req.URL.Host); err != nil { + return ctx, s3shared.NewInvalidARNError(tv, err) + } + + // disable host prefix behavior + ctx = http.DisableEndpointHostPrefix(ctx, true) + + // remove the serialized arn in place of /{Bucket} + ctx = setBucketToRemoveOnContext(ctx, tv.String()) + + return ctx, nil +} + +// ====== Outpost Accesspoint ======== + +type outpostAccessPointOptions struct { + processARNResource + request *http.Request + resource arn.OutpostAccessPointARN + partitionID string + requestRegion string +} + +func buildOutpostAccessPointRequest(ctx context.Context, options outpostAccessPointOptions) (context.Context, error) { + tv := options.resource + req := options.request + + resolveRegion := tv.Region + resolveService := tv.Service + endpointsID := resolveService + if strings.EqualFold(resolveService, "s3-outposts") { + // assign endpoints ID as "S3" + endpointsID = "s3" + } + + // resolve regional endpoint for resolved region. + endpoint, err := options.EndpointResolver.ResolveEndpoint(resolveRegion, options.EndpointResolverOptions) + if err != nil { + return ctx, s3shared.NewFailedToResolveEndpointError( + tv, + options.partitionID, + options.requestRegion, + err, + ) + } + + // assign resolved endpoint url to request url + req.URL, err = url.Parse(endpoint.URL) + if err != nil { + return ctx, fmt.Errorf("failed to parse endpoint URL: %w", err) + } + + if len(endpoint.SigningName) != 0 { + ctx = awsmiddleware.SetSigningName(ctx, endpoint.SigningName) + } else { + // assign resolved service from arn as signing name + ctx = awsmiddleware.SetSigningName(ctx, resolveService) + } + + if len(endpoint.SigningRegion) != 0 { + // redirect signer to use resolved endpoint signing name and region + ctx = awsmiddleware.SetSigningRegion(ctx, endpoint.SigningRegion) + } else { + ctx = awsmiddleware.SetSigningRegion(ctx, resolveRegion) + } + + // skip further customizations, if arn region resolves to a immutable endpoint + if endpoint.HostnameImmutable { + return ctx, nil + } + + cfgHost := req.URL.Host + if strings.HasPrefix(cfgHost, endpointsID) { + // replace service endpointID label with resolved service + req.URL.Host = resolveService + cfgHost[len(endpointsID):] + // update serviceID to resolved service id + ctx = awsmiddleware.SetServiceID(ctx, resolveService) + } + + // add host prefix for s3-outposts + outpostAPHostPrefix := tv.AccessPointName + "-" + tv.AccountID + "." + tv.OutpostID + "." + req.URL.Host = outpostAPHostPrefix + req.URL.Host + if len(req.Host) > 0 { + req.Host = outpostAPHostPrefix + req.Host + } + + // validate the endpoint host + if err := http.ValidateEndpointHost(req.URL.Host); err != nil { + return ctx, s3shared.NewInvalidARNError(tv, err) + } + + // disable host prefix behavior + ctx = http.DisableEndpointHostPrefix(ctx, true) + + // remove the serialized arn in place of /{Bucket} + ctx = setBucketToRemoveOnContext(ctx, tv.String()) + return ctx, nil +} diff --git a/service/s3/internal/customizations/remove_bucket_middleware.go b/service/s3/internal/customizations/remove_bucket_middleware.go new file mode 100644 index 00000000000..1d44d974d37 --- /dev/null +++ b/service/s3/internal/customizations/remove_bucket_middleware.go @@ -0,0 +1,49 @@ +package customizations + +import ( + "context" + "fmt" + "github.com/awslabs/smithy-go/middleware" + "github.com/awslabs/smithy-go/transport/http" +) + +// removeBucketFromPathMiddleware needs to be executed after serialize step is performed +type removeBucketFromPathMiddleware struct { +} + +func (m *removeBucketFromPathMiddleware) ID() string { + return "S3:RemoveBucketFromPathMiddleware" +} + +func (m *removeBucketFromPathMiddleware) HandleSerialize( + ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler, +) ( + out middleware.SerializeOutput, metadata middleware.Metadata, err error, +) { + // check if a bucket removal from HTTP path is required + bucket, ok := getRemoveBucketFromPath(ctx) + if !ok { + return next.HandleSerialize(ctx, in) + } + + req, ok := in.Request.(*http.Request) + if !ok { + return out, metadata, fmt.Errorf("unknown request type %T", req) + } + + removeBucketFromPath(req.URL, bucket) + return next.HandleSerialize(ctx, in) +} + +type removeBucketKey struct { + bucket string +} + +func setBucketToRemoveOnContext(ctx context.Context, bucket string) context.Context { + return context.WithValue(ctx, removeBucketKey{}, bucket) +} + +func getRemoveBucketFromPath(ctx context.Context) (string, bool) { + v, ok := ctx.Value(removeBucketKey{}).(string) + return v, ok +} diff --git a/service/s3/internal/customizations/update_endpoint.go b/service/s3/internal/customizations/update_endpoint.go index 901e8914980..ca08f1991d8 100644 --- a/service/s3/internal/customizations/update_endpoint.go +++ b/service/s3/internal/customizations/update_endpoint.go @@ -7,61 +7,115 @@ import ( "net/url" "strings" + "github.com/aws/aws-sdk-go-v2/aws" "github.com/awslabs/smithy-go/middleware" smithyhttp "github.com/awslabs/smithy-go/transport/http" + awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" "github.com/aws/aws-sdk-go-v2/service/internal/s3shared" + + internalendpoints "github.com/aws/aws-sdk-go-v2/service/s3/internal/endpoints" ) -// UpdateEndpointOptions provides the options for the UpdateEndpoint middleware setup. -type UpdateEndpointOptions struct { - // region used - Region string +// EndpointResolver interface for resolving service endpoints. +type EndpointResolver interface { + ResolveEndpoint(region string, options EndpointResolverOptions) (aws.Endpoint, error) +} + +// EndpointResolverOptions is the service endpoint resolver options +type EndpointResolverOptions = internalendpoints.Options +// UpdateEndpointParameterAccessor represents accessor functions used by the middleware +type UpdateEndpointParameterAccessor struct { // functional pointer to fetch bucket name from provided input. // The function is intended to take an input value, and // return a string pointer to value of string, and bool if // input has no bucket member. GetBucketFromInput func(interface{}) (*string, bool) + // functional pointer to indicate support for accelerate. + // The function is intended to take an input value, and + // return if the operation supports accelerate. + SupportsAccelerate func(interface{}) bool +} + +// UpdateEndpointOptions provides the options for the UpdateEndpoint middleware setup. +type UpdateEndpointOptions struct { + + // Accessor are parameter accessors used by the middleware + Accessor UpdateEndpointParameterAccessor + // use path style UsePathStyle bool // use transfer acceleration UseAccelerate bool - // functional pointer to indicate support for accelerate. - // The function is intended to take an input value, and - // return if the operation supports accelerate. - SupportsAccelerate func(interface{}) bool - // use dualstack UseDualstack bool + + // use ARN region + UseARNRegion bool + + // EndpointResolver used to resolve endpoints. This may be a custom endpoint resolver + EndpointResolver EndpointResolver + + // EndpointResolverOptions used by endpoint resolver + EndpointResolverOptions EndpointResolverOptions } // UpdateEndpoint adds the middleware to the middleware stack based on the UpdateEndpointOptions. -func UpdateEndpoint(stack *middleware.Stack, options UpdateEndpointOptions) error { +func UpdateEndpoint(stack *middleware.Stack, options UpdateEndpointOptions) (err error) { + // initial arn look up middleware + err = stack.Initialize.Insert(&s3shared.ARNLookup{ + GetARNValue: options.Accessor.GetBucketFromInput, + }, "OperationInputValidation", middleware.Before) + if err != nil { + return err + } + + // process arn + err = stack.Serialize.Insert(&processARNResource{ + UseARNRegion: options.UseARNRegion, + UseAccelerate: options.UseAccelerate, + UseDualstack: options.UseDualstack, + EndpointResolver: options.EndpointResolver, + EndpointResolverOptions: options.EndpointResolverOptions, + }, "OperationSerializer", middleware.Before) + if err != nil { + return err + } + + // remove bucket arn middleware + err = stack.Serialize.Insert(&removeBucketFromPathMiddleware{}, "OperationSerializer", middleware.After) + if err != nil { + return err + } + // enable dual stack support - if err := stack.Serialize.Insert(&s3shared.EnableDualstack{ - UseDualstack: options.UseDualstack, - ServiceID: "s3", - }, "OperationSerializer", middleware.After); err != nil { + err = stack.Serialize.Insert(&s3shared.EnableDualstack{ + UseDualstack: options.UseDualstack, + DefaultServiceID: "s3", + }, "OperationSerializer", middleware.After) + if err != nil { return err } // update endpoint to use options for path style and accelerate - return stack.Serialize.Insert(&updateEndpoint{ - region: options.Region, + err = stack.Serialize.Insert(&updateEndpoint{ usePathStyle: options.UsePathStyle, - getBucketFromInput: options.GetBucketFromInput, + getBucketFromInput: options.Accessor.GetBucketFromInput, useAccelerate: options.UseAccelerate, - supportsAccelerate: options.SupportsAccelerate, + supportsAccelerate: options.Accessor.SupportsAccelerate, }, (*s3shared.EnableDualstack)(nil).ID(), middleware.After) + if err != nil { + return err + } + + return err } type updateEndpoint struct { - region string - // path style options usePathStyle bool getBucketFromInput func(interface{}) (*string, bool) @@ -81,6 +135,12 @@ func (u *updateEndpoint) HandleSerialize( ) ( out middleware.SerializeOutput, metadata middleware.Metadata, err error, ) { + // if arn was processed, skip this middleware + if _, ok := s3shared.GetARNResourceFromContext(ctx); ok { + return next.HandleSerialize(ctx, in) + } + + // skip this customization if host name is set as immutable if smithyhttp.GetHostnameImmutable(ctx) { return next.HandleSerialize(ctx, in) } @@ -107,7 +167,8 @@ func (u *updateEndpoint) HandleSerialize( // Below customization only apply if bucket name is provided bucket, ok := u.getBucketFromInput(in.Parameters) if ok && bucket != nil { - if err := u.updateEndpointFromConfig(req, *bucket); err != nil { + region := awsmiddleware.GetRegion(ctx) + if err := u.updateEndpointFromConfig(req, *bucket, region); err != nil { return out, metadata, err } } @@ -116,7 +177,7 @@ func (u *updateEndpoint) HandleSerialize( return next.HandleSerialize(ctx, in) } -func (u updateEndpoint) updateEndpointFromConfig(req *smithyhttp.Request, bucket string) error { +func (u updateEndpoint) updateEndpointFromConfig(req *smithyhttp.Request, bucket string, region string) error { // do nothing if path style is enforced if u.usePathStyle { return nil @@ -147,7 +208,7 @@ func (u updateEndpoint) updateEndpointFromConfig(req *smithyhttp.Request, bucket } for i := 1; i+1 < len(parts); i++ { - if strings.EqualFold(parts[i], u.region) { + if strings.EqualFold(parts[i], region) { parts = append(parts[:i], parts[i+1:]...) break } diff --git a/service/s3/internal/customizations/update_endpoint_test.go b/service/s3/internal/customizations/update_endpoint_test.go index 3fbcf8880e8..6d3a4150fc9 100644 --- a/service/s3/internal/customizations/update_endpoint_test.go +++ b/service/s3/internal/customizations/update_endpoint_test.go @@ -7,7 +7,10 @@ import ( "strings" "testing" + "github.com/awslabs/smithy-go/ptr" + "github.com/aws/aws-sdk-go-v2/aws" + awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" "github.com/aws/aws-sdk-go-v2/internal/awstesting/unit" "github.com/aws/aws-sdk-go-v2/service/s3/internal/endpoints" @@ -230,8 +233,451 @@ func TestUpdateEndpointBuild(t *testing.T) { } } +func TestEndpointWithARN(t *testing.T) { + // test cases + cases := map[string]struct { + options s3.Options + bucket string + expectedErr string + expectedReqURL string + expectedSigningName string + expectedSigningRegion string + }{ + "Outpost AccessPoint with no S3UseARNRegion flag set": { + bucket: "arn:aws:s3-outposts:us-west-2:123456789012:outpost:op-01234567890123456:accesspoint:myaccesspoint", + options: s3.Options{ + Region: "us-west-2", + }, + expectedReqURL: "https://myaccesspoint-123456789012.op-01234567890123456.s3-outposts.us-west-2.amazonaws.com/testkey?x-id=GetObject", + expectedSigningName: "s3-outposts", + expectedSigningRegion: "us-west-2", + }, + "Outpost AccessPoint Cross-Region Enabled": { + bucket: "arn:aws:s3-outposts:us-east-1:123456789012:outpost:op-01234567890123456:accesspoint:myaccesspoint", + options: s3.Options{ + Region: "us-west-2", + UseARNRegion: true, + }, + expectedReqURL: "https://myaccesspoint-123456789012.op-01234567890123456.s3-outposts.us-east-1.amazonaws.com/testkey?x-id=GetObject", + expectedSigningName: "s3-outposts", + expectedSigningRegion: "us-east-1", + }, + "Outpost AccessPoint Cross-Region Disabled": { + bucket: "arn:aws:s3-outposts:us-east-1:123456789012:outpost:op-01234567890123456:accesspoint:myaccesspoint", + options: s3.Options{ + Region: "us-west-2", + }, + expectedErr: "client region does not match provided ARN region", + }, + "Outpost AccessPoint other partition": { + bucket: "arn:aws-cn:s3-outposts:cn-north-1:123456789012:outpost:op-01234567890123456:accesspoint:myaccesspoint", + options: s3.Options{ + Region: "us-west-2", + UseARNRegion: true, + }, + expectedErr: "ConfigurationError : client partition does not match provided ARN partition", + }, + "Outpost AccessPoint cn partition": { + bucket: "arn:aws-cn:s3-outposts:cn-north-1:123456789012:outpost:op-01234567890123456:accesspoint:myaccesspoint", + options: s3.Options{ + Region: "cn-north-1", + }, + expectedReqURL: "https://myaccesspoint-123456789012.op-01234567890123456.s3-outposts.cn-north-1.amazonaws.com.cn/testkey?x-id=GetObject", + expectedSigningName: "s3-outposts", + expectedSigningRegion: "cn-north-1", + }, + "Outpost AccessPoint us-gov region": { + bucket: "arn:aws-us-gov:s3-outposts:us-gov-east-1:123456789012:outpost:op-01234567890123456:accesspoint:myaccesspoint", + options: s3.Options{ + Region: "us-gov-east-1", + UseARNRegion: true, + }, + expectedReqURL: "https://myaccesspoint-123456789012.op-01234567890123456.s3-outposts.us-gov-east-1.amazonaws.com/testkey?x-id=GetObject", + expectedSigningName: "s3-outposts", + expectedSigningRegion: "us-gov-east-1", + }, + "Outpost AccessPoint Fips region": { + bucket: "arn:aws-us-gov:s3-outposts:us-gov-east-1:123456789012:outpost:op-01234567890123456:accesspoint:myaccesspoint", + options: s3.Options{ + Region: "fips-us-gov-west-1", + }, + expectedErr: "ConfigurationError : client region does not match provided ARN region", + }, + "Outpost AccessPoint Fips region in Arn": { + bucket: "arn:aws-us-gov:s3-outposts:fips-us-gov-west-1:123456789012:outpost:op-01234567890123456:accesspoint:myaccesspoint", + options: s3.Options{ + Region: "fips-us-gov-west-1", + EndpointOptions: endpoints.Options{DisableHTTPS: true}, + UseARNRegion: true, + }, + expectedErr: "InvalidARNError : resource ARN not supported for FIPS region", + }, + "Outpost AccessPoint Fips region with valid ARN region": { + bucket: "arn:aws-us-gov:s3-outposts:us-gov-east-1:123456789012:outpost:op-01234567890123456:accesspoint:myaccesspoint", + options: s3.Options{ + Region: "fips-us-gov-west-1", + UseARNRegion: true, + }, + expectedReqURL: "https://myaccesspoint-123456789012.op-01234567890123456.s3-outposts.us-gov-east-1.amazonaws.com/testkey?x-id=GetObject", + expectedSigningName: "s3-outposts", + expectedSigningRegion: "us-gov-east-1", + }, + "Outpost AccessPoint with DualStack": { + bucket: "arn:aws:s3-outposts:us-west-2:123456789012:outpost:op-01234567890123456:accesspoint:myaccesspoint", + options: s3.Options{ + Region: "us-west-2", + UseDualstack: true, + }, + expectedErr: "ConfigurationError : client configured for S3 Dual-stack but is not supported with resource ARN", + }, + "Outpost AccessPoint with Accelerate": { + bucket: "arn:aws:s3-outposts:us-west-2:123456789012:outpost:op-01234567890123456:accesspoint:myaccesspoint", + options: s3.Options{ + Region: "us-west-2", + UseAccelerate: true, + }, + expectedErr: "ConfigurationError : client configured for S3 Accelerate but is not supported with resource ARN", + }, + "AccessPoint": { + bucket: "arn:aws:s3:us-west-2:123456789012:accesspoint:myendpoint", + options: s3.Options{ + Region: "us-west-2", + }, + expectedReqURL: "https://myendpoint-123456789012.s3-accesspoint.us-west-2.amazonaws.com/testkey?x-id=GetObject", + expectedSigningName: "s3", + expectedSigningRegion: "us-west-2", + }, + "AccessPoint slash delimiter": { + bucket: "arn:aws:s3:us-west-2:123456789012:accesspoint/myendpoint", + options: s3.Options{ + Region: "us-west-2", + }, + expectedReqURL: "https://myendpoint-123456789012.s3-accesspoint.us-west-2.amazonaws.com/testkey?x-id=GetObject", + expectedSigningName: "s3", + expectedSigningRegion: "us-west-2", + }, + "AccessPoint other partition": { + bucket: "arn:aws-cn:s3:cn-north-1:123456789012:accesspoint:myendpoint", + options: s3.Options{ + Region: "cn-north-1", + }, + expectedReqURL: "https://myendpoint-123456789012.s3-accesspoint.cn-north-1.amazonaws.com.cn/testkey?x-id=GetObject", + expectedSigningName: "s3", + expectedSigningRegion: "cn-north-1", + }, + "AccessPoint Cross-Region Disabled": { + bucket: "arn:aws:s3:ap-south-1:123456789012:accesspoint:myendpoint", + options: s3.Options{ + Region: "us-west-2", + }, + expectedErr: "client region does not match provided ARN region", + }, + "AccessPoint Cross-Region Enabled": { + bucket: "arn:aws:s3:ap-south-1:123456789012:accesspoint:myendpoint", + options: s3.Options{ + Region: "us-west-2", + UseARNRegion: true, + }, + expectedReqURL: "https://myendpoint-123456789012.s3-accesspoint.ap-south-1.amazonaws.com/testkey?x-id=GetObject", + expectedSigningName: "s3", + expectedSigningRegion: "ap-south-1", + }, + "AccessPoint us-east-1": { + bucket: "arn:aws:s3:us-east-1:123456789012:accesspoint:myendpoint", + options: s3.Options{ + Region: "us-east-1", + UseARNRegion: true, + }, + expectedReqURL: "https://myendpoint-123456789012.s3-accesspoint.us-east-1.amazonaws.com/testkey?x-id=GetObject", + expectedSigningName: "s3", + expectedSigningRegion: "us-east-1", + }, + "AccessPoint us-east-1 cross region": { + bucket: "arn:aws:s3:us-east-1:123456789012:accesspoint:myendpoint", + options: s3.Options{ + Region: "us-west-2", + UseARNRegion: true, + }, + expectedReqURL: "https://myendpoint-123456789012.s3-accesspoint.us-east-1.amazonaws.com/testkey?x-id=GetObject", + expectedSigningName: "s3", + expectedSigningRegion: "us-east-1", + }, + "AccessPoint Cross-Partition not supported": { + bucket: "arn:aws-cn:s3:cn-north-1:123456789012:accesspoint:myendpoint", + options: s3.Options{ + Region: "us-west-2", + UseDualstack: true, + UseARNRegion: true, + }, + expectedErr: "client partition does not match provided ARN partition", + }, + "AccessPoint DualStack": { + bucket: "arn:aws:s3:us-west-2:123456789012:accesspoint:myendpoint", + options: s3.Options{ + Region: "us-west-2", + UseDualstack: true, + }, + expectedReqURL: "https://myendpoint-123456789012.s3-accesspoint.dualstack.us-west-2.amazonaws.com/testkey?x-id=GetObject", + expectedSigningName: "s3", + expectedSigningRegion: "us-west-2", + }, + "AccessPoint FIPS same region with cross region disabled": { + bucket: "arn:aws-us-gov:s3:us-gov-west-1:123456789012:accesspoint:myendpoint", + options: s3.Options{ + Region: "fips-us-gov-west-1", + EndpointResolver: EndpointResolverFunc(func(region string, options s3.EndpointResolverOptions) (aws.Endpoint, error) { + switch region { + case "fips-us-gov-west-1": + return aws.Endpoint{ + URL: "https://s3-fips.us-gov-west-1.amazonaws.com", + PartitionID: "aws-us-gov", + SigningRegion: "us-gov-west-1", + SigningName: "s3", + SigningMethod: "s3v4", + }, nil + } + return aws.Endpoint{}, nil + }), + }, + expectedReqURL: "https://myendpoint-123456789012.s3-accesspoint-fips.us-gov-west-1.amazonaws.com/testkey?x-id=GetObject", + expectedSigningName: "s3", + expectedSigningRegion: "us-gov-west-1", + }, + "AccessPoint FIPS same region with cross region enabled": { + bucket: "arn:aws-us-gov:s3:us-gov-west-1:123456789012:accesspoint:myendpoint", + options: s3.Options{ + Region: "fips-us-gov-west-1", + EndpointResolver: EndpointResolverFunc(func(region string, options s3.EndpointResolverOptions) (aws.Endpoint, error) { + switch region { + case "fips-us-gov-west-1": + return aws.Endpoint{ + URL: "https://s3-fips.us-gov-west-1.amazonaws.com", + PartitionID: "aws-us-gov", + SigningRegion: "us-gov-west-1", + SigningMethod: "s3v4", + }, nil + } + return aws.Endpoint{}, nil + }), + UseARNRegion: true, + }, + expectedReqURL: "https://myendpoint-123456789012.s3-accesspoint-fips.us-gov-west-1.amazonaws.com/testkey?x-id=GetObject", + expectedSigningName: "s3", + expectedSigningRegion: "us-gov-west-1", + }, + "AccessPoint FIPS cross region not supported": { + bucket: "arn:aws-us-gov:s3:us-gov-east-1:123456789012:accesspoint:myendpoint", + options: s3.Options{ + Region: "fips-us-gov-west-1", + UseARNRegion: true, + }, + expectedErr: "client configured for FIPS", + }, + "AccessPoint Accelerate not supported": { + bucket: "arn:aws:s3:us-west-2:123456789012:accesspoint:myendpoint", + options: s3.Options{ + Region: "us-west-2", + UseAccelerate: true, + }, + expectedErr: "client configured for S3 Accelerate", + }, + "Custom Resolver Without PartitionID in ClientInfo": { + bucket: "arn:aws:s3:us-west-2:123456789012:accesspoint:myendpoint", + options: s3.Options{ + Region: "us-west-2", + EndpointResolver: EndpointResolverFunc(func(region string, options s3.EndpointResolverOptions) (aws.Endpoint, error) { + switch region { + case "us-west-2": + return aws.Endpoint{ + URL: "https://s3.us-west-2.amazonaws.com", + SigningRegion: "us-west-2", + SigningName: "s3", + SigningMethod: "s3v4", + }, nil + } + return aws.Endpoint{}, nil + }), + }, + expectedErr: "partition id was not found for provided request region", + }, + "Custom Resolver Without PartitionID in Cross-Region Target": { + bucket: "arn:aws:s3:us-west-2:123456789012:accesspoint:myendpoint", + options: s3.Options{ + Region: "us-east-1", + UseARNRegion: true, + EndpointResolver: EndpointResolverFunc(func(region string, options s3.EndpointResolverOptions) (aws.Endpoint, error) { + switch region { + case "us-west-2": + return aws.Endpoint{ + URL: "https://s3.us-west-2.amazonaws.com", + PartitionID: "aws", + SigningRegion: "us-west-2", + SigningName: "s3", + SigningMethod: "s3v4", + }, nil + case "us-east-1": + return aws.Endpoint{ + URL: "https://s3.us-east-1.amazonaws.com", + SigningRegion: "us-east-1", + SigningName: "s3", + SigningMethod: "s3v4", + }, nil + } + return aws.Endpoint{}, nil + }), + }, + expectedErr: "partition id was not found for provided request region", + }, + "bucket host-style": { + bucket: "mock-bucket", + options: s3.Options{ + Region: "us-west-2", + }, + expectedReqURL: "https://mock-bucket.s3.us-west-2.amazonaws.com/testkey?x-id=GetObject", + expectedSigningName: "s3", + expectedSigningRegion: "us-west-2", + }, + "bucket path-style": { + bucket: "mock-bucket", + options: s3.Options{ + Region: "us-west-2", + UsePathStyle: true, + }, + expectedReqURL: "https://s3.us-west-2.amazonaws.com/mock-bucket/testkey?x-id=GetObject", + expectedSigningName: "s3", + expectedSigningRegion: "us-west-2", + }, + "bucket host-style endpoint with default port": { + bucket: "mock-bucket", + options: s3.Options{ + Region: "us-west-2", + EndpointResolver: EndpointResolverFunc(func(region string, options s3.EndpointResolverOptions) (aws.Endpoint, error) { + return aws.Endpoint{ + URL: "https://s3.us-west-2.amazonaws.com:443", + SigningRegion: "us-west-2", + }, nil + }), + }, + expectedReqURL: "https://mock-bucket.s3.us-west-2.amazonaws.com:443/testkey?x-id=GetObject", + expectedSigningName: "s3", + expectedSigningRegion: "us-west-2", + }, + "bucket host-style endpoint with non-default port": { + bucket: "mock-bucket", + options: s3.Options{ + Region: "us-west-2", + EndpointResolver: EndpointResolverFunc(func(region string, options s3.EndpointResolverOptions) (aws.Endpoint, error) { + return aws.Endpoint{ + URL: "https://s3.us-west-2.amazonaws.com:8443", + SigningRegion: "us-west-2", + }, nil + }), + }, + expectedReqURL: "https://mock-bucket.s3.us-west-2.amazonaws.com:8443/testkey?x-id=GetObject", + expectedSigningName: "s3", + expectedSigningRegion: "us-west-2", + }, + "bucket path-style endpoint with default port": { + bucket: "mock-bucket", + options: s3.Options{ + Region: "us-west-2", + EndpointResolver: EndpointResolverFunc(func(region string, options s3.EndpointResolverOptions) (aws.Endpoint, error) { + return aws.Endpoint{ + URL: "https://s3.us-west-2.amazonaws.com:443", + SigningRegion: "us-west-2", + }, nil + }), + UsePathStyle: true, + }, + expectedReqURL: "https://s3.us-west-2.amazonaws.com:443/mock-bucket/testkey?x-id=GetObject", + expectedSigningName: "s3", + expectedSigningRegion: "us-west-2", + }, + "bucket path-style endpoint with non-default port": { + bucket: "mock-bucket", + options: s3.Options{ + Region: "us-west-2", + EndpointResolver: EndpointResolverFunc(func(region string, options s3.EndpointResolverOptions) (aws.Endpoint, error) { + return aws.Endpoint{ + URL: "https://s3.us-west-2.amazonaws.com:8443", + SigningRegion: "us-west-2", + }, nil + }), + UsePathStyle: true, + }, + expectedReqURL: "https://s3.us-west-2.amazonaws.com:8443/mock-bucket/testkey?x-id=GetObject", + expectedSigningName: "s3", + expectedSigningRegion: "us-west-2", + }, + } + + for name, c := range cases { + t.Run(name, func(t *testing.T) { + + // options + opts := c.options.Copy() + opts.Credentials = unit.StubCredentialsProvider{} + opts.HTTPClient = smithyhttp.NopClient{} + opts.Retryer = aws.NoOpRetryer{} + + // build an s3 client + svc := s3.New(opts) + // setup a request retriever middleware + fm := requestRetrieverMiddleware{} + + ctx := context.Background() + + // call an operation + _, err := svc.GetObject(ctx, &s3.GetObjectInput{ + Bucket: ptr.String(c.bucket), + Key: ptr.String("testkey"), + }, func(options *s3.Options) { + // append request retriever middleware for request inspection + options.APIOptions = append(options.APIOptions, + func(stack *middleware.Stack) error { + // adds AFTER operation serializer middleware + stack.Serialize.Insert(&fm, "OperationSerializer", middleware.After) + return nil + }) + }) + + // inspect any errors + if len(c.expectedErr) != 0 { + if err == nil { + t.Fatalf("expected error, got none") + } + if a, e := err.Error(), c.expectedErr; !strings.Contains(a, e) { + t.Fatalf("expect error code to contain %q, got %q", e, a) + } + return + } + if err != nil { + t.Fatalf("expect no error, got %v", err) + } + + // build the captured request + req := fm.request.Build(ctx) + // verify the built request is as expected + if e, a := c.expectedReqURL, req.URL.String(); e != a { + t.Fatalf("expect url %s, got %s", e, a) + } + + if e, a := c.expectedSigningRegion, fm.signingRegion; !strings.EqualFold(e, a) { + t.Fatalf("expect signing region as %s, got %s", e, a) + } + + if e, a := c.expectedSigningName, fm.signingName; !strings.EqualFold(e, a) { + t.Fatalf("expect signing name as %s, got %s", e, a) + } + }) + + } +} + type requestRetrieverMiddleware struct { - request *smithyhttp.Request + request *smithyhttp.Request + signingRegion string + signingName string } func (*requestRetrieverMiddleware) ID() string { return "S3:requestRetrieverMiddleware" } @@ -246,5 +692,9 @@ func (rm *requestRetrieverMiddleware) HandleSerialize( return out, metadata, fmt.Errorf("unknown request type %T", req) } rm.request = req + + rm.signingName = awsmiddleware.GetSigningName(ctx) + rm.signingRegion = awsmiddleware.GetSigningRegion(ctx) + return next.HandleSerialize(ctx, in) } From eccce15f5034e152803ea7f27d0bf4fe0c77e4a1 Mon Sep 17 00:00:00 2001 From: skotambkar Date: Sun, 8 Nov 2020 22:23:34 -0800 Subject: [PATCH 05/21] codegen s3 endpoint resolver for s3control service --- .../aws/go/codegen/EndpointGenerator.java | 201 +++++++++++------- .../S3ControlEndpointResolver.java | 34 +++ 2 files changed, 156 insertions(+), 79 deletions(-) create mode 100644 codegen/smithy-aws-go-codegen/src/main/java/software/amazon/smithy/aws/go/codegen/customization/S3ControlEndpointResolver.java diff --git a/codegen/smithy-aws-go-codegen/src/main/java/software/amazon/smithy/aws/go/codegen/EndpointGenerator.java b/codegen/smithy-aws-go-codegen/src/main/java/software/amazon/smithy/aws/go/codegen/EndpointGenerator.java index f7ae45a8d72..a7d903f1665 100644 --- a/codegen/smithy-aws-go-codegen/src/main/java/software/amazon/smithy/aws/go/codegen/EndpointGenerator.java +++ b/codegen/smithy-aws-go-codegen/src/main/java/software/amazon/smithy/aws/go/codegen/EndpointGenerator.java @@ -44,7 +44,7 @@ * Writes out a file that resolves endpoints using endpoints.json, but the * created resolver resolves endpoints for a single service. */ -final class EndpointGenerator implements Runnable { +public class EndpointGenerator implements Runnable { public static final String MIDDLEWARE_NAME = "ResolveEndpoint"; public static final String ADD_MIDDLEWARE_HELPER_NAME = String.format("add%sMiddleware", MIDDLEWARE_NAME); public static final String RESOLVER_INTERFACE_NAME = "EndpointResolver"; @@ -74,8 +74,11 @@ final class EndpointGenerator implements Runnable { private final ObjectNode endpointData; private final String endpointPrefix; private final Map partitions = new TreeMap<>(); + private final Boolean isInternalOnly; + private final String resolvedSdkID; - EndpointGenerator( + + public EndpointGenerator( GoSettings settings, Model model, TriConsumer> writerFactory @@ -88,6 +91,28 @@ final class EndpointGenerator implements Runnable { this.endpointData = Node.parse(IoUtils.readUtf8Resource(getClass(), "endpoints.json")).expectObjectNode(); validateVersion(); loadPartitions(); + this.isInternalOnly = false; + this.resolvedSdkID = serviceShape.expectTrait(ServiceTrait.class).getSdkId(); + } + + public EndpointGenerator( + GoSettings settings, + Model model, + TriConsumer> writerFactory, + String sdkID, + String arnNamespace, + Boolean internalOnly + ) { + this.settings = settings; + this.model = model; + this.writerFactory = writerFactory; + serviceShape = settings.getService(model); + this.endpointPrefix = getEndpointPrefix(sdkID, arnNamespace); + this.endpointData = Node.parse(IoUtils.readUtf8Resource(getClass(), "endpoints.json")).expectObjectNode(); + validateVersion(); + loadPartitions(); + this.isInternalOnly = internalOnly; + this.resolvedSdkID = sdkID; } private void validateVersion() { @@ -106,6 +131,12 @@ private String getEndpointPrefix(ServiceShape service) { return endpointPrefixData.getStringMemberOrDefault(serviceTrait.getSdkId(), serviceTrait.getArnNamespace()); } + private String getEndpointPrefix(String sdkId, String arnNamespace) { + ObjectNode endpointPrefixData = Node.parse(IoUtils.readUtf8Resource(getClass(), "endpoint-prefix.json")) + .expectObjectNode(); + return endpointPrefixData.getStringMemberOrDefault(sdkId, arnNamespace); + } + private void loadPartitions() { List partitionObjects = endpointData .expectArrayMember("partitions") @@ -119,22 +150,31 @@ private void loadPartitions() { @Override public void run() { - writerFactory.accept("endpoints.go", settings.getModuleName(), writer -> { - generatePublicResolverTypes(writer); - generateMiddleware(writer); - generateAwsEndpointResolverWrapper(writer); - }); - writerFactory.accept(INTERNAL_ENDPOINT_PACKAGE + "/endpoints.go", getInternalEndpointImportPath(), (writer) -> { + if (!this.isInternalOnly) { + writerFactory.accept("endpoints.go", settings.getModuleName(), writer -> { + generatePublicResolverTypes(writer); + generateMiddleware(writer); + generateAwsEndpointResolverWrapper(writer); + }); + } + + String pkgName = isInternalOnly ? INTERNAL_ENDPOINT_PACKAGE + "/" + this.endpointPrefix : INTERNAL_ENDPOINT_PACKAGE; + writerFactory.accept(pkgName + "/endpoints.go", getInternalEndpointImportPath(), (writer) -> { generateInternalResolverImplementation(writer); generateInternalEndpointsModel(writer); }); - writerFactory.accept(INTERNAL_ENDPOINT_PACKAGE + "/endpoints_test.go", - getInternalEndpointImportPath(), (writer) -> { - writer.addUseImports(SmithyGoDependency.TESTING); - writer.openBlock("func TestRegexCompile(t *testing.T) {", "}", () -> { - writer.write("_ = $T", getInternalEndpointsSymbol(INTERNAL_ENDPOINTS_DATA_NAME, false).build()); + + if (!this.isInternalOnly) { + writerFactory.accept(INTERNAL_ENDPOINT_PACKAGE + "/endpoints_test.go", + getInternalEndpointImportPath(), (writer) -> { + writer.addUseImports(SmithyGoDependency.TESTING); + writer.openBlock("func TestRegexCompile(t *testing.T) {", "}", () -> { + writer.write("_ = $T", + getInternalEndpointsSymbol(INTERNAL_ENDPOINTS_DATA_NAME, false).build()); + }); }); - }); + } + } private void generateAwsEndpointResolverWrapper(GoWriter writer) { @@ -254,12 +294,13 @@ private void generateMiddlewareResolverBody(GoStackStepMiddlewareGenerator g, Go }); w.write("ctx = awsmiddleware.SetSigningName(ctx, signingName)"); }); - w.write(""); - - w.write("ctx = awsmiddleware.SetSigningRegion(ctx, endpoint.SigningRegion)"); w.write("ctx = smithyhttp.SetHostnameImmutable(ctx, endpoint.HostnameImmutable)"); - w.write(""); + // set signing region on context + w.write("ctx = awsmiddleware.SetSigningRegion(ctx, endpoint.SigningRegion)"); + // set partition id on context + w.write("ctx = awsmiddleware.SetPartitionID(ctx, endpoint.PartitionID)"); + w.insertTrailingNewline(); w.write("return next.HandleSerialize(ctx, in)"); } @@ -389,8 +430,10 @@ private void generateInternalResolverImplementation(GoWriter writer) { // Resolver Symbol resolverImplSymbol = SymbolUtils.createPointableSymbolBuilder(INTERNAL_RESOLVER_NAME).build(); + + writer.writeDocs(String.format("%s %s endpoint resolver", resolverImplSymbol.getName(), - serviceShape.expectTrait(ServiceTrait.class).getSdkId())); + this.resolvedSdkID)); writer.openBlock("type $T struct {", "}", resolverImplSymbol, () -> { writer.write("partitions $T", SymbolUtils.createValueSymbolBuilder("Partitions", AwsGoDependency.AWS_ENDPOINTS).build()); @@ -505,11 +548,70 @@ private void writeEndpoint(GoWriter writer, ObjectNode node) { }); } + private static class ResolveConfigField extends ConfigField { + private final boolean shared; + + public ResolveConfigField(Builder builder) { + super(builder); + this.shared = builder.shared; + } + + public static Builder builder() { + return new Builder(); + } + + public boolean isShared() { + return shared; + } + + private static class Builder extends ConfigField.Builder { + private boolean shared; + + public Builder() { + super(); + } + + /** + * Set the resolver config field to be shared common parameter + * + * @param shared whether the resolver config field is shared + * @return the builder + */ + public Builder shared(boolean shared) { + this.shared = shared; + return this; + } + + @Override + public ResolveConfigField build() { + return new ResolveConfigField(this); + } + + @Override + public Builder name(String name) { + super.name(name); + return this; + } + + @Override + public Builder type(Symbol type) { + super.type(type); + return this; + } + + @Override + public Builder documentation(String documentation) { + super.documentation(documentation); + return this; + } + } + } + private final class Partition { private final String id; private final ObjectNode defaults; - private String dnsSuffix; private final ObjectNode config; + private final String dnsSuffix; private Partition(ObjectNode config, String partition) { id = partition; @@ -563,63 +665,4 @@ public ObjectNode getConfig() { return config; } } - - private static class ResolveConfigField extends ConfigField { - private final boolean shared; - - public ResolveConfigField(Builder builder) { - super(builder); - this.shared = builder.shared; - } - - public boolean isShared() { - return shared; - } - - public static Builder builder() { - return new Builder(); - } - - private static class Builder extends ConfigField.Builder { - private boolean shared; - - public Builder() { - super(); - } - - /** - * Set the resolver config field to be shared common parameter - * - * @param shared whether the resolver config field is shared - * @return the builder - */ - public Builder shared(boolean shared) { - this.shared = shared; - return this; - } - - @Override - public ResolveConfigField build() { - return new ResolveConfigField(this); - } - - @Override - public Builder name(String name) { - super.name(name); - return this; - } - - @Override - public Builder type(Symbol type) { - super.type(type); - return this; - } - - @Override - public Builder documentation(String documentation) { - super.documentation(documentation); - return this; - } - } - } } diff --git a/codegen/smithy-aws-go-codegen/src/main/java/software/amazon/smithy/aws/go/codegen/customization/S3ControlEndpointResolver.java b/codegen/smithy-aws-go-codegen/src/main/java/software/amazon/smithy/aws/go/codegen/customization/S3ControlEndpointResolver.java new file mode 100644 index 00000000000..800b24aea22 --- /dev/null +++ b/codegen/smithy-aws-go-codegen/src/main/java/software/amazon/smithy/aws/go/codegen/customization/S3ControlEndpointResolver.java @@ -0,0 +1,34 @@ +package software.amazon.smithy.aws.go.codegen.customization; + +import java.util.function.Consumer; +import software.amazon.smithy.aws.go.codegen.EndpointGenerator; +import software.amazon.smithy.aws.traits.ServiceTrait; +import software.amazon.smithy.codegen.core.SymbolProvider; +import software.amazon.smithy.go.codegen.GoSettings; +import software.amazon.smithy.go.codegen.GoWriter; +import software.amazon.smithy.go.codegen.TriConsumer; +import software.amazon.smithy.go.codegen.integration.GoIntegration; +import software.amazon.smithy.model.Model; + +/** + * S3ControlEndpointResolverCustomizations adds an internal endpoint resolver + * for s3 service endpoints + */ +public class S3ControlEndpointResolver implements GoIntegration { + + @Override + public void writeAdditionalFiles( + GoSettings settings, + Model model, + SymbolProvider symbolProvider, + TriConsumer> writerFactory + ) { + if (!settings.getService(model).expectTrait(ServiceTrait.class).getSdkId().equalsIgnoreCase( + "S3 Control")){ + return; + } + + // Generate S3 internal endpoint resolver for S3 Control service + new EndpointGenerator(settings, model, writerFactory,"S3","s3", true).run(); + } +} From bd4e12ab75bbc41e3c699919db37aba9dba171e4 Mon Sep 17 00:00:00 2001 From: skotambkar Date: Sun, 8 Nov 2020 22:25:16 -0800 Subject: [PATCH 06/21] s3-control customizations for outposts support --- .../internal/customizations/backfill_input.go | 56 ++ .../s3control/internal/customizations/doc.go | 22 +- .../customizations/process_arn_resource.go | 398 +++++++++++++ .../customizations/process_outpost_id.go | 81 +++ .../customizations/update_endpoint.go | 98 +++- .../customizations/update_endpoint_test.go | 550 +++++++++++++++++- 6 files changed, 1195 insertions(+), 10 deletions(-) create mode 100644 service/s3control/internal/customizations/backfill_input.go create mode 100644 service/s3control/internal/customizations/process_arn_resource.go create mode 100644 service/s3control/internal/customizations/process_outpost_id.go diff --git a/service/s3control/internal/customizations/backfill_input.go b/service/s3control/internal/customizations/backfill_input.go new file mode 100644 index 00000000000..dac1dd43273 --- /dev/null +++ b/service/s3control/internal/customizations/backfill_input.go @@ -0,0 +1,56 @@ +package customizations + +import ( + "context" + "fmt" + + "github.com/awslabs/smithy-go/middleware" + + "github.com/aws/aws-sdk-go-v2/service/internal/s3shared" +) + +// BackfillInputMiddleware validates and backfill's values from ARN into request serializable input. +// This middleware must be executed after `ARNLookup` and before `inputValidationMiddleware`. +type BackfillInputMiddleware struct { + + // CopyInput creates a copy of input to be modified, this ensures the original input is not modified. + CopyInput func(interface{}) (interface{}, error) + + // BackfillAccountID points to a function that validates the input for accountID. If absent, it populates the + // accountID and returns a copy. If present, but different than passed in accountID value throws an error + BackfillAccountID func(interface{}, string) error +} + +// ID representing the middleware +func (m *BackfillInputMiddleware) ID() string { + return "S3Control:BackfillInputMiddleware" +} + +// HandleInitialize handles the middleware behavior in an Initialize step. +func (m *BackfillInputMiddleware) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( + out middleware.InitializeOutput, metadata middleware.Metadata, err error, +) { + // fetch arn from context + av, ok := s3shared.GetARNResourceFromContext(ctx) + if !ok { + return next.HandleInitialize(ctx, in) + } + + // create a copy of input, and assign it on params + in.Parameters, err = m.CopyInput(in.Parameters) + if err != nil { + return out, metadata, fmt.Errorf("error creating a copy of input") + } + + // if not supported, move to next + if m.BackfillAccountID == nil { + return next.HandleInitialize(ctx, in) + } + + err = m.BackfillAccountID(in.Parameters, av.AccountID) + if err != nil { + return out, metadata, fmt.Errorf("invalid ARN, %w", err) + } + + return next.HandleInitialize(ctx, in) +} diff --git a/service/s3control/internal/customizations/doc.go b/service/s3control/internal/customizations/doc.go index c96b1752068..09e4fbea278 100644 --- a/service/s3control/internal/customizations/doc.go +++ b/service/s3control/internal/customizations/doc.go @@ -3,7 +3,13 @@ Package customizations provides customizations for the Amazon S3-Control API cli This package provides support for following S3-Control customizations - UpdateEndpoint Middleware: resolves a custom endpoint as per s3-control config options + BackfillInput Middleware: validates and backfills data from an ARN resource into a copy of operation input. + + ProcessOutpostID Middleware: applied on CreateBucket, ListRegionalBuckets operation, triggers a custom endpoint generation flow. + + ProcessARN Middleware: processes an ARN if provided as input and updates the endpoint as per the arn type. + + UpdateEndpoint Middleware: resolves a custom endpoint as per s3-control config options. Dualstack support @@ -12,14 +18,22 @@ By default dualstack support for s3-control client is disabled. By enabling `Use option on s3-control client, you can enable dualstack endpoint support. -UpdateEndpoint middleware handler for modifying resolved endpoint needs to be -executed after request serialization. +Endpoint customizations + +Customizations to lookup ARN, backfill input, process outpost id, process ARN +needs to happen before request serialization. UpdateEndpoint middleware which mutates +resources based on Options such as UseDualstack for modifying resolved endpoint +are executed after request serialization. Middleware layering: - HTTP Request -> operation serializer -> Update-Endpoint customization -> next middleware + Initialize : HTTP Request -> ARN Lookup -> BackfillInput -> Input-Validation -> Serialize step + + Serialize : HTTP Request -> Process-OutpostID -> Process ARN -> operation serializer -> Update-Endpoint customization -> next middleware Customization option: + UseARNRegion (Disabled by Default) + UseDualstack (Disabled by Default) */ diff --git a/service/s3control/internal/customizations/process_arn_resource.go b/service/s3control/internal/customizations/process_arn_resource.go new file mode 100644 index 00000000000..bc1faf0496a --- /dev/null +++ b/service/s3control/internal/customizations/process_arn_resource.go @@ -0,0 +1,398 @@ +package customizations + +import ( + "context" + "fmt" + "net/url" + "strings" + + "github.com/awslabs/smithy-go/middleware" + smithyhttp "github.com/awslabs/smithy-go/transport/http" + + "github.com/aws/aws-sdk-go-v2/aws" + awsarn "github.com/aws/aws-sdk-go-v2/aws/arn" + awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" + "github.com/aws/aws-sdk-go-v2/service/internal/s3shared" + "github.com/aws/aws-sdk-go-v2/service/internal/s3shared/arn" + s3endpoints "github.com/aws/aws-sdk-go-v2/service/s3control/internal/endpoints/s3" +) + +const ( + // outpost id header + outpostIDHeader = "x-amz-outpost-id" + + // account id header + accountIDHeader = "x-amz-account-id" +) + +// processARNResource is used to process an ARN resource. +type processARNResource struct { + + // UpdateARNField points to a function that takes in a copy of input, updates the ARN field with + // the provided value and returns the input + UpdateARNField func(interface{}, string) error + + // UseARNRegion indicates if region parsed from an ARN should be used. + UseARNRegion bool + + // UseDualstack instructs if s3 dualstack endpoint config is enabled + UseDualstack bool + + // EndpointResolver used to resolve endpoints. This may be a custom endpoint resolver + EndpointResolver EndpointResolver + + // EndpointResolverOptions used by endpoint resolver + EndpointResolverOptions EndpointResolverOptions +} + +// ID returns the middleware ID. +func (*processARNResource) ID() string { return "S3Control:ProcessARNResourceMiddleware" } + +func (m *processARNResource) HandleSerialize( + ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler, +) ( + out middleware.SerializeOutput, metadata middleware.Metadata, err error, +) { + // check if arn was provided, if not skip this middleware + arnValue, ok := s3shared.GetARNResourceFromContext(ctx) + if !ok { + return next.HandleSerialize(ctx, in) + } + + // if arn region resolves to custom endpoint that is mutable + if smithyhttp.GetHostnameImmutable(ctx) { + return next.HandleSerialize(ctx, in) + } + + req, ok := in.Request.(*smithyhttp.Request) + if !ok { + return out, metadata, fmt.Errorf("unknown request type %T", req) + } + + // parse arn into an endpoint arn wrt to service + resource, err := parseEndpointARN(arnValue) + if err != nil { + return out, metadata, err + } + + resourceRequest := s3shared.ResourceRequest{ + Resource: resource, + RequestRegion: awsmiddleware.GetRegion(ctx), + SigningRegion: awsmiddleware.GetSigningRegion(ctx), + PartitionID: awsmiddleware.GetPartitionID(ctx), + UseARNRegion: m.UseARNRegion, + } + + // validate resource request + if err := validateResourceRequest(resourceRequest); err != nil { + return out, metadata, err + } + + // switch to correct endpoint updater + switch tv := resource.(type) { + case arn.OutpostAccessPointARN: + // validations + // check if dual stack + if m.UseDualstack { + return out, metadata, s3shared.NewClientConfiguredForDualStackError(tv, + resourceRequest.PartitionID, resourceRequest.RequestRegion, nil) + } + + // check if resource arn region is FIPS + if resourceRequest.ResourceConfiguredForFIPS() { + return out, metadata, s3shared.NewInvalidARNWithFIPSError(tv, nil) + } + + // Disable endpoint host prefix for s3-control + ctx = smithyhttp.DisableEndpointHostPrefix(ctx, true) + + if m.UpdateARNField == nil { + return out, metadata, fmt.Errorf("error updating arnable field while serializing") + } + + // update the arnable field with access point name + err = m.UpdateARNField(in.Parameters, tv.AccessPointName) + if err != nil { + return out, metadata, fmt.Errorf("error updating arnable field while serializing") + } + + // check if request region is FIPS and ARN region usage is not allowed + if resourceRequest.UseFips() && !m.UseARNRegion { + return out, metadata, s3shared.NewInvalidARNWithFIPSError(tv, nil) + } + + // Add outpostID header + req.Header.Add(outpostIDHeader, tv.OutpostID) + + // build outpost access point request + ctx, err = buildOutpostAccessPointRequest(ctx, outpostAccessPointOptions{ + processARNResource: *m, + request: req, + resource: tv, + partitionID: resourceRequest.PartitionID, + requestRegion: resourceRequest.RequestRegion, + }) + if err != nil { + return out, metadata, err + } + + // process outpost accesspoint ARN + case arn.OutpostBucketARN: + // check if dual stack + if m.UseDualstack { + return out, metadata, s3shared.NewClientConfiguredForDualStackError(tv, + resourceRequest.PartitionID, resourceRequest.RequestRegion, nil) + } + + // check if resource arn region is FIPS + if resourceRequest.ResourceConfiguredForFIPS() { + return out, metadata, s3shared.NewInvalidARNWithFIPSError(tv, nil) + } + + // Disable endpoint host prefix for s3-control + ctx = smithyhttp.DisableEndpointHostPrefix(ctx, true) + + if m.UpdateARNField == nil { + return out, metadata, fmt.Errorf("error updating arnable field while serializing") + } + // update the arnable field with bucket name + err = m.UpdateARNField(in.Parameters, tv.BucketName) + if err != nil { + return out, metadata, fmt.Errorf("error updating arnable field while serializing") + } + + // Add outpostID header + req.Header.Add(outpostIDHeader, tv.OutpostID) + + // build outpost bucket request + ctx, err = buildOutpostBucketRequest(ctx, outpostBucketOptions{ + processARNResource: *m, + request: req, + resource: tv, + partitionID: resourceRequest.PartitionID, + requestRegion: resourceRequest.RequestRegion, + }) + if err != nil { + return out, metadata, err + } + + default: + return out, metadata, s3shared.NewInvalidARNError(resource, nil) + } + + // Add account-id header for the request if not present. + // SDK must always send the x-amz-account-id header for all requests + // where an accountId has been extracted from an ARN or the accountId field modeled as a header. + if h := req.Header.Get(accountIDHeader); len(h) == 0 { + req.Header.Add(accountIDHeader, resource.GetARN().AccountID) + } + + return next.HandleSerialize(ctx, in) +} + +// validate if s3 resource and request config is compatible. +func validateResourceRequest(resourceRequest s3shared.ResourceRequest) error { + // check if resourceRequest leads to a cross partition error + v, err := resourceRequest.IsCrossPartition() + if err != nil { + return err + } + if v { + // if cross partition + return s3shared.NewClientPartitionMismatchError(resourceRequest.Resource, + resourceRequest.PartitionID, resourceRequest.RequestRegion, nil) + } + + // check if resourceRequest leads to a cross region error + if !resourceRequest.AllowCrossRegion() && resourceRequest.IsCrossRegion() { + // if cross region, but not use ARN region is not enabled + return s3shared.NewClientRegionMismatchError(resourceRequest.Resource, + resourceRequest.PartitionID, resourceRequest.RequestRegion, nil) + } + + // resource configured with FIPS as region is not supported by outposts + if resourceRequest.ResourceConfiguredForFIPS() { + return s3shared.NewInvalidARNWithFIPSError(resourceRequest.Resource, nil) + } + + return nil +} + +// Used by shapes with members decorated as endpoint ARN. +func parseEndpointARN(v awsarn.ARN) (arn.Resource, error) { + return arn.ParseResource(v, resourceParser) +} + +func resourceParser(a awsarn.ARN) (arn.Resource, error) { + resParts := arn.SplitResource(a.Resource) + switch resParts[0] { + case "outpost": + return arn.ParseOutpostARNResource(a, resParts[1:]) + default: + return nil, arn.InvalidARNError{ARN: a, Reason: "unknown resource type"} + } +} + +// ====== Outpost Accesspoint ======== + +type outpostAccessPointOptions struct { + processARNResource + request *smithyhttp.Request + resource arn.OutpostAccessPointARN + partitionID string + requestRegion string +} + +func buildOutpostAccessPointRequest(ctx context.Context, options outpostAccessPointOptions) (context.Context, error) { + tv := options.resource + req := options.request + + // Build outpost access point resource + resolveRegion := tv.Region + resolveService := tv.Service + + endpointsID := resolveService + if resolveService == "s3-outposts" { + endpointsID = "s3" + } + + // resolve regional endpoint for resolved region. + var endpoint aws.Endpoint + var err error + if endpointsID == "s3" { + // use s3 endpoint resolver + endpoint, err = s3endpoints.New().ResolveEndpoint(resolveRegion, s3endpoints.Options{ + DisableHTTPS: options.EndpointResolverOptions.DisableHTTPS, + }) + } else { + endpoint, err = options.EndpointResolver.ResolveEndpoint(resolveRegion, options.EndpointResolverOptions) + } + + if err != nil { + return ctx, s3shared.NewFailedToResolveEndpointError( + tv, + options.partitionID, + options.requestRegion, + err, + ) + } + + req.URL, err = url.Parse(endpoint.URL) + if err != nil { + return ctx, fmt.Errorf("failed to parse endpoint URL: %w", err) + } + + // redirect signer to use resolved endpoint signing name and region + if len(endpoint.SigningName) != 0 { + ctx = awsmiddleware.SetSigningName(ctx, endpoint.SigningName) + } else { + // assign resolved service from arn as signing name + ctx = awsmiddleware.SetSigningName(ctx, resolveService) + } + + if len(endpoint.SigningRegion) != 0 { + // redirect signer to use resolved endpoint signing name and region + ctx = awsmiddleware.SetSigningRegion(ctx, endpoint.SigningRegion) + } else { + ctx = awsmiddleware.SetSigningRegion(ctx, resolveRegion) + } + + // skip arn processing, if arn region resolves to a immutable endpoint + if endpoint.HostnameImmutable { + return ctx, nil + } + + // add url host as s3-outposts + cfgHost := req.URL.Host + if strings.HasPrefix(cfgHost, endpointsID) { + req.URL.Host = resolveService + cfgHost[len(endpointsID):] + + // update serviceID to resolved service + ctx = awsmiddleware.SetServiceID(ctx, resolveService) + } + + // validate the endpoint host + if err := smithyhttp.ValidateEndpointHost(req.URL.Host); err != nil { + return ctx, s3shared.NewInvalidARNError(tv, err) + } + + // Disable endpoint host prefix for s3-control + ctx = smithyhttp.DisableEndpointHostPrefix(ctx, true) + + return ctx, nil +} + +// ======= Outpost Bucket ========= +type outpostBucketOptions struct { + processARNResource + request *smithyhttp.Request + resource arn.OutpostBucketARN + partitionID string + requestRegion string +} + +func buildOutpostBucketRequest(ctx context.Context, options outpostBucketOptions) (context.Context, error) { + tv := options.resource + req := options.request + + // Build endpoint from outpost bucket arn + resolveRegion := tv.Region + resolveService := tv.Service + // Outpost bucket resource uses `s3-control` as serviceEndpointLabel + endpointsID := "s3-control" + + // resolve regional endpoint for resolved region. + endpoint, err := options.EndpointResolver.ResolveEndpoint(resolveRegion, options.EndpointResolverOptions) + if err != nil { + return ctx, s3shared.NewFailedToResolveEndpointError( + tv, + options.partitionID, + options.requestRegion, + err, + ) + } + + // assign resolved endpoint url to request url + req.URL, err = url.Parse(endpoint.URL) + if err != nil { + return ctx, fmt.Errorf("failed to parse endpoint URL: %w", err) + } + + if len(endpoint.SigningName) != 0 { + ctx = awsmiddleware.SetSigningName(ctx, endpoint.SigningName) + } else { + // assign resolved service from arn as signing name + ctx = awsmiddleware.SetSigningName(ctx, resolveService) + } + + if len(endpoint.SigningRegion) != 0 { + // redirect signer to use resolved endpoint signing name and region + ctx = awsmiddleware.SetSigningRegion(ctx, endpoint.SigningRegion) + } else { + ctx = awsmiddleware.SetSigningRegion(ctx, resolveRegion) + } + + // skip arn processing, if arn region resolves to a immutable endpoint + if endpoint.HostnameImmutable { + return ctx, nil + } + + cfgHost := req.URL.Host + if strings.HasPrefix(cfgHost, endpointsID) { + // replace service endpointID label with resolved service + req.URL.Host = resolveService + cfgHost[len(endpointsID):] + + // update serviceID to resolved service + ctx = awsmiddleware.SetServiceID(ctx, resolveService) + } + + // validate the endpoint host + if err := smithyhttp.ValidateEndpointHost(req.URL.Host); err != nil { + return ctx, s3shared.NewInvalidARNError(tv, err) + } + + // Disable endpoint host prefix for s3-control + ctx = smithyhttp.DisableEndpointHostPrefix(ctx, true) + + return ctx, nil +} diff --git a/service/s3control/internal/customizations/process_outpost_id.go b/service/s3control/internal/customizations/process_outpost_id.go new file mode 100644 index 00000000000..f74a8f82464 --- /dev/null +++ b/service/s3control/internal/customizations/process_outpost_id.go @@ -0,0 +1,81 @@ +package customizations + +import ( + "context" + "fmt" + "strings" + + "github.com/awslabs/smithy-go/middleware" + smithyhttp "github.com/awslabs/smithy-go/transport/http" + + awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" + "github.com/aws/aws-sdk-go-v2/service/internal/s3shared" +) + +// processOutpostIDMiddleware is special customization middleware to be applied for operations +// CreateBucket, ListRegionalBuckets which must resolve endpoint to s3-outposts.{region}.amazonaws.com +// with region as client region and signed by s3-control if an outpost id is provided. +type processOutpostIDMiddleware struct { + // GetOutpostID points to a function that processes an input and returns an outpostID as string ptr, + // and bool indicating if outpostID is supported or set. + GetOutpostID func(interface{}) (*string, bool) + + // UseDualStack indicates of dual stack endpoints should be used + UseDualstack bool +} + +// ID returns the middleware ID. +func (*processOutpostIDMiddleware) ID() string { return "S3Control:ProcessOutpostIDMiddleware" } + +// HandleSerialize adds a serialize step, this has to be before operation serializer and arn endpoint logic. +// Ideally this step will be ahead of ARN customization for CreateBucket, ListRegionalBucket operation. +func (m *processOutpostIDMiddleware) HandleSerialize( + ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler, +) ( + out middleware.SerializeOutput, metadata middleware.Metadata, err error, +) { + // if host name is immutable, skip this customization + if smithyhttp.GetHostnameImmutable(ctx) { + return next.HandleSerialize(ctx, in) + } + + // attempt to fetch an outpost id + outpostID, ok := m.GetOutpostID(in.Parameters) + if !ok { + return next.HandleSerialize(ctx, in) + } + + // check if outpostID was not set or is empty + if outpostID == nil || len(strings.TrimSpace(*outpostID)) == 0 { + return next.HandleSerialize(ctx, in) + } + + req, ok := in.Request.(*smithyhttp.Request) + if !ok { + return out, metadata, fmt.Errorf("unknown request type %T", req) + } + + serviceEndpointLabel := "s3-outposts." + requestRegion := awsmiddleware.GetRegion(ctx) + + // validate if fips + if s3shared.IsFIPS(requestRegion) { + return out, metadata, fmt.Errorf("unsupported fips region provided for outposts request") + } + // validate if dualstack + if m.UseDualstack { + return out, metadata, fmt.Errorf("dualstack is not supported for outposts request") + } + + // set request url + req.URL.Host = serviceEndpointLabel + requestRegion + ".amazonaws.com" + + // Disable endpoint host prefix for s3-control + ctx = smithyhttp.DisableEndpointHostPrefix(ctx, true) + + // redirect signer + ctx = awsmiddleware.SetSigningName(ctx, "s3-outposts") + ctx = awsmiddleware.SetSigningRegion(ctx, requestRegion) + + return next.HandleSerialize(ctx, in) +} diff --git a/service/s3control/internal/customizations/update_endpoint.go b/service/s3control/internal/customizations/update_endpoint.go index 1ccd5e39293..7a6bb8bb355 100644 --- a/service/s3control/internal/customizations/update_endpoint.go +++ b/service/s3control/internal/customizations/update_endpoint.go @@ -3,20 +3,108 @@ package customizations import ( "github.com/awslabs/smithy-go/middleware" + "github.com/aws/aws-sdk-go-v2/aws" "github.com/aws/aws-sdk-go-v2/service/internal/s3shared" + + internalendpoints "github.com/aws/aws-sdk-go-v2/service/s3control/internal/endpoints" ) +// EndpointResolver interface for resolving service endpoints. +type EndpointResolver interface { + ResolveEndpoint(region string, options EndpointResolverOptions) (aws.Endpoint, error) +} + +// EndpointResolverOptions is the service endpoint resolver options +type EndpointResolverOptions = internalendpoints.Options + +// UpdateEndpointParameterAccessor represents accessor functions used by the middleware +type UpdateEndpointParameterAccessor struct { + // GetARNInput points to a function that processes an input and returns ARN as string ptr, + // and bool indicating if ARN is supported or set. + GetARNInput func(interface{}) (*string, bool) + + // GetOutpostIDInput points to a function that processes an input and returns a outpostID as string ptr, + // and bool indicating if outpostID is supported or set. + GetOutpostIDInput func(interface{}) (*string, bool) + + // CopyInput creates a copy of input to be modified, this ensures the original input is not modified. + CopyInput func(interface{}) (interface{}, error) + + // BackfillAccountID points to a function that validates the input for accountID. If absent, it populates the + // accountID. If present, but different than passed in accountID value throws an error + BackfillAccountID func(interface{}, string) error + + // UpdateARNField points to a function that takes in a copy of input, updates the ARN field with + // the provided value and returns any error + UpdateARNField func(interface{}, string) error +} + // UpdateEndpointOptions provides the options for the UpdateEndpoint middleware setup. type UpdateEndpointOptions struct { - // use dualstack + + // Accessor are parameter accessors used by the middleware + Accessor UpdateEndpointParameterAccessor + + // UseARNRegion indicates if region parsed from an ARN should be used. + UseARNRegion bool + + // UseDualstack instructs if s3 dualstack endpoint config is enabled UseDualstack bool + + // EndpointResolver used to resolve endpoints. This may be a custom endpoint resolver + EndpointResolver EndpointResolver + + // EndpointResolverOptions used by endpoint resolver + EndpointResolverOptions EndpointResolverOptions } // UpdateEndpoint adds the middleware to the middleware stack based on the UpdateEndpointOptions. -func UpdateEndpoint(stack *middleware.Stack, options UpdateEndpointOptions) error { - // enable dual stack support - return stack.Serialize.Insert(&s3shared.EnableDualstack{ +func UpdateEndpoint(stack *middleware.Stack, options UpdateEndpointOptions) (err error) { + // validate and backfill account id from ARN + err = stack.Initialize.Insert(&BackfillInputMiddleware{ + CopyInput: options.Accessor.CopyInput, + BackfillAccountID: options.Accessor.BackfillAccountID, + }, "OperationInputValidation", middleware.Before) + if err != nil { + return err + } + + // initial arn look up middleware should be before BackfillInputMiddleware + err = stack.Initialize.Insert(&s3shared.ARNLookup{ + GetARNValue: options.Accessor.GetARNInput, + }, (*BackfillInputMiddleware)(nil).ID(), middleware.Before) + if err != nil { + return err + } + + // process arn + err = stack.Serialize.Insert(&processARNResource{ + UpdateARNField: options.Accessor.UpdateARNField, + UseARNRegion: options.UseARNRegion, + UseDualstack: options.UseDualstack, + EndpointResolver: options.EndpointResolver, + EndpointResolverOptions: options.EndpointResolverOptions, + }, "OperationSerializer", middleware.Before) + if err != nil { + return err + } + + // outpostID middleware + err = stack.Serialize.Insert(&processOutpostIDMiddleware{ + GetOutpostID: options.Accessor.GetOutpostIDInput, UseDualstack: options.UseDualstack, - ServiceID: "s3-control", + }, (&processARNResource{}).ID(), middleware.Before) + if err != nil { + return err + } + + // enable dual stack support + err = stack.Serialize.Insert(&s3shared.EnableDualstack{ + UseDualstack: options.UseDualstack, + DefaultServiceID: "s3-control", }, "OperationSerializer", middleware.After) + if err != nil { + return err + } + return err } diff --git a/service/s3control/internal/customizations/update_endpoint_test.go b/service/s3control/internal/customizations/update_endpoint_test.go index ba4abef4b4a..24b95a9ed47 100644 --- a/service/s3control/internal/customizations/update_endpoint_test.go +++ b/service/s3control/internal/customizations/update_endpoint_test.go @@ -7,7 +7,10 @@ import ( "strings" "testing" + "github.com/awslabs/smithy-go/ptr" + "github.com/aws/aws-sdk-go-v2/aws" + awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" "github.com/aws/aws-sdk-go-v2/internal/awstesting/unit" "github.com/aws/aws-sdk-go-v2/service/s3control" @@ -140,8 +143,549 @@ func TestUpdateEndpointBuild(t *testing.T) { } } +func TestEndpointWithARN(t *testing.T) { + // test cases + cases := map[string]struct { + options s3control.Options + bucket string + expectedErr string + expectedReqURL string + expectedSigningName string + expectedSigningRegion string + expectedHeaderForOutpostID string + expectedHeaderForAccountID bool + }{ + // "Outpost AccessPoint with no S3UseARNRegion flag set": { + // bucket: "arn:aws:s3-outposts:us-west-2:123456789012:outpost:op-01234567890123456:accesspoint:myaccesspoint", + // options: s3control.Options{ + // Region: "us-west-2", + // }, + // expectedReqURL: "https://s3-outposts.us-west-2.amazonaws.com/v20180820/bucket/myaccesspoint", + // expectedSigningName: "s3-outposts", + // expectedSigningRegion: "us-west-2", + // expectedHeaderForAccountID: true, + // expectedHeaderForOutpostID: "op-01234567890123456", + // }, + // "Outpost AccessPoint Cross-Region Enabled": { + // bucket: "arn:aws:s3-outposts:us-east-1:123456789012:outpost:op-01234567890123456:accesspoint:myaccesspoint", + // options: s3control.Options{ + // Region: "us-west-2", + // UseARNRegion: true, + // }, + // expectedReqURL: "https://s3-outposts.us-east-1.amazonaws.com/v20180820/bucket/myaccesspoint", + // expectedSigningName: "s3-outposts", + // expectedSigningRegion: "us-east-1", + // expectedHeaderForAccountID: true, + // expectedHeaderForOutpostID: "op-01234567890123456", + // }, + // "Outpost AccessPoint Cross-Region Disabled": { + // bucket: "arn:aws:s3-outposts:us-east-1:123456789012:outpost:op-01234567890123456:accesspoint:myaccesspoint", + // options: s3control.Options{ + // Region: "us-west-2", + // }, + // expectedErr: "client region does not match provided ARN region", + // }, + // "Outpost AccessPoint other partition": { + // bucket: "arn:aws-cn:s3-outposts:cn-north-1:123456789012:outpost:op-01234567890123456:accesspoint:myaccesspoint", + // options: s3control.Options{ + // Region: "us-west-2", + // UseARNRegion: true, + // }, + // expectedErr: "ConfigurationError : client partition does not match provided ARN partition", + // }, + // "Outpost AccessPoint us-gov region": { + // bucket: "arn:aws-us-gov:s3-outposts:us-gov-east-1:123456789012:outpost:op-01234567890123456:accesspoint:myaccesspoint", + // options: s3control.Options{ + // Region: "us-gov-east-1", + // UseARNRegion: true, + // }, + // expectedReqURL: "https://s3-outposts.us-gov-east-1.amazonaws.com/v20180820/bucket/myaccesspoint", + // expectedSigningName: "s3-outposts", + // expectedSigningRegion: "us-gov-east-1", + // expectedHeaderForAccountID: true, + // expectedHeaderForOutpostID: "op-01234567890123456", + // }, + // "Outpost AccessPoint with client region as Fips": { + // bucket: "arn:aws-us-gov:s3-outposts:us-gov-east-1:123456789012:outpost:op-01234567890123456:accesspoint:myaccesspoint", + // options: s3control.Options{ + // Region: "us-gov-east-1-fips", + // }, + // expectedErr: "InvalidARNError : resource ARN not supported for FIPS region", + // }, + // "Outpost AccessPoint with client Fips region and use arn region enabled": { + // bucket: "arn:aws-us-gov:s3-outposts:us-gov-east-1:123456789012:outpost:op-01234567890123456:accesspoint:myaccesspoint", + // options: s3control.Options{ + // Region: "us-gov-east-1-fips", + // UseARNRegion: true, + // }, + // expectedSigningName: "s3-outposts", + // expectedSigningRegion: "us-gov-east-1", + // expectedReqURL: "https://s3-outposts.us-gov-east-1.amazonaws.com/v20180820/bucket/myaccesspoint", + // expectedHeaderForAccountID: true, + // expectedHeaderForOutpostID: "op-01234567890123456", + // }, + // "Outpost AccessPoint Fips region in Arn": { + // bucket: "arn:aws-us-gov:s3-outposts:us-gov-east-1-fips:123456789012:outpost:op-01234567890123456:accesspoint:myaccesspoint", + // options: s3control.Options{ + // Region: "us-gov-east-1-fips", + // UseARNRegion: true, + // }, + // expectedErr: "InvalidARNError : resource ARN not supported for FIPS region", + // }, + // "Outpost AccessPoint Fips region with valid ARN region": { + // bucket: "arn:aws-us-gov:s3-outposts:us-gov-east-1:123456789012:outpost:op-01234567890123456:accesspoint:myaccesspoint", + // options: s3control.Options{ + // Region: "us-gov-east-1-fips", + // UseARNRegion: true, + // }, + // expectedReqURL: "https://s3-outposts.us-gov-east-1.amazonaws.com/v20180820/bucket/myaccesspoint", + // expectedSigningName: "s3-outposts", + // expectedSigningRegion: "us-gov-east-1", + // expectedHeaderForAccountID: true, + // expectedHeaderForOutpostID: "op-01234567890123456", + // }, + // "Outpost AccessPoint with DualStack": { + // bucket: "arn:aws:s3-outposts:us-west-2:123456789012:outpost:op-01234567890123456:accesspoint:myaccesspoint", + // options: s3control.Options{ + // Region: "us-west-2", + // UseARNRegion: true, + // UseDualstack: true, + // }, + // expectedErr: "ConfigurationError : client configured for S3 Dual-stack but is not supported with resource ARN", + // }, + // "Invalid outpost resource format": { + // bucket: "arn:aws:s3-outposts:us-west-2:123456789012:outpost", + // options: s3control.Options{ + // Region: "us-west-2", + // }, + // expectedErr: "outpost resource-id not set", + // }, + // "Missing access point for outpost resource": { + // bucket: "arn:aws:s3-outposts:us-west-2:123456789012:outpost:op-01234567890123456", + // options: s3control.Options{ + // Region: "us-west-2", + // }, + // expectedErr: "incomplete outpost resource type", + // }, + // "access point": { + // bucket: "myaccesspoint", + // options: s3control.Options{ + // Region: "us-west-2", + // }, + // expectedReqURL: "https://123456789012.s3-control.us-west-2.amazonaws.com/v20180820/bucket/myaccesspoint", + // expectedHeaderForAccountID: true, + // expectedSigningRegion: "us-west-2", + // expectedSigningName: "s3", + // }, + // "outpost access point with unsupported sub-resource": { + // bucket: "arn:aws:s3-outposts:us-west-2:123456789012:outpost:op-01234567890123456:accesspoint:mybucket:object:foo", + // options: s3control.Options{ + // Region: "us-west-2", + // }, + // expectedErr: "sub resource not supported", + // }, + // "Missing outpost identifiers in outpost access point arn": { + // bucket: "arn:aws:s3-outposts:us-west-2:123456789012:accesspoint:myendpoint", + // options: s3control.Options{ + // Region: "us-west-2", + // }, + // expectedErr: "invalid Amazon s3-outposts ARN", + // }, + // Outpost Bucket + "Outpost Bucket with no S3UseARNRegion flag set": { + bucket: "arn:aws:s3-outposts:us-west-2:123456789012:outpost:op-01234567890123456:bucket:mybucket", + options: s3control.Options{ + Region: "us-west-2", + }, + expectedReqURL: "https://s3-outposts.us-west-2.amazonaws.com/v20180820/bucket/mybucket", + expectedSigningName: "s3-outposts", + expectedSigningRegion: "us-west-2", + expectedHeaderForOutpostID: "op-01234567890123456", + expectedHeaderForAccountID: true, + }, + // "Outpost Bucket Cross-Region Enabled": { + // bucket: "arn:aws:s3-outposts:us-east-1:123456789012:outpost:op-01234567890123456:bucket:mybucket", + // options: s3control.Options{ + // Region: "us-west-2", + // UseARNRegion: true, + // }, + // expectedReqURL: "https://s3-outposts.us-east-1.amazonaws.com/v20180820/bucket/mybucket", + // expectedSigningName: "s3-outposts", + // expectedSigningRegion: "us-east-1", + // expectedHeaderForOutpostID: "op-01234567890123456", + // expectedHeaderForAccountID: true, + // }, + // "Outpost Bucket Cross-Region Disabled": { + // bucket: "arn:aws:s3-outposts:us-east-1:123456789012:outpost:op-01234567890123456:bucket:mybucket", + // options: s3control.Options{ + // Region: "us-west-2", + // }, + // expectedErr: "client region does not match provided ARN region", + // }, + // "Outpost Bucket other partition": { + // bucket: "arn:aws-cn:s3-outposts:cn-north-1:123456789012:outpost:op-01234567890123456:bucket:mybucket", + // options: s3control.Options{ + // Region: "us-west-2", + // UseARNRegion: true, + // }, + // expectedErr: "ConfigurationError : client partition does not match provided ARN partition", + // }, + // "Outpost Bucket us-gov region": { + // bucket: "arn:aws-us-gov:s3-outposts:us-gov-east-1:123456789012:outpost:op-01234567890123456:bucket:mybucket", + // options: s3control.Options{ + // Region: "us-gov-east-1", + // UseARNRegion: true, + // }, + // expectedReqURL: "https://s3-outposts.us-gov-east-1.amazonaws.com/v20180820/bucket/mybucket", + // expectedSigningName: "s3-outposts", + // expectedSigningRegion: "us-gov-east-1", + // expectedHeaderForOutpostID: "op-01234567890123456", + // expectedHeaderForAccountID: true, + // }, + // "Outpost Bucket Fips region": { + // bucket: "arn:aws-us-gov:s3-outposts:us-gov-east-1:123456789012:outpost:op-01234567890123456:bucket:mybucket", + // options: s3control.Options{ + // Region: "us-gov-west-1-fips", + // }, + // expectedErr: "ConfigurationError : client region does not match provided ARN region", + // }, + // "Outpost Bucket Fips region in Arn": { + // bucket: "arn:aws-us-gov:s3-outposts:fips-us-gov-east-1:123456789012:outpost:op-01234567890123456:bucket:mybucket", + // options: s3control.Options{ + // Region: "us-gov-east-1-fips", + // UseARNRegion: true, + // }, + // expectedErr: "InvalidARNError : resource ARN not supported for FIPS region", + // }, + // "Outpost Bucket Fips region with valid ARN region": { + // bucket: "arn:aws-us-gov:s3-outposts:us-gov-east-1:123456789012:outpost:op-01234567890123456:bucket:mybucket", + // options: s3control.Options{ + // Region: "us-gov-east-1-fips", + // UseARNRegion: true, + // }, + // expectedReqURL: "https://s3-outposts.us-gov-east-1.amazonaws.com/v20180820/bucket/mybucket", + // expectedSigningName: "s3-outposts", + // expectedSigningRegion: "us-gov-east-1", + // expectedHeaderForOutpostID: "op-01234567890123456", + // expectedHeaderForAccountID: true, + // }, + // "Outpost Bucket with DualStack": { + // bucket: "arn:aws:s3-outposts:us-west-2:123456789012:outpost:op-01234567890123456:bucket:mybucket", + // options: s3control.Options{ + // Region: "us-west-2", + // UseDualstack: true, + // }, + // expectedErr: "ConfigurationError : client configured for S3 Dual-stack but is not supported with resource ARN", + // }, + // "Missing bucket id": { + // bucket: "arn:aws:s3-outposts:us-west-2:123456789012:outpost:op-01234567890123456:bucket", + // options: s3control.Options{ + // Region: "us-west-2", + // }, + // expectedErr: "invalid Amazon s3-outposts ARN", + // }, + // "Invalid ARN": { + // bucket: "arn:aws:s3-outposts:us-west-2:123456789012:bucket:mybucket", + // options: s3control.Options{ + // Region: "us-west-2", + // }, + // expectedErr: "invalid Amazon s3-outposts ARN, unknown resource type", + // }, + } + + for name, c := range cases { + t.Run(name, func(t *testing.T) { + + // options + opts := c.options.Copy() + opts.Credentials = unit.StubCredentialsProvider{} + opts.HTTPClient = smithyhttp.NopClient{} + opts.Retryer = aws.NoOpRetryer{} + + // build an s3control client + svc := s3control.New(opts) + // setup a request retriever middleware + fm := requestRetrieverMiddleware{} + + ctx := context.Background() + + // call an operation + _, err := svc.GetBucket(ctx, &s3control.GetBucketInput{ + Bucket: ptr.String(c.bucket), + AccountId: ptr.String("123456789012"), + }, func(options *s3control.Options) { + // append request retriever middleware for request inspection + options.APIOptions = append(options.APIOptions, + func(stack *middleware.Stack) error { + // adds AFTER operation serializer middleware + stack.Serialize.Insert(&fm, "OperationSerializer", middleware.After) + return nil + }) + }) + + // inspect any errors + if len(c.expectedErr) != 0 { + if err == nil { + t.Fatalf("expected error, got none") + } + if a, e := err.Error(), c.expectedErr; !strings.Contains(a, e) { + t.Fatalf("expect error code to contain %q, got %q", e, a) + } + return + } + if err != nil { + t.Fatalf("expect no error, got %v", err) + } + + // build the captured request + req := fm.request.Build(ctx) + // verify the built request is as expected + if e, a := c.expectedReqURL, req.URL.String(); e != a { + t.Fatalf("expect url %s, got %s", e, a) + } + + if e, a := c.expectedSigningRegion, fm.signingRegion; !strings.EqualFold(e, a) { + t.Fatalf("expect signing region as %s, got %s", e, a) + } + + if e, a := c.expectedSigningName, fm.signingName; !strings.EqualFold(e, a) { + t.Fatalf("expect signing name as %s, got %s", e, a) + } + + if c.expectedHeaderForAccountID { + if e, a := "123456789012", req.Header.Get("x-amz-account-id"); e != a { + t.Fatalf("expect account id header value to be %v, got %v", e, a) + } + } + + if e, a := c.expectedHeaderForOutpostID, req.Header.Get("x-amz-outpost-id"); e != a { + t.Fatalf("expect outpost id header value to be %v, got %v", e, a) + } + }) + + } +} + type requestRetrieverMiddleware struct { - request *smithyhttp.Request + request *smithyhttp.Request + signingRegion string + signingName string +} + +func TestCustomEndpoint_SpecialOperations(t *testing.T) { + cases := map[string]struct { + options s3control.Options + operation func(context.Context, *s3control.Client, *requestRetrieverMiddleware) (interface{}, error) + expectedReqURL string + expectedSigningName string + expectedSigningRegion string + expectedHeaderForOutpostID string + expectedErr string + expectedHeaderForAccountID bool + }{ + "CreateBucketOperation": { + options: s3control.Options{ + Region: "us-west-2", + }, + operation: func(ctx context.Context, svc *s3control.Client, fm *requestRetrieverMiddleware) (interface{}, error) { + return svc.CreateBucket(ctx, &s3control.CreateBucketInput{ + Bucket: aws.String("mockBucket"), + OutpostId: aws.String("op-01234567890123456"), + }, func(options *s3control.Options) { + // append request retriever middleware for request inspection + options.APIOptions = append(options.APIOptions, + func(stack *middleware.Stack) error { + // adds AFTER operation serializer middleware + stack.Serialize.Insert(fm, "OperationSerializer", middleware.After) + return nil + }) + }) + }, + expectedReqURL: "https://s3-outposts.us-west-2.amazonaws.com/v20180820/bucket/mockBucket", + expectedSigningName: "s3-outposts", + expectedSigningRegion: "us-west-2", + expectedHeaderForOutpostID: "op-01234567890123456", + expectedHeaderForAccountID: false, + }, + "ListRegionalBucketsOperation": { + options: s3control.Options{ + Region: "us-west-2", + }, + operation: func(ctx context.Context, svc *s3control.Client, fm *requestRetrieverMiddleware) (interface{}, error) { + return svc.ListRegionalBuckets(ctx, &s3control.ListRegionalBucketsInput{ + AccountId: aws.String("123456789012"), + OutpostId: aws.String("op-01234567890123456"), + }, func(options *s3control.Options) { + // append request retriever middleware for request inspection + options.APIOptions = append(options.APIOptions, + func(stack *middleware.Stack) error { + // adds AFTER operation serializer middleware + stack.Serialize.Insert(fm, "OperationSerializer", middleware.After) + return nil + }) + }) + }, + expectedReqURL: "https://s3-outposts.us-west-2.amazonaws.com/v20180820/bucket", + expectedSigningName: "s3-outposts", + expectedSigningRegion: "us-west-2", + expectedHeaderForOutpostID: "op-01234567890123456", + expectedHeaderForAccountID: true, + }, + "CreateAccessPoint bucket arn": { + options: s3control.Options{ + Region: "us-west-2", + }, + operation: func(ctx context.Context, svc *s3control.Client, fm *requestRetrieverMiddleware) (interface{}, error) { + return svc.CreateAccessPoint(ctx, &s3control.CreateAccessPointInput{ + AccountId: aws.String("123456789012"), + Bucket: aws.String("arn:aws:s3:us-west-2:123456789012:bucket:mockBucket"), + Name: aws.String("mockName"), + }, func(options *s3control.Options) { + // append request retriever middleware for request inspection + options.APIOptions = append(options.APIOptions, + func(stack *middleware.Stack) error { + // adds AFTER operation serializer middleware + stack.Serialize.Insert(fm, "OperationSerializer", middleware.After) + return nil + }) + }) + }, + expectedErr: "invalid Amazon s3 ARN, unknown resource type", + }, + "CreateAccessPoint outpost bucket arn": { + options: s3control.Options{ + Region: "us-west-2", + }, + operation: func(ctx context.Context, svc *s3control.Client, fm *requestRetrieverMiddleware) (interface{}, error) { + return svc.CreateAccessPoint(ctx, &s3control.CreateAccessPointInput{ + AccountId: aws.String("123456789012"), + Bucket: aws.String("arn:aws:s3-outposts:us-west-2:123456789012:outpost:op-01234567890123456:bucket:mockBucket"), + Name: aws.String("mockName"), + }, func(options *s3control.Options) { + // append request retriever middleware for request inspection + options.APIOptions = append(options.APIOptions, + func(stack *middleware.Stack) error { + // adds AFTER operation serializer middleware + stack.Serialize.Insert(fm, "OperationSerializer", middleware.After) + return nil + }) + }) + }, + expectedReqURL: "https://s3-outposts.us-west-2.amazonaws.com/v20180820/accesspoint/mockName", + expectedSigningName: "s3-outposts", + expectedSigningRegion: "us-west-2", + expectedHeaderForOutpostID: "op-01234567890123456", + }, + } + + for name, c := range cases { + t.Run(name, func(t *testing.T) { + + // options + opts := c.options.Copy() + opts.Credentials = unit.StubCredentialsProvider{} + opts.HTTPClient = smithyhttp.NopClient{} + opts.Retryer = aws.NoOpRetryer{} + + // build an s3control client + svc := s3control.New(opts) + // setup a request retriever middleware + fm := requestRetrieverMiddleware{} + + ctx := context.Background() + + // call an operation + _, err := c.operation(ctx, svc, &fm) + + // inspect any errors + if len(c.expectedErr) != 0 { + if err == nil { + t.Fatalf("expected error, got none") + } + if a, e := err.Error(), c.expectedErr; !strings.Contains(a, e) { + t.Fatalf("expect error code to contain %q, got %q", e, a) + } + return + } + if err != nil { + t.Fatalf("expect no error, got %v", err) + } + + // build the captured request + req := fm.request + // verify the built request is as expected + if e, a := c.expectedReqURL, req.URL.String(); e != a { + t.Fatalf("expect url %s, got %s", e, a) + } + + if e, a := c.expectedSigningRegion, fm.signingRegion; !strings.EqualFold(e, a) { + t.Fatalf("expect signing region as %s, got %s", e, a) + } + + if e, a := c.expectedSigningName, fm.signingName; !strings.EqualFold(e, a) { + t.Fatalf("expect signing name as %s, got %s", e, a) + } + + if c.expectedHeaderForAccountID { + if e, a := "123456789012", req.Header.Get("x-amz-account-id"); e != a { + t.Fatalf("expect account id header value to be %v, got %v", e, a) + } + } + + if e, a := c.expectedHeaderForOutpostID, req.Header.Get("x-amz-outpost-id"); e != a { + t.Fatalf("expect outpost id header value to be %v, got %v", e, a) + } + }) + } +} + +func TestInputIsNotModified(t *testing.T) { + inputBucket := "arn:aws:s3-outposts:us-east-1:123456789012:outpost:op-01234567890123456:bucket:mybucket" + + // build options + opts := s3control.Options{} + opts.Credentials = unit.StubCredentialsProvider{} + opts.HTTPClient = smithyhttp.NopClient{} + opts.Retryer = aws.NoOpRetryer{} + opts.Region = "us-west-2" + opts.UseARNRegion = true + + ctx := context.Background() + fm := requestRetrieverMiddleware{} + svc := s3control.New(opts) + params := s3control.DeleteBucketInput{Bucket: ptr.String(inputBucket)} + _, err := svc.DeleteBucket(ctx, ¶ms, func(options *s3control.Options) { + // append request retriever middleware for request inspection + options.APIOptions = append(options.APIOptions, + func(stack *middleware.Stack) error { + // adds AFTER operation serializer middleware + stack.Serialize.Insert(&fm, "OperationSerializer", middleware.After) + return nil + }) + }) + + if err != nil { + t.Fatalf("expect no error, got %v", err.Error()) + } + + // check if req params were modified + if e, a := *params.Bucket, inputBucket; !strings.EqualFold(e, a) { + t.Fatalf("expected no modification for operation input, "+ + "expected %v, got %v as bucket input", e, a) + } + + if params.AccountId != nil { + t.Fatalf("expected original input to be unmodified, but account id was backfilled") + } + + req := fm.request.Build(ctx) + modifiedAccountID := req.Header.Get("x-amz-account-id") + if len(modifiedAccountID) == 0 { + t.Fatalf("expected account id to be backfilled/modified, was not") + } + if e, a := "123456789012", modifiedAccountID; !strings.EqualFold(e, a) { + t.Fatalf("unexpected diff in account id backfilled from arn, expected %v, got %v", e, a) + } } func (*requestRetrieverMiddleware) ID() string { return "S3:requestRetrieverMiddleware" } @@ -156,5 +700,9 @@ func (rm *requestRetrieverMiddleware) HandleSerialize( return out, metadata, fmt.Errorf("unknown request type %T", req) } rm.request = req + + rm.signingName = awsmiddleware.GetSigningName(ctx) + rm.signingRegion = awsmiddleware.GetSigningRegion(ctx) + return next.HandleSerialize(ctx, in) } From 1b16de82aefd6cd145e1d38be00e66ebf584a86d Mon Sep 17 00:00:00 2001 From: skotambkar Date: Sun, 8 Nov 2020 22:26:55 -0800 Subject: [PATCH 07/21] register runtime plugin --- .../software.amazon.smithy.go.codegen.integration.GoIntegration | 1 + 1 file changed, 1 insertion(+) diff --git a/codegen/smithy-aws-go-codegen/src/main/resources/META-INF/services/software.amazon.smithy.go.codegen.integration.GoIntegration b/codegen/smithy-aws-go-codegen/src/main/resources/META-INF/services/software.amazon.smithy.go.codegen.integration.GoIntegration index fa5beb418be..a45b33d3479 100644 --- a/codegen/smithy-aws-go-codegen/src/main/resources/META-INF/services/software.amazon.smithy.go.codegen.integration.GoIntegration +++ b/codegen/smithy-aws-go-codegen/src/main/resources/META-INF/services/software.amazon.smithy.go.codegen.integration.GoIntegration @@ -28,3 +28,4 @@ software.amazon.smithy.aws.go.codegen.customization.S3HeadObjectCustomizations software.amazon.smithy.aws.go.codegen.customization.PresignURLAutoFill software.amazon.smithy.aws.go.codegen.FilterStreamingOperations software.amazon.smithy.aws.go.codegen.RequestResponseLogging +software.amazon.smithy.aws.go.codegen.customization.S3ControlEndpointResolver From 801a980332581cdf5301028b5092e7771f5268bc Mon Sep 17 00:00:00 2001 From: skotambkar Date: Sun, 8 Nov 2020 22:28:44 -0800 Subject: [PATCH 08/21] generated s3 endpoint resolver in s3control --- .../internal/endpoints/s3/endpoints.go | 180 ++++++++++++++++++ 1 file changed, 180 insertions(+) create mode 100644 service/s3control/internal/endpoints/s3/endpoints.go diff --git a/service/s3control/internal/endpoints/s3/endpoints.go b/service/s3control/internal/endpoints/s3/endpoints.go new file mode 100644 index 00000000000..cfabf191c73 --- /dev/null +++ b/service/s3control/internal/endpoints/s3/endpoints.go @@ -0,0 +1,180 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package endpoints + +import ( + "github.com/aws/aws-sdk-go-v2/aws" + "github.com/aws/aws-sdk-go-v2/internal/endpoints" + "regexp" +) + +// Options is the endpoint resolver configuration options +type Options struct { + DisableHTTPS bool +} + +// Resolver S3 endpoint resolver +type Resolver struct { + partitions endpoints.Partitions +} + +// ResolveEndpoint resolves the service endpoint for the given region and options +func (r *Resolver) ResolveEndpoint(region string, options Options) (endpoint aws.Endpoint, err error) { + if len(region) == 0 { + return endpoint, &aws.MissingRegionError{} + } + + opt := endpoints.Options{ + DisableHTTPS: options.DisableHTTPS, + } + return r.partitions.ResolveEndpoint(region, opt) +} + +// New returns a new Resolver +func New() *Resolver { + return &Resolver{ + partitions: defaultPartitions, + } +} + +var defaultPartitions = endpoints.Partitions{ + { + ID: "aws", + Defaults: endpoints.Endpoint{ + Hostname: "s3.{region}.amazonaws.com", + Protocols: []string{"http", "https"}, + SignatureVersions: []string{"s3v4"}, + }, + RegionRegex: regexp.MustCompile("^(us|eu|ap|sa|ca|me|af)\\-\\w+\\-\\d+$"), + IsRegionalized: true, + Endpoints: endpoints.Endpoints{ + "af-south-1": endpoints.Endpoint{}, + "ap-east-1": endpoints.Endpoint{}, + "ap-northeast-1": endpoints.Endpoint{ + Hostname: "s3.ap-northeast-1.amazonaws.com", + SignatureVersions: []string{"s3", "s3v4"}, + }, + "ap-northeast-2": endpoints.Endpoint{}, + "ap-south-1": endpoints.Endpoint{}, + "ap-southeast-1": endpoints.Endpoint{ + Hostname: "s3.ap-southeast-1.amazonaws.com", + SignatureVersions: []string{"s3", "s3v4"}, + }, + "ap-southeast-2": endpoints.Endpoint{ + Hostname: "s3.ap-southeast-2.amazonaws.com", + SignatureVersions: []string{"s3", "s3v4"}, + }, + "aws-global": endpoints.Endpoint{ + Hostname: "s3.amazonaws.com", + SignatureVersions: []string{"s3", "s3v4"}, + CredentialScope: endpoints.CredentialScope{ + Region: "us-east-1", + }, + }, + "ca-central-1": endpoints.Endpoint{}, + "eu-central-1": endpoints.Endpoint{}, + "eu-north-1": endpoints.Endpoint{}, + "eu-south-1": endpoints.Endpoint{}, + "eu-west-1": endpoints.Endpoint{ + Hostname: "s3.eu-west-1.amazonaws.com", + SignatureVersions: []string{"s3", "s3v4"}, + }, + "eu-west-2": endpoints.Endpoint{}, + "eu-west-3": endpoints.Endpoint{}, + "me-south-1": endpoints.Endpoint{}, + "s3-external-1": endpoints.Endpoint{ + Hostname: "s3-external-1.amazonaws.com", + SignatureVersions: []string{"s3", "s3v4"}, + CredentialScope: endpoints.CredentialScope{ + Region: "us-east-1", + }, + }, + "sa-east-1": endpoints.Endpoint{ + Hostname: "s3.sa-east-1.amazonaws.com", + SignatureVersions: []string{"s3", "s3v4"}, + }, + "us-east-1": endpoints.Endpoint{ + Hostname: "s3.us-east-1.amazonaws.com", + SignatureVersions: []string{"s3", "s3v4"}, + }, + "us-east-2": endpoints.Endpoint{}, + "us-west-1": endpoints.Endpoint{ + Hostname: "s3.us-west-1.amazonaws.com", + SignatureVersions: []string{"s3", "s3v4"}, + }, + "us-west-2": endpoints.Endpoint{ + Hostname: "s3.us-west-2.amazonaws.com", + SignatureVersions: []string{"s3", "s3v4"}, + }, + }, + }, + { + ID: "aws-cn", + Defaults: endpoints.Endpoint{ + Hostname: "s3.{region}.amazonaws.com.cn", + Protocols: []string{"http", "https"}, + SignatureVersions: []string{"s3v4"}, + }, + RegionRegex: regexp.MustCompile("^cn\\-\\w+\\-\\d+$"), + IsRegionalized: true, + Endpoints: endpoints.Endpoints{ + "cn-north-1": endpoints.Endpoint{}, + "cn-northwest-1": endpoints.Endpoint{}, + }, + }, + { + ID: "aws-iso", + Defaults: endpoints.Endpoint{ + Hostname: "s3.{region}.c2s.ic.gov", + Protocols: []string{"https"}, + SignatureVersions: []string{"s3v4"}, + }, + RegionRegex: regexp.MustCompile("^us\\-iso\\-\\w+\\-\\d+$"), + IsRegionalized: true, + Endpoints: endpoints.Endpoints{ + "us-iso-east-1": endpoints.Endpoint{ + Protocols: []string{"http", "https"}, + SignatureVersions: []string{"s3v4"}, + }, + }, + }, + { + ID: "aws-iso-b", + Defaults: endpoints.Endpoint{ + Hostname: "s3.{region}.sc2s.sgov.gov", + Protocols: []string{"http", "https"}, + SignatureVersions: []string{"s3v4"}, + }, + RegionRegex: regexp.MustCompile("^us\\-isob\\-\\w+\\-\\d+$"), + IsRegionalized: true, + Endpoints: endpoints.Endpoints{ + "us-isob-east-1": endpoints.Endpoint{}, + }, + }, + { + ID: "aws-us-gov", + Defaults: endpoints.Endpoint{ + Hostname: "s3.{region}.amazonaws.com", + Protocols: []string{"https"}, + SignatureVersions: []string{"s3", "s3v4"}, + }, + RegionRegex: regexp.MustCompile("^us\\-gov\\-\\w+\\-\\d+$"), + IsRegionalized: true, + Endpoints: endpoints.Endpoints{ + "fips-us-gov-west-1": endpoints.Endpoint{ + Hostname: "s3-fips.us-gov-west-1.amazonaws.com", + CredentialScope: endpoints.CredentialScope{ + Region: "us-gov-west-1", + }, + }, + "us-gov-east-1": endpoints.Endpoint{ + Hostname: "s3.us-gov-east-1.amazonaws.com", + Protocols: []string{"http", "https"}, + }, + "us-gov-west-1": endpoints.Endpoint{ + Hostname: "s3.us-gov-west-1.amazonaws.com", + Protocols: []string{"http", "https"}, + }, + }, + }, +} From bc72533d5b78c60d7d41295d75aa49589c996660 Mon Sep 17 00:00:00 2001 From: skotambkar Date: Sun, 8 Nov 2020 23:02:28 -0800 Subject: [PATCH 09/21] s3 update endpoint register middleware fix --- .../smithy/aws/go/codegen/customization/S3UpdateEndpoint.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/codegen/smithy-aws-go-codegen/src/main/java/software/amazon/smithy/aws/go/codegen/customization/S3UpdateEndpoint.java b/codegen/smithy-aws-go-codegen/src/main/java/software/amazon/smithy/aws/go/codegen/customization/S3UpdateEndpoint.java index b6ee59590c4..05a6502cb0d 100644 --- a/codegen/smithy-aws-go-codegen/src/main/java/software/amazon/smithy/aws/go/codegen/customization/S3UpdateEndpoint.java +++ b/codegen/smithy-aws-go-codegen/src/main/java/software/amazon/smithy/aws/go/codegen/customization/S3UpdateEndpoint.java @@ -145,7 +145,7 @@ public void processFinalizedModel(GoSettings settings, Model model) { ); runtimeClientPlugins.add(RuntimeClientPlugin.builder() - .servicePredicate((m, s) -> s.equals(service)) + .servicePredicate(S3UpdateEndpoint::isS3SharedService) .operationPredicate((m, s, o) -> o.equals(operation)) .registerMiddleware(MiddlewareRegistrar.builder() .resolvedFunction(SymbolUtils.createValueSymbolBuilder(helperFuncName) From 51933e5cfbccc19cca64677525299af729078e4b Mon Sep 17 00:00:00 2001 From: skotambkar Date: Sun, 8 Nov 2020 23:06:10 -0800 Subject: [PATCH 10/21] generated s3 and s3control clients --- service/s3/api_client.go | 15 ++---- service/s3/api_op_AbortMultipartUpload.go | 17 ++++++- service/s3/api_op_CompleteMultipartUpload.go | 16 +++++- service/s3/api_op_CopyObject.go | 16 +++++- service/s3/api_op_CreateBucket.go | 17 ++++++- service/s3/api_op_CreateMultipartUpload.go | 17 ++++++- service/s3/api_op_DeleteBucket.go | 17 ++++++- ...i_op_DeleteBucketAnalyticsConfiguration.go | 17 ++++++- service/s3/api_op_DeleteBucketCors.go | 17 ++++++- service/s3/api_op_DeleteBucketEncryption.go | 17 ++++++- ...i_op_DeleteBucketInventoryConfiguration.go | 17 ++++++- service/s3/api_op_DeleteBucketLifecycle.go | 17 ++++++- ...api_op_DeleteBucketMetricsConfiguration.go | 17 ++++++- .../api_op_DeleteBucketOwnershipControls.go | 17 ++++++- service/s3/api_op_DeleteBucketPolicy.go | 17 ++++++- service/s3/api_op_DeleteBucketReplication.go | 17 ++++++- service/s3/api_op_DeleteBucketTagging.go | 17 ++++++- service/s3/api_op_DeleteBucketWebsite.go | 17 ++++++- service/s3/api_op_DeleteObject.go | 17 ++++++- service/s3/api_op_DeleteObjectTagging.go | 17 ++++++- service/s3/api_op_DeleteObjects.go | 17 ++++++- service/s3/api_op_DeletePublicAccessBlock.go | 17 ++++++- ...api_op_GetBucketAccelerateConfiguration.go | 17 ++++++- service/s3/api_op_GetBucketAcl.go | 17 ++++++- .../api_op_GetBucketAnalyticsConfiguration.go | 17 ++++++- service/s3/api_op_GetBucketCors.go | 17 ++++++- service/s3/api_op_GetBucketEncryption.go | 17 ++++++- .../api_op_GetBucketInventoryConfiguration.go | 17 ++++++- .../api_op_GetBucketLifecycleConfiguration.go | 17 ++++++- service/s3/api_op_GetBucketLocation.go | 17 ++++++- service/s3/api_op_GetBucketLogging.go | 17 ++++++- .../api_op_GetBucketMetricsConfiguration.go | 17 ++++++- ...i_op_GetBucketNotificationConfiguration.go | 17 ++++++- .../s3/api_op_GetBucketOwnershipControls.go | 17 ++++++- service/s3/api_op_GetBucketPolicy.go | 17 ++++++- service/s3/api_op_GetBucketPolicyStatus.go | 17 ++++++- service/s3/api_op_GetBucketReplication.go | 17 ++++++- service/s3/api_op_GetBucketRequestPayment.go | 17 ++++++- service/s3/api_op_GetBucketTagging.go | 17 ++++++- service/s3/api_op_GetBucketVersioning.go | 17 ++++++- service/s3/api_op_GetBucketWebsite.go | 17 ++++++- service/s3/api_op_GetObject.go | 17 ++++++- service/s3/api_op_GetObjectAcl.go | 17 ++++++- service/s3/api_op_GetObjectLegalHold.go | 17 ++++++- .../s3/api_op_GetObjectLockConfiguration.go | 17 ++++++- service/s3/api_op_GetObjectRetention.go | 17 ++++++- service/s3/api_op_GetObjectTagging.go | 17 ++++++- service/s3/api_op_GetObjectTorrent.go | 17 ++++++- service/s3/api_op_GetPublicAccessBlock.go | 17 ++++++- service/s3/api_op_HeadBucket.go | 17 ++++++- service/s3/api_op_HeadObject.go | 17 ++++++- ...pi_op_ListBucketAnalyticsConfigurations.go | 17 ++++++- ...pi_op_ListBucketInventoryConfigurations.go | 17 ++++++- .../api_op_ListBucketMetricsConfigurations.go | 17 ++++++- service/s3/api_op_ListBuckets.go | 17 ++++++- service/s3/api_op_ListMultipartUploads.go | 17 ++++++- service/s3/api_op_ListObjectVersions.go | 17 ++++++- service/s3/api_op_ListObjects.go | 17 ++++++- service/s3/api_op_ListObjectsV2.go | 17 ++++++- service/s3/api_op_ListParts.go | 17 ++++++- ...api_op_PutBucketAccelerateConfiguration.go | 17 ++++++- service/s3/api_op_PutBucketAcl.go | 17 ++++++- .../api_op_PutBucketAnalyticsConfiguration.go | 17 ++++++- service/s3/api_op_PutBucketCors.go | 17 ++++++- service/s3/api_op_PutBucketEncryption.go | 17 ++++++- .../api_op_PutBucketInventoryConfiguration.go | 17 ++++++- .../api_op_PutBucketLifecycleConfiguration.go | 17 ++++++- service/s3/api_op_PutBucketLogging.go | 17 ++++++- .../api_op_PutBucketMetricsConfiguration.go | 17 ++++++- ...i_op_PutBucketNotificationConfiguration.go | 17 ++++++- .../s3/api_op_PutBucketOwnershipControls.go | 17 ++++++- service/s3/api_op_PutBucketPolicy.go | 17 ++++++- service/s3/api_op_PutBucketReplication.go | 17 ++++++- service/s3/api_op_PutBucketRequestPayment.go | 17 ++++++- service/s3/api_op_PutBucketTagging.go | 17 ++++++- service/s3/api_op_PutBucketVersioning.go | 17 ++++++- service/s3/api_op_PutBucketWebsite.go | 17 ++++++- service/s3/api_op_PutObject.go | 17 ++++++- service/s3/api_op_PutObjectAcl.go | 17 ++++++- service/s3/api_op_PutObjectLegalHold.go | 17 ++++++- .../s3/api_op_PutObjectLockConfiguration.go | 17 ++++++- service/s3/api_op_PutObjectRetention.go | 17 ++++++- service/s3/api_op_PutObjectTagging.go | 17 ++++++- service/s3/api_op_PutPublicAccessBlock.go | 17 ++++++- service/s3/api_op_RestoreObject.go | 17 ++++++- service/s3/api_op_UploadPart.go | 17 ++++++- service/s3/api_op_UploadPartCopy.go | 16 +++++- service/s3/endpoints.go | 5 +- service/s3control/api_client.go | 17 +++++-- service/s3control/api_op_CreateAccessPoint.go | 49 ++++++++++++++++++- service/s3control/api_op_CreateBucket.go | 30 +++++++++++- service/s3control/api_op_CreateJob.go | 43 +++++++++++++++- service/s3control/api_op_DeleteAccessPoint.go | 49 ++++++++++++++++++- .../api_op_DeleteAccessPointPolicy.go | 49 ++++++++++++++++++- service/s3control/api_op_DeleteBucket.go | 49 ++++++++++++++++++- ...i_op_DeleteBucketLifecycleConfiguration.go | 49 ++++++++++++++++++- .../s3control/api_op_DeleteBucketPolicy.go | 49 ++++++++++++++++++- .../s3control/api_op_DeleteBucketTagging.go | 49 ++++++++++++++++++- service/s3control/api_op_DeleteJobTagging.go | 43 +++++++++++++++- .../api_op_DeletePublicAccessBlock.go | 43 +++++++++++++++- service/s3control/api_op_DescribeJob.go | 43 +++++++++++++++- service/s3control/api_op_GetAccessPoint.go | 49 ++++++++++++++++++- .../s3control/api_op_GetAccessPointPolicy.go | 49 ++++++++++++++++++- .../api_op_GetAccessPointPolicyStatus.go | 43 +++++++++++++++- service/s3control/api_op_GetBucket.go | 49 ++++++++++++++++++- .../api_op_GetBucketLifecycleConfiguration.go | 49 ++++++++++++++++++- service/s3control/api_op_GetBucketPolicy.go | 49 ++++++++++++++++++- service/s3control/api_op_GetBucketTagging.go | 49 ++++++++++++++++++- service/s3control/api_op_GetJobTagging.go | 43 +++++++++++++++- .../s3control/api_op_GetPublicAccessBlock.go | 43 +++++++++++++++- service/s3control/api_op_ListAccessPoints.go | 49 ++++++++++++++++++- service/s3control/api_op_ListJobs.go | 43 +++++++++++++++- .../s3control/api_op_ListRegionalBuckets.go | 37 +++++++++++++- .../s3control/api_op_PutAccessPointPolicy.go | 49 ++++++++++++++++++- .../api_op_PutBucketLifecycleConfiguration.go | 49 ++++++++++++++++++- service/s3control/api_op_PutBucketPolicy.go | 49 ++++++++++++++++++- service/s3control/api_op_PutBucketTagging.go | 49 ++++++++++++++++++- service/s3control/api_op_PutJobTagging.go | 43 +++++++++++++++- .../s3control/api_op_PutPublicAccessBlock.go | 43 +++++++++++++++- service/s3control/api_op_UpdateJobPriority.go | 43 +++++++++++++++- service/s3control/api_op_UpdateJobStatus.go | 43 +++++++++++++++- service/s3control/endpoints.go | 5 +- 122 files changed, 2827 insertions(+), 139 deletions(-) diff --git a/service/s3/api_client.go b/service/s3/api_client.go index bb9f5121eec..18ea6cff9cc 100644 --- a/service/s3/api_client.go +++ b/service/s3/api_client.go @@ -11,7 +11,6 @@ import ( awshttp "github.com/aws/aws-sdk-go-v2/aws/transport/http" acceptencodingcust "github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding" "github.com/aws/aws-sdk-go-v2/service/internal/s3shared" - s3cust "github.com/aws/aws-sdk-go-v2/service/s3/internal/customizations" smithy "github.com/awslabs/smithy-go" "github.com/awslabs/smithy-go/logging" "github.com/awslabs/smithy-go/middleware" @@ -87,6 +86,9 @@ type Options struct { // failures. When nil the API client will use a default retryer. Retryer retry.Retryer + // Allows you to enable arn region support for the service. + UseARNRegion bool + // Allows you to enable S3 Accelerate feature. All operations compatible with S3 // Accelerate will use the accelerate endpoint for requests. Requests not // compatible will fall back to normal S3 requests. The bucket must be enabled for @@ -234,17 +236,6 @@ func addMetadataRetrieverMiddleware(stack *middleware.Stack) error { return s3shared.AddMetadataRetrieverMiddleware(stack) } -func addUpdateEndpointMiddleware(stack *middleware.Stack, options Options) error { - return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ - Region: options.Region, - GetBucketFromInput: getBucketFromInput, - UsePathStyle: options.UsePathStyle, - UseAccelerate: options.UseAccelerate, - SupportsAccelerate: supportAccelerate, - UseDualstack: options.UseDualstack, - }) -} - // getBucketFromInput returns a boolean indicating if the input has a modeled // bucket name, and a pointer to string denoting a provided bucket member value func getBucketFromInput(input interface{}) (*string, bool) { diff --git a/service/s3/api_op_AbortMultipartUpload.go b/service/s3/api_op_AbortMultipartUpload.go index d400a259fcf..279821d6966 100644 --- a/service/s3/api_op_AbortMultipartUpload.go +++ b/service/s3/api_op_AbortMultipartUpload.go @@ -6,6 +6,7 @@ import ( "context" awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + s3cust "github.com/aws/aws-sdk-go-v2/service/s3/internal/customizations" "github.com/aws/aws-sdk-go-v2/service/s3/types" "github.com/awslabs/smithy-go/middleware" smithyhttp "github.com/awslabs/smithy-go/transport/http" @@ -167,7 +168,7 @@ func addOperationAbortMultipartUploadMiddlewares(stack *middleware.Stack, option if err = addMetadataRetrieverMiddleware(stack); err != nil { return err } - if err = addUpdateEndpointMiddleware(stack, options); err != nil { + if err = addAbortMultipartUploadUpdateEndpoint(stack, options); err != nil { return err } if err = addResponseErrorMiddleware(stack); err != nil { @@ -193,3 +194,17 @@ func newServiceMetadataMiddleware_opAbortMultipartUpload(region string) *awsmidd OperationName: "AbortMultipartUpload", } } + +func addAbortMultipartUploadUpdateEndpoint(stack *middleware.Stack, options Options) error { + return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ + Accessor: s3cust.UpdateEndpointParameterAccessor{GetBucketFromInput: getBucketFromInput, + SupportsAccelerate: supportAccelerate, + }, + UsePathStyle: options.UsePathStyle, + UseAccelerate: options.UseAccelerate, + EndpointResolver: options.EndpointResolver, + EndpointResolverOptions: options.EndpointOptions, + UseDualstack: options.UseDualstack, + UseARNRegion: options.UseARNRegion, + }) +} diff --git a/service/s3/api_op_CompleteMultipartUpload.go b/service/s3/api_op_CompleteMultipartUpload.go index afbb9d1921b..221a9e729a1 100644 --- a/service/s3/api_op_CompleteMultipartUpload.go +++ b/service/s3/api_op_CompleteMultipartUpload.go @@ -256,7 +256,7 @@ func addOperationCompleteMultipartUploadMiddlewares(stack *middleware.Stack, opt if err = addMetadataRetrieverMiddleware(stack); err != nil { return err } - if err = addUpdateEndpointMiddleware(stack, options); err != nil { + if err = addCompleteMultipartUploadUpdateEndpoint(stack, options); err != nil { return err } if err = addResponseErrorMiddleware(stack); err != nil { @@ -285,3 +285,17 @@ func newServiceMetadataMiddleware_opCompleteMultipartUpload(region string) *awsm OperationName: "CompleteMultipartUpload", } } + +func addCompleteMultipartUploadUpdateEndpoint(stack *middleware.Stack, options Options) error { + return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ + Accessor: s3cust.UpdateEndpointParameterAccessor{GetBucketFromInput: getBucketFromInput, + SupportsAccelerate: supportAccelerate, + }, + UsePathStyle: options.UsePathStyle, + UseAccelerate: options.UseAccelerate, + EndpointResolver: options.EndpointResolver, + EndpointResolverOptions: options.EndpointOptions, + UseDualstack: options.UseDualstack, + UseARNRegion: options.UseARNRegion, + }) +} diff --git a/service/s3/api_op_CopyObject.go b/service/s3/api_op_CopyObject.go index fd90503d392..0b3e238c2c4 100644 --- a/service/s3/api_op_CopyObject.go +++ b/service/s3/api_op_CopyObject.go @@ -479,7 +479,7 @@ func addOperationCopyObjectMiddlewares(stack *middleware.Stack, options Options) if err = addMetadataRetrieverMiddleware(stack); err != nil { return err } - if err = addUpdateEndpointMiddleware(stack, options); err != nil { + if err = addCopyObjectUpdateEndpoint(stack, options); err != nil { return err } if err = addResponseErrorMiddleware(stack); err != nil { @@ -508,3 +508,17 @@ func newServiceMetadataMiddleware_opCopyObject(region string) *awsmiddleware.Reg OperationName: "CopyObject", } } + +func addCopyObjectUpdateEndpoint(stack *middleware.Stack, options Options) error { + return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ + Accessor: s3cust.UpdateEndpointParameterAccessor{GetBucketFromInput: getBucketFromInput, + SupportsAccelerate: supportAccelerate, + }, + UsePathStyle: options.UsePathStyle, + UseAccelerate: options.UseAccelerate, + EndpointResolver: options.EndpointResolver, + EndpointResolverOptions: options.EndpointOptions, + UseDualstack: options.UseDualstack, + UseARNRegion: options.UseARNRegion, + }) +} diff --git a/service/s3/api_op_CreateBucket.go b/service/s3/api_op_CreateBucket.go index ef150bb923d..4155fbd1741 100644 --- a/service/s3/api_op_CreateBucket.go +++ b/service/s3/api_op_CreateBucket.go @@ -6,6 +6,7 @@ import ( "context" awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + s3cust "github.com/aws/aws-sdk-go-v2/service/s3/internal/customizations" "github.com/aws/aws-sdk-go-v2/service/s3/types" "github.com/awslabs/smithy-go/middleware" smithyhttp "github.com/awslabs/smithy-go/transport/http" @@ -211,7 +212,7 @@ func addOperationCreateBucketMiddlewares(stack *middleware.Stack, options Option if err = addMetadataRetrieverMiddleware(stack); err != nil { return err } - if err = addUpdateEndpointMiddleware(stack, options); err != nil { + if err = addCreateBucketUpdateEndpoint(stack, options); err != nil { return err } if err = addResponseErrorMiddleware(stack); err != nil { @@ -237,3 +238,17 @@ func newServiceMetadataMiddleware_opCreateBucket(region string) *awsmiddleware.R OperationName: "CreateBucket", } } + +func addCreateBucketUpdateEndpoint(stack *middleware.Stack, options Options) error { + return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ + Accessor: s3cust.UpdateEndpointParameterAccessor{GetBucketFromInput: getBucketFromInput, + SupportsAccelerate: supportAccelerate, + }, + UsePathStyle: options.UsePathStyle, + UseAccelerate: options.UseAccelerate, + EndpointResolver: options.EndpointResolver, + EndpointResolverOptions: options.EndpointOptions, + UseDualstack: options.UseDualstack, + UseARNRegion: options.UseARNRegion, + }) +} diff --git a/service/s3/api_op_CreateMultipartUpload.go b/service/s3/api_op_CreateMultipartUpload.go index 43d362a46f4..c893d6afa0f 100644 --- a/service/s3/api_op_CreateMultipartUpload.go +++ b/service/s3/api_op_CreateMultipartUpload.go @@ -6,6 +6,7 @@ import ( "context" awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + s3cust "github.com/aws/aws-sdk-go-v2/service/s3/internal/customizations" "github.com/aws/aws-sdk-go-v2/service/s3/types" "github.com/awslabs/smithy-go/middleware" smithyhttp "github.com/awslabs/smithy-go/transport/http" @@ -507,7 +508,7 @@ func addOperationCreateMultipartUploadMiddlewares(stack *middleware.Stack, optio if err = addMetadataRetrieverMiddleware(stack); err != nil { return err } - if err = addUpdateEndpointMiddleware(stack, options); err != nil { + if err = addCreateMultipartUploadUpdateEndpoint(stack, options); err != nil { return err } if err = addResponseErrorMiddleware(stack); err != nil { @@ -533,3 +534,17 @@ func newServiceMetadataMiddleware_opCreateMultipartUpload(region string) *awsmid OperationName: "CreateMultipartUpload", } } + +func addCreateMultipartUploadUpdateEndpoint(stack *middleware.Stack, options Options) error { + return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ + Accessor: s3cust.UpdateEndpointParameterAccessor{GetBucketFromInput: getBucketFromInput, + SupportsAccelerate: supportAccelerate, + }, + UsePathStyle: options.UsePathStyle, + UseAccelerate: options.UseAccelerate, + EndpointResolver: options.EndpointResolver, + EndpointResolverOptions: options.EndpointOptions, + UseDualstack: options.UseDualstack, + UseARNRegion: options.UseARNRegion, + }) +} diff --git a/service/s3/api_op_DeleteBucket.go b/service/s3/api_op_DeleteBucket.go index a42d7524f97..ea9756ef5f4 100644 --- a/service/s3/api_op_DeleteBucket.go +++ b/service/s3/api_op_DeleteBucket.go @@ -6,6 +6,7 @@ import ( "context" awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + s3cust "github.com/aws/aws-sdk-go-v2/service/s3/internal/customizations" "github.com/awslabs/smithy-go/middleware" smithyhttp "github.com/awslabs/smithy-go/transport/http" ) @@ -103,7 +104,7 @@ func addOperationDeleteBucketMiddlewares(stack *middleware.Stack, options Option if err = addMetadataRetrieverMiddleware(stack); err != nil { return err } - if err = addUpdateEndpointMiddleware(stack, options); err != nil { + if err = addDeleteBucketUpdateEndpoint(stack, options); err != nil { return err } if err = addResponseErrorMiddleware(stack); err != nil { @@ -129,3 +130,17 @@ func newServiceMetadataMiddleware_opDeleteBucket(region string) *awsmiddleware.R OperationName: "DeleteBucket", } } + +func addDeleteBucketUpdateEndpoint(stack *middleware.Stack, options Options) error { + return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ + Accessor: s3cust.UpdateEndpointParameterAccessor{GetBucketFromInput: getBucketFromInput, + SupportsAccelerate: supportAccelerate, + }, + UsePathStyle: options.UsePathStyle, + UseAccelerate: options.UseAccelerate, + EndpointResolver: options.EndpointResolver, + EndpointResolverOptions: options.EndpointOptions, + UseDualstack: options.UseDualstack, + UseARNRegion: options.UseARNRegion, + }) +} diff --git a/service/s3/api_op_DeleteBucketAnalyticsConfiguration.go b/service/s3/api_op_DeleteBucketAnalyticsConfiguration.go index da235ae714e..4d8bc23061f 100644 --- a/service/s3/api_op_DeleteBucketAnalyticsConfiguration.go +++ b/service/s3/api_op_DeleteBucketAnalyticsConfiguration.go @@ -6,6 +6,7 @@ import ( "context" awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + s3cust "github.com/aws/aws-sdk-go-v2/service/s3/internal/customizations" "github.com/awslabs/smithy-go/middleware" smithyhttp "github.com/awslabs/smithy-go/transport/http" ) @@ -123,7 +124,7 @@ func addOperationDeleteBucketAnalyticsConfigurationMiddlewares(stack *middleware if err = addMetadataRetrieverMiddleware(stack); err != nil { return err } - if err = addUpdateEndpointMiddleware(stack, options); err != nil { + if err = addDeleteBucketAnalyticsConfigurationUpdateEndpoint(stack, options); err != nil { return err } if err = addResponseErrorMiddleware(stack); err != nil { @@ -149,3 +150,17 @@ func newServiceMetadataMiddleware_opDeleteBucketAnalyticsConfiguration(region st OperationName: "DeleteBucketAnalyticsConfiguration", } } + +func addDeleteBucketAnalyticsConfigurationUpdateEndpoint(stack *middleware.Stack, options Options) error { + return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ + Accessor: s3cust.UpdateEndpointParameterAccessor{GetBucketFromInput: getBucketFromInput, + SupportsAccelerate: supportAccelerate, + }, + UsePathStyle: options.UsePathStyle, + UseAccelerate: options.UseAccelerate, + EndpointResolver: options.EndpointResolver, + EndpointResolverOptions: options.EndpointOptions, + UseDualstack: options.UseDualstack, + UseARNRegion: options.UseARNRegion, + }) +} diff --git a/service/s3/api_op_DeleteBucketCors.go b/service/s3/api_op_DeleteBucketCors.go index 23e011165e7..fefdf870633 100644 --- a/service/s3/api_op_DeleteBucketCors.go +++ b/service/s3/api_op_DeleteBucketCors.go @@ -6,6 +6,7 @@ import ( "context" awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + s3cust "github.com/aws/aws-sdk-go-v2/service/s3/internal/customizations" "github.com/awslabs/smithy-go/middleware" smithyhttp "github.com/awslabs/smithy-go/transport/http" ) @@ -106,7 +107,7 @@ func addOperationDeleteBucketCorsMiddlewares(stack *middleware.Stack, options Op if err = addMetadataRetrieverMiddleware(stack); err != nil { return err } - if err = addUpdateEndpointMiddleware(stack, options); err != nil { + if err = addDeleteBucketCorsUpdateEndpoint(stack, options); err != nil { return err } if err = addResponseErrorMiddleware(stack); err != nil { @@ -132,3 +133,17 @@ func newServiceMetadataMiddleware_opDeleteBucketCors(region string) *awsmiddlewa OperationName: "DeleteBucketCors", } } + +func addDeleteBucketCorsUpdateEndpoint(stack *middleware.Stack, options Options) error { + return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ + Accessor: s3cust.UpdateEndpointParameterAccessor{GetBucketFromInput: getBucketFromInput, + SupportsAccelerate: supportAccelerate, + }, + UsePathStyle: options.UsePathStyle, + UseAccelerate: options.UseAccelerate, + EndpointResolver: options.EndpointResolver, + EndpointResolverOptions: options.EndpointOptions, + UseDualstack: options.UseDualstack, + UseARNRegion: options.UseARNRegion, + }) +} diff --git a/service/s3/api_op_DeleteBucketEncryption.go b/service/s3/api_op_DeleteBucketEncryption.go index 3ffad438c7e..8858a5b3925 100644 --- a/service/s3/api_op_DeleteBucketEncryption.go +++ b/service/s3/api_op_DeleteBucketEncryption.go @@ -6,6 +6,7 @@ import ( "context" awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + s3cust "github.com/aws/aws-sdk-go-v2/service/s3/internal/customizations" "github.com/awslabs/smithy-go/middleware" smithyhttp "github.com/awslabs/smithy-go/transport/http" ) @@ -115,7 +116,7 @@ func addOperationDeleteBucketEncryptionMiddlewares(stack *middleware.Stack, opti if err = addMetadataRetrieverMiddleware(stack); err != nil { return err } - if err = addUpdateEndpointMiddleware(stack, options); err != nil { + if err = addDeleteBucketEncryptionUpdateEndpoint(stack, options); err != nil { return err } if err = addResponseErrorMiddleware(stack); err != nil { @@ -141,3 +142,17 @@ func newServiceMetadataMiddleware_opDeleteBucketEncryption(region string) *awsmi OperationName: "DeleteBucketEncryption", } } + +func addDeleteBucketEncryptionUpdateEndpoint(stack *middleware.Stack, options Options) error { + return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ + Accessor: s3cust.UpdateEndpointParameterAccessor{GetBucketFromInput: getBucketFromInput, + SupportsAccelerate: supportAccelerate, + }, + UsePathStyle: options.UsePathStyle, + UseAccelerate: options.UseAccelerate, + EndpointResolver: options.EndpointResolver, + EndpointResolverOptions: options.EndpointOptions, + UseDualstack: options.UseDualstack, + UseARNRegion: options.UseARNRegion, + }) +} diff --git a/service/s3/api_op_DeleteBucketInventoryConfiguration.go b/service/s3/api_op_DeleteBucketInventoryConfiguration.go index 86d2e926ac2..db69a627a26 100644 --- a/service/s3/api_op_DeleteBucketInventoryConfiguration.go +++ b/service/s3/api_op_DeleteBucketInventoryConfiguration.go @@ -6,6 +6,7 @@ import ( "context" awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + s3cust "github.com/aws/aws-sdk-go-v2/service/s3/internal/customizations" "github.com/awslabs/smithy-go/middleware" smithyhttp "github.com/awslabs/smithy-go/transport/http" ) @@ -122,7 +123,7 @@ func addOperationDeleteBucketInventoryConfigurationMiddlewares(stack *middleware if err = addMetadataRetrieverMiddleware(stack); err != nil { return err } - if err = addUpdateEndpointMiddleware(stack, options); err != nil { + if err = addDeleteBucketInventoryConfigurationUpdateEndpoint(stack, options); err != nil { return err } if err = addResponseErrorMiddleware(stack); err != nil { @@ -148,3 +149,17 @@ func newServiceMetadataMiddleware_opDeleteBucketInventoryConfiguration(region st OperationName: "DeleteBucketInventoryConfiguration", } } + +func addDeleteBucketInventoryConfigurationUpdateEndpoint(stack *middleware.Stack, options Options) error { + return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ + Accessor: s3cust.UpdateEndpointParameterAccessor{GetBucketFromInput: getBucketFromInput, + SupportsAccelerate: supportAccelerate, + }, + UsePathStyle: options.UsePathStyle, + UseAccelerate: options.UseAccelerate, + EndpointResolver: options.EndpointResolver, + EndpointResolverOptions: options.EndpointOptions, + UseDualstack: options.UseDualstack, + UseARNRegion: options.UseARNRegion, + }) +} diff --git a/service/s3/api_op_DeleteBucketLifecycle.go b/service/s3/api_op_DeleteBucketLifecycle.go index 79040f8a491..f6e61fcf4d2 100644 --- a/service/s3/api_op_DeleteBucketLifecycle.go +++ b/service/s3/api_op_DeleteBucketLifecycle.go @@ -6,6 +6,7 @@ import ( "context" awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + s3cust "github.com/aws/aws-sdk-go-v2/service/s3/internal/customizations" "github.com/awslabs/smithy-go/middleware" smithyhttp "github.com/awslabs/smithy-go/transport/http" ) @@ -112,7 +113,7 @@ func addOperationDeleteBucketLifecycleMiddlewares(stack *middleware.Stack, optio if err = addMetadataRetrieverMiddleware(stack); err != nil { return err } - if err = addUpdateEndpointMiddleware(stack, options); err != nil { + if err = addDeleteBucketLifecycleUpdateEndpoint(stack, options); err != nil { return err } if err = addResponseErrorMiddleware(stack); err != nil { @@ -138,3 +139,17 @@ func newServiceMetadataMiddleware_opDeleteBucketLifecycle(region string) *awsmid OperationName: "DeleteBucketLifecycle", } } + +func addDeleteBucketLifecycleUpdateEndpoint(stack *middleware.Stack, options Options) error { + return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ + Accessor: s3cust.UpdateEndpointParameterAccessor{GetBucketFromInput: getBucketFromInput, + SupportsAccelerate: supportAccelerate, + }, + UsePathStyle: options.UsePathStyle, + UseAccelerate: options.UseAccelerate, + EndpointResolver: options.EndpointResolver, + EndpointResolverOptions: options.EndpointOptions, + UseDualstack: options.UseDualstack, + UseARNRegion: options.UseARNRegion, + }) +} diff --git a/service/s3/api_op_DeleteBucketMetricsConfiguration.go b/service/s3/api_op_DeleteBucketMetricsConfiguration.go index 8181e2325be..cf2e26877fe 100644 --- a/service/s3/api_op_DeleteBucketMetricsConfiguration.go +++ b/service/s3/api_op_DeleteBucketMetricsConfiguration.go @@ -6,6 +6,7 @@ import ( "context" awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + s3cust "github.com/aws/aws-sdk-go-v2/service/s3/internal/customizations" "github.com/awslabs/smithy-go/middleware" smithyhttp "github.com/awslabs/smithy-go/transport/http" ) @@ -128,7 +129,7 @@ func addOperationDeleteBucketMetricsConfigurationMiddlewares(stack *middleware.S if err = addMetadataRetrieverMiddleware(stack); err != nil { return err } - if err = addUpdateEndpointMiddleware(stack, options); err != nil { + if err = addDeleteBucketMetricsConfigurationUpdateEndpoint(stack, options); err != nil { return err } if err = addResponseErrorMiddleware(stack); err != nil { @@ -154,3 +155,17 @@ func newServiceMetadataMiddleware_opDeleteBucketMetricsConfiguration(region stri OperationName: "DeleteBucketMetricsConfiguration", } } + +func addDeleteBucketMetricsConfigurationUpdateEndpoint(stack *middleware.Stack, options Options) error { + return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ + Accessor: s3cust.UpdateEndpointParameterAccessor{GetBucketFromInput: getBucketFromInput, + SupportsAccelerate: supportAccelerate, + }, + UsePathStyle: options.UsePathStyle, + UseAccelerate: options.UseAccelerate, + EndpointResolver: options.EndpointResolver, + EndpointResolverOptions: options.EndpointOptions, + UseDualstack: options.UseDualstack, + UseARNRegion: options.UseARNRegion, + }) +} diff --git a/service/s3/api_op_DeleteBucketOwnershipControls.go b/service/s3/api_op_DeleteBucketOwnershipControls.go index 9ba5560197e..d2ba1e52ea1 100644 --- a/service/s3/api_op_DeleteBucketOwnershipControls.go +++ b/service/s3/api_op_DeleteBucketOwnershipControls.go @@ -6,6 +6,7 @@ import ( "context" awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + s3cust "github.com/aws/aws-sdk-go-v2/service/s3/internal/customizations" "github.com/awslabs/smithy-go/middleware" smithyhttp "github.com/awslabs/smithy-go/transport/http" ) @@ -103,7 +104,7 @@ func addOperationDeleteBucketOwnershipControlsMiddlewares(stack *middleware.Stac if err = addMetadataRetrieverMiddleware(stack); err != nil { return err } - if err = addUpdateEndpointMiddleware(stack, options); err != nil { + if err = addDeleteBucketOwnershipControlsUpdateEndpoint(stack, options); err != nil { return err } if err = addResponseErrorMiddleware(stack); err != nil { @@ -129,3 +130,17 @@ func newServiceMetadataMiddleware_opDeleteBucketOwnershipControls(region string) OperationName: "DeleteBucketOwnershipControls", } } + +func addDeleteBucketOwnershipControlsUpdateEndpoint(stack *middleware.Stack, options Options) error { + return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ + Accessor: s3cust.UpdateEndpointParameterAccessor{GetBucketFromInput: getBucketFromInput, + SupportsAccelerate: supportAccelerate, + }, + UsePathStyle: options.UsePathStyle, + UseAccelerate: options.UseAccelerate, + EndpointResolver: options.EndpointResolver, + EndpointResolverOptions: options.EndpointOptions, + UseDualstack: options.UseDualstack, + UseARNRegion: options.UseARNRegion, + }) +} diff --git a/service/s3/api_op_DeleteBucketPolicy.go b/service/s3/api_op_DeleteBucketPolicy.go index 1deea8ab88a..cdc55fbdb57 100644 --- a/service/s3/api_op_DeleteBucketPolicy.go +++ b/service/s3/api_op_DeleteBucketPolicy.go @@ -6,6 +6,7 @@ import ( "context" awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + s3cust "github.com/aws/aws-sdk-go-v2/service/s3/internal/customizations" "github.com/awslabs/smithy-go/middleware" smithyhttp "github.com/awslabs/smithy-go/transport/http" ) @@ -114,7 +115,7 @@ func addOperationDeleteBucketPolicyMiddlewares(stack *middleware.Stack, options if err = addMetadataRetrieverMiddleware(stack); err != nil { return err } - if err = addUpdateEndpointMiddleware(stack, options); err != nil { + if err = addDeleteBucketPolicyUpdateEndpoint(stack, options); err != nil { return err } if err = addResponseErrorMiddleware(stack); err != nil { @@ -140,3 +141,17 @@ func newServiceMetadataMiddleware_opDeleteBucketPolicy(region string) *awsmiddle OperationName: "DeleteBucketPolicy", } } + +func addDeleteBucketPolicyUpdateEndpoint(stack *middleware.Stack, options Options) error { + return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ + Accessor: s3cust.UpdateEndpointParameterAccessor{GetBucketFromInput: getBucketFromInput, + SupportsAccelerate: supportAccelerate, + }, + UsePathStyle: options.UsePathStyle, + UseAccelerate: options.UseAccelerate, + EndpointResolver: options.EndpointResolver, + EndpointResolverOptions: options.EndpointOptions, + UseDualstack: options.UseDualstack, + UseARNRegion: options.UseARNRegion, + }) +} diff --git a/service/s3/api_op_DeleteBucketReplication.go b/service/s3/api_op_DeleteBucketReplication.go index 44f7be0e94a..5691acdff6d 100644 --- a/service/s3/api_op_DeleteBucketReplication.go +++ b/service/s3/api_op_DeleteBucketReplication.go @@ -6,6 +6,7 @@ import ( "context" awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + s3cust "github.com/aws/aws-sdk-go-v2/service/s3/internal/customizations" "github.com/awslabs/smithy-go/middleware" smithyhttp "github.com/awslabs/smithy-go/transport/http" ) @@ -113,7 +114,7 @@ func addOperationDeleteBucketReplicationMiddlewares(stack *middleware.Stack, opt if err = addMetadataRetrieverMiddleware(stack); err != nil { return err } - if err = addUpdateEndpointMiddleware(stack, options); err != nil { + if err = addDeleteBucketReplicationUpdateEndpoint(stack, options); err != nil { return err } if err = addResponseErrorMiddleware(stack); err != nil { @@ -139,3 +140,17 @@ func newServiceMetadataMiddleware_opDeleteBucketReplication(region string) *awsm OperationName: "DeleteBucketReplication", } } + +func addDeleteBucketReplicationUpdateEndpoint(stack *middleware.Stack, options Options) error { + return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ + Accessor: s3cust.UpdateEndpointParameterAccessor{GetBucketFromInput: getBucketFromInput, + SupportsAccelerate: supportAccelerate, + }, + UsePathStyle: options.UsePathStyle, + UseAccelerate: options.UseAccelerate, + EndpointResolver: options.EndpointResolver, + EndpointResolverOptions: options.EndpointOptions, + UseDualstack: options.UseDualstack, + UseARNRegion: options.UseARNRegion, + }) +} diff --git a/service/s3/api_op_DeleteBucketTagging.go b/service/s3/api_op_DeleteBucketTagging.go index b20fc01e553..e37fd586a02 100644 --- a/service/s3/api_op_DeleteBucketTagging.go +++ b/service/s3/api_op_DeleteBucketTagging.go @@ -6,6 +6,7 @@ import ( "context" awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + s3cust "github.com/aws/aws-sdk-go-v2/service/s3/internal/customizations" "github.com/awslabs/smithy-go/middleware" smithyhttp "github.com/awslabs/smithy-go/transport/http" ) @@ -104,7 +105,7 @@ func addOperationDeleteBucketTaggingMiddlewares(stack *middleware.Stack, options if err = addMetadataRetrieverMiddleware(stack); err != nil { return err } - if err = addUpdateEndpointMiddleware(stack, options); err != nil { + if err = addDeleteBucketTaggingUpdateEndpoint(stack, options); err != nil { return err } if err = addResponseErrorMiddleware(stack); err != nil { @@ -130,3 +131,17 @@ func newServiceMetadataMiddleware_opDeleteBucketTagging(region string) *awsmiddl OperationName: "DeleteBucketTagging", } } + +func addDeleteBucketTaggingUpdateEndpoint(stack *middleware.Stack, options Options) error { + return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ + Accessor: s3cust.UpdateEndpointParameterAccessor{GetBucketFromInput: getBucketFromInput, + SupportsAccelerate: supportAccelerate, + }, + UsePathStyle: options.UsePathStyle, + UseAccelerate: options.UseAccelerate, + EndpointResolver: options.EndpointResolver, + EndpointResolverOptions: options.EndpointOptions, + UseDualstack: options.UseDualstack, + UseARNRegion: options.UseARNRegion, + }) +} diff --git a/service/s3/api_op_DeleteBucketWebsite.go b/service/s3/api_op_DeleteBucketWebsite.go index c8b427626b7..eac349c299c 100644 --- a/service/s3/api_op_DeleteBucketWebsite.go +++ b/service/s3/api_op_DeleteBucketWebsite.go @@ -6,6 +6,7 @@ import ( "context" awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + s3cust "github.com/aws/aws-sdk-go-v2/service/s3/internal/customizations" "github.com/awslabs/smithy-go/middleware" smithyhttp "github.com/awslabs/smithy-go/transport/http" ) @@ -113,7 +114,7 @@ func addOperationDeleteBucketWebsiteMiddlewares(stack *middleware.Stack, options if err = addMetadataRetrieverMiddleware(stack); err != nil { return err } - if err = addUpdateEndpointMiddleware(stack, options); err != nil { + if err = addDeleteBucketWebsiteUpdateEndpoint(stack, options); err != nil { return err } if err = addResponseErrorMiddleware(stack); err != nil { @@ -139,3 +140,17 @@ func newServiceMetadataMiddleware_opDeleteBucketWebsite(region string) *awsmiddl OperationName: "DeleteBucketWebsite", } } + +func addDeleteBucketWebsiteUpdateEndpoint(stack *middleware.Stack, options Options) error { + return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ + Accessor: s3cust.UpdateEndpointParameterAccessor{GetBucketFromInput: getBucketFromInput, + SupportsAccelerate: supportAccelerate, + }, + UsePathStyle: options.UsePathStyle, + UseAccelerate: options.UseAccelerate, + EndpointResolver: options.EndpointResolver, + EndpointResolverOptions: options.EndpointOptions, + UseDualstack: options.UseDualstack, + UseARNRegion: options.UseARNRegion, + }) +} diff --git a/service/s3/api_op_DeleteObject.go b/service/s3/api_op_DeleteObject.go index 5ea342563be..e38c1780dc4 100644 --- a/service/s3/api_op_DeleteObject.go +++ b/service/s3/api_op_DeleteObject.go @@ -6,6 +6,7 @@ import ( "context" awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + s3cust "github.com/aws/aws-sdk-go-v2/service/s3/internal/customizations" "github.com/aws/aws-sdk-go-v2/service/s3/types" "github.com/awslabs/smithy-go/middleware" smithyhttp "github.com/awslabs/smithy-go/transport/http" @@ -171,7 +172,7 @@ func addOperationDeleteObjectMiddlewares(stack *middleware.Stack, options Option if err = addMetadataRetrieverMiddleware(stack); err != nil { return err } - if err = addUpdateEndpointMiddleware(stack, options); err != nil { + if err = addDeleteObjectUpdateEndpoint(stack, options); err != nil { return err } if err = addResponseErrorMiddleware(stack); err != nil { @@ -197,3 +198,17 @@ func newServiceMetadataMiddleware_opDeleteObject(region string) *awsmiddleware.R OperationName: "DeleteObject", } } + +func addDeleteObjectUpdateEndpoint(stack *middleware.Stack, options Options) error { + return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ + Accessor: s3cust.UpdateEndpointParameterAccessor{GetBucketFromInput: getBucketFromInput, + SupportsAccelerate: supportAccelerate, + }, + UsePathStyle: options.UsePathStyle, + UseAccelerate: options.UseAccelerate, + EndpointResolver: options.EndpointResolver, + EndpointResolverOptions: options.EndpointOptions, + UseDualstack: options.UseDualstack, + UseARNRegion: options.UseARNRegion, + }) +} diff --git a/service/s3/api_op_DeleteObjectTagging.go b/service/s3/api_op_DeleteObjectTagging.go index e5c72d54de2..46f80a6c9be 100644 --- a/service/s3/api_op_DeleteObjectTagging.go +++ b/service/s3/api_op_DeleteObjectTagging.go @@ -6,6 +6,7 @@ import ( "context" awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + s3cust "github.com/aws/aws-sdk-go-v2/service/s3/internal/customizations" "github.com/awslabs/smithy-go/middleware" smithyhttp "github.com/awslabs/smithy-go/transport/http" ) @@ -136,7 +137,7 @@ func addOperationDeleteObjectTaggingMiddlewares(stack *middleware.Stack, options if err = addMetadataRetrieverMiddleware(stack); err != nil { return err } - if err = addUpdateEndpointMiddleware(stack, options); err != nil { + if err = addDeleteObjectTaggingUpdateEndpoint(stack, options); err != nil { return err } if err = addResponseErrorMiddleware(stack); err != nil { @@ -162,3 +163,17 @@ func newServiceMetadataMiddleware_opDeleteObjectTagging(region string) *awsmiddl OperationName: "DeleteObjectTagging", } } + +func addDeleteObjectTaggingUpdateEndpoint(stack *middleware.Stack, options Options) error { + return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ + Accessor: s3cust.UpdateEndpointParameterAccessor{GetBucketFromInput: getBucketFromInput, + SupportsAccelerate: supportAccelerate, + }, + UsePathStyle: options.UsePathStyle, + UseAccelerate: options.UseAccelerate, + EndpointResolver: options.EndpointResolver, + EndpointResolverOptions: options.EndpointOptions, + UseDualstack: options.UseDualstack, + UseARNRegion: options.UseARNRegion, + }) +} diff --git a/service/s3/api_op_DeleteObjects.go b/service/s3/api_op_DeleteObjects.go index b47328d8878..97af323d6b6 100644 --- a/service/s3/api_op_DeleteObjects.go +++ b/service/s3/api_op_DeleteObjects.go @@ -6,6 +6,7 @@ import ( "context" awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + s3cust "github.com/aws/aws-sdk-go-v2/service/s3/internal/customizations" "github.com/aws/aws-sdk-go-v2/service/s3/types" "github.com/awslabs/smithy-go/middleware" smithyhttp "github.com/awslabs/smithy-go/transport/http" @@ -191,7 +192,7 @@ func addOperationDeleteObjectsMiddlewares(stack *middleware.Stack, options Optio if err = addMetadataRetrieverMiddleware(stack); err != nil { return err } - if err = addUpdateEndpointMiddleware(stack, options); err != nil { + if err = addDeleteObjectsUpdateEndpoint(stack, options); err != nil { return err } if err = addResponseErrorMiddleware(stack); err != nil { @@ -220,3 +221,17 @@ func newServiceMetadataMiddleware_opDeleteObjects(region string) *awsmiddleware. OperationName: "DeleteObjects", } } + +func addDeleteObjectsUpdateEndpoint(stack *middleware.Stack, options Options) error { + return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ + Accessor: s3cust.UpdateEndpointParameterAccessor{GetBucketFromInput: getBucketFromInput, + SupportsAccelerate: supportAccelerate, + }, + UsePathStyle: options.UsePathStyle, + UseAccelerate: options.UseAccelerate, + EndpointResolver: options.EndpointResolver, + EndpointResolverOptions: options.EndpointOptions, + UseDualstack: options.UseDualstack, + UseARNRegion: options.UseARNRegion, + }) +} diff --git a/service/s3/api_op_DeletePublicAccessBlock.go b/service/s3/api_op_DeletePublicAccessBlock.go index 75570659128..c3b47688b12 100644 --- a/service/s3/api_op_DeletePublicAccessBlock.go +++ b/service/s3/api_op_DeletePublicAccessBlock.go @@ -6,6 +6,7 @@ import ( "context" awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + s3cust "github.com/aws/aws-sdk-go-v2/service/s3/internal/customizations" "github.com/awslabs/smithy-go/middleware" smithyhttp "github.com/awslabs/smithy-go/transport/http" ) @@ -117,7 +118,7 @@ func addOperationDeletePublicAccessBlockMiddlewares(stack *middleware.Stack, opt if err = addMetadataRetrieverMiddleware(stack); err != nil { return err } - if err = addUpdateEndpointMiddleware(stack, options); err != nil { + if err = addDeletePublicAccessBlockUpdateEndpoint(stack, options); err != nil { return err } if err = addResponseErrorMiddleware(stack); err != nil { @@ -143,3 +144,17 @@ func newServiceMetadataMiddleware_opDeletePublicAccessBlock(region string) *awsm OperationName: "DeletePublicAccessBlock", } } + +func addDeletePublicAccessBlockUpdateEndpoint(stack *middleware.Stack, options Options) error { + return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ + Accessor: s3cust.UpdateEndpointParameterAccessor{GetBucketFromInput: getBucketFromInput, + SupportsAccelerate: supportAccelerate, + }, + UsePathStyle: options.UsePathStyle, + UseAccelerate: options.UseAccelerate, + EndpointResolver: options.EndpointResolver, + EndpointResolverOptions: options.EndpointOptions, + UseDualstack: options.UseDualstack, + UseARNRegion: options.UseARNRegion, + }) +} diff --git a/service/s3/api_op_GetBucketAccelerateConfiguration.go b/service/s3/api_op_GetBucketAccelerateConfiguration.go index a0dff76d0c9..f3447307556 100644 --- a/service/s3/api_op_GetBucketAccelerateConfiguration.go +++ b/service/s3/api_op_GetBucketAccelerateConfiguration.go @@ -6,6 +6,7 @@ import ( "context" awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + s3cust "github.com/aws/aws-sdk-go-v2/service/s3/internal/customizations" "github.com/aws/aws-sdk-go-v2/service/s3/types" "github.com/awslabs/smithy-go/middleware" smithyhttp "github.com/awslabs/smithy-go/transport/http" @@ -123,7 +124,7 @@ func addOperationGetBucketAccelerateConfigurationMiddlewares(stack *middleware.S if err = addMetadataRetrieverMiddleware(stack); err != nil { return err } - if err = addUpdateEndpointMiddleware(stack, options); err != nil { + if err = addGetBucketAccelerateConfigurationUpdateEndpoint(stack, options); err != nil { return err } if err = addResponseErrorMiddleware(stack); err != nil { @@ -149,3 +150,17 @@ func newServiceMetadataMiddleware_opGetBucketAccelerateConfiguration(region stri OperationName: "GetBucketAccelerateConfiguration", } } + +func addGetBucketAccelerateConfigurationUpdateEndpoint(stack *middleware.Stack, options Options) error { + return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ + Accessor: s3cust.UpdateEndpointParameterAccessor{GetBucketFromInput: getBucketFromInput, + SupportsAccelerate: supportAccelerate, + }, + UsePathStyle: options.UsePathStyle, + UseAccelerate: options.UseAccelerate, + EndpointResolver: options.EndpointResolver, + EndpointResolverOptions: options.EndpointOptions, + UseDualstack: options.UseDualstack, + UseARNRegion: options.UseARNRegion, + }) +} diff --git a/service/s3/api_op_GetBucketAcl.go b/service/s3/api_op_GetBucketAcl.go index 26c70f87d40..7fad0506c13 100644 --- a/service/s3/api_op_GetBucketAcl.go +++ b/service/s3/api_op_GetBucketAcl.go @@ -6,6 +6,7 @@ import ( "context" awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + s3cust "github.com/aws/aws-sdk-go-v2/service/s3/internal/customizations" "github.com/aws/aws-sdk-go-v2/service/s3/types" "github.com/awslabs/smithy-go/middleware" smithyhttp "github.com/awslabs/smithy-go/transport/http" @@ -109,7 +110,7 @@ func addOperationGetBucketAclMiddlewares(stack *middleware.Stack, options Option if err = addMetadataRetrieverMiddleware(stack); err != nil { return err } - if err = addUpdateEndpointMiddleware(stack, options); err != nil { + if err = addGetBucketAclUpdateEndpoint(stack, options); err != nil { return err } if err = addResponseErrorMiddleware(stack); err != nil { @@ -135,3 +136,17 @@ func newServiceMetadataMiddleware_opGetBucketAcl(region string) *awsmiddleware.R OperationName: "GetBucketAcl", } } + +func addGetBucketAclUpdateEndpoint(stack *middleware.Stack, options Options) error { + return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ + Accessor: s3cust.UpdateEndpointParameterAccessor{GetBucketFromInput: getBucketFromInput, + SupportsAccelerate: supportAccelerate, + }, + UsePathStyle: options.UsePathStyle, + UseAccelerate: options.UseAccelerate, + EndpointResolver: options.EndpointResolver, + EndpointResolverOptions: options.EndpointOptions, + UseDualstack: options.UseDualstack, + UseARNRegion: options.UseARNRegion, + }) +} diff --git a/service/s3/api_op_GetBucketAnalyticsConfiguration.go b/service/s3/api_op_GetBucketAnalyticsConfiguration.go index 7f4c6c344d3..6f46256a7e0 100644 --- a/service/s3/api_op_GetBucketAnalyticsConfiguration.go +++ b/service/s3/api_op_GetBucketAnalyticsConfiguration.go @@ -6,6 +6,7 @@ import ( "context" awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + s3cust "github.com/aws/aws-sdk-go-v2/service/s3/internal/customizations" "github.com/aws/aws-sdk-go-v2/service/s3/types" "github.com/awslabs/smithy-go/middleware" smithyhttp "github.com/awslabs/smithy-go/transport/http" @@ -128,7 +129,7 @@ func addOperationGetBucketAnalyticsConfigurationMiddlewares(stack *middleware.St if err = addMetadataRetrieverMiddleware(stack); err != nil { return err } - if err = addUpdateEndpointMiddleware(stack, options); err != nil { + if err = addGetBucketAnalyticsConfigurationUpdateEndpoint(stack, options); err != nil { return err } if err = addResponseErrorMiddleware(stack); err != nil { @@ -154,3 +155,17 @@ func newServiceMetadataMiddleware_opGetBucketAnalyticsConfiguration(region strin OperationName: "GetBucketAnalyticsConfiguration", } } + +func addGetBucketAnalyticsConfigurationUpdateEndpoint(stack *middleware.Stack, options Options) error { + return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ + Accessor: s3cust.UpdateEndpointParameterAccessor{GetBucketFromInput: getBucketFromInput, + SupportsAccelerate: supportAccelerate, + }, + UsePathStyle: options.UsePathStyle, + UseAccelerate: options.UseAccelerate, + EndpointResolver: options.EndpointResolver, + EndpointResolverOptions: options.EndpointOptions, + UseDualstack: options.UseDualstack, + UseARNRegion: options.UseARNRegion, + }) +} diff --git a/service/s3/api_op_GetBucketCors.go b/service/s3/api_op_GetBucketCors.go index a2b109a65a5..9aefa022b02 100644 --- a/service/s3/api_op_GetBucketCors.go +++ b/service/s3/api_op_GetBucketCors.go @@ -6,6 +6,7 @@ import ( "context" awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + s3cust "github.com/aws/aws-sdk-go-v2/service/s3/internal/customizations" "github.com/aws/aws-sdk-go-v2/service/s3/types" "github.com/awslabs/smithy-go/middleware" smithyhttp "github.com/awslabs/smithy-go/transport/http" @@ -112,7 +113,7 @@ func addOperationGetBucketCorsMiddlewares(stack *middleware.Stack, options Optio if err = addMetadataRetrieverMiddleware(stack); err != nil { return err } - if err = addUpdateEndpointMiddleware(stack, options); err != nil { + if err = addGetBucketCorsUpdateEndpoint(stack, options); err != nil { return err } if err = addResponseErrorMiddleware(stack); err != nil { @@ -138,3 +139,17 @@ func newServiceMetadataMiddleware_opGetBucketCors(region string) *awsmiddleware. OperationName: "GetBucketCors", } } + +func addGetBucketCorsUpdateEndpoint(stack *middleware.Stack, options Options) error { + return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ + Accessor: s3cust.UpdateEndpointParameterAccessor{GetBucketFromInput: getBucketFromInput, + SupportsAccelerate: supportAccelerate, + }, + UsePathStyle: options.UsePathStyle, + UseAccelerate: options.UseAccelerate, + EndpointResolver: options.EndpointResolver, + EndpointResolverOptions: options.EndpointOptions, + UseDualstack: options.UseDualstack, + UseARNRegion: options.UseARNRegion, + }) +} diff --git a/service/s3/api_op_GetBucketEncryption.go b/service/s3/api_op_GetBucketEncryption.go index 3153c8e9fe0..ab37edc97ba 100644 --- a/service/s3/api_op_GetBucketEncryption.go +++ b/service/s3/api_op_GetBucketEncryption.go @@ -6,6 +6,7 @@ import ( "context" awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + s3cust "github.com/aws/aws-sdk-go-v2/service/s3/internal/customizations" "github.com/aws/aws-sdk-go-v2/service/s3/types" "github.com/awslabs/smithy-go/middleware" smithyhttp "github.com/awslabs/smithy-go/transport/http" @@ -119,7 +120,7 @@ func addOperationGetBucketEncryptionMiddlewares(stack *middleware.Stack, options if err = addMetadataRetrieverMiddleware(stack); err != nil { return err } - if err = addUpdateEndpointMiddleware(stack, options); err != nil { + if err = addGetBucketEncryptionUpdateEndpoint(stack, options); err != nil { return err } if err = addResponseErrorMiddleware(stack); err != nil { @@ -145,3 +146,17 @@ func newServiceMetadataMiddleware_opGetBucketEncryption(region string) *awsmiddl OperationName: "GetBucketEncryption", } } + +func addGetBucketEncryptionUpdateEndpoint(stack *middleware.Stack, options Options) error { + return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ + Accessor: s3cust.UpdateEndpointParameterAccessor{GetBucketFromInput: getBucketFromInput, + SupportsAccelerate: supportAccelerate, + }, + UsePathStyle: options.UsePathStyle, + UseAccelerate: options.UseAccelerate, + EndpointResolver: options.EndpointResolver, + EndpointResolverOptions: options.EndpointOptions, + UseDualstack: options.UseDualstack, + UseARNRegion: options.UseARNRegion, + }) +} diff --git a/service/s3/api_op_GetBucketInventoryConfiguration.go b/service/s3/api_op_GetBucketInventoryConfiguration.go index b89a130674f..7f4180e80cb 100644 --- a/service/s3/api_op_GetBucketInventoryConfiguration.go +++ b/service/s3/api_op_GetBucketInventoryConfiguration.go @@ -6,6 +6,7 @@ import ( "context" awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + s3cust "github.com/aws/aws-sdk-go-v2/service/s3/internal/customizations" "github.com/aws/aws-sdk-go-v2/service/s3/types" "github.com/awslabs/smithy-go/middleware" smithyhttp "github.com/awslabs/smithy-go/transport/http" @@ -126,7 +127,7 @@ func addOperationGetBucketInventoryConfigurationMiddlewares(stack *middleware.St if err = addMetadataRetrieverMiddleware(stack); err != nil { return err } - if err = addUpdateEndpointMiddleware(stack, options); err != nil { + if err = addGetBucketInventoryConfigurationUpdateEndpoint(stack, options); err != nil { return err } if err = addResponseErrorMiddleware(stack); err != nil { @@ -152,3 +153,17 @@ func newServiceMetadataMiddleware_opGetBucketInventoryConfiguration(region strin OperationName: "GetBucketInventoryConfiguration", } } + +func addGetBucketInventoryConfigurationUpdateEndpoint(stack *middleware.Stack, options Options) error { + return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ + Accessor: s3cust.UpdateEndpointParameterAccessor{GetBucketFromInput: getBucketFromInput, + SupportsAccelerate: supportAccelerate, + }, + UsePathStyle: options.UsePathStyle, + UseAccelerate: options.UseAccelerate, + EndpointResolver: options.EndpointResolver, + EndpointResolverOptions: options.EndpointOptions, + UseDualstack: options.UseDualstack, + UseARNRegion: options.UseARNRegion, + }) +} diff --git a/service/s3/api_op_GetBucketLifecycleConfiguration.go b/service/s3/api_op_GetBucketLifecycleConfiguration.go index 257725b4b2c..1857127acba 100644 --- a/service/s3/api_op_GetBucketLifecycleConfiguration.go +++ b/service/s3/api_op_GetBucketLifecycleConfiguration.go @@ -6,6 +6,7 @@ import ( "context" awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + s3cust "github.com/aws/aws-sdk-go-v2/service/s3/internal/customizations" "github.com/aws/aws-sdk-go-v2/service/s3/types" "github.com/awslabs/smithy-go/middleware" smithyhttp "github.com/awslabs/smithy-go/transport/http" @@ -143,7 +144,7 @@ func addOperationGetBucketLifecycleConfigurationMiddlewares(stack *middleware.St if err = addMetadataRetrieverMiddleware(stack); err != nil { return err } - if err = addUpdateEndpointMiddleware(stack, options); err != nil { + if err = addGetBucketLifecycleConfigurationUpdateEndpoint(stack, options); err != nil { return err } if err = addResponseErrorMiddleware(stack); err != nil { @@ -169,3 +170,17 @@ func newServiceMetadataMiddleware_opGetBucketLifecycleConfiguration(region strin OperationName: "GetBucketLifecycleConfiguration", } } + +func addGetBucketLifecycleConfigurationUpdateEndpoint(stack *middleware.Stack, options Options) error { + return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ + Accessor: s3cust.UpdateEndpointParameterAccessor{GetBucketFromInput: getBucketFromInput, + SupportsAccelerate: supportAccelerate, + }, + UsePathStyle: options.UsePathStyle, + UseAccelerate: options.UseAccelerate, + EndpointResolver: options.EndpointResolver, + EndpointResolverOptions: options.EndpointOptions, + UseDualstack: options.UseDualstack, + UseARNRegion: options.UseARNRegion, + }) +} diff --git a/service/s3/api_op_GetBucketLocation.go b/service/s3/api_op_GetBucketLocation.go index 01f716f7743..a734c66fc7a 100644 --- a/service/s3/api_op_GetBucketLocation.go +++ b/service/s3/api_op_GetBucketLocation.go @@ -6,6 +6,7 @@ import ( "context" awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + s3cust "github.com/aws/aws-sdk-go-v2/service/s3/internal/customizations" "github.com/aws/aws-sdk-go-v2/service/s3/types" "github.com/awslabs/smithy-go/middleware" smithyhttp "github.com/awslabs/smithy-go/transport/http" @@ -114,7 +115,7 @@ func addOperationGetBucketLocationMiddlewares(stack *middleware.Stack, options O if err = addMetadataRetrieverMiddleware(stack); err != nil { return err } - if err = addUpdateEndpointMiddleware(stack, options); err != nil { + if err = addGetBucketLocationUpdateEndpoint(stack, options); err != nil { return err } if err = addResponseErrorMiddleware(stack); err != nil { @@ -140,3 +141,17 @@ func newServiceMetadataMiddleware_opGetBucketLocation(region string) *awsmiddlew OperationName: "GetBucketLocation", } } + +func addGetBucketLocationUpdateEndpoint(stack *middleware.Stack, options Options) error { + return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ + Accessor: s3cust.UpdateEndpointParameterAccessor{GetBucketFromInput: getBucketFromInput, + SupportsAccelerate: supportAccelerate, + }, + UsePathStyle: options.UsePathStyle, + UseAccelerate: options.UseAccelerate, + EndpointResolver: options.EndpointResolver, + EndpointResolverOptions: options.EndpointOptions, + UseDualstack: options.UseDualstack, + UseARNRegion: options.UseARNRegion, + }) +} diff --git a/service/s3/api_op_GetBucketLogging.go b/service/s3/api_op_GetBucketLogging.go index 0f159a42180..af08cbbaaa2 100644 --- a/service/s3/api_op_GetBucketLogging.go +++ b/service/s3/api_op_GetBucketLogging.go @@ -6,6 +6,7 @@ import ( "context" awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + s3cust "github.com/aws/aws-sdk-go-v2/service/s3/internal/customizations" "github.com/aws/aws-sdk-go-v2/service/s3/types" "github.com/awslabs/smithy-go/middleware" smithyhttp "github.com/awslabs/smithy-go/transport/http" @@ -111,7 +112,7 @@ func addOperationGetBucketLoggingMiddlewares(stack *middleware.Stack, options Op if err = addMetadataRetrieverMiddleware(stack); err != nil { return err } - if err = addUpdateEndpointMiddleware(stack, options); err != nil { + if err = addGetBucketLoggingUpdateEndpoint(stack, options); err != nil { return err } if err = addResponseErrorMiddleware(stack); err != nil { @@ -137,3 +138,17 @@ func newServiceMetadataMiddleware_opGetBucketLogging(region string) *awsmiddlewa OperationName: "GetBucketLogging", } } + +func addGetBucketLoggingUpdateEndpoint(stack *middleware.Stack, options Options) error { + return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ + Accessor: s3cust.UpdateEndpointParameterAccessor{GetBucketFromInput: getBucketFromInput, + SupportsAccelerate: supportAccelerate, + }, + UsePathStyle: options.UsePathStyle, + UseAccelerate: options.UseAccelerate, + EndpointResolver: options.EndpointResolver, + EndpointResolverOptions: options.EndpointOptions, + UseDualstack: options.UseDualstack, + UseARNRegion: options.UseARNRegion, + }) +} diff --git a/service/s3/api_op_GetBucketMetricsConfiguration.go b/service/s3/api_op_GetBucketMetricsConfiguration.go index 8e8a1481b85..48ddb09063d 100644 --- a/service/s3/api_op_GetBucketMetricsConfiguration.go +++ b/service/s3/api_op_GetBucketMetricsConfiguration.go @@ -6,6 +6,7 @@ import ( "context" awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + s3cust "github.com/aws/aws-sdk-go-v2/service/s3/internal/customizations" "github.com/aws/aws-sdk-go-v2/service/s3/types" "github.com/awslabs/smithy-go/middleware" smithyhttp "github.com/awslabs/smithy-go/transport/http" @@ -133,7 +134,7 @@ func addOperationGetBucketMetricsConfigurationMiddlewares(stack *middleware.Stac if err = addMetadataRetrieverMiddleware(stack); err != nil { return err } - if err = addUpdateEndpointMiddleware(stack, options); err != nil { + if err = addGetBucketMetricsConfigurationUpdateEndpoint(stack, options); err != nil { return err } if err = addResponseErrorMiddleware(stack); err != nil { @@ -159,3 +160,17 @@ func newServiceMetadataMiddleware_opGetBucketMetricsConfiguration(region string) OperationName: "GetBucketMetricsConfiguration", } } + +func addGetBucketMetricsConfigurationUpdateEndpoint(stack *middleware.Stack, options Options) error { + return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ + Accessor: s3cust.UpdateEndpointParameterAccessor{GetBucketFromInput: getBucketFromInput, + SupportsAccelerate: supportAccelerate, + }, + UsePathStyle: options.UsePathStyle, + UseAccelerate: options.UseAccelerate, + EndpointResolver: options.EndpointResolver, + EndpointResolverOptions: options.EndpointOptions, + UseDualstack: options.UseDualstack, + UseARNRegion: options.UseARNRegion, + }) +} diff --git a/service/s3/api_op_GetBucketNotificationConfiguration.go b/service/s3/api_op_GetBucketNotificationConfiguration.go index 7babd858fc4..d58f7f1a0e0 100644 --- a/service/s3/api_op_GetBucketNotificationConfiguration.go +++ b/service/s3/api_op_GetBucketNotificationConfiguration.go @@ -6,6 +6,7 @@ import ( "context" awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + s3cust "github.com/aws/aws-sdk-go-v2/service/s3/internal/customizations" "github.com/aws/aws-sdk-go-v2/service/s3/types" "github.com/awslabs/smithy-go/middleware" smithyhttp "github.com/awslabs/smithy-go/transport/http" @@ -125,7 +126,7 @@ func addOperationGetBucketNotificationConfigurationMiddlewares(stack *middleware if err = addMetadataRetrieverMiddleware(stack); err != nil { return err } - if err = addUpdateEndpointMiddleware(stack, options); err != nil { + if err = addGetBucketNotificationConfigurationUpdateEndpoint(stack, options); err != nil { return err } if err = addResponseErrorMiddleware(stack); err != nil { @@ -151,3 +152,17 @@ func newServiceMetadataMiddleware_opGetBucketNotificationConfiguration(region st OperationName: "GetBucketNotificationConfiguration", } } + +func addGetBucketNotificationConfigurationUpdateEndpoint(stack *middleware.Stack, options Options) error { + return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ + Accessor: s3cust.UpdateEndpointParameterAccessor{GetBucketFromInput: getBucketFromInput, + SupportsAccelerate: supportAccelerate, + }, + UsePathStyle: options.UsePathStyle, + UseAccelerate: options.UseAccelerate, + EndpointResolver: options.EndpointResolver, + EndpointResolverOptions: options.EndpointOptions, + UseDualstack: options.UseDualstack, + UseARNRegion: options.UseARNRegion, + }) +} diff --git a/service/s3/api_op_GetBucketOwnershipControls.go b/service/s3/api_op_GetBucketOwnershipControls.go index dba02c6d95f..555bc2bf1ed 100644 --- a/service/s3/api_op_GetBucketOwnershipControls.go +++ b/service/s3/api_op_GetBucketOwnershipControls.go @@ -6,6 +6,7 @@ import ( "context" awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + s3cust "github.com/aws/aws-sdk-go-v2/service/s3/internal/customizations" "github.com/aws/aws-sdk-go-v2/service/s3/types" "github.com/awslabs/smithy-go/middleware" smithyhttp "github.com/awslabs/smithy-go/transport/http" @@ -109,7 +110,7 @@ func addOperationGetBucketOwnershipControlsMiddlewares(stack *middleware.Stack, if err = addMetadataRetrieverMiddleware(stack); err != nil { return err } - if err = addUpdateEndpointMiddleware(stack, options); err != nil { + if err = addGetBucketOwnershipControlsUpdateEndpoint(stack, options); err != nil { return err } if err = addResponseErrorMiddleware(stack); err != nil { @@ -135,3 +136,17 @@ func newServiceMetadataMiddleware_opGetBucketOwnershipControls(region string) *a OperationName: "GetBucketOwnershipControls", } } + +func addGetBucketOwnershipControlsUpdateEndpoint(stack *middleware.Stack, options Options) error { + return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ + Accessor: s3cust.UpdateEndpointParameterAccessor{GetBucketFromInput: getBucketFromInput, + SupportsAccelerate: supportAccelerate, + }, + UsePathStyle: options.UsePathStyle, + UseAccelerate: options.UseAccelerate, + EndpointResolver: options.EndpointResolver, + EndpointResolverOptions: options.EndpointOptions, + UseDualstack: options.UseDualstack, + UseARNRegion: options.UseARNRegion, + }) +} diff --git a/service/s3/api_op_GetBucketPolicy.go b/service/s3/api_op_GetBucketPolicy.go index 6e68ff488c5..ce75d6abd41 100644 --- a/service/s3/api_op_GetBucketPolicy.go +++ b/service/s3/api_op_GetBucketPolicy.go @@ -6,6 +6,7 @@ import ( "context" awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + s3cust "github.com/aws/aws-sdk-go-v2/service/s3/internal/customizations" "github.com/awslabs/smithy-go/middleware" smithyhttp "github.com/awslabs/smithy-go/transport/http" ) @@ -113,7 +114,7 @@ func addOperationGetBucketPolicyMiddlewares(stack *middleware.Stack, options Opt if err = addMetadataRetrieverMiddleware(stack); err != nil { return err } - if err = addUpdateEndpointMiddleware(stack, options); err != nil { + if err = addGetBucketPolicyUpdateEndpoint(stack, options); err != nil { return err } if err = addResponseErrorMiddleware(stack); err != nil { @@ -139,3 +140,17 @@ func newServiceMetadataMiddleware_opGetBucketPolicy(region string) *awsmiddlewar OperationName: "GetBucketPolicy", } } + +func addGetBucketPolicyUpdateEndpoint(stack *middleware.Stack, options Options) error { + return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ + Accessor: s3cust.UpdateEndpointParameterAccessor{GetBucketFromInput: getBucketFromInput, + SupportsAccelerate: supportAccelerate, + }, + UsePathStyle: options.UsePathStyle, + UseAccelerate: options.UseAccelerate, + EndpointResolver: options.EndpointResolver, + EndpointResolverOptions: options.EndpointOptions, + UseDualstack: options.UseDualstack, + UseARNRegion: options.UseARNRegion, + }) +} diff --git a/service/s3/api_op_GetBucketPolicyStatus.go b/service/s3/api_op_GetBucketPolicyStatus.go index 5d1e687d602..eab4b5a34c8 100644 --- a/service/s3/api_op_GetBucketPolicyStatus.go +++ b/service/s3/api_op_GetBucketPolicyStatus.go @@ -6,6 +6,7 @@ import ( "context" awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + s3cust "github.com/aws/aws-sdk-go-v2/service/s3/internal/customizations" "github.com/aws/aws-sdk-go-v2/service/s3/types" "github.com/awslabs/smithy-go/middleware" smithyhttp "github.com/awslabs/smithy-go/transport/http" @@ -123,7 +124,7 @@ func addOperationGetBucketPolicyStatusMiddlewares(stack *middleware.Stack, optio if err = addMetadataRetrieverMiddleware(stack); err != nil { return err } - if err = addUpdateEndpointMiddleware(stack, options); err != nil { + if err = addGetBucketPolicyStatusUpdateEndpoint(stack, options); err != nil { return err } if err = addResponseErrorMiddleware(stack); err != nil { @@ -149,3 +150,17 @@ func newServiceMetadataMiddleware_opGetBucketPolicyStatus(region string) *awsmid OperationName: "GetBucketPolicyStatus", } } + +func addGetBucketPolicyStatusUpdateEndpoint(stack *middleware.Stack, options Options) error { + return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ + Accessor: s3cust.UpdateEndpointParameterAccessor{GetBucketFromInput: getBucketFromInput, + SupportsAccelerate: supportAccelerate, + }, + UsePathStyle: options.UsePathStyle, + UseAccelerate: options.UseAccelerate, + EndpointResolver: options.EndpointResolver, + EndpointResolverOptions: options.EndpointOptions, + UseDualstack: options.UseDualstack, + UseARNRegion: options.UseARNRegion, + }) +} diff --git a/service/s3/api_op_GetBucketReplication.go b/service/s3/api_op_GetBucketReplication.go index a24b444ffb7..8f555e626bc 100644 --- a/service/s3/api_op_GetBucketReplication.go +++ b/service/s3/api_op_GetBucketReplication.go @@ -6,6 +6,7 @@ import ( "context" awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + s3cust "github.com/aws/aws-sdk-go-v2/service/s3/internal/customizations" "github.com/aws/aws-sdk-go-v2/service/s3/types" "github.com/awslabs/smithy-go/middleware" smithyhttp "github.com/awslabs/smithy-go/transport/http" @@ -122,7 +123,7 @@ func addOperationGetBucketReplicationMiddlewares(stack *middleware.Stack, option if err = addMetadataRetrieverMiddleware(stack); err != nil { return err } - if err = addUpdateEndpointMiddleware(stack, options); err != nil { + if err = addGetBucketReplicationUpdateEndpoint(stack, options); err != nil { return err } if err = addResponseErrorMiddleware(stack); err != nil { @@ -148,3 +149,17 @@ func newServiceMetadataMiddleware_opGetBucketReplication(region string) *awsmidd OperationName: "GetBucketReplication", } } + +func addGetBucketReplicationUpdateEndpoint(stack *middleware.Stack, options Options) error { + return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ + Accessor: s3cust.UpdateEndpointParameterAccessor{GetBucketFromInput: getBucketFromInput, + SupportsAccelerate: supportAccelerate, + }, + UsePathStyle: options.UsePathStyle, + UseAccelerate: options.UseAccelerate, + EndpointResolver: options.EndpointResolver, + EndpointResolverOptions: options.EndpointOptions, + UseDualstack: options.UseDualstack, + UseARNRegion: options.UseARNRegion, + }) +} diff --git a/service/s3/api_op_GetBucketRequestPayment.go b/service/s3/api_op_GetBucketRequestPayment.go index f4ad65b80ea..fdfa0582c2b 100644 --- a/service/s3/api_op_GetBucketRequestPayment.go +++ b/service/s3/api_op_GetBucketRequestPayment.go @@ -6,6 +6,7 @@ import ( "context" awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + s3cust "github.com/aws/aws-sdk-go-v2/service/s3/internal/customizations" "github.com/aws/aws-sdk-go-v2/service/s3/types" "github.com/awslabs/smithy-go/middleware" smithyhttp "github.com/awslabs/smithy-go/transport/http" @@ -106,7 +107,7 @@ func addOperationGetBucketRequestPaymentMiddlewares(stack *middleware.Stack, opt if err = addMetadataRetrieverMiddleware(stack); err != nil { return err } - if err = addUpdateEndpointMiddleware(stack, options); err != nil { + if err = addGetBucketRequestPaymentUpdateEndpoint(stack, options); err != nil { return err } if err = addResponseErrorMiddleware(stack); err != nil { @@ -132,3 +133,17 @@ func newServiceMetadataMiddleware_opGetBucketRequestPayment(region string) *awsm OperationName: "GetBucketRequestPayment", } } + +func addGetBucketRequestPaymentUpdateEndpoint(stack *middleware.Stack, options Options) error { + return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ + Accessor: s3cust.UpdateEndpointParameterAccessor{GetBucketFromInput: getBucketFromInput, + SupportsAccelerate: supportAccelerate, + }, + UsePathStyle: options.UsePathStyle, + UseAccelerate: options.UseAccelerate, + EndpointResolver: options.EndpointResolver, + EndpointResolverOptions: options.EndpointOptions, + UseDualstack: options.UseDualstack, + UseARNRegion: options.UseARNRegion, + }) +} diff --git a/service/s3/api_op_GetBucketTagging.go b/service/s3/api_op_GetBucketTagging.go index 5856c09c398..b7029d6061e 100644 --- a/service/s3/api_op_GetBucketTagging.go +++ b/service/s3/api_op_GetBucketTagging.go @@ -6,6 +6,7 @@ import ( "context" awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + s3cust "github.com/aws/aws-sdk-go-v2/service/s3/internal/customizations" "github.com/aws/aws-sdk-go-v2/service/s3/types" "github.com/awslabs/smithy-go/middleware" smithyhttp "github.com/awslabs/smithy-go/transport/http" @@ -120,7 +121,7 @@ func addOperationGetBucketTaggingMiddlewares(stack *middleware.Stack, options Op if err = addMetadataRetrieverMiddleware(stack); err != nil { return err } - if err = addUpdateEndpointMiddleware(stack, options); err != nil { + if err = addGetBucketTaggingUpdateEndpoint(stack, options); err != nil { return err } if err = addResponseErrorMiddleware(stack); err != nil { @@ -146,3 +147,17 @@ func newServiceMetadataMiddleware_opGetBucketTagging(region string) *awsmiddlewa OperationName: "GetBucketTagging", } } + +func addGetBucketTaggingUpdateEndpoint(stack *middleware.Stack, options Options) error { + return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ + Accessor: s3cust.UpdateEndpointParameterAccessor{GetBucketFromInput: getBucketFromInput, + SupportsAccelerate: supportAccelerate, + }, + UsePathStyle: options.UsePathStyle, + UseAccelerate: options.UseAccelerate, + EndpointResolver: options.EndpointResolver, + EndpointResolverOptions: options.EndpointOptions, + UseDualstack: options.UseDualstack, + UseARNRegion: options.UseARNRegion, + }) +} diff --git a/service/s3/api_op_GetBucketVersioning.go b/service/s3/api_op_GetBucketVersioning.go index 15cfd701fa7..53360ec60e3 100644 --- a/service/s3/api_op_GetBucketVersioning.go +++ b/service/s3/api_op_GetBucketVersioning.go @@ -6,6 +6,7 @@ import ( "context" awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + s3cust "github.com/aws/aws-sdk-go-v2/service/s3/internal/customizations" "github.com/aws/aws-sdk-go-v2/service/s3/types" "github.com/awslabs/smithy-go/middleware" smithyhttp "github.com/awslabs/smithy-go/transport/http" @@ -120,7 +121,7 @@ func addOperationGetBucketVersioningMiddlewares(stack *middleware.Stack, options if err = addMetadataRetrieverMiddleware(stack); err != nil { return err } - if err = addUpdateEndpointMiddleware(stack, options); err != nil { + if err = addGetBucketVersioningUpdateEndpoint(stack, options); err != nil { return err } if err = addResponseErrorMiddleware(stack); err != nil { @@ -146,3 +147,17 @@ func newServiceMetadataMiddleware_opGetBucketVersioning(region string) *awsmiddl OperationName: "GetBucketVersioning", } } + +func addGetBucketVersioningUpdateEndpoint(stack *middleware.Stack, options Options) error { + return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ + Accessor: s3cust.UpdateEndpointParameterAccessor{GetBucketFromInput: getBucketFromInput, + SupportsAccelerate: supportAccelerate, + }, + UsePathStyle: options.UsePathStyle, + UseAccelerate: options.UseAccelerate, + EndpointResolver: options.EndpointResolver, + EndpointResolverOptions: options.EndpointOptions, + UseDualstack: options.UseDualstack, + UseARNRegion: options.UseARNRegion, + }) +} diff --git a/service/s3/api_op_GetBucketWebsite.go b/service/s3/api_op_GetBucketWebsite.go index 03054b97079..293e56b9a9c 100644 --- a/service/s3/api_op_GetBucketWebsite.go +++ b/service/s3/api_op_GetBucketWebsite.go @@ -6,6 +6,7 @@ import ( "context" awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + s3cust "github.com/aws/aws-sdk-go-v2/service/s3/internal/customizations" "github.com/aws/aws-sdk-go-v2/service/s3/types" "github.com/awslabs/smithy-go/middleware" smithyhttp "github.com/awslabs/smithy-go/transport/http" @@ -124,7 +125,7 @@ func addOperationGetBucketWebsiteMiddlewares(stack *middleware.Stack, options Op if err = addMetadataRetrieverMiddleware(stack); err != nil { return err } - if err = addUpdateEndpointMiddleware(stack, options); err != nil { + if err = addGetBucketWebsiteUpdateEndpoint(stack, options); err != nil { return err } if err = addResponseErrorMiddleware(stack); err != nil { @@ -150,3 +151,17 @@ func newServiceMetadataMiddleware_opGetBucketWebsite(region string) *awsmiddlewa OperationName: "GetBucketWebsite", } } + +func addGetBucketWebsiteUpdateEndpoint(stack *middleware.Stack, options Options) error { + return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ + Accessor: s3cust.UpdateEndpointParameterAccessor{GetBucketFromInput: getBucketFromInput, + SupportsAccelerate: supportAccelerate, + }, + UsePathStyle: options.UsePathStyle, + UseAccelerate: options.UseAccelerate, + EndpointResolver: options.EndpointResolver, + EndpointResolverOptions: options.EndpointOptions, + UseDualstack: options.UseDualstack, + UseARNRegion: options.UseARNRegion, + }) +} diff --git a/service/s3/api_op_GetObject.go b/service/s3/api_op_GetObject.go index 4b382152e87..15dfd6f1401 100644 --- a/service/s3/api_op_GetObject.go +++ b/service/s3/api_op_GetObject.go @@ -6,6 +6,7 @@ import ( "context" awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + s3cust "github.com/aws/aws-sdk-go-v2/service/s3/internal/customizations" "github.com/aws/aws-sdk-go-v2/service/s3/types" "github.com/awslabs/smithy-go/middleware" smithyhttp "github.com/awslabs/smithy-go/transport/http" @@ -422,7 +423,7 @@ func addOperationGetObjectMiddlewares(stack *middleware.Stack, options Options) if err = addMetadataRetrieverMiddleware(stack); err != nil { return err } - if err = addUpdateEndpointMiddleware(stack, options); err != nil { + if err = addGetObjectUpdateEndpoint(stack, options); err != nil { return err } if err = addResponseErrorMiddleware(stack); err != nil { @@ -448,3 +449,17 @@ func newServiceMetadataMiddleware_opGetObject(region string) *awsmiddleware.Regi OperationName: "GetObject", } } + +func addGetObjectUpdateEndpoint(stack *middleware.Stack, options Options) error { + return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ + Accessor: s3cust.UpdateEndpointParameterAccessor{GetBucketFromInput: getBucketFromInput, + SupportsAccelerate: supportAccelerate, + }, + UsePathStyle: options.UsePathStyle, + UseAccelerate: options.UseAccelerate, + EndpointResolver: options.EndpointResolver, + EndpointResolverOptions: options.EndpointOptions, + UseDualstack: options.UseDualstack, + UseARNRegion: options.UseARNRegion, + }) +} diff --git a/service/s3/api_op_GetObjectAcl.go b/service/s3/api_op_GetObjectAcl.go index dd7cf9b1cd6..e8970409259 100644 --- a/service/s3/api_op_GetObjectAcl.go +++ b/service/s3/api_op_GetObjectAcl.go @@ -6,6 +6,7 @@ import ( "context" awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + s3cust "github.com/aws/aws-sdk-go-v2/service/s3/internal/customizations" "github.com/aws/aws-sdk-go-v2/service/s3/types" "github.com/awslabs/smithy-go/middleware" smithyhttp "github.com/awslabs/smithy-go/transport/http" @@ -145,7 +146,7 @@ func addOperationGetObjectAclMiddlewares(stack *middleware.Stack, options Option if err = addMetadataRetrieverMiddleware(stack); err != nil { return err } - if err = addUpdateEndpointMiddleware(stack, options); err != nil { + if err = addGetObjectAclUpdateEndpoint(stack, options); err != nil { return err } if err = addResponseErrorMiddleware(stack); err != nil { @@ -171,3 +172,17 @@ func newServiceMetadataMiddleware_opGetObjectAcl(region string) *awsmiddleware.R OperationName: "GetObjectAcl", } } + +func addGetObjectAclUpdateEndpoint(stack *middleware.Stack, options Options) error { + return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ + Accessor: s3cust.UpdateEndpointParameterAccessor{GetBucketFromInput: getBucketFromInput, + SupportsAccelerate: supportAccelerate, + }, + UsePathStyle: options.UsePathStyle, + UseAccelerate: options.UseAccelerate, + EndpointResolver: options.EndpointResolver, + EndpointResolverOptions: options.EndpointOptions, + UseDualstack: options.UseDualstack, + UseARNRegion: options.UseARNRegion, + }) +} diff --git a/service/s3/api_op_GetObjectLegalHold.go b/service/s3/api_op_GetObjectLegalHold.go index 8e1f68d09e4..165bcdf12bb 100644 --- a/service/s3/api_op_GetObjectLegalHold.go +++ b/service/s3/api_op_GetObjectLegalHold.go @@ -6,6 +6,7 @@ import ( "context" awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + s3cust "github.com/aws/aws-sdk-go-v2/service/s3/internal/customizations" "github.com/aws/aws-sdk-go-v2/service/s3/types" "github.com/awslabs/smithy-go/middleware" smithyhttp "github.com/awslabs/smithy-go/transport/http" @@ -125,7 +126,7 @@ func addOperationGetObjectLegalHoldMiddlewares(stack *middleware.Stack, options if err = addMetadataRetrieverMiddleware(stack); err != nil { return err } - if err = addUpdateEndpointMiddleware(stack, options); err != nil { + if err = addGetObjectLegalHoldUpdateEndpoint(stack, options); err != nil { return err } if err = addResponseErrorMiddleware(stack); err != nil { @@ -151,3 +152,17 @@ func newServiceMetadataMiddleware_opGetObjectLegalHold(region string) *awsmiddle OperationName: "GetObjectLegalHold", } } + +func addGetObjectLegalHoldUpdateEndpoint(stack *middleware.Stack, options Options) error { + return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ + Accessor: s3cust.UpdateEndpointParameterAccessor{GetBucketFromInput: getBucketFromInput, + SupportsAccelerate: supportAccelerate, + }, + UsePathStyle: options.UsePathStyle, + UseAccelerate: options.UseAccelerate, + EndpointResolver: options.EndpointResolver, + EndpointResolverOptions: options.EndpointOptions, + UseDualstack: options.UseDualstack, + UseARNRegion: options.UseARNRegion, + }) +} diff --git a/service/s3/api_op_GetObjectLockConfiguration.go b/service/s3/api_op_GetObjectLockConfiguration.go index 889a6038ac3..3a382188761 100644 --- a/service/s3/api_op_GetObjectLockConfiguration.go +++ b/service/s3/api_op_GetObjectLockConfiguration.go @@ -6,6 +6,7 @@ import ( "context" awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + s3cust "github.com/aws/aws-sdk-go-v2/service/s3/internal/customizations" "github.com/aws/aws-sdk-go-v2/service/s3/types" "github.com/awslabs/smithy-go/middleware" smithyhttp "github.com/awslabs/smithy-go/transport/http" @@ -110,7 +111,7 @@ func addOperationGetObjectLockConfigurationMiddlewares(stack *middleware.Stack, if err = addMetadataRetrieverMiddleware(stack); err != nil { return err } - if err = addUpdateEndpointMiddleware(stack, options); err != nil { + if err = addGetObjectLockConfigurationUpdateEndpoint(stack, options); err != nil { return err } if err = addResponseErrorMiddleware(stack); err != nil { @@ -136,3 +137,17 @@ func newServiceMetadataMiddleware_opGetObjectLockConfiguration(region string) *a OperationName: "GetObjectLockConfiguration", } } + +func addGetObjectLockConfigurationUpdateEndpoint(stack *middleware.Stack, options Options) error { + return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ + Accessor: s3cust.UpdateEndpointParameterAccessor{GetBucketFromInput: getBucketFromInput, + SupportsAccelerate: supportAccelerate, + }, + UsePathStyle: options.UsePathStyle, + UseAccelerate: options.UseAccelerate, + EndpointResolver: options.EndpointResolver, + EndpointResolverOptions: options.EndpointOptions, + UseDualstack: options.UseDualstack, + UseARNRegion: options.UseARNRegion, + }) +} diff --git a/service/s3/api_op_GetObjectRetention.go b/service/s3/api_op_GetObjectRetention.go index 0ef61113b1f..e15ade691a6 100644 --- a/service/s3/api_op_GetObjectRetention.go +++ b/service/s3/api_op_GetObjectRetention.go @@ -6,6 +6,7 @@ import ( "context" awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + s3cust "github.com/aws/aws-sdk-go-v2/service/s3/internal/customizations" "github.com/aws/aws-sdk-go-v2/service/s3/types" "github.com/awslabs/smithy-go/middleware" smithyhttp "github.com/awslabs/smithy-go/transport/http" @@ -125,7 +126,7 @@ func addOperationGetObjectRetentionMiddlewares(stack *middleware.Stack, options if err = addMetadataRetrieverMiddleware(stack); err != nil { return err } - if err = addUpdateEndpointMiddleware(stack, options); err != nil { + if err = addGetObjectRetentionUpdateEndpoint(stack, options); err != nil { return err } if err = addResponseErrorMiddleware(stack); err != nil { @@ -151,3 +152,17 @@ func newServiceMetadataMiddleware_opGetObjectRetention(region string) *awsmiddle OperationName: "GetObjectRetention", } } + +func addGetObjectRetentionUpdateEndpoint(stack *middleware.Stack, options Options) error { + return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ + Accessor: s3cust.UpdateEndpointParameterAccessor{GetBucketFromInput: getBucketFromInput, + SupportsAccelerate: supportAccelerate, + }, + UsePathStyle: options.UsePathStyle, + UseAccelerate: options.UseAccelerate, + EndpointResolver: options.EndpointResolver, + EndpointResolverOptions: options.EndpointOptions, + UseDualstack: options.UseDualstack, + UseARNRegion: options.UseARNRegion, + }) +} diff --git a/service/s3/api_op_GetObjectTagging.go b/service/s3/api_op_GetObjectTagging.go index cdce8145ca3..2ba4ad4a310 100644 --- a/service/s3/api_op_GetObjectTagging.go +++ b/service/s3/api_op_GetObjectTagging.go @@ -6,6 +6,7 @@ import ( "context" awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + s3cust "github.com/aws/aws-sdk-go-v2/service/s3/internal/customizations" "github.com/aws/aws-sdk-go-v2/service/s3/types" "github.com/awslabs/smithy-go/middleware" smithyhttp "github.com/awslabs/smithy-go/transport/http" @@ -141,7 +142,7 @@ func addOperationGetObjectTaggingMiddlewares(stack *middleware.Stack, options Op if err = addMetadataRetrieverMiddleware(stack); err != nil { return err } - if err = addUpdateEndpointMiddleware(stack, options); err != nil { + if err = addGetObjectTaggingUpdateEndpoint(stack, options); err != nil { return err } if err = addResponseErrorMiddleware(stack); err != nil { @@ -167,3 +168,17 @@ func newServiceMetadataMiddleware_opGetObjectTagging(region string) *awsmiddlewa OperationName: "GetObjectTagging", } } + +func addGetObjectTaggingUpdateEndpoint(stack *middleware.Stack, options Options) error { + return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ + Accessor: s3cust.UpdateEndpointParameterAccessor{GetBucketFromInput: getBucketFromInput, + SupportsAccelerate: supportAccelerate, + }, + UsePathStyle: options.UsePathStyle, + UseAccelerate: options.UseAccelerate, + EndpointResolver: options.EndpointResolver, + EndpointResolverOptions: options.EndpointOptions, + UseDualstack: options.UseDualstack, + UseARNRegion: options.UseARNRegion, + }) +} diff --git a/service/s3/api_op_GetObjectTorrent.go b/service/s3/api_op_GetObjectTorrent.go index 428e7a4f3f1..af8d921e07f 100644 --- a/service/s3/api_op_GetObjectTorrent.go +++ b/service/s3/api_op_GetObjectTorrent.go @@ -6,6 +6,7 @@ import ( "context" awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + s3cust "github.com/aws/aws-sdk-go-v2/service/s3/internal/customizations" "github.com/aws/aws-sdk-go-v2/service/s3/types" "github.com/awslabs/smithy-go/middleware" smithyhttp "github.com/awslabs/smithy-go/transport/http" @@ -125,7 +126,7 @@ func addOperationGetObjectTorrentMiddlewares(stack *middleware.Stack, options Op if err = addMetadataRetrieverMiddleware(stack); err != nil { return err } - if err = addUpdateEndpointMiddleware(stack, options); err != nil { + if err = addGetObjectTorrentUpdateEndpoint(stack, options); err != nil { return err } if err = addResponseErrorMiddleware(stack); err != nil { @@ -151,3 +152,17 @@ func newServiceMetadataMiddleware_opGetObjectTorrent(region string) *awsmiddlewa OperationName: "GetObjectTorrent", } } + +func addGetObjectTorrentUpdateEndpoint(stack *middleware.Stack, options Options) error { + return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ + Accessor: s3cust.UpdateEndpointParameterAccessor{GetBucketFromInput: getBucketFromInput, + SupportsAccelerate: supportAccelerate, + }, + UsePathStyle: options.UsePathStyle, + UseAccelerate: options.UseAccelerate, + EndpointResolver: options.EndpointResolver, + EndpointResolverOptions: options.EndpointOptions, + UseDualstack: options.UseDualstack, + UseARNRegion: options.UseARNRegion, + }) +} diff --git a/service/s3/api_op_GetPublicAccessBlock.go b/service/s3/api_op_GetPublicAccessBlock.go index a2e2b855541..4515ba4078a 100644 --- a/service/s3/api_op_GetPublicAccessBlock.go +++ b/service/s3/api_op_GetPublicAccessBlock.go @@ -6,6 +6,7 @@ import ( "context" awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + s3cust "github.com/aws/aws-sdk-go-v2/service/s3/internal/customizations" "github.com/aws/aws-sdk-go-v2/service/s3/types" "github.com/awslabs/smithy-go/middleware" smithyhttp "github.com/awslabs/smithy-go/transport/http" @@ -130,7 +131,7 @@ func addOperationGetPublicAccessBlockMiddlewares(stack *middleware.Stack, option if err = addMetadataRetrieverMiddleware(stack); err != nil { return err } - if err = addUpdateEndpointMiddleware(stack, options); err != nil { + if err = addGetPublicAccessBlockUpdateEndpoint(stack, options); err != nil { return err } if err = addResponseErrorMiddleware(stack); err != nil { @@ -156,3 +157,17 @@ func newServiceMetadataMiddleware_opGetPublicAccessBlock(region string) *awsmidd OperationName: "GetPublicAccessBlock", } } + +func addGetPublicAccessBlockUpdateEndpoint(stack *middleware.Stack, options Options) error { + return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ + Accessor: s3cust.UpdateEndpointParameterAccessor{GetBucketFromInput: getBucketFromInput, + SupportsAccelerate: supportAccelerate, + }, + UsePathStyle: options.UsePathStyle, + UseAccelerate: options.UseAccelerate, + EndpointResolver: options.EndpointResolver, + EndpointResolverOptions: options.EndpointOptions, + UseDualstack: options.UseDualstack, + UseARNRegion: options.UseARNRegion, + }) +} diff --git a/service/s3/api_op_HeadBucket.go b/service/s3/api_op_HeadBucket.go index d26ed833a9c..2f281e47dfd 100644 --- a/service/s3/api_op_HeadBucket.go +++ b/service/s3/api_op_HeadBucket.go @@ -6,6 +6,7 @@ import ( "context" awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + s3cust "github.com/aws/aws-sdk-go-v2/service/s3/internal/customizations" "github.com/awslabs/smithy-go/middleware" smithyhttp "github.com/awslabs/smithy-go/transport/http" ) @@ -119,7 +120,7 @@ func addOperationHeadBucketMiddlewares(stack *middleware.Stack, options Options) if err = addMetadataRetrieverMiddleware(stack); err != nil { return err } - if err = addUpdateEndpointMiddleware(stack, options); err != nil { + if err = addHeadBucketUpdateEndpoint(stack, options); err != nil { return err } if err = addResponseErrorMiddleware(stack); err != nil { @@ -145,3 +146,17 @@ func newServiceMetadataMiddleware_opHeadBucket(region string) *awsmiddleware.Reg OperationName: "HeadBucket", } } + +func addHeadBucketUpdateEndpoint(stack *middleware.Stack, options Options) error { + return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ + Accessor: s3cust.UpdateEndpointParameterAccessor{GetBucketFromInput: getBucketFromInput, + SupportsAccelerate: supportAccelerate, + }, + UsePathStyle: options.UsePathStyle, + UseAccelerate: options.UseAccelerate, + EndpointResolver: options.EndpointResolver, + EndpointResolverOptions: options.EndpointOptions, + UseDualstack: options.UseDualstack, + UseARNRegion: options.UseARNRegion, + }) +} diff --git a/service/s3/api_op_HeadObject.go b/service/s3/api_op_HeadObject.go index cd9b88de2e0..6153de8f0ed 100644 --- a/service/s3/api_op_HeadObject.go +++ b/service/s3/api_op_HeadObject.go @@ -6,6 +6,7 @@ import ( "context" awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + s3cust "github.com/aws/aws-sdk-go-v2/service/s3/internal/customizations" "github.com/aws/aws-sdk-go-v2/service/s3/types" "github.com/awslabs/smithy-go/middleware" smithyhttp "github.com/awslabs/smithy-go/transport/http" @@ -396,7 +397,7 @@ func addOperationHeadObjectMiddlewares(stack *middleware.Stack, options Options) if err = addMetadataRetrieverMiddleware(stack); err != nil { return err } - if err = addUpdateEndpointMiddleware(stack, options); err != nil { + if err = addHeadObjectUpdateEndpoint(stack, options); err != nil { return err } if err = addResponseErrorMiddleware(stack); err != nil { @@ -422,3 +423,17 @@ func newServiceMetadataMiddleware_opHeadObject(region string) *awsmiddleware.Reg OperationName: "HeadObject", } } + +func addHeadObjectUpdateEndpoint(stack *middleware.Stack, options Options) error { + return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ + Accessor: s3cust.UpdateEndpointParameterAccessor{GetBucketFromInput: getBucketFromInput, + SupportsAccelerate: supportAccelerate, + }, + UsePathStyle: options.UsePathStyle, + UseAccelerate: options.UseAccelerate, + EndpointResolver: options.EndpointResolver, + EndpointResolverOptions: options.EndpointOptions, + UseDualstack: options.UseDualstack, + UseARNRegion: options.UseARNRegion, + }) +} diff --git a/service/s3/api_op_ListBucketAnalyticsConfigurations.go b/service/s3/api_op_ListBucketAnalyticsConfigurations.go index 0f6f88b9500..b779b9f5595 100644 --- a/service/s3/api_op_ListBucketAnalyticsConfigurations.go +++ b/service/s3/api_op_ListBucketAnalyticsConfigurations.go @@ -6,6 +6,7 @@ import ( "context" awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + s3cust "github.com/aws/aws-sdk-go-v2/service/s3/internal/customizations" "github.com/aws/aws-sdk-go-v2/service/s3/types" "github.com/awslabs/smithy-go/middleware" smithyhttp "github.com/awslabs/smithy-go/transport/http" @@ -148,7 +149,7 @@ func addOperationListBucketAnalyticsConfigurationsMiddlewares(stack *middleware. if err = addMetadataRetrieverMiddleware(stack); err != nil { return err } - if err = addUpdateEndpointMiddleware(stack, options); err != nil { + if err = addListBucketAnalyticsConfigurationsUpdateEndpoint(stack, options); err != nil { return err } if err = addResponseErrorMiddleware(stack); err != nil { @@ -174,3 +175,17 @@ func newServiceMetadataMiddleware_opListBucketAnalyticsConfigurations(region str OperationName: "ListBucketAnalyticsConfigurations", } } + +func addListBucketAnalyticsConfigurationsUpdateEndpoint(stack *middleware.Stack, options Options) error { + return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ + Accessor: s3cust.UpdateEndpointParameterAccessor{GetBucketFromInput: getBucketFromInput, + SupportsAccelerate: supportAccelerate, + }, + UsePathStyle: options.UsePathStyle, + UseAccelerate: options.UseAccelerate, + EndpointResolver: options.EndpointResolver, + EndpointResolverOptions: options.EndpointOptions, + UseDualstack: options.UseDualstack, + UseARNRegion: options.UseARNRegion, + }) +} diff --git a/service/s3/api_op_ListBucketInventoryConfigurations.go b/service/s3/api_op_ListBucketInventoryConfigurations.go index e23991bb13c..d72cc7bfe27 100644 --- a/service/s3/api_op_ListBucketInventoryConfigurations.go +++ b/service/s3/api_op_ListBucketInventoryConfigurations.go @@ -6,6 +6,7 @@ import ( "context" awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + s3cust "github.com/aws/aws-sdk-go-v2/service/s3/internal/customizations" "github.com/aws/aws-sdk-go-v2/service/s3/types" "github.com/awslabs/smithy-go/middleware" smithyhttp "github.com/awslabs/smithy-go/transport/http" @@ -149,7 +150,7 @@ func addOperationListBucketInventoryConfigurationsMiddlewares(stack *middleware. if err = addMetadataRetrieverMiddleware(stack); err != nil { return err } - if err = addUpdateEndpointMiddleware(stack, options); err != nil { + if err = addListBucketInventoryConfigurationsUpdateEndpoint(stack, options); err != nil { return err } if err = addResponseErrorMiddleware(stack); err != nil { @@ -175,3 +176,17 @@ func newServiceMetadataMiddleware_opListBucketInventoryConfigurations(region str OperationName: "ListBucketInventoryConfigurations", } } + +func addListBucketInventoryConfigurationsUpdateEndpoint(stack *middleware.Stack, options Options) error { + return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ + Accessor: s3cust.UpdateEndpointParameterAccessor{GetBucketFromInput: getBucketFromInput, + SupportsAccelerate: supportAccelerate, + }, + UsePathStyle: options.UsePathStyle, + UseAccelerate: options.UseAccelerate, + EndpointResolver: options.EndpointResolver, + EndpointResolverOptions: options.EndpointOptions, + UseDualstack: options.UseDualstack, + UseARNRegion: options.UseARNRegion, + }) +} diff --git a/service/s3/api_op_ListBucketMetricsConfigurations.go b/service/s3/api_op_ListBucketMetricsConfigurations.go index 510f7139ba6..84b58df41ea 100644 --- a/service/s3/api_op_ListBucketMetricsConfigurations.go +++ b/service/s3/api_op_ListBucketMetricsConfigurations.go @@ -6,6 +6,7 @@ import ( "context" awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + s3cust "github.com/aws/aws-sdk-go-v2/service/s3/internal/customizations" "github.com/aws/aws-sdk-go-v2/service/s3/types" "github.com/awslabs/smithy-go/middleware" smithyhttp "github.com/awslabs/smithy-go/transport/http" @@ -152,7 +153,7 @@ func addOperationListBucketMetricsConfigurationsMiddlewares(stack *middleware.St if err = addMetadataRetrieverMiddleware(stack); err != nil { return err } - if err = addUpdateEndpointMiddleware(stack, options); err != nil { + if err = addListBucketMetricsConfigurationsUpdateEndpoint(stack, options); err != nil { return err } if err = addResponseErrorMiddleware(stack); err != nil { @@ -178,3 +179,17 @@ func newServiceMetadataMiddleware_opListBucketMetricsConfigurations(region strin OperationName: "ListBucketMetricsConfigurations", } } + +func addListBucketMetricsConfigurationsUpdateEndpoint(stack *middleware.Stack, options Options) error { + return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ + Accessor: s3cust.UpdateEndpointParameterAccessor{GetBucketFromInput: getBucketFromInput, + SupportsAccelerate: supportAccelerate, + }, + UsePathStyle: options.UsePathStyle, + UseAccelerate: options.UseAccelerate, + EndpointResolver: options.EndpointResolver, + EndpointResolverOptions: options.EndpointOptions, + UseDualstack: options.UseDualstack, + UseARNRegion: options.UseARNRegion, + }) +} diff --git a/service/s3/api_op_ListBuckets.go b/service/s3/api_op_ListBuckets.go index 2bb3ee330b3..3790c43605a 100644 --- a/service/s3/api_op_ListBuckets.go +++ b/service/s3/api_op_ListBuckets.go @@ -6,6 +6,7 @@ import ( "context" awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + s3cust "github.com/aws/aws-sdk-go-v2/service/s3/internal/customizations" "github.com/aws/aws-sdk-go-v2/service/s3/types" "github.com/awslabs/smithy-go/middleware" smithyhttp "github.com/awslabs/smithy-go/transport/http" @@ -90,7 +91,7 @@ func addOperationListBucketsMiddlewares(stack *middleware.Stack, options Options if err = addMetadataRetrieverMiddleware(stack); err != nil { return err } - if err = addUpdateEndpointMiddleware(stack, options); err != nil { + if err = addListBucketsUpdateEndpoint(stack, options); err != nil { return err } if err = addResponseErrorMiddleware(stack); err != nil { @@ -116,3 +117,17 @@ func newServiceMetadataMiddleware_opListBuckets(region string) *awsmiddleware.Re OperationName: "ListBuckets", } } + +func addListBucketsUpdateEndpoint(stack *middleware.Stack, options Options) error { + return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ + Accessor: s3cust.UpdateEndpointParameterAccessor{GetBucketFromInput: getBucketFromInput, + SupportsAccelerate: supportAccelerate, + }, + UsePathStyle: options.UsePathStyle, + UseAccelerate: options.UseAccelerate, + EndpointResolver: options.EndpointResolver, + EndpointResolverOptions: options.EndpointOptions, + UseDualstack: options.UseDualstack, + UseARNRegion: options.UseARNRegion, + }) +} diff --git a/service/s3/api_op_ListMultipartUploads.go b/service/s3/api_op_ListMultipartUploads.go index 6fe6d24f257..c4a5219a203 100644 --- a/service/s3/api_op_ListMultipartUploads.go +++ b/service/s3/api_op_ListMultipartUploads.go @@ -6,6 +6,7 @@ import ( "context" awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + s3cust "github.com/aws/aws-sdk-go-v2/service/s3/internal/customizations" "github.com/aws/aws-sdk-go-v2/service/s3/types" "github.com/awslabs/smithy-go/middleware" smithyhttp "github.com/awslabs/smithy-go/transport/http" @@ -243,7 +244,7 @@ func addOperationListMultipartUploadsMiddlewares(stack *middleware.Stack, option if err = addMetadataRetrieverMiddleware(stack); err != nil { return err } - if err = addUpdateEndpointMiddleware(stack, options); err != nil { + if err = addListMultipartUploadsUpdateEndpoint(stack, options); err != nil { return err } if err = addResponseErrorMiddleware(stack); err != nil { @@ -269,3 +270,17 @@ func newServiceMetadataMiddleware_opListMultipartUploads(region string) *awsmidd OperationName: "ListMultipartUploads", } } + +func addListMultipartUploadsUpdateEndpoint(stack *middleware.Stack, options Options) error { + return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ + Accessor: s3cust.UpdateEndpointParameterAccessor{GetBucketFromInput: getBucketFromInput, + SupportsAccelerate: supportAccelerate, + }, + UsePathStyle: options.UsePathStyle, + UseAccelerate: options.UseAccelerate, + EndpointResolver: options.EndpointResolver, + EndpointResolverOptions: options.EndpointOptions, + UseDualstack: options.UseDualstack, + UseARNRegion: options.UseARNRegion, + }) +} diff --git a/service/s3/api_op_ListObjectVersions.go b/service/s3/api_op_ListObjectVersions.go index 0b66e93206f..22fd7801454 100644 --- a/service/s3/api_op_ListObjectVersions.go +++ b/service/s3/api_op_ListObjectVersions.go @@ -6,6 +6,7 @@ import ( "context" awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + s3cust "github.com/aws/aws-sdk-go-v2/service/s3/internal/customizations" "github.com/aws/aws-sdk-go-v2/service/s3/types" "github.com/awslabs/smithy-go/middleware" smithyhttp "github.com/awslabs/smithy-go/transport/http" @@ -208,7 +209,7 @@ func addOperationListObjectVersionsMiddlewares(stack *middleware.Stack, options if err = addMetadataRetrieverMiddleware(stack); err != nil { return err } - if err = addUpdateEndpointMiddleware(stack, options); err != nil { + if err = addListObjectVersionsUpdateEndpoint(stack, options); err != nil { return err } if err = addResponseErrorMiddleware(stack); err != nil { @@ -234,3 +235,17 @@ func newServiceMetadataMiddleware_opListObjectVersions(region string) *awsmiddle OperationName: "ListObjectVersions", } } + +func addListObjectVersionsUpdateEndpoint(stack *middleware.Stack, options Options) error { + return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ + Accessor: s3cust.UpdateEndpointParameterAccessor{GetBucketFromInput: getBucketFromInput, + SupportsAccelerate: supportAccelerate, + }, + UsePathStyle: options.UsePathStyle, + UseAccelerate: options.UseAccelerate, + EndpointResolver: options.EndpointResolver, + EndpointResolverOptions: options.EndpointOptions, + UseDualstack: options.UseDualstack, + UseARNRegion: options.UseARNRegion, + }) +} diff --git a/service/s3/api_op_ListObjects.go b/service/s3/api_op_ListObjects.go index 44dea4a399b..202cc5f8a7c 100644 --- a/service/s3/api_op_ListObjects.go +++ b/service/s3/api_op_ListObjects.go @@ -6,6 +6,7 @@ import ( "context" awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + s3cust "github.com/aws/aws-sdk-go-v2/service/s3/internal/customizations" "github.com/aws/aws-sdk-go-v2/service/s3/types" "github.com/awslabs/smithy-go/middleware" smithyhttp "github.com/awslabs/smithy-go/transport/http" @@ -217,7 +218,7 @@ func addOperationListObjectsMiddlewares(stack *middleware.Stack, options Options if err = addMetadataRetrieverMiddleware(stack); err != nil { return err } - if err = addUpdateEndpointMiddleware(stack, options); err != nil { + if err = addListObjectsUpdateEndpoint(stack, options); err != nil { return err } if err = addResponseErrorMiddleware(stack); err != nil { @@ -243,3 +244,17 @@ func newServiceMetadataMiddleware_opListObjects(region string) *awsmiddleware.Re OperationName: "ListObjects", } } + +func addListObjectsUpdateEndpoint(stack *middleware.Stack, options Options) error { + return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ + Accessor: s3cust.UpdateEndpointParameterAccessor{GetBucketFromInput: getBucketFromInput, + SupportsAccelerate: supportAccelerate, + }, + UsePathStyle: options.UsePathStyle, + UseAccelerate: options.UseAccelerate, + EndpointResolver: options.EndpointResolver, + EndpointResolverOptions: options.EndpointOptions, + UseDualstack: options.UseDualstack, + UseARNRegion: options.UseARNRegion, + }) +} diff --git a/service/s3/api_op_ListObjectsV2.go b/service/s3/api_op_ListObjectsV2.go index 5813ccd63b8..6bdea446c29 100644 --- a/service/s3/api_op_ListObjectsV2.go +++ b/service/s3/api_op_ListObjectsV2.go @@ -6,6 +6,7 @@ import ( "context" awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + s3cust "github.com/aws/aws-sdk-go-v2/service/s3/internal/customizations" "github.com/aws/aws-sdk-go-v2/service/s3/types" "github.com/awslabs/smithy-go/middleware" smithyhttp "github.com/awslabs/smithy-go/transport/http" @@ -247,7 +248,7 @@ func addOperationListObjectsV2Middlewares(stack *middleware.Stack, options Optio if err = addMetadataRetrieverMiddleware(stack); err != nil { return err } - if err = addUpdateEndpointMiddleware(stack, options); err != nil { + if err = addListObjectsV2UpdateEndpoint(stack, options); err != nil { return err } if err = addResponseErrorMiddleware(stack); err != nil { @@ -273,3 +274,17 @@ func newServiceMetadataMiddleware_opListObjectsV2(region string) *awsmiddleware. OperationName: "ListObjectsV2", } } + +func addListObjectsV2UpdateEndpoint(stack *middleware.Stack, options Options) error { + return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ + Accessor: s3cust.UpdateEndpointParameterAccessor{GetBucketFromInput: getBucketFromInput, + SupportsAccelerate: supportAccelerate, + }, + UsePathStyle: options.UsePathStyle, + UseAccelerate: options.UseAccelerate, + EndpointResolver: options.EndpointResolver, + EndpointResolverOptions: options.EndpointOptions, + UseDualstack: options.UseDualstack, + UseARNRegion: options.UseARNRegion, + }) +} diff --git a/service/s3/api_op_ListParts.go b/service/s3/api_op_ListParts.go index cd95a50fa55..3fa0afcf5f2 100644 --- a/service/s3/api_op_ListParts.go +++ b/service/s3/api_op_ListParts.go @@ -6,6 +6,7 @@ import ( "context" awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + s3cust "github.com/aws/aws-sdk-go-v2/service/s3/internal/customizations" "github.com/aws/aws-sdk-go-v2/service/s3/types" "github.com/awslabs/smithy-go/middleware" smithyhttp "github.com/awslabs/smithy-go/transport/http" @@ -239,7 +240,7 @@ func addOperationListPartsMiddlewares(stack *middleware.Stack, options Options) if err = addMetadataRetrieverMiddleware(stack); err != nil { return err } - if err = addUpdateEndpointMiddleware(stack, options); err != nil { + if err = addListPartsUpdateEndpoint(stack, options); err != nil { return err } if err = addResponseErrorMiddleware(stack); err != nil { @@ -265,3 +266,17 @@ func newServiceMetadataMiddleware_opListParts(region string) *awsmiddleware.Regi OperationName: "ListParts", } } + +func addListPartsUpdateEndpoint(stack *middleware.Stack, options Options) error { + return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ + Accessor: s3cust.UpdateEndpointParameterAccessor{GetBucketFromInput: getBucketFromInput, + SupportsAccelerate: supportAccelerate, + }, + UsePathStyle: options.UsePathStyle, + UseAccelerate: options.UseAccelerate, + EndpointResolver: options.EndpointResolver, + EndpointResolverOptions: options.EndpointOptions, + UseDualstack: options.UseDualstack, + UseARNRegion: options.UseARNRegion, + }) +} diff --git a/service/s3/api_op_PutBucketAccelerateConfiguration.go b/service/s3/api_op_PutBucketAccelerateConfiguration.go index b71c122fbc2..355d1e61855 100644 --- a/service/s3/api_op_PutBucketAccelerateConfiguration.go +++ b/service/s3/api_op_PutBucketAccelerateConfiguration.go @@ -6,6 +6,7 @@ import ( "context" awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + s3cust "github.com/aws/aws-sdk-go-v2/service/s3/internal/customizations" "github.com/aws/aws-sdk-go-v2/service/s3/types" "github.com/awslabs/smithy-go/middleware" smithyhttp "github.com/awslabs/smithy-go/transport/http" @@ -136,7 +137,7 @@ func addOperationPutBucketAccelerateConfigurationMiddlewares(stack *middleware.S if err = addMetadataRetrieverMiddleware(stack); err != nil { return err } - if err = addUpdateEndpointMiddleware(stack, options); err != nil { + if err = addPutBucketAccelerateConfigurationUpdateEndpoint(stack, options); err != nil { return err } if err = addResponseErrorMiddleware(stack); err != nil { @@ -162,3 +163,17 @@ func newServiceMetadataMiddleware_opPutBucketAccelerateConfiguration(region stri OperationName: "PutBucketAccelerateConfiguration", } } + +func addPutBucketAccelerateConfigurationUpdateEndpoint(stack *middleware.Stack, options Options) error { + return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ + Accessor: s3cust.UpdateEndpointParameterAccessor{GetBucketFromInput: getBucketFromInput, + SupportsAccelerate: supportAccelerate, + }, + UsePathStyle: options.UsePathStyle, + UseAccelerate: options.UseAccelerate, + EndpointResolver: options.EndpointResolver, + EndpointResolverOptions: options.EndpointOptions, + UseDualstack: options.UseDualstack, + UseARNRegion: options.UseARNRegion, + }) +} diff --git a/service/s3/api_op_PutBucketAcl.go b/service/s3/api_op_PutBucketAcl.go index 9e06b48a699..3a199cc0f30 100644 --- a/service/s3/api_op_PutBucketAcl.go +++ b/service/s3/api_op_PutBucketAcl.go @@ -6,6 +6,7 @@ import ( "context" awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + s3cust "github.com/aws/aws-sdk-go-v2/service/s3/internal/customizations" "github.com/aws/aws-sdk-go-v2/service/s3/types" "github.com/awslabs/smithy-go/middleware" smithyhttp "github.com/awslabs/smithy-go/transport/http" @@ -257,7 +258,7 @@ func addOperationPutBucketAclMiddlewares(stack *middleware.Stack, options Option if err = addMetadataRetrieverMiddleware(stack); err != nil { return err } - if err = addUpdateEndpointMiddleware(stack, options); err != nil { + if err = addPutBucketAclUpdateEndpoint(stack, options); err != nil { return err } if err = addResponseErrorMiddleware(stack); err != nil { @@ -286,3 +287,17 @@ func newServiceMetadataMiddleware_opPutBucketAcl(region string) *awsmiddleware.R OperationName: "PutBucketAcl", } } + +func addPutBucketAclUpdateEndpoint(stack *middleware.Stack, options Options) error { + return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ + Accessor: s3cust.UpdateEndpointParameterAccessor{GetBucketFromInput: getBucketFromInput, + SupportsAccelerate: supportAccelerate, + }, + UsePathStyle: options.UsePathStyle, + UseAccelerate: options.UseAccelerate, + EndpointResolver: options.EndpointResolver, + EndpointResolverOptions: options.EndpointOptions, + UseDualstack: options.UseDualstack, + UseARNRegion: options.UseARNRegion, + }) +} diff --git a/service/s3/api_op_PutBucketAnalyticsConfiguration.go b/service/s3/api_op_PutBucketAnalyticsConfiguration.go index 596aa6b525c..a5ca4895b7d 100644 --- a/service/s3/api_op_PutBucketAnalyticsConfiguration.go +++ b/service/s3/api_op_PutBucketAnalyticsConfiguration.go @@ -6,6 +6,7 @@ import ( "context" awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + s3cust "github.com/aws/aws-sdk-go-v2/service/s3/internal/customizations" "github.com/aws/aws-sdk-go-v2/service/s3/types" "github.com/awslabs/smithy-go/middleware" smithyhttp "github.com/awslabs/smithy-go/transport/http" @@ -168,7 +169,7 @@ func addOperationPutBucketAnalyticsConfigurationMiddlewares(stack *middleware.St if err = addMetadataRetrieverMiddleware(stack); err != nil { return err } - if err = addUpdateEndpointMiddleware(stack, options); err != nil { + if err = addPutBucketAnalyticsConfigurationUpdateEndpoint(stack, options); err != nil { return err } if err = addResponseErrorMiddleware(stack); err != nil { @@ -194,3 +195,17 @@ func newServiceMetadataMiddleware_opPutBucketAnalyticsConfiguration(region strin OperationName: "PutBucketAnalyticsConfiguration", } } + +func addPutBucketAnalyticsConfigurationUpdateEndpoint(stack *middleware.Stack, options Options) error { + return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ + Accessor: s3cust.UpdateEndpointParameterAccessor{GetBucketFromInput: getBucketFromInput, + SupportsAccelerate: supportAccelerate, + }, + UsePathStyle: options.UsePathStyle, + UseAccelerate: options.UseAccelerate, + EndpointResolver: options.EndpointResolver, + EndpointResolverOptions: options.EndpointOptions, + UseDualstack: options.UseDualstack, + UseARNRegion: options.UseARNRegion, + }) +} diff --git a/service/s3/api_op_PutBucketCors.go b/service/s3/api_op_PutBucketCors.go index f9eb487d5d8..6bebec21775 100644 --- a/service/s3/api_op_PutBucketCors.go +++ b/service/s3/api_op_PutBucketCors.go @@ -6,6 +6,7 @@ import ( "context" awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + s3cust "github.com/aws/aws-sdk-go-v2/service/s3/internal/customizations" "github.com/aws/aws-sdk-go-v2/service/s3/types" "github.com/awslabs/smithy-go/middleware" smithyhttp "github.com/awslabs/smithy-go/transport/http" @@ -150,7 +151,7 @@ func addOperationPutBucketCorsMiddlewares(stack *middleware.Stack, options Optio if err = addMetadataRetrieverMiddleware(stack); err != nil { return err } - if err = addUpdateEndpointMiddleware(stack, options); err != nil { + if err = addPutBucketCorsUpdateEndpoint(stack, options); err != nil { return err } if err = addResponseErrorMiddleware(stack); err != nil { @@ -179,3 +180,17 @@ func newServiceMetadataMiddleware_opPutBucketCors(region string) *awsmiddleware. OperationName: "PutBucketCors", } } + +func addPutBucketCorsUpdateEndpoint(stack *middleware.Stack, options Options) error { + return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ + Accessor: s3cust.UpdateEndpointParameterAccessor{GetBucketFromInput: getBucketFromInput, + SupportsAccelerate: supportAccelerate, + }, + UsePathStyle: options.UsePathStyle, + UseAccelerate: options.UseAccelerate, + EndpointResolver: options.EndpointResolver, + EndpointResolverOptions: options.EndpointOptions, + UseDualstack: options.UseDualstack, + UseARNRegion: options.UseARNRegion, + }) +} diff --git a/service/s3/api_op_PutBucketEncryption.go b/service/s3/api_op_PutBucketEncryption.go index b7a3a8d796b..7252063e175 100644 --- a/service/s3/api_op_PutBucketEncryption.go +++ b/service/s3/api_op_PutBucketEncryption.go @@ -6,6 +6,7 @@ import ( "context" awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + s3cust "github.com/aws/aws-sdk-go-v2/service/s3/internal/customizations" "github.com/aws/aws-sdk-go-v2/service/s3/types" "github.com/awslabs/smithy-go/middleware" smithyhttp "github.com/awslabs/smithy-go/transport/http" @@ -134,7 +135,7 @@ func addOperationPutBucketEncryptionMiddlewares(stack *middleware.Stack, options if err = addMetadataRetrieverMiddleware(stack); err != nil { return err } - if err = addUpdateEndpointMiddleware(stack, options); err != nil { + if err = addPutBucketEncryptionUpdateEndpoint(stack, options); err != nil { return err } if err = addResponseErrorMiddleware(stack); err != nil { @@ -163,3 +164,17 @@ func newServiceMetadataMiddleware_opPutBucketEncryption(region string) *awsmiddl OperationName: "PutBucketEncryption", } } + +func addPutBucketEncryptionUpdateEndpoint(stack *middleware.Stack, options Options) error { + return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ + Accessor: s3cust.UpdateEndpointParameterAccessor{GetBucketFromInput: getBucketFromInput, + SupportsAccelerate: supportAccelerate, + }, + UsePathStyle: options.UsePathStyle, + UseAccelerate: options.UseAccelerate, + EndpointResolver: options.EndpointResolver, + EndpointResolverOptions: options.EndpointOptions, + UseDualstack: options.UseDualstack, + UseARNRegion: options.UseARNRegion, + }) +} diff --git a/service/s3/api_op_PutBucketInventoryConfiguration.go b/service/s3/api_op_PutBucketInventoryConfiguration.go index 08928452171..7b72c05aa33 100644 --- a/service/s3/api_op_PutBucketInventoryConfiguration.go +++ b/service/s3/api_op_PutBucketInventoryConfiguration.go @@ -6,6 +6,7 @@ import ( "context" awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + s3cust "github.com/aws/aws-sdk-go-v2/service/s3/internal/customizations" "github.com/aws/aws-sdk-go-v2/service/s3/types" "github.com/awslabs/smithy-go/middleware" smithyhttp "github.com/awslabs/smithy-go/transport/http" @@ -168,7 +169,7 @@ func addOperationPutBucketInventoryConfigurationMiddlewares(stack *middleware.St if err = addMetadataRetrieverMiddleware(stack); err != nil { return err } - if err = addUpdateEndpointMiddleware(stack, options); err != nil { + if err = addPutBucketInventoryConfigurationUpdateEndpoint(stack, options); err != nil { return err } if err = addResponseErrorMiddleware(stack); err != nil { @@ -194,3 +195,17 @@ func newServiceMetadataMiddleware_opPutBucketInventoryConfiguration(region strin OperationName: "PutBucketInventoryConfiguration", } } + +func addPutBucketInventoryConfigurationUpdateEndpoint(stack *middleware.Stack, options Options) error { + return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ + Accessor: s3cust.UpdateEndpointParameterAccessor{GetBucketFromInput: getBucketFromInput, + SupportsAccelerate: supportAccelerate, + }, + UsePathStyle: options.UsePathStyle, + UseAccelerate: options.UseAccelerate, + EndpointResolver: options.EndpointResolver, + EndpointResolverOptions: options.EndpointOptions, + UseDualstack: options.UseDualstack, + UseARNRegion: options.UseARNRegion, + }) +} diff --git a/service/s3/api_op_PutBucketLifecycleConfiguration.go b/service/s3/api_op_PutBucketLifecycleConfiguration.go index 91b6758b55f..1b001f4ad25 100644 --- a/service/s3/api_op_PutBucketLifecycleConfiguration.go +++ b/service/s3/api_op_PutBucketLifecycleConfiguration.go @@ -6,6 +6,7 @@ import ( "context" awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + s3cust "github.com/aws/aws-sdk-go-v2/service/s3/internal/customizations" "github.com/aws/aws-sdk-go-v2/service/s3/types" "github.com/awslabs/smithy-go/middleware" smithyhttp "github.com/awslabs/smithy-go/transport/http" @@ -163,7 +164,7 @@ func addOperationPutBucketLifecycleConfigurationMiddlewares(stack *middleware.St if err = addMetadataRetrieverMiddleware(stack); err != nil { return err } - if err = addUpdateEndpointMiddleware(stack, options); err != nil { + if err = addPutBucketLifecycleConfigurationUpdateEndpoint(stack, options); err != nil { return err } if err = addResponseErrorMiddleware(stack); err != nil { @@ -192,3 +193,17 @@ func newServiceMetadataMiddleware_opPutBucketLifecycleConfiguration(region strin OperationName: "PutBucketLifecycleConfiguration", } } + +func addPutBucketLifecycleConfigurationUpdateEndpoint(stack *middleware.Stack, options Options) error { + return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ + Accessor: s3cust.UpdateEndpointParameterAccessor{GetBucketFromInput: getBucketFromInput, + SupportsAccelerate: supportAccelerate, + }, + UsePathStyle: options.UsePathStyle, + UseAccelerate: options.UseAccelerate, + EndpointResolver: options.EndpointResolver, + EndpointResolverOptions: options.EndpointOptions, + UseDualstack: options.UseDualstack, + UseARNRegion: options.UseARNRegion, + }) +} diff --git a/service/s3/api_op_PutBucketLogging.go b/service/s3/api_op_PutBucketLogging.go index cea6c5f70bb..3135343769e 100644 --- a/service/s3/api_op_PutBucketLogging.go +++ b/service/s3/api_op_PutBucketLogging.go @@ -6,6 +6,7 @@ import ( "context" awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + s3cust "github.com/aws/aws-sdk-go-v2/service/s3/internal/customizations" "github.com/aws/aws-sdk-go-v2/service/s3/types" "github.com/awslabs/smithy-go/middleware" smithyhttp "github.com/awslabs/smithy-go/transport/http" @@ -148,7 +149,7 @@ func addOperationPutBucketLoggingMiddlewares(stack *middleware.Stack, options Op if err = addMetadataRetrieverMiddleware(stack); err != nil { return err } - if err = addUpdateEndpointMiddleware(stack, options); err != nil { + if err = addPutBucketLoggingUpdateEndpoint(stack, options); err != nil { return err } if err = addResponseErrorMiddleware(stack); err != nil { @@ -177,3 +178,17 @@ func newServiceMetadataMiddleware_opPutBucketLogging(region string) *awsmiddlewa OperationName: "PutBucketLogging", } } + +func addPutBucketLoggingUpdateEndpoint(stack *middleware.Stack, options Options) error { + return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ + Accessor: s3cust.UpdateEndpointParameterAccessor{GetBucketFromInput: getBucketFromInput, + SupportsAccelerate: supportAccelerate, + }, + UsePathStyle: options.UsePathStyle, + UseAccelerate: options.UseAccelerate, + EndpointResolver: options.EndpointResolver, + EndpointResolverOptions: options.EndpointOptions, + UseDualstack: options.UseDualstack, + UseARNRegion: options.UseARNRegion, + }) +} diff --git a/service/s3/api_op_PutBucketMetricsConfiguration.go b/service/s3/api_op_PutBucketMetricsConfiguration.go index bc62aca2ba0..d9a9f03211c 100644 --- a/service/s3/api_op_PutBucketMetricsConfiguration.go +++ b/service/s3/api_op_PutBucketMetricsConfiguration.go @@ -6,6 +6,7 @@ import ( "context" awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + s3cust "github.com/aws/aws-sdk-go-v2/service/s3/internal/customizations" "github.com/aws/aws-sdk-go-v2/service/s3/types" "github.com/awslabs/smithy-go/middleware" smithyhttp "github.com/awslabs/smithy-go/transport/http" @@ -143,7 +144,7 @@ func addOperationPutBucketMetricsConfigurationMiddlewares(stack *middleware.Stac if err = addMetadataRetrieverMiddleware(stack); err != nil { return err } - if err = addUpdateEndpointMiddleware(stack, options); err != nil { + if err = addPutBucketMetricsConfigurationUpdateEndpoint(stack, options); err != nil { return err } if err = addResponseErrorMiddleware(stack); err != nil { @@ -169,3 +170,17 @@ func newServiceMetadataMiddleware_opPutBucketMetricsConfiguration(region string) OperationName: "PutBucketMetricsConfiguration", } } + +func addPutBucketMetricsConfigurationUpdateEndpoint(stack *middleware.Stack, options Options) error { + return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ + Accessor: s3cust.UpdateEndpointParameterAccessor{GetBucketFromInput: getBucketFromInput, + SupportsAccelerate: supportAccelerate, + }, + UsePathStyle: options.UsePathStyle, + UseAccelerate: options.UseAccelerate, + EndpointResolver: options.EndpointResolver, + EndpointResolverOptions: options.EndpointOptions, + UseDualstack: options.UseDualstack, + UseARNRegion: options.UseARNRegion, + }) +} diff --git a/service/s3/api_op_PutBucketNotificationConfiguration.go b/service/s3/api_op_PutBucketNotificationConfiguration.go index 3c71c257208..54225dc33b5 100644 --- a/service/s3/api_op_PutBucketNotificationConfiguration.go +++ b/service/s3/api_op_PutBucketNotificationConfiguration.go @@ -6,6 +6,7 @@ import ( "context" awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + s3cust "github.com/aws/aws-sdk-go-v2/service/s3/internal/customizations" "github.com/aws/aws-sdk-go-v2/service/s3/types" "github.com/awslabs/smithy-go/middleware" smithyhttp "github.com/awslabs/smithy-go/transport/http" @@ -135,7 +136,7 @@ func addOperationPutBucketNotificationConfigurationMiddlewares(stack *middleware if err = addMetadataRetrieverMiddleware(stack); err != nil { return err } - if err = addUpdateEndpointMiddleware(stack, options); err != nil { + if err = addPutBucketNotificationConfigurationUpdateEndpoint(stack, options); err != nil { return err } if err = addResponseErrorMiddleware(stack); err != nil { @@ -161,3 +162,17 @@ func newServiceMetadataMiddleware_opPutBucketNotificationConfiguration(region st OperationName: "PutBucketNotificationConfiguration", } } + +func addPutBucketNotificationConfigurationUpdateEndpoint(stack *middleware.Stack, options Options) error { + return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ + Accessor: s3cust.UpdateEndpointParameterAccessor{GetBucketFromInput: getBucketFromInput, + SupportsAccelerate: supportAccelerate, + }, + UsePathStyle: options.UsePathStyle, + UseAccelerate: options.UseAccelerate, + EndpointResolver: options.EndpointResolver, + EndpointResolverOptions: options.EndpointOptions, + UseDualstack: options.UseDualstack, + UseARNRegion: options.UseARNRegion, + }) +} diff --git a/service/s3/api_op_PutBucketOwnershipControls.go b/service/s3/api_op_PutBucketOwnershipControls.go index 97421f2053b..6961c305a10 100644 --- a/service/s3/api_op_PutBucketOwnershipControls.go +++ b/service/s3/api_op_PutBucketOwnershipControls.go @@ -6,6 +6,7 @@ import ( "context" awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + s3cust "github.com/aws/aws-sdk-go-v2/service/s3/internal/customizations" "github.com/aws/aws-sdk-go-v2/service/s3/types" "github.com/awslabs/smithy-go/middleware" smithyhttp "github.com/awslabs/smithy-go/transport/http" @@ -113,7 +114,7 @@ func addOperationPutBucketOwnershipControlsMiddlewares(stack *middleware.Stack, if err = addMetadataRetrieverMiddleware(stack); err != nil { return err } - if err = addUpdateEndpointMiddleware(stack, options); err != nil { + if err = addPutBucketOwnershipControlsUpdateEndpoint(stack, options); err != nil { return err } if err = addResponseErrorMiddleware(stack); err != nil { @@ -139,3 +140,17 @@ func newServiceMetadataMiddleware_opPutBucketOwnershipControls(region string) *a OperationName: "PutBucketOwnershipControls", } } + +func addPutBucketOwnershipControlsUpdateEndpoint(stack *middleware.Stack, options Options) error { + return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ + Accessor: s3cust.UpdateEndpointParameterAccessor{GetBucketFromInput: getBucketFromInput, + SupportsAccelerate: supportAccelerate, + }, + UsePathStyle: options.UsePathStyle, + UseAccelerate: options.UseAccelerate, + EndpointResolver: options.EndpointResolver, + EndpointResolverOptions: options.EndpointOptions, + UseDualstack: options.UseDualstack, + UseARNRegion: options.UseARNRegion, + }) +} diff --git a/service/s3/api_op_PutBucketPolicy.go b/service/s3/api_op_PutBucketPolicy.go index c021cd8b39f..2c4eedf5de0 100644 --- a/service/s3/api_op_PutBucketPolicy.go +++ b/service/s3/api_op_PutBucketPolicy.go @@ -6,6 +6,7 @@ import ( "context" awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + s3cust "github.com/aws/aws-sdk-go-v2/service/s3/internal/customizations" "github.com/awslabs/smithy-go/middleware" smithyhttp "github.com/awslabs/smithy-go/transport/http" ) @@ -125,7 +126,7 @@ func addOperationPutBucketPolicyMiddlewares(stack *middleware.Stack, options Opt if err = addMetadataRetrieverMiddleware(stack); err != nil { return err } - if err = addUpdateEndpointMiddleware(stack, options); err != nil { + if err = addPutBucketPolicyUpdateEndpoint(stack, options); err != nil { return err } if err = addResponseErrorMiddleware(stack); err != nil { @@ -154,3 +155,17 @@ func newServiceMetadataMiddleware_opPutBucketPolicy(region string) *awsmiddlewar OperationName: "PutBucketPolicy", } } + +func addPutBucketPolicyUpdateEndpoint(stack *middleware.Stack, options Options) error { + return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ + Accessor: s3cust.UpdateEndpointParameterAccessor{GetBucketFromInput: getBucketFromInput, + SupportsAccelerate: supportAccelerate, + }, + UsePathStyle: options.UsePathStyle, + UseAccelerate: options.UseAccelerate, + EndpointResolver: options.EndpointResolver, + EndpointResolverOptions: options.EndpointOptions, + UseDualstack: options.UseDualstack, + UseARNRegion: options.UseARNRegion, + }) +} diff --git a/service/s3/api_op_PutBucketReplication.go b/service/s3/api_op_PutBucketReplication.go index 404f36537ae..a1f274ceaac 100644 --- a/service/s3/api_op_PutBucketReplication.go +++ b/service/s3/api_op_PutBucketReplication.go @@ -6,6 +6,7 @@ import ( "context" awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + s3cust "github.com/aws/aws-sdk-go-v2/service/s3/internal/customizations" "github.com/aws/aws-sdk-go-v2/service/s3/types" "github.com/awslabs/smithy-go/middleware" smithyhttp "github.com/awslabs/smithy-go/transport/http" @@ -163,7 +164,7 @@ func addOperationPutBucketReplicationMiddlewares(stack *middleware.Stack, option if err = addMetadataRetrieverMiddleware(stack); err != nil { return err } - if err = addUpdateEndpointMiddleware(stack, options); err != nil { + if err = addPutBucketReplicationUpdateEndpoint(stack, options); err != nil { return err } if err = addResponseErrorMiddleware(stack); err != nil { @@ -192,3 +193,17 @@ func newServiceMetadataMiddleware_opPutBucketReplication(region string) *awsmidd OperationName: "PutBucketReplication", } } + +func addPutBucketReplicationUpdateEndpoint(stack *middleware.Stack, options Options) error { + return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ + Accessor: s3cust.UpdateEndpointParameterAccessor{GetBucketFromInput: getBucketFromInput, + SupportsAccelerate: supportAccelerate, + }, + UsePathStyle: options.UsePathStyle, + UseAccelerate: options.UseAccelerate, + EndpointResolver: options.EndpointResolver, + EndpointResolverOptions: options.EndpointOptions, + UseDualstack: options.UseDualstack, + UseARNRegion: options.UseARNRegion, + }) +} diff --git a/service/s3/api_op_PutBucketRequestPayment.go b/service/s3/api_op_PutBucketRequestPayment.go index 8431be9e7c9..b3ac343e7c2 100644 --- a/service/s3/api_op_PutBucketRequestPayment.go +++ b/service/s3/api_op_PutBucketRequestPayment.go @@ -6,6 +6,7 @@ import ( "context" awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + s3cust "github.com/aws/aws-sdk-go-v2/service/s3/internal/customizations" "github.com/aws/aws-sdk-go-v2/service/s3/types" "github.com/awslabs/smithy-go/middleware" smithyhttp "github.com/awslabs/smithy-go/transport/http" @@ -118,7 +119,7 @@ func addOperationPutBucketRequestPaymentMiddlewares(stack *middleware.Stack, opt if err = addMetadataRetrieverMiddleware(stack); err != nil { return err } - if err = addUpdateEndpointMiddleware(stack, options); err != nil { + if err = addPutBucketRequestPaymentUpdateEndpoint(stack, options); err != nil { return err } if err = addResponseErrorMiddleware(stack); err != nil { @@ -147,3 +148,17 @@ func newServiceMetadataMiddleware_opPutBucketRequestPayment(region string) *awsm OperationName: "PutBucketRequestPayment", } } + +func addPutBucketRequestPaymentUpdateEndpoint(stack *middleware.Stack, options Options) error { + return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ + Accessor: s3cust.UpdateEndpointParameterAccessor{GetBucketFromInput: getBucketFromInput, + SupportsAccelerate: supportAccelerate, + }, + UsePathStyle: options.UsePathStyle, + UseAccelerate: options.UseAccelerate, + EndpointResolver: options.EndpointResolver, + EndpointResolverOptions: options.EndpointOptions, + UseDualstack: options.UseDualstack, + UseARNRegion: options.UseARNRegion, + }) +} diff --git a/service/s3/api_op_PutBucketTagging.go b/service/s3/api_op_PutBucketTagging.go index ca07cf62fd4..692fa23a84f 100644 --- a/service/s3/api_op_PutBucketTagging.go +++ b/service/s3/api_op_PutBucketTagging.go @@ -6,6 +6,7 @@ import ( "context" awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + s3cust "github.com/aws/aws-sdk-go-v2/service/s3/internal/customizations" "github.com/aws/aws-sdk-go-v2/service/s3/types" "github.com/awslabs/smithy-go/middleware" smithyhttp "github.com/awslabs/smithy-go/transport/http" @@ -162,7 +163,7 @@ func addOperationPutBucketTaggingMiddlewares(stack *middleware.Stack, options Op if err = addMetadataRetrieverMiddleware(stack); err != nil { return err } - if err = addUpdateEndpointMiddleware(stack, options); err != nil { + if err = addPutBucketTaggingUpdateEndpoint(stack, options); err != nil { return err } if err = addResponseErrorMiddleware(stack); err != nil { @@ -191,3 +192,17 @@ func newServiceMetadataMiddleware_opPutBucketTagging(region string) *awsmiddlewa OperationName: "PutBucketTagging", } } + +func addPutBucketTaggingUpdateEndpoint(stack *middleware.Stack, options Options) error { + return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ + Accessor: s3cust.UpdateEndpointParameterAccessor{GetBucketFromInput: getBucketFromInput, + SupportsAccelerate: supportAccelerate, + }, + UsePathStyle: options.UsePathStyle, + UseAccelerate: options.UseAccelerate, + EndpointResolver: options.EndpointResolver, + EndpointResolverOptions: options.EndpointOptions, + UseDualstack: options.UseDualstack, + UseARNRegion: options.UseARNRegion, + }) +} diff --git a/service/s3/api_op_PutBucketVersioning.go b/service/s3/api_op_PutBucketVersioning.go index 74cc21b4c17..6f227d5d8b8 100644 --- a/service/s3/api_op_PutBucketVersioning.go +++ b/service/s3/api_op_PutBucketVersioning.go @@ -6,6 +6,7 @@ import ( "context" awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + s3cust "github.com/aws/aws-sdk-go-v2/service/s3/internal/customizations" "github.com/aws/aws-sdk-go-v2/service/s3/types" "github.com/awslabs/smithy-go/middleware" smithyhttp "github.com/awslabs/smithy-go/transport/http" @@ -140,7 +141,7 @@ func addOperationPutBucketVersioningMiddlewares(stack *middleware.Stack, options if err = addMetadataRetrieverMiddleware(stack); err != nil { return err } - if err = addUpdateEndpointMiddleware(stack, options); err != nil { + if err = addPutBucketVersioningUpdateEndpoint(stack, options); err != nil { return err } if err = addResponseErrorMiddleware(stack); err != nil { @@ -169,3 +170,17 @@ func newServiceMetadataMiddleware_opPutBucketVersioning(region string) *awsmiddl OperationName: "PutBucketVersioning", } } + +func addPutBucketVersioningUpdateEndpoint(stack *middleware.Stack, options Options) error { + return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ + Accessor: s3cust.UpdateEndpointParameterAccessor{GetBucketFromInput: getBucketFromInput, + SupportsAccelerate: supportAccelerate, + }, + UsePathStyle: options.UsePathStyle, + UseAccelerate: options.UseAccelerate, + EndpointResolver: options.EndpointResolver, + EndpointResolverOptions: options.EndpointOptions, + UseDualstack: options.UseDualstack, + UseARNRegion: options.UseARNRegion, + }) +} diff --git a/service/s3/api_op_PutBucketWebsite.go b/service/s3/api_op_PutBucketWebsite.go index f0d74d69a1f..3d6a60931d9 100644 --- a/service/s3/api_op_PutBucketWebsite.go +++ b/service/s3/api_op_PutBucketWebsite.go @@ -6,6 +6,7 @@ import ( "context" awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + s3cust "github.com/aws/aws-sdk-go-v2/service/s3/internal/customizations" "github.com/aws/aws-sdk-go-v2/service/s3/types" "github.com/awslabs/smithy-go/middleware" smithyhttp "github.com/awslabs/smithy-go/transport/http" @@ -176,7 +177,7 @@ func addOperationPutBucketWebsiteMiddlewares(stack *middleware.Stack, options Op if err = addMetadataRetrieverMiddleware(stack); err != nil { return err } - if err = addUpdateEndpointMiddleware(stack, options); err != nil { + if err = addPutBucketWebsiteUpdateEndpoint(stack, options); err != nil { return err } if err = addResponseErrorMiddleware(stack); err != nil { @@ -205,3 +206,17 @@ func newServiceMetadataMiddleware_opPutBucketWebsite(region string) *awsmiddlewa OperationName: "PutBucketWebsite", } } + +func addPutBucketWebsiteUpdateEndpoint(stack *middleware.Stack, options Options) error { + return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ + Accessor: s3cust.UpdateEndpointParameterAccessor{GetBucketFromInput: getBucketFromInput, + SupportsAccelerate: supportAccelerate, + }, + UsePathStyle: options.UsePathStyle, + UseAccelerate: options.UseAccelerate, + EndpointResolver: options.EndpointResolver, + EndpointResolverOptions: options.EndpointOptions, + UseDualstack: options.UseDualstack, + UseARNRegion: options.UseARNRegion, + }) +} diff --git a/service/s3/api_op_PutObject.go b/service/s3/api_op_PutObject.go index e8057bf380f..fa464df8c85 100644 --- a/service/s3/api_op_PutObject.go +++ b/service/s3/api_op_PutObject.go @@ -6,6 +6,7 @@ import ( "context" awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + s3cust "github.com/aws/aws-sdk-go-v2/service/s3/internal/customizations" "github.com/aws/aws-sdk-go-v2/service/s3/types" "github.com/awslabs/smithy-go/middleware" smithyhttp "github.com/awslabs/smithy-go/transport/http" @@ -373,7 +374,7 @@ func addOperationPutObjectMiddlewares(stack *middleware.Stack, options Options) if err = addMetadataRetrieverMiddleware(stack); err != nil { return err } - if err = addUpdateEndpointMiddleware(stack, options); err != nil { + if err = addPutObjectUpdateEndpoint(stack, options); err != nil { return err } if err = addResponseErrorMiddleware(stack); err != nil { @@ -399,3 +400,17 @@ func newServiceMetadataMiddleware_opPutObject(region string) *awsmiddleware.Regi OperationName: "PutObject", } } + +func addPutObjectUpdateEndpoint(stack *middleware.Stack, options Options) error { + return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ + Accessor: s3cust.UpdateEndpointParameterAccessor{GetBucketFromInput: getBucketFromInput, + SupportsAccelerate: supportAccelerate, + }, + UsePathStyle: options.UsePathStyle, + UseAccelerate: options.UseAccelerate, + EndpointResolver: options.EndpointResolver, + EndpointResolverOptions: options.EndpointOptions, + UseDualstack: options.UseDualstack, + UseARNRegion: options.UseARNRegion, + }) +} diff --git a/service/s3/api_op_PutObjectAcl.go b/service/s3/api_op_PutObjectAcl.go index 85df889b87c..fdfffb8c04d 100644 --- a/service/s3/api_op_PutObjectAcl.go +++ b/service/s3/api_op_PutObjectAcl.go @@ -6,6 +6,7 @@ import ( "context" awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + s3cust "github.com/aws/aws-sdk-go-v2/service/s3/internal/customizations" "github.com/aws/aws-sdk-go-v2/service/s3/types" "github.com/awslabs/smithy-go/middleware" smithyhttp "github.com/awslabs/smithy-go/transport/http" @@ -299,7 +300,7 @@ func addOperationPutObjectAclMiddlewares(stack *middleware.Stack, options Option if err = addMetadataRetrieverMiddleware(stack); err != nil { return err } - if err = addUpdateEndpointMiddleware(stack, options); err != nil { + if err = addPutObjectAclUpdateEndpoint(stack, options); err != nil { return err } if err = addResponseErrorMiddleware(stack); err != nil { @@ -328,3 +329,17 @@ func newServiceMetadataMiddleware_opPutObjectAcl(region string) *awsmiddleware.R OperationName: "PutObjectAcl", } } + +func addPutObjectAclUpdateEndpoint(stack *middleware.Stack, options Options) error { + return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ + Accessor: s3cust.UpdateEndpointParameterAccessor{GetBucketFromInput: getBucketFromInput, + SupportsAccelerate: supportAccelerate, + }, + UsePathStyle: options.UsePathStyle, + UseAccelerate: options.UseAccelerate, + EndpointResolver: options.EndpointResolver, + EndpointResolverOptions: options.EndpointOptions, + UseDualstack: options.UseDualstack, + UseARNRegion: options.UseARNRegion, + }) +} diff --git a/service/s3/api_op_PutObjectLegalHold.go b/service/s3/api_op_PutObjectLegalHold.go index a3e58ccffd6..827194bd8c9 100644 --- a/service/s3/api_op_PutObjectLegalHold.go +++ b/service/s3/api_op_PutObjectLegalHold.go @@ -6,6 +6,7 @@ import ( "context" awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + s3cust "github.com/aws/aws-sdk-go-v2/service/s3/internal/customizations" "github.com/aws/aws-sdk-go-v2/service/s3/types" "github.com/awslabs/smithy-go/middleware" smithyhttp "github.com/awslabs/smithy-go/transport/http" @@ -135,7 +136,7 @@ func addOperationPutObjectLegalHoldMiddlewares(stack *middleware.Stack, options if err = addMetadataRetrieverMiddleware(stack); err != nil { return err } - if err = addUpdateEndpointMiddleware(stack, options); err != nil { + if err = addPutObjectLegalHoldUpdateEndpoint(stack, options); err != nil { return err } if err = addResponseErrorMiddleware(stack); err != nil { @@ -164,3 +165,17 @@ func newServiceMetadataMiddleware_opPutObjectLegalHold(region string) *awsmiddle OperationName: "PutObjectLegalHold", } } + +func addPutObjectLegalHoldUpdateEndpoint(stack *middleware.Stack, options Options) error { + return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ + Accessor: s3cust.UpdateEndpointParameterAccessor{GetBucketFromInput: getBucketFromInput, + SupportsAccelerate: supportAccelerate, + }, + UsePathStyle: options.UsePathStyle, + UseAccelerate: options.UseAccelerate, + EndpointResolver: options.EndpointResolver, + EndpointResolverOptions: options.EndpointOptions, + UseDualstack: options.UseDualstack, + UseARNRegion: options.UseARNRegion, + }) +} diff --git a/service/s3/api_op_PutObjectLockConfiguration.go b/service/s3/api_op_PutObjectLockConfiguration.go index b63add05d27..5e429095fe6 100644 --- a/service/s3/api_op_PutObjectLockConfiguration.go +++ b/service/s3/api_op_PutObjectLockConfiguration.go @@ -6,6 +6,7 @@ import ( "context" awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + s3cust "github.com/aws/aws-sdk-go-v2/service/s3/internal/customizations" "github.com/aws/aws-sdk-go-v2/service/s3/types" "github.com/awslabs/smithy-go/middleware" smithyhttp "github.com/awslabs/smithy-go/transport/http" @@ -123,7 +124,7 @@ func addOperationPutObjectLockConfigurationMiddlewares(stack *middleware.Stack, if err = addMetadataRetrieverMiddleware(stack); err != nil { return err } - if err = addUpdateEndpointMiddleware(stack, options); err != nil { + if err = addPutObjectLockConfigurationUpdateEndpoint(stack, options); err != nil { return err } if err = addResponseErrorMiddleware(stack); err != nil { @@ -152,3 +153,17 @@ func newServiceMetadataMiddleware_opPutObjectLockConfiguration(region string) *a OperationName: "PutObjectLockConfiguration", } } + +func addPutObjectLockConfigurationUpdateEndpoint(stack *middleware.Stack, options Options) error { + return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ + Accessor: s3cust.UpdateEndpointParameterAccessor{GetBucketFromInput: getBucketFromInput, + SupportsAccelerate: supportAccelerate, + }, + UsePathStyle: options.UsePathStyle, + UseAccelerate: options.UseAccelerate, + EndpointResolver: options.EndpointResolver, + EndpointResolverOptions: options.EndpointOptions, + UseDualstack: options.UseDualstack, + UseARNRegion: options.UseARNRegion, + }) +} diff --git a/service/s3/api_op_PutObjectRetention.go b/service/s3/api_op_PutObjectRetention.go index ee7d3a17d4b..abb9a8ee8e5 100644 --- a/service/s3/api_op_PutObjectRetention.go +++ b/service/s3/api_op_PutObjectRetention.go @@ -6,6 +6,7 @@ import ( "context" awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + s3cust "github.com/aws/aws-sdk-go-v2/service/s3/internal/customizations" "github.com/aws/aws-sdk-go-v2/service/s3/types" "github.com/awslabs/smithy-go/middleware" smithyhttp "github.com/awslabs/smithy-go/transport/http" @@ -139,7 +140,7 @@ func addOperationPutObjectRetentionMiddlewares(stack *middleware.Stack, options if err = addMetadataRetrieverMiddleware(stack); err != nil { return err } - if err = addUpdateEndpointMiddleware(stack, options); err != nil { + if err = addPutObjectRetentionUpdateEndpoint(stack, options); err != nil { return err } if err = addResponseErrorMiddleware(stack); err != nil { @@ -168,3 +169,17 @@ func newServiceMetadataMiddleware_opPutObjectRetention(region string) *awsmiddle OperationName: "PutObjectRetention", } } + +func addPutObjectRetentionUpdateEndpoint(stack *middleware.Stack, options Options) error { + return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ + Accessor: s3cust.UpdateEndpointParameterAccessor{GetBucketFromInput: getBucketFromInput, + SupportsAccelerate: supportAccelerate, + }, + UsePathStyle: options.UsePathStyle, + UseAccelerate: options.UseAccelerate, + EndpointResolver: options.EndpointResolver, + EndpointResolverOptions: options.EndpointOptions, + UseDualstack: options.UseDualstack, + UseARNRegion: options.UseARNRegion, + }) +} diff --git a/service/s3/api_op_PutObjectTagging.go b/service/s3/api_op_PutObjectTagging.go index 3e1438a7a20..e803211a52c 100644 --- a/service/s3/api_op_PutObjectTagging.go +++ b/service/s3/api_op_PutObjectTagging.go @@ -6,6 +6,7 @@ import ( "context" awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + s3cust "github.com/aws/aws-sdk-go-v2/service/s3/internal/customizations" "github.com/aws/aws-sdk-go-v2/service/s3/types" "github.com/awslabs/smithy-go/middleware" smithyhttp "github.com/awslabs/smithy-go/transport/http" @@ -175,7 +176,7 @@ func addOperationPutObjectTaggingMiddlewares(stack *middleware.Stack, options Op if err = addMetadataRetrieverMiddleware(stack); err != nil { return err } - if err = addUpdateEndpointMiddleware(stack, options); err != nil { + if err = addPutObjectTaggingUpdateEndpoint(stack, options); err != nil { return err } if err = addResponseErrorMiddleware(stack); err != nil { @@ -204,3 +205,17 @@ func newServiceMetadataMiddleware_opPutObjectTagging(region string) *awsmiddlewa OperationName: "PutObjectTagging", } } + +func addPutObjectTaggingUpdateEndpoint(stack *middleware.Stack, options Options) error { + return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ + Accessor: s3cust.UpdateEndpointParameterAccessor{GetBucketFromInput: getBucketFromInput, + SupportsAccelerate: supportAccelerate, + }, + UsePathStyle: options.UsePathStyle, + UseAccelerate: options.UseAccelerate, + EndpointResolver: options.EndpointResolver, + EndpointResolverOptions: options.EndpointOptions, + UseDualstack: options.UseDualstack, + UseARNRegion: options.UseARNRegion, + }) +} diff --git a/service/s3/api_op_PutPublicAccessBlock.go b/service/s3/api_op_PutPublicAccessBlock.go index d1a12be6770..fb08a43287c 100644 --- a/service/s3/api_op_PutPublicAccessBlock.go +++ b/service/s3/api_op_PutPublicAccessBlock.go @@ -6,6 +6,7 @@ import ( "context" awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + s3cust "github.com/aws/aws-sdk-go-v2/service/s3/internal/customizations" "github.com/aws/aws-sdk-go-v2/service/s3/types" "github.com/awslabs/smithy-go/middleware" smithyhttp "github.com/awslabs/smithy-go/transport/http" @@ -137,7 +138,7 @@ func addOperationPutPublicAccessBlockMiddlewares(stack *middleware.Stack, option if err = addMetadataRetrieverMiddleware(stack); err != nil { return err } - if err = addUpdateEndpointMiddleware(stack, options); err != nil { + if err = addPutPublicAccessBlockUpdateEndpoint(stack, options); err != nil { return err } if err = addResponseErrorMiddleware(stack); err != nil { @@ -166,3 +167,17 @@ func newServiceMetadataMiddleware_opPutPublicAccessBlock(region string) *awsmidd OperationName: "PutPublicAccessBlock", } } + +func addPutPublicAccessBlockUpdateEndpoint(stack *middleware.Stack, options Options) error { + return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ + Accessor: s3cust.UpdateEndpointParameterAccessor{GetBucketFromInput: getBucketFromInput, + SupportsAccelerate: supportAccelerate, + }, + UsePathStyle: options.UsePathStyle, + UseAccelerate: options.UseAccelerate, + EndpointResolver: options.EndpointResolver, + EndpointResolverOptions: options.EndpointOptions, + UseDualstack: options.UseDualstack, + UseARNRegion: options.UseARNRegion, + }) +} diff --git a/service/s3/api_op_RestoreObject.go b/service/s3/api_op_RestoreObject.go index c4d1eb0e50c..1e7ae791492 100644 --- a/service/s3/api_op_RestoreObject.go +++ b/service/s3/api_op_RestoreObject.go @@ -6,6 +6,7 @@ import ( "context" awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + s3cust "github.com/aws/aws-sdk-go-v2/service/s3/internal/customizations" "github.com/aws/aws-sdk-go-v2/service/s3/types" "github.com/awslabs/smithy-go/middleware" smithyhttp "github.com/awslabs/smithy-go/transport/http" @@ -355,7 +356,7 @@ func addOperationRestoreObjectMiddlewares(stack *middleware.Stack, options Optio if err = addMetadataRetrieverMiddleware(stack); err != nil { return err } - if err = addUpdateEndpointMiddleware(stack, options); err != nil { + if err = addRestoreObjectUpdateEndpoint(stack, options); err != nil { return err } if err = addResponseErrorMiddleware(stack); err != nil { @@ -381,3 +382,17 @@ func newServiceMetadataMiddleware_opRestoreObject(region string) *awsmiddleware. OperationName: "RestoreObject", } } + +func addRestoreObjectUpdateEndpoint(stack *middleware.Stack, options Options) error { + return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ + Accessor: s3cust.UpdateEndpointParameterAccessor{GetBucketFromInput: getBucketFromInput, + SupportsAccelerate: supportAccelerate, + }, + UsePathStyle: options.UsePathStyle, + UseAccelerate: options.UseAccelerate, + EndpointResolver: options.EndpointResolver, + EndpointResolverOptions: options.EndpointOptions, + UseDualstack: options.UseDualstack, + UseARNRegion: options.UseARNRegion, + }) +} diff --git a/service/s3/api_op_UploadPart.go b/service/s3/api_op_UploadPart.go index 99dbc3da6d0..ddfff458925 100644 --- a/service/s3/api_op_UploadPart.go +++ b/service/s3/api_op_UploadPart.go @@ -6,6 +6,7 @@ import ( "context" awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + s3cust "github.com/aws/aws-sdk-go-v2/service/s3/internal/customizations" "github.com/aws/aws-sdk-go-v2/service/s3/types" "github.com/awslabs/smithy-go/middleware" smithyhttp "github.com/awslabs/smithy-go/transport/http" @@ -285,7 +286,7 @@ func addOperationUploadPartMiddlewares(stack *middleware.Stack, options Options) if err = addMetadataRetrieverMiddleware(stack); err != nil { return err } - if err = addUpdateEndpointMiddleware(stack, options); err != nil { + if err = addUploadPartUpdateEndpoint(stack, options); err != nil { return err } if err = addResponseErrorMiddleware(stack); err != nil { @@ -311,3 +312,17 @@ func newServiceMetadataMiddleware_opUploadPart(region string) *awsmiddleware.Reg OperationName: "UploadPart", } } + +func addUploadPartUpdateEndpoint(stack *middleware.Stack, options Options) error { + return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ + Accessor: s3cust.UpdateEndpointParameterAccessor{GetBucketFromInput: getBucketFromInput, + SupportsAccelerate: supportAccelerate, + }, + UsePathStyle: options.UsePathStyle, + UseAccelerate: options.UseAccelerate, + EndpointResolver: options.EndpointResolver, + EndpointResolverOptions: options.EndpointOptions, + UseDualstack: options.UseDualstack, + UseARNRegion: options.UseARNRegion, + }) +} diff --git a/service/s3/api_op_UploadPartCopy.go b/service/s3/api_op_UploadPartCopy.go index 1f0beb0c0bc..d298e85213b 100644 --- a/service/s3/api_op_UploadPartCopy.go +++ b/service/s3/api_op_UploadPartCopy.go @@ -369,7 +369,7 @@ func addOperationUploadPartCopyMiddlewares(stack *middleware.Stack, options Opti if err = addMetadataRetrieverMiddleware(stack); err != nil { return err } - if err = addUpdateEndpointMiddleware(stack, options); err != nil { + if err = addUploadPartCopyUpdateEndpoint(stack, options); err != nil { return err } if err = addResponseErrorMiddleware(stack); err != nil { @@ -398,3 +398,17 @@ func newServiceMetadataMiddleware_opUploadPartCopy(region string) *awsmiddleware OperationName: "UploadPartCopy", } } + +func addUploadPartCopyUpdateEndpoint(stack *middleware.Stack, options Options) error { + return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ + Accessor: s3cust.UpdateEndpointParameterAccessor{GetBucketFromInput: getBucketFromInput, + SupportsAccelerate: supportAccelerate, + }, + UsePathStyle: options.UsePathStyle, + UseAccelerate: options.UseAccelerate, + EndpointResolver: options.EndpointResolver, + EndpointResolverOptions: options.EndpointOptions, + UseDualstack: options.UseDualstack, + UseARNRegion: options.UseARNRegion, + }) +} diff --git a/service/s3/endpoints.go b/service/s3/endpoints.go index 4850fe70d53..6cb43170f3b 100644 --- a/service/s3/endpoints.go +++ b/service/s3/endpoints.go @@ -84,10 +84,9 @@ func (m *ResolveEndpoint) HandleSerialize(ctx context.Context, in middleware.Ser } ctx = awsmiddleware.SetSigningName(ctx, signingName) } - - ctx = awsmiddleware.SetSigningRegion(ctx, endpoint.SigningRegion) ctx = smithyhttp.SetHostnameImmutable(ctx, endpoint.HostnameImmutable) - + ctx = awsmiddleware.SetSigningRegion(ctx, endpoint.SigningRegion) + ctx = awsmiddleware.SetPartitionID(ctx, endpoint.PartitionID) return next.HandleSerialize(ctx, in) } func addResolveEndpointMiddleware(stack *middleware.Stack, o Options) error { diff --git a/service/s3control/api_client.go b/service/s3control/api_client.go index 788a3c23608..2b51bf42940 100644 --- a/service/s3control/api_client.go +++ b/service/s3control/api_client.go @@ -11,7 +11,6 @@ import ( "github.com/aws/aws-sdk-go-v2/aws/signer/v4" awshttp "github.com/aws/aws-sdk-go-v2/aws/transport/http" "github.com/aws/aws-sdk-go-v2/service/internal/s3shared" - s3controlcust "github.com/aws/aws-sdk-go-v2/service/s3control/internal/customizations" smithy "github.com/awslabs/smithy-go" "github.com/awslabs/smithy-go/logging" "github.com/awslabs/smithy-go/middleware" @@ -93,6 +92,9 @@ type Options struct { // failures. When nil the API client will use a default retryer. Retryer retry.Retryer + // Allows you to enable arn region support for the service. + UseARNRegion bool + // Allows you to enable Dualstack endpoint support for the service. UseDualstack bool @@ -238,8 +240,17 @@ func addMetadataRetrieverMiddleware(stack *middleware.Stack) error { return s3shared.AddMetadataRetrieverMiddleware(stack) } -func addUpdateEndpointMiddleware(stack *middleware.Stack, options Options) error { - return s3controlcust.UpdateEndpoint(stack, s3controlcust.UpdateEndpointOptions{UseDualstack: options.UseDualstack}) +// getOutpostIDFromInput returns a boolean indicating if the input has a modeled +// outpost-id, and a pointer to string denoting a provided outpost-id member value +func getOutpostIDFromInput(input interface{}) (*string, bool) { + switch i := input.(type) { + case *CreateBucketInput: + return i.OutpostId, true + case *ListRegionalBucketsInput: + return i.OutpostId, true + default: + return nil, false + } } func addResponseErrorMiddleware(stack *middleware.Stack) error { diff --git a/service/s3control/api_op_CreateAccessPoint.go b/service/s3control/api_op_CreateAccessPoint.go index 313ef35b41b..45c160018a6 100644 --- a/service/s3control/api_op_CreateAccessPoint.go +++ b/service/s3control/api_op_CreateAccessPoint.go @@ -7,6 +7,7 @@ import ( "fmt" awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + s3controlcust "github.com/aws/aws-sdk-go-v2/service/s3control/internal/customizations" "github.com/aws/aws-sdk-go-v2/service/s3control/types" smithy "github.com/awslabs/smithy-go" "github.com/awslabs/smithy-go/middleware" @@ -170,7 +171,7 @@ func addOperationCreateAccessPointMiddlewares(stack *middleware.Stack, options O if err = addMetadataRetrieverMiddleware(stack); err != nil { return err } - if err = addUpdateEndpointMiddleware(stack, options); err != nil { + if err = addCreateAccessPointUpdateEndpoint(stack, options); err != nil { return err } if err = addResponseErrorMiddleware(stack); err != nil { @@ -234,3 +235,49 @@ func newServiceMetadataMiddleware_opCreateAccessPoint(region string) *awsmiddlew OperationName: "CreateAccessPoint", } } + +func copyCreateAccessPointInputForUpdateEndpoint(params interface{}) (interface{}, error) { + input, ok := params.(*CreateAccessPointInput) + if !ok { + return nil, fmt.Errorf("expect *CreateAccessPointInput type, got %T", params) + } + cpy := *input + return &cpy, nil +} +func getCreateAccessPointARNMember(input interface{}) (*string, bool) { + in := input.(*CreateAccessPointInput) + if in.Bucket == nil { + return nil, false + } + return in.Bucket, true +} +func setCreateAccessPointARNMember(input interface{}, v string) error { + in := input.(*CreateAccessPointInput) + in.Bucket = &v + return nil +} +func backFillCreateAccessPointAccountID(input interface{}, v string) error { + in := input.(*CreateAccessPointInput) + if in.AccountId != nil { + if !strings.EqualFold(*in.AccountId, v) { + return fmt.Errorf("error backfilling account id") + } + return nil + } + in.AccountId = &v + return nil +} +func addCreateAccessPointUpdateEndpoint(stack *middleware.Stack, options Options) error { + return s3controlcust.UpdateEndpoint(stack, s3controlcust.UpdateEndpointOptions{ + Accessor: s3controlcust.UpdateEndpointParameterAccessor{GetARNInput: getCreateAccessPointARNMember, + BackfillAccountID: backFillCreateAccessPointAccountID, + GetOutpostIDInput: getOutpostIDFromInput, + UpdateARNField: setCreateAccessPointARNMember, + CopyInput: copyCreateAccessPointInputForUpdateEndpoint, + }, + EndpointResolver: options.EndpointResolver, + EndpointResolverOptions: options.EndpointOptions, + UseDualstack: options.UseDualstack, + UseARNRegion: options.UseARNRegion, + }) +} diff --git a/service/s3control/api_op_CreateBucket.go b/service/s3control/api_op_CreateBucket.go index eb83c536014..76e4458ae5e 100644 --- a/service/s3control/api_op_CreateBucket.go +++ b/service/s3control/api_op_CreateBucket.go @@ -4,8 +4,10 @@ package s3control import ( "context" + "fmt" awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + s3controlcust "github.com/aws/aws-sdk-go-v2/service/s3control/internal/customizations" "github.com/aws/aws-sdk-go-v2/service/s3control/types" "github.com/awslabs/smithy-go/middleware" smithyhttp "github.com/awslabs/smithy-go/transport/http" @@ -187,7 +189,7 @@ func addOperationCreateBucketMiddlewares(stack *middleware.Stack, options Option if err = addMetadataRetrieverMiddleware(stack); err != nil { return err } - if err = addUpdateEndpointMiddleware(stack, options); err != nil { + if err = addCreateBucketUpdateEndpoint(stack, options); err != nil { return err } if err = addResponseErrorMiddleware(stack); err != nil { @@ -213,3 +215,29 @@ func newServiceMetadataMiddleware_opCreateBucket(region string) *awsmiddleware.R OperationName: "CreateBucket", } } + +func copyCreateBucketInputForUpdateEndpoint(params interface{}) (interface{}, error) { + input, ok := params.(*CreateBucketInput) + if !ok { + return nil, fmt.Errorf("expect *CreateBucketInput type, got %T", params) + } + cpy := *input + return &cpy, nil +} +func backFillCreateBucketAccountID(input interface{}, v string) error { + return nil +} +func addCreateBucketUpdateEndpoint(stack *middleware.Stack, options Options) error { + return s3controlcust.UpdateEndpoint(stack, s3controlcust.UpdateEndpointOptions{ + Accessor: s3controlcust.UpdateEndpointParameterAccessor{GetARNInput: nil, + BackfillAccountID: nil, + GetOutpostIDInput: getOutpostIDFromInput, + UpdateARNField: nil, + CopyInput: copyCreateBucketInputForUpdateEndpoint, + }, + EndpointResolver: options.EndpointResolver, + EndpointResolverOptions: options.EndpointOptions, + UseDualstack: options.UseDualstack, + UseARNRegion: options.UseARNRegion, + }) +} diff --git a/service/s3control/api_op_CreateJob.go b/service/s3control/api_op_CreateJob.go index d1d14d0691a..5924c0cf2aa 100644 --- a/service/s3control/api_op_CreateJob.go +++ b/service/s3control/api_op_CreateJob.go @@ -7,6 +7,7 @@ import ( "fmt" awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + s3controlcust "github.com/aws/aws-sdk-go-v2/service/s3control/internal/customizations" "github.com/aws/aws-sdk-go-v2/service/s3control/types" smithy "github.com/awslabs/smithy-go" "github.com/awslabs/smithy-go/middleware" @@ -173,7 +174,7 @@ func addOperationCreateJobMiddlewares(stack *middleware.Stack, options Options) if err = addMetadataRetrieverMiddleware(stack); err != nil { return err } - if err = addUpdateEndpointMiddleware(stack, options); err != nil { + if err = addCreateJobUpdateEndpoint(stack, options); err != nil { return err } if err = addResponseErrorMiddleware(stack); err != nil { @@ -270,3 +271,43 @@ func newServiceMetadataMiddleware_opCreateJob(region string) *awsmiddleware.Regi OperationName: "CreateJob", } } + +func copyCreateJobInputForUpdateEndpoint(params interface{}) (interface{}, error) { + input, ok := params.(*CreateJobInput) + if !ok { + return nil, fmt.Errorf("expect *CreateJobInput type, got %T", params) + } + cpy := *input + return &cpy, nil +} +func getCreateJobARNMember(input interface{}) (*string, bool) { + return nil, false +} +func setCreateJobARNMember(input interface{}, v string) error { + return nil +} +func backFillCreateJobAccountID(input interface{}, v string) error { + in := input.(*CreateJobInput) + if in.AccountId != nil { + if !strings.EqualFold(*in.AccountId, v) { + return fmt.Errorf("error backfilling account id") + } + return nil + } + in.AccountId = &v + return nil +} +func addCreateJobUpdateEndpoint(stack *middleware.Stack, options Options) error { + return s3controlcust.UpdateEndpoint(stack, s3controlcust.UpdateEndpointOptions{ + Accessor: s3controlcust.UpdateEndpointParameterAccessor{GetARNInput: getCreateJobARNMember, + BackfillAccountID: backFillCreateJobAccountID, + GetOutpostIDInput: getOutpostIDFromInput, + UpdateARNField: setCreateJobARNMember, + CopyInput: copyCreateJobInputForUpdateEndpoint, + }, + EndpointResolver: options.EndpointResolver, + EndpointResolverOptions: options.EndpointOptions, + UseDualstack: options.UseDualstack, + UseARNRegion: options.UseARNRegion, + }) +} diff --git a/service/s3control/api_op_DeleteAccessPoint.go b/service/s3control/api_op_DeleteAccessPoint.go index 09d2c5ef7ac..bc6d88a6219 100644 --- a/service/s3control/api_op_DeleteAccessPoint.go +++ b/service/s3control/api_op_DeleteAccessPoint.go @@ -7,6 +7,7 @@ import ( "fmt" awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + s3controlcust "github.com/aws/aws-sdk-go-v2/service/s3control/internal/customizations" smithy "github.com/awslabs/smithy-go" "github.com/awslabs/smithy-go/middleware" smithyhttp "github.com/awslabs/smithy-go/transport/http" @@ -126,7 +127,7 @@ func addOperationDeleteAccessPointMiddlewares(stack *middleware.Stack, options O if err = addMetadataRetrieverMiddleware(stack); err != nil { return err } - if err = addUpdateEndpointMiddleware(stack, options); err != nil { + if err = addDeleteAccessPointUpdateEndpoint(stack, options); err != nil { return err } if err = addResponseErrorMiddleware(stack); err != nil { @@ -190,3 +191,49 @@ func newServiceMetadataMiddleware_opDeleteAccessPoint(region string) *awsmiddlew OperationName: "DeleteAccessPoint", } } + +func copyDeleteAccessPointInputForUpdateEndpoint(params interface{}) (interface{}, error) { + input, ok := params.(*DeleteAccessPointInput) + if !ok { + return nil, fmt.Errorf("expect *DeleteAccessPointInput type, got %T", params) + } + cpy := *input + return &cpy, nil +} +func getDeleteAccessPointARNMember(input interface{}) (*string, bool) { + in := input.(*DeleteAccessPointInput) + if in.Name == nil { + return nil, false + } + return in.Name, true +} +func setDeleteAccessPointARNMember(input interface{}, v string) error { + in := input.(*DeleteAccessPointInput) + in.Name = &v + return nil +} +func backFillDeleteAccessPointAccountID(input interface{}, v string) error { + in := input.(*DeleteAccessPointInput) + if in.AccountId != nil { + if !strings.EqualFold(*in.AccountId, v) { + return fmt.Errorf("error backfilling account id") + } + return nil + } + in.AccountId = &v + return nil +} +func addDeleteAccessPointUpdateEndpoint(stack *middleware.Stack, options Options) error { + return s3controlcust.UpdateEndpoint(stack, s3controlcust.UpdateEndpointOptions{ + Accessor: s3controlcust.UpdateEndpointParameterAccessor{GetARNInput: getDeleteAccessPointARNMember, + BackfillAccountID: backFillDeleteAccessPointAccountID, + GetOutpostIDInput: getOutpostIDFromInput, + UpdateARNField: setDeleteAccessPointARNMember, + CopyInput: copyDeleteAccessPointInputForUpdateEndpoint, + }, + EndpointResolver: options.EndpointResolver, + EndpointResolverOptions: options.EndpointOptions, + UseDualstack: options.UseDualstack, + UseARNRegion: options.UseARNRegion, + }) +} diff --git a/service/s3control/api_op_DeleteAccessPointPolicy.go b/service/s3control/api_op_DeleteAccessPointPolicy.go index 3cb93b1697c..e67945b0ce4 100644 --- a/service/s3control/api_op_DeleteAccessPointPolicy.go +++ b/service/s3control/api_op_DeleteAccessPointPolicy.go @@ -7,6 +7,7 @@ import ( "fmt" awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + s3controlcust "github.com/aws/aws-sdk-go-v2/service/s3control/internal/customizations" smithy "github.com/awslabs/smithy-go" "github.com/awslabs/smithy-go/middleware" smithyhttp "github.com/awslabs/smithy-go/transport/http" @@ -122,7 +123,7 @@ func addOperationDeleteAccessPointPolicyMiddlewares(stack *middleware.Stack, opt if err = addMetadataRetrieverMiddleware(stack); err != nil { return err } - if err = addUpdateEndpointMiddleware(stack, options); err != nil { + if err = addDeleteAccessPointPolicyUpdateEndpoint(stack, options); err != nil { return err } if err = addResponseErrorMiddleware(stack); err != nil { @@ -186,3 +187,49 @@ func newServiceMetadataMiddleware_opDeleteAccessPointPolicy(region string) *awsm OperationName: "DeleteAccessPointPolicy", } } + +func copyDeleteAccessPointPolicyInputForUpdateEndpoint(params interface{}) (interface{}, error) { + input, ok := params.(*DeleteAccessPointPolicyInput) + if !ok { + return nil, fmt.Errorf("expect *DeleteAccessPointPolicyInput type, got %T", params) + } + cpy := *input + return &cpy, nil +} +func getDeleteAccessPointPolicyARNMember(input interface{}) (*string, bool) { + in := input.(*DeleteAccessPointPolicyInput) + if in.Name == nil { + return nil, false + } + return in.Name, true +} +func setDeleteAccessPointPolicyARNMember(input interface{}, v string) error { + in := input.(*DeleteAccessPointPolicyInput) + in.Name = &v + return nil +} +func backFillDeleteAccessPointPolicyAccountID(input interface{}, v string) error { + in := input.(*DeleteAccessPointPolicyInput) + if in.AccountId != nil { + if !strings.EqualFold(*in.AccountId, v) { + return fmt.Errorf("error backfilling account id") + } + return nil + } + in.AccountId = &v + return nil +} +func addDeleteAccessPointPolicyUpdateEndpoint(stack *middleware.Stack, options Options) error { + return s3controlcust.UpdateEndpoint(stack, s3controlcust.UpdateEndpointOptions{ + Accessor: s3controlcust.UpdateEndpointParameterAccessor{GetARNInput: getDeleteAccessPointPolicyARNMember, + BackfillAccountID: backFillDeleteAccessPointPolicyAccountID, + GetOutpostIDInput: getOutpostIDFromInput, + UpdateARNField: setDeleteAccessPointPolicyARNMember, + CopyInput: copyDeleteAccessPointPolicyInputForUpdateEndpoint, + }, + EndpointResolver: options.EndpointResolver, + EndpointResolverOptions: options.EndpointOptions, + UseDualstack: options.UseDualstack, + UseARNRegion: options.UseARNRegion, + }) +} diff --git a/service/s3control/api_op_DeleteBucket.go b/service/s3control/api_op_DeleteBucket.go index 542097c05ec..bb8a591c8ca 100644 --- a/service/s3control/api_op_DeleteBucket.go +++ b/service/s3control/api_op_DeleteBucket.go @@ -7,6 +7,7 @@ import ( "fmt" awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + s3controlcust "github.com/aws/aws-sdk-go-v2/service/s3control/internal/customizations" smithy "github.com/awslabs/smithy-go" "github.com/awslabs/smithy-go/middleware" smithyhttp "github.com/awslabs/smithy-go/transport/http" @@ -132,7 +133,7 @@ func addOperationDeleteBucketMiddlewares(stack *middleware.Stack, options Option if err = addMetadataRetrieverMiddleware(stack); err != nil { return err } - if err = addUpdateEndpointMiddleware(stack, options); err != nil { + if err = addDeleteBucketUpdateEndpoint(stack, options); err != nil { return err } if err = addResponseErrorMiddleware(stack); err != nil { @@ -196,3 +197,49 @@ func newServiceMetadataMiddleware_opDeleteBucket(region string) *awsmiddleware.R OperationName: "DeleteBucket", } } + +func copyDeleteBucketInputForUpdateEndpoint(params interface{}) (interface{}, error) { + input, ok := params.(*DeleteBucketInput) + if !ok { + return nil, fmt.Errorf("expect *DeleteBucketInput type, got %T", params) + } + cpy := *input + return &cpy, nil +} +func getDeleteBucketARNMember(input interface{}) (*string, bool) { + in := input.(*DeleteBucketInput) + if in.Bucket == nil { + return nil, false + } + return in.Bucket, true +} +func setDeleteBucketARNMember(input interface{}, v string) error { + in := input.(*DeleteBucketInput) + in.Bucket = &v + return nil +} +func backFillDeleteBucketAccountID(input interface{}, v string) error { + in := input.(*DeleteBucketInput) + if in.AccountId != nil { + if !strings.EqualFold(*in.AccountId, v) { + return fmt.Errorf("error backfilling account id") + } + return nil + } + in.AccountId = &v + return nil +} +func addDeleteBucketUpdateEndpoint(stack *middleware.Stack, options Options) error { + return s3controlcust.UpdateEndpoint(stack, s3controlcust.UpdateEndpointOptions{ + Accessor: s3controlcust.UpdateEndpointParameterAccessor{GetARNInput: getDeleteBucketARNMember, + BackfillAccountID: backFillDeleteBucketAccountID, + GetOutpostIDInput: getOutpostIDFromInput, + UpdateARNField: setDeleteBucketARNMember, + CopyInput: copyDeleteBucketInputForUpdateEndpoint, + }, + EndpointResolver: options.EndpointResolver, + EndpointResolverOptions: options.EndpointOptions, + UseDualstack: options.UseDualstack, + UseARNRegion: options.UseARNRegion, + }) +} diff --git a/service/s3control/api_op_DeleteBucketLifecycleConfiguration.go b/service/s3control/api_op_DeleteBucketLifecycleConfiguration.go index a3a4645177a..e7554e8fc46 100644 --- a/service/s3control/api_op_DeleteBucketLifecycleConfiguration.go +++ b/service/s3control/api_op_DeleteBucketLifecycleConfiguration.go @@ -7,6 +7,7 @@ import ( "fmt" awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + s3controlcust "github.com/aws/aws-sdk-go-v2/service/s3control/internal/customizations" smithy "github.com/awslabs/smithy-go" "github.com/awslabs/smithy-go/middleware" smithyhttp "github.com/awslabs/smithy-go/transport/http" @@ -137,7 +138,7 @@ func addOperationDeleteBucketLifecycleConfigurationMiddlewares(stack *middleware if err = addMetadataRetrieverMiddleware(stack); err != nil { return err } - if err = addUpdateEndpointMiddleware(stack, options); err != nil { + if err = addDeleteBucketLifecycleConfigurationUpdateEndpoint(stack, options); err != nil { return err } if err = addResponseErrorMiddleware(stack); err != nil { @@ -201,3 +202,49 @@ func newServiceMetadataMiddleware_opDeleteBucketLifecycleConfiguration(region st OperationName: "DeleteBucketLifecycleConfiguration", } } + +func copyDeleteBucketLifecycleConfigurationInputForUpdateEndpoint(params interface{}) (interface{}, error) { + input, ok := params.(*DeleteBucketLifecycleConfigurationInput) + if !ok { + return nil, fmt.Errorf("expect *DeleteBucketLifecycleConfigurationInput type, got %T", params) + } + cpy := *input + return &cpy, nil +} +func getDeleteBucketLifecycleConfigurationARNMember(input interface{}) (*string, bool) { + in := input.(*DeleteBucketLifecycleConfigurationInput) + if in.Bucket == nil { + return nil, false + } + return in.Bucket, true +} +func setDeleteBucketLifecycleConfigurationARNMember(input interface{}, v string) error { + in := input.(*DeleteBucketLifecycleConfigurationInput) + in.Bucket = &v + return nil +} +func backFillDeleteBucketLifecycleConfigurationAccountID(input interface{}, v string) error { + in := input.(*DeleteBucketLifecycleConfigurationInput) + if in.AccountId != nil { + if !strings.EqualFold(*in.AccountId, v) { + return fmt.Errorf("error backfilling account id") + } + return nil + } + in.AccountId = &v + return nil +} +func addDeleteBucketLifecycleConfigurationUpdateEndpoint(stack *middleware.Stack, options Options) error { + return s3controlcust.UpdateEndpoint(stack, s3controlcust.UpdateEndpointOptions{ + Accessor: s3controlcust.UpdateEndpointParameterAccessor{GetARNInput: getDeleteBucketLifecycleConfigurationARNMember, + BackfillAccountID: backFillDeleteBucketLifecycleConfigurationAccountID, + GetOutpostIDInput: getOutpostIDFromInput, + UpdateARNField: setDeleteBucketLifecycleConfigurationARNMember, + CopyInput: copyDeleteBucketLifecycleConfigurationInputForUpdateEndpoint, + }, + EndpointResolver: options.EndpointResolver, + EndpointResolverOptions: options.EndpointOptions, + UseDualstack: options.UseDualstack, + UseARNRegion: options.UseARNRegion, + }) +} diff --git a/service/s3control/api_op_DeleteBucketPolicy.go b/service/s3control/api_op_DeleteBucketPolicy.go index f87b58fd0c1..be5fbf89d28 100644 --- a/service/s3control/api_op_DeleteBucketPolicy.go +++ b/service/s3control/api_op_DeleteBucketPolicy.go @@ -7,6 +7,7 @@ import ( "fmt" awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + s3controlcust "github.com/aws/aws-sdk-go-v2/service/s3control/internal/customizations" smithy "github.com/awslabs/smithy-go" "github.com/awslabs/smithy-go/middleware" smithyhttp "github.com/awslabs/smithy-go/transport/http" @@ -140,7 +141,7 @@ func addOperationDeleteBucketPolicyMiddlewares(stack *middleware.Stack, options if err = addMetadataRetrieverMiddleware(stack); err != nil { return err } - if err = addUpdateEndpointMiddleware(stack, options); err != nil { + if err = addDeleteBucketPolicyUpdateEndpoint(stack, options); err != nil { return err } if err = addResponseErrorMiddleware(stack); err != nil { @@ -204,3 +205,49 @@ func newServiceMetadataMiddleware_opDeleteBucketPolicy(region string) *awsmiddle OperationName: "DeleteBucketPolicy", } } + +func copyDeleteBucketPolicyInputForUpdateEndpoint(params interface{}) (interface{}, error) { + input, ok := params.(*DeleteBucketPolicyInput) + if !ok { + return nil, fmt.Errorf("expect *DeleteBucketPolicyInput type, got %T", params) + } + cpy := *input + return &cpy, nil +} +func getDeleteBucketPolicyARNMember(input interface{}) (*string, bool) { + in := input.(*DeleteBucketPolicyInput) + if in.Bucket == nil { + return nil, false + } + return in.Bucket, true +} +func setDeleteBucketPolicyARNMember(input interface{}, v string) error { + in := input.(*DeleteBucketPolicyInput) + in.Bucket = &v + return nil +} +func backFillDeleteBucketPolicyAccountID(input interface{}, v string) error { + in := input.(*DeleteBucketPolicyInput) + if in.AccountId != nil { + if !strings.EqualFold(*in.AccountId, v) { + return fmt.Errorf("error backfilling account id") + } + return nil + } + in.AccountId = &v + return nil +} +func addDeleteBucketPolicyUpdateEndpoint(stack *middleware.Stack, options Options) error { + return s3controlcust.UpdateEndpoint(stack, s3controlcust.UpdateEndpointOptions{ + Accessor: s3controlcust.UpdateEndpointParameterAccessor{GetARNInput: getDeleteBucketPolicyARNMember, + BackfillAccountID: backFillDeleteBucketPolicyAccountID, + GetOutpostIDInput: getOutpostIDFromInput, + UpdateARNField: setDeleteBucketPolicyARNMember, + CopyInput: copyDeleteBucketPolicyInputForUpdateEndpoint, + }, + EndpointResolver: options.EndpointResolver, + EndpointResolverOptions: options.EndpointOptions, + UseDualstack: options.UseDualstack, + UseARNRegion: options.UseARNRegion, + }) +} diff --git a/service/s3control/api_op_DeleteBucketTagging.go b/service/s3control/api_op_DeleteBucketTagging.go index b8b640c3250..eb4474b12e4 100644 --- a/service/s3control/api_op_DeleteBucketTagging.go +++ b/service/s3control/api_op_DeleteBucketTagging.go @@ -7,6 +7,7 @@ import ( "fmt" awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + s3controlcust "github.com/aws/aws-sdk-go-v2/service/s3control/internal/customizations" smithy "github.com/awslabs/smithy-go" "github.com/awslabs/smithy-go/middleware" smithyhttp "github.com/awslabs/smithy-go/transport/http" @@ -130,7 +131,7 @@ func addOperationDeleteBucketTaggingMiddlewares(stack *middleware.Stack, options if err = addMetadataRetrieverMiddleware(stack); err != nil { return err } - if err = addUpdateEndpointMiddleware(stack, options); err != nil { + if err = addDeleteBucketTaggingUpdateEndpoint(stack, options); err != nil { return err } if err = addResponseErrorMiddleware(stack); err != nil { @@ -194,3 +195,49 @@ func newServiceMetadataMiddleware_opDeleteBucketTagging(region string) *awsmiddl OperationName: "DeleteBucketTagging", } } + +func copyDeleteBucketTaggingInputForUpdateEndpoint(params interface{}) (interface{}, error) { + input, ok := params.(*DeleteBucketTaggingInput) + if !ok { + return nil, fmt.Errorf("expect *DeleteBucketTaggingInput type, got %T", params) + } + cpy := *input + return &cpy, nil +} +func getDeleteBucketTaggingARNMember(input interface{}) (*string, bool) { + in := input.(*DeleteBucketTaggingInput) + if in.Bucket == nil { + return nil, false + } + return in.Bucket, true +} +func setDeleteBucketTaggingARNMember(input interface{}, v string) error { + in := input.(*DeleteBucketTaggingInput) + in.Bucket = &v + return nil +} +func backFillDeleteBucketTaggingAccountID(input interface{}, v string) error { + in := input.(*DeleteBucketTaggingInput) + if in.AccountId != nil { + if !strings.EqualFold(*in.AccountId, v) { + return fmt.Errorf("error backfilling account id") + } + return nil + } + in.AccountId = &v + return nil +} +func addDeleteBucketTaggingUpdateEndpoint(stack *middleware.Stack, options Options) error { + return s3controlcust.UpdateEndpoint(stack, s3controlcust.UpdateEndpointOptions{ + Accessor: s3controlcust.UpdateEndpointParameterAccessor{GetARNInput: getDeleteBucketTaggingARNMember, + BackfillAccountID: backFillDeleteBucketTaggingAccountID, + GetOutpostIDInput: getOutpostIDFromInput, + UpdateARNField: setDeleteBucketTaggingARNMember, + CopyInput: copyDeleteBucketTaggingInputForUpdateEndpoint, + }, + EndpointResolver: options.EndpointResolver, + EndpointResolverOptions: options.EndpointOptions, + UseDualstack: options.UseDualstack, + UseARNRegion: options.UseARNRegion, + }) +} diff --git a/service/s3control/api_op_DeleteJobTagging.go b/service/s3control/api_op_DeleteJobTagging.go index c2c8655c0fc..914ef1d5467 100644 --- a/service/s3control/api_op_DeleteJobTagging.go +++ b/service/s3control/api_op_DeleteJobTagging.go @@ -7,6 +7,7 @@ import ( "fmt" awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + s3controlcust "github.com/aws/aws-sdk-go-v2/service/s3control/internal/customizations" smithy "github.com/awslabs/smithy-go" "github.com/awslabs/smithy-go/middleware" smithyhttp "github.com/awslabs/smithy-go/transport/http" @@ -118,7 +119,7 @@ func addOperationDeleteJobTaggingMiddlewares(stack *middleware.Stack, options Op if err = addMetadataRetrieverMiddleware(stack); err != nil { return err } - if err = addUpdateEndpointMiddleware(stack, options); err != nil { + if err = addDeleteJobTaggingUpdateEndpoint(stack, options); err != nil { return err } if err = addResponseErrorMiddleware(stack); err != nil { @@ -182,3 +183,43 @@ func newServiceMetadataMiddleware_opDeleteJobTagging(region string) *awsmiddlewa OperationName: "DeleteJobTagging", } } + +func copyDeleteJobTaggingInputForUpdateEndpoint(params interface{}) (interface{}, error) { + input, ok := params.(*DeleteJobTaggingInput) + if !ok { + return nil, fmt.Errorf("expect *DeleteJobTaggingInput type, got %T", params) + } + cpy := *input + return &cpy, nil +} +func getDeleteJobTaggingARNMember(input interface{}) (*string, bool) { + return nil, false +} +func setDeleteJobTaggingARNMember(input interface{}, v string) error { + return nil +} +func backFillDeleteJobTaggingAccountID(input interface{}, v string) error { + in := input.(*DeleteJobTaggingInput) + if in.AccountId != nil { + if !strings.EqualFold(*in.AccountId, v) { + return fmt.Errorf("error backfilling account id") + } + return nil + } + in.AccountId = &v + return nil +} +func addDeleteJobTaggingUpdateEndpoint(stack *middleware.Stack, options Options) error { + return s3controlcust.UpdateEndpoint(stack, s3controlcust.UpdateEndpointOptions{ + Accessor: s3controlcust.UpdateEndpointParameterAccessor{GetARNInput: getDeleteJobTaggingARNMember, + BackfillAccountID: backFillDeleteJobTaggingAccountID, + GetOutpostIDInput: getOutpostIDFromInput, + UpdateARNField: setDeleteJobTaggingARNMember, + CopyInput: copyDeleteJobTaggingInputForUpdateEndpoint, + }, + EndpointResolver: options.EndpointResolver, + EndpointResolverOptions: options.EndpointOptions, + UseDualstack: options.UseDualstack, + UseARNRegion: options.UseARNRegion, + }) +} diff --git a/service/s3control/api_op_DeletePublicAccessBlock.go b/service/s3control/api_op_DeletePublicAccessBlock.go index 2d45ceb8e79..3f00474281c 100644 --- a/service/s3control/api_op_DeletePublicAccessBlock.go +++ b/service/s3control/api_op_DeletePublicAccessBlock.go @@ -7,6 +7,7 @@ import ( "fmt" awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + s3controlcust "github.com/aws/aws-sdk-go-v2/service/s3control/internal/customizations" smithy "github.com/awslabs/smithy-go" "github.com/awslabs/smithy-go/middleware" smithyhttp "github.com/awslabs/smithy-go/transport/http" @@ -107,7 +108,7 @@ func addOperationDeletePublicAccessBlockMiddlewares(stack *middleware.Stack, opt if err = addMetadataRetrieverMiddleware(stack); err != nil { return err } - if err = addUpdateEndpointMiddleware(stack, options); err != nil { + if err = addDeletePublicAccessBlockUpdateEndpoint(stack, options); err != nil { return err } if err = addResponseErrorMiddleware(stack); err != nil { @@ -171,3 +172,43 @@ func newServiceMetadataMiddleware_opDeletePublicAccessBlock(region string) *awsm OperationName: "DeletePublicAccessBlock", } } + +func copyDeletePublicAccessBlockInputForUpdateEndpoint(params interface{}) (interface{}, error) { + input, ok := params.(*DeletePublicAccessBlockInput) + if !ok { + return nil, fmt.Errorf("expect *DeletePublicAccessBlockInput type, got %T", params) + } + cpy := *input + return &cpy, nil +} +func getDeletePublicAccessBlockARNMember(input interface{}) (*string, bool) { + return nil, false +} +func setDeletePublicAccessBlockARNMember(input interface{}, v string) error { + return nil +} +func backFillDeletePublicAccessBlockAccountID(input interface{}, v string) error { + in := input.(*DeletePublicAccessBlockInput) + if in.AccountId != nil { + if !strings.EqualFold(*in.AccountId, v) { + return fmt.Errorf("error backfilling account id") + } + return nil + } + in.AccountId = &v + return nil +} +func addDeletePublicAccessBlockUpdateEndpoint(stack *middleware.Stack, options Options) error { + return s3controlcust.UpdateEndpoint(stack, s3controlcust.UpdateEndpointOptions{ + Accessor: s3controlcust.UpdateEndpointParameterAccessor{GetARNInput: getDeletePublicAccessBlockARNMember, + BackfillAccountID: backFillDeletePublicAccessBlockAccountID, + GetOutpostIDInput: getOutpostIDFromInput, + UpdateARNField: setDeletePublicAccessBlockARNMember, + CopyInput: copyDeletePublicAccessBlockInputForUpdateEndpoint, + }, + EndpointResolver: options.EndpointResolver, + EndpointResolverOptions: options.EndpointOptions, + UseDualstack: options.UseDualstack, + UseARNRegion: options.UseARNRegion, + }) +} diff --git a/service/s3control/api_op_DescribeJob.go b/service/s3control/api_op_DescribeJob.go index dafa2f3df73..65cd0cd8741 100644 --- a/service/s3control/api_op_DescribeJob.go +++ b/service/s3control/api_op_DescribeJob.go @@ -7,6 +7,7 @@ import ( "fmt" awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + s3controlcust "github.com/aws/aws-sdk-go-v2/service/s3control/internal/customizations" "github.com/aws/aws-sdk-go-v2/service/s3control/types" smithy "github.com/awslabs/smithy-go" "github.com/awslabs/smithy-go/middleware" @@ -126,7 +127,7 @@ func addOperationDescribeJobMiddlewares(stack *middleware.Stack, options Options if err = addMetadataRetrieverMiddleware(stack); err != nil { return err } - if err = addUpdateEndpointMiddleware(stack, options); err != nil { + if err = addDescribeJobUpdateEndpoint(stack, options); err != nil { return err } if err = addResponseErrorMiddleware(stack); err != nil { @@ -190,3 +191,43 @@ func newServiceMetadataMiddleware_opDescribeJob(region string) *awsmiddleware.Re OperationName: "DescribeJob", } } + +func copyDescribeJobInputForUpdateEndpoint(params interface{}) (interface{}, error) { + input, ok := params.(*DescribeJobInput) + if !ok { + return nil, fmt.Errorf("expect *DescribeJobInput type, got %T", params) + } + cpy := *input + return &cpy, nil +} +func getDescribeJobARNMember(input interface{}) (*string, bool) { + return nil, false +} +func setDescribeJobARNMember(input interface{}, v string) error { + return nil +} +func backFillDescribeJobAccountID(input interface{}, v string) error { + in := input.(*DescribeJobInput) + if in.AccountId != nil { + if !strings.EqualFold(*in.AccountId, v) { + return fmt.Errorf("error backfilling account id") + } + return nil + } + in.AccountId = &v + return nil +} +func addDescribeJobUpdateEndpoint(stack *middleware.Stack, options Options) error { + return s3controlcust.UpdateEndpoint(stack, s3controlcust.UpdateEndpointOptions{ + Accessor: s3controlcust.UpdateEndpointParameterAccessor{GetARNInput: getDescribeJobARNMember, + BackfillAccountID: backFillDescribeJobAccountID, + GetOutpostIDInput: getOutpostIDFromInput, + UpdateARNField: setDescribeJobARNMember, + CopyInput: copyDescribeJobInputForUpdateEndpoint, + }, + EndpointResolver: options.EndpointResolver, + EndpointResolverOptions: options.EndpointOptions, + UseDualstack: options.UseDualstack, + UseARNRegion: options.UseARNRegion, + }) +} diff --git a/service/s3control/api_op_GetAccessPoint.go b/service/s3control/api_op_GetAccessPoint.go index dba9dd1d084..698526e09ef 100644 --- a/service/s3control/api_op_GetAccessPoint.go +++ b/service/s3control/api_op_GetAccessPoint.go @@ -7,6 +7,7 @@ import ( "fmt" awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + s3controlcust "github.com/aws/aws-sdk-go-v2/service/s3control/internal/customizations" "github.com/aws/aws-sdk-go-v2/service/s3control/types" smithy "github.com/awslabs/smithy-go" "github.com/awslabs/smithy-go/middleware" @@ -159,7 +160,7 @@ func addOperationGetAccessPointMiddlewares(stack *middleware.Stack, options Opti if err = addMetadataRetrieverMiddleware(stack); err != nil { return err } - if err = addUpdateEndpointMiddleware(stack, options); err != nil { + if err = addGetAccessPointUpdateEndpoint(stack, options); err != nil { return err } if err = addResponseErrorMiddleware(stack); err != nil { @@ -223,3 +224,49 @@ func newServiceMetadataMiddleware_opGetAccessPoint(region string) *awsmiddleware OperationName: "GetAccessPoint", } } + +func copyGetAccessPointInputForUpdateEndpoint(params interface{}) (interface{}, error) { + input, ok := params.(*GetAccessPointInput) + if !ok { + return nil, fmt.Errorf("expect *GetAccessPointInput type, got %T", params) + } + cpy := *input + return &cpy, nil +} +func getGetAccessPointARNMember(input interface{}) (*string, bool) { + in := input.(*GetAccessPointInput) + if in.Name == nil { + return nil, false + } + return in.Name, true +} +func setGetAccessPointARNMember(input interface{}, v string) error { + in := input.(*GetAccessPointInput) + in.Name = &v + return nil +} +func backFillGetAccessPointAccountID(input interface{}, v string) error { + in := input.(*GetAccessPointInput) + if in.AccountId != nil { + if !strings.EqualFold(*in.AccountId, v) { + return fmt.Errorf("error backfilling account id") + } + return nil + } + in.AccountId = &v + return nil +} +func addGetAccessPointUpdateEndpoint(stack *middleware.Stack, options Options) error { + return s3controlcust.UpdateEndpoint(stack, s3controlcust.UpdateEndpointOptions{ + Accessor: s3controlcust.UpdateEndpointParameterAccessor{GetARNInput: getGetAccessPointARNMember, + BackfillAccountID: backFillGetAccessPointAccountID, + GetOutpostIDInput: getOutpostIDFromInput, + UpdateARNField: setGetAccessPointARNMember, + CopyInput: copyGetAccessPointInputForUpdateEndpoint, + }, + EndpointResolver: options.EndpointResolver, + EndpointResolverOptions: options.EndpointOptions, + UseDualstack: options.UseDualstack, + UseARNRegion: options.UseARNRegion, + }) +} diff --git a/service/s3control/api_op_GetAccessPointPolicy.go b/service/s3control/api_op_GetAccessPointPolicy.go index 338777fceb2..11536689ddc 100644 --- a/service/s3control/api_op_GetAccessPointPolicy.go +++ b/service/s3control/api_op_GetAccessPointPolicy.go @@ -7,6 +7,7 @@ import ( "fmt" awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + s3controlcust "github.com/aws/aws-sdk-go-v2/service/s3control/internal/customizations" smithy "github.com/awslabs/smithy-go" "github.com/awslabs/smithy-go/middleware" smithyhttp "github.com/awslabs/smithy-go/transport/http" @@ -119,7 +120,7 @@ func addOperationGetAccessPointPolicyMiddlewares(stack *middleware.Stack, option if err = addMetadataRetrieverMiddleware(stack); err != nil { return err } - if err = addUpdateEndpointMiddleware(stack, options); err != nil { + if err = addGetAccessPointPolicyUpdateEndpoint(stack, options); err != nil { return err } if err = addResponseErrorMiddleware(stack); err != nil { @@ -183,3 +184,49 @@ func newServiceMetadataMiddleware_opGetAccessPointPolicy(region string) *awsmidd OperationName: "GetAccessPointPolicy", } } + +func copyGetAccessPointPolicyInputForUpdateEndpoint(params interface{}) (interface{}, error) { + input, ok := params.(*GetAccessPointPolicyInput) + if !ok { + return nil, fmt.Errorf("expect *GetAccessPointPolicyInput type, got %T", params) + } + cpy := *input + return &cpy, nil +} +func getGetAccessPointPolicyARNMember(input interface{}) (*string, bool) { + in := input.(*GetAccessPointPolicyInput) + if in.Name == nil { + return nil, false + } + return in.Name, true +} +func setGetAccessPointPolicyARNMember(input interface{}, v string) error { + in := input.(*GetAccessPointPolicyInput) + in.Name = &v + return nil +} +func backFillGetAccessPointPolicyAccountID(input interface{}, v string) error { + in := input.(*GetAccessPointPolicyInput) + if in.AccountId != nil { + if !strings.EqualFold(*in.AccountId, v) { + return fmt.Errorf("error backfilling account id") + } + return nil + } + in.AccountId = &v + return nil +} +func addGetAccessPointPolicyUpdateEndpoint(stack *middleware.Stack, options Options) error { + return s3controlcust.UpdateEndpoint(stack, s3controlcust.UpdateEndpointOptions{ + Accessor: s3controlcust.UpdateEndpointParameterAccessor{GetARNInput: getGetAccessPointPolicyARNMember, + BackfillAccountID: backFillGetAccessPointPolicyAccountID, + GetOutpostIDInput: getOutpostIDFromInput, + UpdateARNField: setGetAccessPointPolicyARNMember, + CopyInput: copyGetAccessPointPolicyInputForUpdateEndpoint, + }, + EndpointResolver: options.EndpointResolver, + EndpointResolverOptions: options.EndpointOptions, + UseDualstack: options.UseDualstack, + UseARNRegion: options.UseARNRegion, + }) +} diff --git a/service/s3control/api_op_GetAccessPointPolicyStatus.go b/service/s3control/api_op_GetAccessPointPolicyStatus.go index 9acd74cb4a3..cbdc2916447 100644 --- a/service/s3control/api_op_GetAccessPointPolicyStatus.go +++ b/service/s3control/api_op_GetAccessPointPolicyStatus.go @@ -7,6 +7,7 @@ import ( "fmt" awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + s3controlcust "github.com/aws/aws-sdk-go-v2/service/s3control/internal/customizations" "github.com/aws/aws-sdk-go-v2/service/s3control/types" smithy "github.com/awslabs/smithy-go" "github.com/awslabs/smithy-go/middleware" @@ -110,7 +111,7 @@ func addOperationGetAccessPointPolicyStatusMiddlewares(stack *middleware.Stack, if err = addMetadataRetrieverMiddleware(stack); err != nil { return err } - if err = addUpdateEndpointMiddleware(stack, options); err != nil { + if err = addGetAccessPointPolicyStatusUpdateEndpoint(stack, options); err != nil { return err } if err = addResponseErrorMiddleware(stack); err != nil { @@ -174,3 +175,43 @@ func newServiceMetadataMiddleware_opGetAccessPointPolicyStatus(region string) *a OperationName: "GetAccessPointPolicyStatus", } } + +func copyGetAccessPointPolicyStatusInputForUpdateEndpoint(params interface{}) (interface{}, error) { + input, ok := params.(*GetAccessPointPolicyStatusInput) + if !ok { + return nil, fmt.Errorf("expect *GetAccessPointPolicyStatusInput type, got %T", params) + } + cpy := *input + return &cpy, nil +} +func getGetAccessPointPolicyStatusARNMember(input interface{}) (*string, bool) { + return nil, false +} +func setGetAccessPointPolicyStatusARNMember(input interface{}, v string) error { + return nil +} +func backFillGetAccessPointPolicyStatusAccountID(input interface{}, v string) error { + in := input.(*GetAccessPointPolicyStatusInput) + if in.AccountId != nil { + if !strings.EqualFold(*in.AccountId, v) { + return fmt.Errorf("error backfilling account id") + } + return nil + } + in.AccountId = &v + return nil +} +func addGetAccessPointPolicyStatusUpdateEndpoint(stack *middleware.Stack, options Options) error { + return s3controlcust.UpdateEndpoint(stack, s3controlcust.UpdateEndpointOptions{ + Accessor: s3controlcust.UpdateEndpointParameterAccessor{GetARNInput: getGetAccessPointPolicyStatusARNMember, + BackfillAccountID: backFillGetAccessPointPolicyStatusAccountID, + GetOutpostIDInput: getOutpostIDFromInput, + UpdateARNField: setGetAccessPointPolicyStatusARNMember, + CopyInput: copyGetAccessPointPolicyStatusInputForUpdateEndpoint, + }, + EndpointResolver: options.EndpointResolver, + EndpointResolverOptions: options.EndpointOptions, + UseDualstack: options.UseDualstack, + UseARNRegion: options.UseARNRegion, + }) +} diff --git a/service/s3control/api_op_GetBucket.go b/service/s3control/api_op_GetBucket.go index cd3a9b4e7c8..09b380485c1 100644 --- a/service/s3control/api_op_GetBucket.go +++ b/service/s3control/api_op_GetBucket.go @@ -7,6 +7,7 @@ import ( "fmt" awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + s3controlcust "github.com/aws/aws-sdk-go-v2/service/s3control/internal/customizations" smithy "github.com/awslabs/smithy-go" "github.com/awslabs/smithy-go/middleware" smithyhttp "github.com/awslabs/smithy-go/transport/http" @@ -131,7 +132,7 @@ func addOperationGetBucketMiddlewares(stack *middleware.Stack, options Options) if err = addMetadataRetrieverMiddleware(stack); err != nil { return err } - if err = addUpdateEndpointMiddleware(stack, options); err != nil { + if err = addGetBucketUpdateEndpoint(stack, options); err != nil { return err } if err = addResponseErrorMiddleware(stack); err != nil { @@ -195,3 +196,49 @@ func newServiceMetadataMiddleware_opGetBucket(region string) *awsmiddleware.Regi OperationName: "GetBucket", } } + +func copyGetBucketInputForUpdateEndpoint(params interface{}) (interface{}, error) { + input, ok := params.(*GetBucketInput) + if !ok { + return nil, fmt.Errorf("expect *GetBucketInput type, got %T", params) + } + cpy := *input + return &cpy, nil +} +func getGetBucketARNMember(input interface{}) (*string, bool) { + in := input.(*GetBucketInput) + if in.Bucket == nil { + return nil, false + } + return in.Bucket, true +} +func setGetBucketARNMember(input interface{}, v string) error { + in := input.(*GetBucketInput) + in.Bucket = &v + return nil +} +func backFillGetBucketAccountID(input interface{}, v string) error { + in := input.(*GetBucketInput) + if in.AccountId != nil { + if !strings.EqualFold(*in.AccountId, v) { + return fmt.Errorf("error backfilling account id") + } + return nil + } + in.AccountId = &v + return nil +} +func addGetBucketUpdateEndpoint(stack *middleware.Stack, options Options) error { + return s3controlcust.UpdateEndpoint(stack, s3controlcust.UpdateEndpointOptions{ + Accessor: s3controlcust.UpdateEndpointParameterAccessor{GetARNInput: getGetBucketARNMember, + BackfillAccountID: backFillGetBucketAccountID, + GetOutpostIDInput: getOutpostIDFromInput, + UpdateARNField: setGetBucketARNMember, + CopyInput: copyGetBucketInputForUpdateEndpoint, + }, + EndpointResolver: options.EndpointResolver, + EndpointResolverOptions: options.EndpointOptions, + UseDualstack: options.UseDualstack, + UseARNRegion: options.UseARNRegion, + }) +} diff --git a/service/s3control/api_op_GetBucketLifecycleConfiguration.go b/service/s3control/api_op_GetBucketLifecycleConfiguration.go index 26b6a5d4cea..7ce82ff69c8 100644 --- a/service/s3control/api_op_GetBucketLifecycleConfiguration.go +++ b/service/s3control/api_op_GetBucketLifecycleConfiguration.go @@ -7,6 +7,7 @@ import ( "fmt" awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + s3controlcust "github.com/aws/aws-sdk-go-v2/service/s3control/internal/customizations" "github.com/aws/aws-sdk-go-v2/service/s3control/types" smithy "github.com/awslabs/smithy-go" "github.com/awslabs/smithy-go/middleware" @@ -157,7 +158,7 @@ func addOperationGetBucketLifecycleConfigurationMiddlewares(stack *middleware.St if err = addMetadataRetrieverMiddleware(stack); err != nil { return err } - if err = addUpdateEndpointMiddleware(stack, options); err != nil { + if err = addGetBucketLifecycleConfigurationUpdateEndpoint(stack, options); err != nil { return err } if err = addResponseErrorMiddleware(stack); err != nil { @@ -221,3 +222,49 @@ func newServiceMetadataMiddleware_opGetBucketLifecycleConfiguration(region strin OperationName: "GetBucketLifecycleConfiguration", } } + +func copyGetBucketLifecycleConfigurationInputForUpdateEndpoint(params interface{}) (interface{}, error) { + input, ok := params.(*GetBucketLifecycleConfigurationInput) + if !ok { + return nil, fmt.Errorf("expect *GetBucketLifecycleConfigurationInput type, got %T", params) + } + cpy := *input + return &cpy, nil +} +func getGetBucketLifecycleConfigurationARNMember(input interface{}) (*string, bool) { + in := input.(*GetBucketLifecycleConfigurationInput) + if in.Bucket == nil { + return nil, false + } + return in.Bucket, true +} +func setGetBucketLifecycleConfigurationARNMember(input interface{}, v string) error { + in := input.(*GetBucketLifecycleConfigurationInput) + in.Bucket = &v + return nil +} +func backFillGetBucketLifecycleConfigurationAccountID(input interface{}, v string) error { + in := input.(*GetBucketLifecycleConfigurationInput) + if in.AccountId != nil { + if !strings.EqualFold(*in.AccountId, v) { + return fmt.Errorf("error backfilling account id") + } + return nil + } + in.AccountId = &v + return nil +} +func addGetBucketLifecycleConfigurationUpdateEndpoint(stack *middleware.Stack, options Options) error { + return s3controlcust.UpdateEndpoint(stack, s3controlcust.UpdateEndpointOptions{ + Accessor: s3controlcust.UpdateEndpointParameterAccessor{GetARNInput: getGetBucketLifecycleConfigurationARNMember, + BackfillAccountID: backFillGetBucketLifecycleConfigurationAccountID, + GetOutpostIDInput: getOutpostIDFromInput, + UpdateARNField: setGetBucketLifecycleConfigurationARNMember, + CopyInput: copyGetBucketLifecycleConfigurationInputForUpdateEndpoint, + }, + EndpointResolver: options.EndpointResolver, + EndpointResolverOptions: options.EndpointOptions, + UseDualstack: options.UseDualstack, + UseARNRegion: options.UseARNRegion, + }) +} diff --git a/service/s3control/api_op_GetBucketPolicy.go b/service/s3control/api_op_GetBucketPolicy.go index 35957cb9361..e9c5e42fa26 100644 --- a/service/s3control/api_op_GetBucketPolicy.go +++ b/service/s3control/api_op_GetBucketPolicy.go @@ -7,6 +7,7 @@ import ( "fmt" awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + s3controlcust "github.com/aws/aws-sdk-go-v2/service/s3control/internal/customizations" smithy "github.com/awslabs/smithy-go" "github.com/awslabs/smithy-go/middleware" smithyhttp "github.com/awslabs/smithy-go/transport/http" @@ -146,7 +147,7 @@ func addOperationGetBucketPolicyMiddlewares(stack *middleware.Stack, options Opt if err = addMetadataRetrieverMiddleware(stack); err != nil { return err } - if err = addUpdateEndpointMiddleware(stack, options); err != nil { + if err = addGetBucketPolicyUpdateEndpoint(stack, options); err != nil { return err } if err = addResponseErrorMiddleware(stack); err != nil { @@ -210,3 +211,49 @@ func newServiceMetadataMiddleware_opGetBucketPolicy(region string) *awsmiddlewar OperationName: "GetBucketPolicy", } } + +func copyGetBucketPolicyInputForUpdateEndpoint(params interface{}) (interface{}, error) { + input, ok := params.(*GetBucketPolicyInput) + if !ok { + return nil, fmt.Errorf("expect *GetBucketPolicyInput type, got %T", params) + } + cpy := *input + return &cpy, nil +} +func getGetBucketPolicyARNMember(input interface{}) (*string, bool) { + in := input.(*GetBucketPolicyInput) + if in.Bucket == nil { + return nil, false + } + return in.Bucket, true +} +func setGetBucketPolicyARNMember(input interface{}, v string) error { + in := input.(*GetBucketPolicyInput) + in.Bucket = &v + return nil +} +func backFillGetBucketPolicyAccountID(input interface{}, v string) error { + in := input.(*GetBucketPolicyInput) + if in.AccountId != nil { + if !strings.EqualFold(*in.AccountId, v) { + return fmt.Errorf("error backfilling account id") + } + return nil + } + in.AccountId = &v + return nil +} +func addGetBucketPolicyUpdateEndpoint(stack *middleware.Stack, options Options) error { + return s3controlcust.UpdateEndpoint(stack, s3controlcust.UpdateEndpointOptions{ + Accessor: s3controlcust.UpdateEndpointParameterAccessor{GetARNInput: getGetBucketPolicyARNMember, + BackfillAccountID: backFillGetBucketPolicyAccountID, + GetOutpostIDInput: getOutpostIDFromInput, + UpdateARNField: setGetBucketPolicyARNMember, + CopyInput: copyGetBucketPolicyInputForUpdateEndpoint, + }, + EndpointResolver: options.EndpointResolver, + EndpointResolverOptions: options.EndpointOptions, + UseDualstack: options.UseDualstack, + UseARNRegion: options.UseARNRegion, + }) +} diff --git a/service/s3control/api_op_GetBucketTagging.go b/service/s3control/api_op_GetBucketTagging.go index 22e7875168a..2cdab00e6de 100644 --- a/service/s3control/api_op_GetBucketTagging.go +++ b/service/s3control/api_op_GetBucketTagging.go @@ -7,6 +7,7 @@ import ( "fmt" awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + s3controlcust "github.com/aws/aws-sdk-go-v2/service/s3control/internal/customizations" "github.com/aws/aws-sdk-go-v2/service/s3control/types" smithy "github.com/awslabs/smithy-go" "github.com/awslabs/smithy-go/middleware" @@ -145,7 +146,7 @@ func addOperationGetBucketTaggingMiddlewares(stack *middleware.Stack, options Op if err = addMetadataRetrieverMiddleware(stack); err != nil { return err } - if err = addUpdateEndpointMiddleware(stack, options); err != nil { + if err = addGetBucketTaggingUpdateEndpoint(stack, options); err != nil { return err } if err = addResponseErrorMiddleware(stack); err != nil { @@ -209,3 +210,49 @@ func newServiceMetadataMiddleware_opGetBucketTagging(region string) *awsmiddlewa OperationName: "GetBucketTagging", } } + +func copyGetBucketTaggingInputForUpdateEndpoint(params interface{}) (interface{}, error) { + input, ok := params.(*GetBucketTaggingInput) + if !ok { + return nil, fmt.Errorf("expect *GetBucketTaggingInput type, got %T", params) + } + cpy := *input + return &cpy, nil +} +func getGetBucketTaggingARNMember(input interface{}) (*string, bool) { + in := input.(*GetBucketTaggingInput) + if in.Bucket == nil { + return nil, false + } + return in.Bucket, true +} +func setGetBucketTaggingARNMember(input interface{}, v string) error { + in := input.(*GetBucketTaggingInput) + in.Bucket = &v + return nil +} +func backFillGetBucketTaggingAccountID(input interface{}, v string) error { + in := input.(*GetBucketTaggingInput) + if in.AccountId != nil { + if !strings.EqualFold(*in.AccountId, v) { + return fmt.Errorf("error backfilling account id") + } + return nil + } + in.AccountId = &v + return nil +} +func addGetBucketTaggingUpdateEndpoint(stack *middleware.Stack, options Options) error { + return s3controlcust.UpdateEndpoint(stack, s3controlcust.UpdateEndpointOptions{ + Accessor: s3controlcust.UpdateEndpointParameterAccessor{GetARNInput: getGetBucketTaggingARNMember, + BackfillAccountID: backFillGetBucketTaggingAccountID, + GetOutpostIDInput: getOutpostIDFromInput, + UpdateARNField: setGetBucketTaggingARNMember, + CopyInput: copyGetBucketTaggingInputForUpdateEndpoint, + }, + EndpointResolver: options.EndpointResolver, + EndpointResolverOptions: options.EndpointOptions, + UseDualstack: options.UseDualstack, + UseARNRegion: options.UseARNRegion, + }) +} diff --git a/service/s3control/api_op_GetJobTagging.go b/service/s3control/api_op_GetJobTagging.go index c632ef6d680..64c06ec8cd2 100644 --- a/service/s3control/api_op_GetJobTagging.go +++ b/service/s3control/api_op_GetJobTagging.go @@ -7,6 +7,7 @@ import ( "fmt" awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + s3controlcust "github.com/aws/aws-sdk-go-v2/service/s3control/internal/customizations" "github.com/aws/aws-sdk-go-v2/service/s3control/types" smithy "github.com/awslabs/smithy-go" "github.com/awslabs/smithy-go/middleware" @@ -122,7 +123,7 @@ func addOperationGetJobTaggingMiddlewares(stack *middleware.Stack, options Optio if err = addMetadataRetrieverMiddleware(stack); err != nil { return err } - if err = addUpdateEndpointMiddleware(stack, options); err != nil { + if err = addGetJobTaggingUpdateEndpoint(stack, options); err != nil { return err } if err = addResponseErrorMiddleware(stack); err != nil { @@ -186,3 +187,43 @@ func newServiceMetadataMiddleware_opGetJobTagging(region string) *awsmiddleware. OperationName: "GetJobTagging", } } + +func copyGetJobTaggingInputForUpdateEndpoint(params interface{}) (interface{}, error) { + input, ok := params.(*GetJobTaggingInput) + if !ok { + return nil, fmt.Errorf("expect *GetJobTaggingInput type, got %T", params) + } + cpy := *input + return &cpy, nil +} +func getGetJobTaggingARNMember(input interface{}) (*string, bool) { + return nil, false +} +func setGetJobTaggingARNMember(input interface{}, v string) error { + return nil +} +func backFillGetJobTaggingAccountID(input interface{}, v string) error { + in := input.(*GetJobTaggingInput) + if in.AccountId != nil { + if !strings.EqualFold(*in.AccountId, v) { + return fmt.Errorf("error backfilling account id") + } + return nil + } + in.AccountId = &v + return nil +} +func addGetJobTaggingUpdateEndpoint(stack *middleware.Stack, options Options) error { + return s3controlcust.UpdateEndpoint(stack, s3controlcust.UpdateEndpointOptions{ + Accessor: s3controlcust.UpdateEndpointParameterAccessor{GetARNInput: getGetJobTaggingARNMember, + BackfillAccountID: backFillGetJobTaggingAccountID, + GetOutpostIDInput: getOutpostIDFromInput, + UpdateARNField: setGetJobTaggingARNMember, + CopyInput: copyGetJobTaggingInputForUpdateEndpoint, + }, + EndpointResolver: options.EndpointResolver, + EndpointResolverOptions: options.EndpointOptions, + UseDualstack: options.UseDualstack, + UseARNRegion: options.UseARNRegion, + }) +} diff --git a/service/s3control/api_op_GetPublicAccessBlock.go b/service/s3control/api_op_GetPublicAccessBlock.go index 377902729fb..562e2dbfd51 100644 --- a/service/s3control/api_op_GetPublicAccessBlock.go +++ b/service/s3control/api_op_GetPublicAccessBlock.go @@ -7,6 +7,7 @@ import ( "fmt" awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + s3controlcust "github.com/aws/aws-sdk-go-v2/service/s3control/internal/customizations" "github.com/aws/aws-sdk-go-v2/service/s3control/types" smithy "github.com/awslabs/smithy-go" "github.com/awslabs/smithy-go/middleware" @@ -112,7 +113,7 @@ func addOperationGetPublicAccessBlockMiddlewares(stack *middleware.Stack, option if err = addMetadataRetrieverMiddleware(stack); err != nil { return err } - if err = addUpdateEndpointMiddleware(stack, options); err != nil { + if err = addGetPublicAccessBlockUpdateEndpoint(stack, options); err != nil { return err } if err = addResponseErrorMiddleware(stack); err != nil { @@ -176,3 +177,43 @@ func newServiceMetadataMiddleware_opGetPublicAccessBlock(region string) *awsmidd OperationName: "GetPublicAccessBlock", } } + +func copyGetPublicAccessBlockInputForUpdateEndpoint(params interface{}) (interface{}, error) { + input, ok := params.(*GetPublicAccessBlockInput) + if !ok { + return nil, fmt.Errorf("expect *GetPublicAccessBlockInput type, got %T", params) + } + cpy := *input + return &cpy, nil +} +func getGetPublicAccessBlockARNMember(input interface{}) (*string, bool) { + return nil, false +} +func setGetPublicAccessBlockARNMember(input interface{}, v string) error { + return nil +} +func backFillGetPublicAccessBlockAccountID(input interface{}, v string) error { + in := input.(*GetPublicAccessBlockInput) + if in.AccountId != nil { + if !strings.EqualFold(*in.AccountId, v) { + return fmt.Errorf("error backfilling account id") + } + return nil + } + in.AccountId = &v + return nil +} +func addGetPublicAccessBlockUpdateEndpoint(stack *middleware.Stack, options Options) error { + return s3controlcust.UpdateEndpoint(stack, s3controlcust.UpdateEndpointOptions{ + Accessor: s3controlcust.UpdateEndpointParameterAccessor{GetARNInput: getGetPublicAccessBlockARNMember, + BackfillAccountID: backFillGetPublicAccessBlockAccountID, + GetOutpostIDInput: getOutpostIDFromInput, + UpdateARNField: setGetPublicAccessBlockARNMember, + CopyInput: copyGetPublicAccessBlockInputForUpdateEndpoint, + }, + EndpointResolver: options.EndpointResolver, + EndpointResolverOptions: options.EndpointOptions, + UseDualstack: options.UseDualstack, + UseARNRegion: options.UseARNRegion, + }) +} diff --git a/service/s3control/api_op_ListAccessPoints.go b/service/s3control/api_op_ListAccessPoints.go index 5735015ed47..9e5e6da98bf 100644 --- a/service/s3control/api_op_ListAccessPoints.go +++ b/service/s3control/api_op_ListAccessPoints.go @@ -7,6 +7,7 @@ import ( "fmt" awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + s3controlcust "github.com/aws/aws-sdk-go-v2/service/s3control/internal/customizations" "github.com/aws/aws-sdk-go-v2/service/s3control/types" smithy "github.com/awslabs/smithy-go" "github.com/awslabs/smithy-go/middleware" @@ -150,7 +151,7 @@ func addOperationListAccessPointsMiddlewares(stack *middleware.Stack, options Op if err = addMetadataRetrieverMiddleware(stack); err != nil { return err } - if err = addUpdateEndpointMiddleware(stack, options); err != nil { + if err = addListAccessPointsUpdateEndpoint(stack, options); err != nil { return err } if err = addResponseErrorMiddleware(stack); err != nil { @@ -214,3 +215,49 @@ func newServiceMetadataMiddleware_opListAccessPoints(region string) *awsmiddlewa OperationName: "ListAccessPoints", } } + +func copyListAccessPointsInputForUpdateEndpoint(params interface{}) (interface{}, error) { + input, ok := params.(*ListAccessPointsInput) + if !ok { + return nil, fmt.Errorf("expect *ListAccessPointsInput type, got %T", params) + } + cpy := *input + return &cpy, nil +} +func getListAccessPointsARNMember(input interface{}) (*string, bool) { + in := input.(*ListAccessPointsInput) + if in.Bucket == nil { + return nil, false + } + return in.Bucket, true +} +func setListAccessPointsARNMember(input interface{}, v string) error { + in := input.(*ListAccessPointsInput) + in.Bucket = &v + return nil +} +func backFillListAccessPointsAccountID(input interface{}, v string) error { + in := input.(*ListAccessPointsInput) + if in.AccountId != nil { + if !strings.EqualFold(*in.AccountId, v) { + return fmt.Errorf("error backfilling account id") + } + return nil + } + in.AccountId = &v + return nil +} +func addListAccessPointsUpdateEndpoint(stack *middleware.Stack, options Options) error { + return s3controlcust.UpdateEndpoint(stack, s3controlcust.UpdateEndpointOptions{ + Accessor: s3controlcust.UpdateEndpointParameterAccessor{GetARNInput: getListAccessPointsARNMember, + BackfillAccountID: backFillListAccessPointsAccountID, + GetOutpostIDInput: getOutpostIDFromInput, + UpdateARNField: setListAccessPointsARNMember, + CopyInput: copyListAccessPointsInputForUpdateEndpoint, + }, + EndpointResolver: options.EndpointResolver, + EndpointResolverOptions: options.EndpointOptions, + UseDualstack: options.UseDualstack, + UseARNRegion: options.UseARNRegion, + }) +} diff --git a/service/s3control/api_op_ListJobs.go b/service/s3control/api_op_ListJobs.go index 7753a33fcda..455176d29e5 100644 --- a/service/s3control/api_op_ListJobs.go +++ b/service/s3control/api_op_ListJobs.go @@ -7,6 +7,7 @@ import ( "fmt" awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + s3controlcust "github.com/aws/aws-sdk-go-v2/service/s3control/internal/customizations" "github.com/aws/aws-sdk-go-v2/service/s3control/types" smithy "github.com/awslabs/smithy-go" "github.com/awslabs/smithy-go/middleware" @@ -141,7 +142,7 @@ func addOperationListJobsMiddlewares(stack *middleware.Stack, options Options) ( if err = addMetadataRetrieverMiddleware(stack); err != nil { return err } - if err = addUpdateEndpointMiddleware(stack, options); err != nil { + if err = addListJobsUpdateEndpoint(stack, options); err != nil { return err } if err = addResponseErrorMiddleware(stack); err != nil { @@ -205,3 +206,43 @@ func newServiceMetadataMiddleware_opListJobs(region string) *awsmiddleware.Regis OperationName: "ListJobs", } } + +func copyListJobsInputForUpdateEndpoint(params interface{}) (interface{}, error) { + input, ok := params.(*ListJobsInput) + if !ok { + return nil, fmt.Errorf("expect *ListJobsInput type, got %T", params) + } + cpy := *input + return &cpy, nil +} +func getListJobsARNMember(input interface{}) (*string, bool) { + return nil, false +} +func setListJobsARNMember(input interface{}, v string) error { + return nil +} +func backFillListJobsAccountID(input interface{}, v string) error { + in := input.(*ListJobsInput) + if in.AccountId != nil { + if !strings.EqualFold(*in.AccountId, v) { + return fmt.Errorf("error backfilling account id") + } + return nil + } + in.AccountId = &v + return nil +} +func addListJobsUpdateEndpoint(stack *middleware.Stack, options Options) error { + return s3controlcust.UpdateEndpoint(stack, s3controlcust.UpdateEndpointOptions{ + Accessor: s3controlcust.UpdateEndpointParameterAccessor{GetARNInput: getListJobsARNMember, + BackfillAccountID: backFillListJobsAccountID, + GetOutpostIDInput: getOutpostIDFromInput, + UpdateARNField: setListJobsARNMember, + CopyInput: copyListJobsInputForUpdateEndpoint, + }, + EndpointResolver: options.EndpointResolver, + EndpointResolverOptions: options.EndpointOptions, + UseDualstack: options.UseDualstack, + UseARNRegion: options.UseARNRegion, + }) +} diff --git a/service/s3control/api_op_ListRegionalBuckets.go b/service/s3control/api_op_ListRegionalBuckets.go index 5d9ea9f0b14..89ca9c9ac14 100644 --- a/service/s3control/api_op_ListRegionalBuckets.go +++ b/service/s3control/api_op_ListRegionalBuckets.go @@ -7,6 +7,7 @@ import ( "fmt" awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + s3controlcust "github.com/aws/aws-sdk-go-v2/service/s3control/internal/customizations" "github.com/aws/aws-sdk-go-v2/service/s3control/types" smithy "github.com/awslabs/smithy-go" "github.com/awslabs/smithy-go/middleware" @@ -122,7 +123,7 @@ func addOperationListRegionalBucketsMiddlewares(stack *middleware.Stack, options if err = addMetadataRetrieverMiddleware(stack); err != nil { return err } - if err = addUpdateEndpointMiddleware(stack, options); err != nil { + if err = addListRegionalBucketsUpdateEndpoint(stack, options); err != nil { return err } if err = addResponseErrorMiddleware(stack); err != nil { @@ -186,3 +187,37 @@ func newServiceMetadataMiddleware_opListRegionalBuckets(region string) *awsmiddl OperationName: "ListRegionalBuckets", } } + +func copyListRegionalBucketsInputForUpdateEndpoint(params interface{}) (interface{}, error) { + input, ok := params.(*ListRegionalBucketsInput) + if !ok { + return nil, fmt.Errorf("expect *ListRegionalBucketsInput type, got %T", params) + } + cpy := *input + return &cpy, nil +} +func backFillListRegionalBucketsAccountID(input interface{}, v string) error { + in := input.(*ListRegionalBucketsInput) + if in.AccountId != nil { + if !strings.EqualFold(*in.AccountId, v) { + return fmt.Errorf("error backfilling account id") + } + return nil + } + in.AccountId = &v + return nil +} +func addListRegionalBucketsUpdateEndpoint(stack *middleware.Stack, options Options) error { + return s3controlcust.UpdateEndpoint(stack, s3controlcust.UpdateEndpointOptions{ + Accessor: s3controlcust.UpdateEndpointParameterAccessor{GetARNInput: nil, + BackfillAccountID: nil, + GetOutpostIDInput: getOutpostIDFromInput, + UpdateARNField: nil, + CopyInput: copyListRegionalBucketsInputForUpdateEndpoint, + }, + EndpointResolver: options.EndpointResolver, + EndpointResolverOptions: options.EndpointOptions, + UseDualstack: options.UseDualstack, + UseARNRegion: options.UseARNRegion, + }) +} diff --git a/service/s3control/api_op_PutAccessPointPolicy.go b/service/s3control/api_op_PutAccessPointPolicy.go index c3defa6198e..a45a61469e1 100644 --- a/service/s3control/api_op_PutAccessPointPolicy.go +++ b/service/s3control/api_op_PutAccessPointPolicy.go @@ -7,6 +7,7 @@ import ( "fmt" awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + s3controlcust "github.com/aws/aws-sdk-go-v2/service/s3control/internal/customizations" smithy "github.com/awslabs/smithy-go" "github.com/awslabs/smithy-go/middleware" smithyhttp "github.com/awslabs/smithy-go/transport/http" @@ -134,7 +135,7 @@ func addOperationPutAccessPointPolicyMiddlewares(stack *middleware.Stack, option if err = addMetadataRetrieverMiddleware(stack); err != nil { return err } - if err = addUpdateEndpointMiddleware(stack, options); err != nil { + if err = addPutAccessPointPolicyUpdateEndpoint(stack, options); err != nil { return err } if err = addResponseErrorMiddleware(stack); err != nil { @@ -198,3 +199,49 @@ func newServiceMetadataMiddleware_opPutAccessPointPolicy(region string) *awsmidd OperationName: "PutAccessPointPolicy", } } + +func copyPutAccessPointPolicyInputForUpdateEndpoint(params interface{}) (interface{}, error) { + input, ok := params.(*PutAccessPointPolicyInput) + if !ok { + return nil, fmt.Errorf("expect *PutAccessPointPolicyInput type, got %T", params) + } + cpy := *input + return &cpy, nil +} +func getPutAccessPointPolicyARNMember(input interface{}) (*string, bool) { + in := input.(*PutAccessPointPolicyInput) + if in.Name == nil { + return nil, false + } + return in.Name, true +} +func setPutAccessPointPolicyARNMember(input interface{}, v string) error { + in := input.(*PutAccessPointPolicyInput) + in.Name = &v + return nil +} +func backFillPutAccessPointPolicyAccountID(input interface{}, v string) error { + in := input.(*PutAccessPointPolicyInput) + if in.AccountId != nil { + if !strings.EqualFold(*in.AccountId, v) { + return fmt.Errorf("error backfilling account id") + } + return nil + } + in.AccountId = &v + return nil +} +func addPutAccessPointPolicyUpdateEndpoint(stack *middleware.Stack, options Options) error { + return s3controlcust.UpdateEndpoint(stack, s3controlcust.UpdateEndpointOptions{ + Accessor: s3controlcust.UpdateEndpointParameterAccessor{GetARNInput: getPutAccessPointPolicyARNMember, + BackfillAccountID: backFillPutAccessPointPolicyAccountID, + GetOutpostIDInput: getOutpostIDFromInput, + UpdateARNField: setPutAccessPointPolicyARNMember, + CopyInput: copyPutAccessPointPolicyInputForUpdateEndpoint, + }, + EndpointResolver: options.EndpointResolver, + EndpointResolverOptions: options.EndpointOptions, + UseDualstack: options.UseDualstack, + UseARNRegion: options.UseARNRegion, + }) +} diff --git a/service/s3control/api_op_PutBucketLifecycleConfiguration.go b/service/s3control/api_op_PutBucketLifecycleConfiguration.go index 19526645988..e25651e614d 100644 --- a/service/s3control/api_op_PutBucketLifecycleConfiguration.go +++ b/service/s3control/api_op_PutBucketLifecycleConfiguration.go @@ -7,6 +7,7 @@ import ( "fmt" awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + s3controlcust "github.com/aws/aws-sdk-go-v2/service/s3control/internal/customizations" "github.com/aws/aws-sdk-go-v2/service/s3control/types" smithy "github.com/awslabs/smithy-go" "github.com/awslabs/smithy-go/middleware" @@ -129,7 +130,7 @@ func addOperationPutBucketLifecycleConfigurationMiddlewares(stack *middleware.St if err = addMetadataRetrieverMiddleware(stack); err != nil { return err } - if err = addUpdateEndpointMiddleware(stack, options); err != nil { + if err = addPutBucketLifecycleConfigurationUpdateEndpoint(stack, options); err != nil { return err } if err = addResponseErrorMiddleware(stack); err != nil { @@ -196,3 +197,49 @@ func newServiceMetadataMiddleware_opPutBucketLifecycleConfiguration(region strin OperationName: "PutBucketLifecycleConfiguration", } } + +func copyPutBucketLifecycleConfigurationInputForUpdateEndpoint(params interface{}) (interface{}, error) { + input, ok := params.(*PutBucketLifecycleConfigurationInput) + if !ok { + return nil, fmt.Errorf("expect *PutBucketLifecycleConfigurationInput type, got %T", params) + } + cpy := *input + return &cpy, nil +} +func getPutBucketLifecycleConfigurationARNMember(input interface{}) (*string, bool) { + in := input.(*PutBucketLifecycleConfigurationInput) + if in.Bucket == nil { + return nil, false + } + return in.Bucket, true +} +func setPutBucketLifecycleConfigurationARNMember(input interface{}, v string) error { + in := input.(*PutBucketLifecycleConfigurationInput) + in.Bucket = &v + return nil +} +func backFillPutBucketLifecycleConfigurationAccountID(input interface{}, v string) error { + in := input.(*PutBucketLifecycleConfigurationInput) + if in.AccountId != nil { + if !strings.EqualFold(*in.AccountId, v) { + return fmt.Errorf("error backfilling account id") + } + return nil + } + in.AccountId = &v + return nil +} +func addPutBucketLifecycleConfigurationUpdateEndpoint(stack *middleware.Stack, options Options) error { + return s3controlcust.UpdateEndpoint(stack, s3controlcust.UpdateEndpointOptions{ + Accessor: s3controlcust.UpdateEndpointParameterAccessor{GetARNInput: getPutBucketLifecycleConfigurationARNMember, + BackfillAccountID: backFillPutBucketLifecycleConfigurationAccountID, + GetOutpostIDInput: getOutpostIDFromInput, + UpdateARNField: setPutBucketLifecycleConfigurationARNMember, + CopyInput: copyPutBucketLifecycleConfigurationInputForUpdateEndpoint, + }, + EndpointResolver: options.EndpointResolver, + EndpointResolverOptions: options.EndpointOptions, + UseDualstack: options.UseDualstack, + UseARNRegion: options.UseARNRegion, + }) +} diff --git a/service/s3control/api_op_PutBucketPolicy.go b/service/s3control/api_op_PutBucketPolicy.go index d330d3efeb1..4ed6e42467d 100644 --- a/service/s3control/api_op_PutBucketPolicy.go +++ b/service/s3control/api_op_PutBucketPolicy.go @@ -7,6 +7,7 @@ import ( "fmt" awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + s3controlcust "github.com/aws/aws-sdk-go-v2/service/s3control/internal/customizations" smithy "github.com/awslabs/smithy-go" "github.com/awslabs/smithy-go/middleware" smithyhttp "github.com/awslabs/smithy-go/transport/http" @@ -148,7 +149,7 @@ func addOperationPutBucketPolicyMiddlewares(stack *middleware.Stack, options Opt if err = addMetadataRetrieverMiddleware(stack); err != nil { return err } - if err = addUpdateEndpointMiddleware(stack, options); err != nil { + if err = addPutBucketPolicyUpdateEndpoint(stack, options); err != nil { return err } if err = addResponseErrorMiddleware(stack); err != nil { @@ -215,3 +216,49 @@ func newServiceMetadataMiddleware_opPutBucketPolicy(region string) *awsmiddlewar OperationName: "PutBucketPolicy", } } + +func copyPutBucketPolicyInputForUpdateEndpoint(params interface{}) (interface{}, error) { + input, ok := params.(*PutBucketPolicyInput) + if !ok { + return nil, fmt.Errorf("expect *PutBucketPolicyInput type, got %T", params) + } + cpy := *input + return &cpy, nil +} +func getPutBucketPolicyARNMember(input interface{}) (*string, bool) { + in := input.(*PutBucketPolicyInput) + if in.Bucket == nil { + return nil, false + } + return in.Bucket, true +} +func setPutBucketPolicyARNMember(input interface{}, v string) error { + in := input.(*PutBucketPolicyInput) + in.Bucket = &v + return nil +} +func backFillPutBucketPolicyAccountID(input interface{}, v string) error { + in := input.(*PutBucketPolicyInput) + if in.AccountId != nil { + if !strings.EqualFold(*in.AccountId, v) { + return fmt.Errorf("error backfilling account id") + } + return nil + } + in.AccountId = &v + return nil +} +func addPutBucketPolicyUpdateEndpoint(stack *middleware.Stack, options Options) error { + return s3controlcust.UpdateEndpoint(stack, s3controlcust.UpdateEndpointOptions{ + Accessor: s3controlcust.UpdateEndpointParameterAccessor{GetARNInput: getPutBucketPolicyARNMember, + BackfillAccountID: backFillPutBucketPolicyAccountID, + GetOutpostIDInput: getOutpostIDFromInput, + UpdateARNField: setPutBucketPolicyARNMember, + CopyInput: copyPutBucketPolicyInputForUpdateEndpoint, + }, + EndpointResolver: options.EndpointResolver, + EndpointResolverOptions: options.EndpointOptions, + UseDualstack: options.UseDualstack, + UseARNRegion: options.UseARNRegion, + }) +} diff --git a/service/s3control/api_op_PutBucketTagging.go b/service/s3control/api_op_PutBucketTagging.go index 6ab0bc89eb6..262c33f5f37 100644 --- a/service/s3control/api_op_PutBucketTagging.go +++ b/service/s3control/api_op_PutBucketTagging.go @@ -7,6 +7,7 @@ import ( "fmt" awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + s3controlcust "github.com/aws/aws-sdk-go-v2/service/s3control/internal/customizations" "github.com/aws/aws-sdk-go-v2/service/s3control/types" smithy "github.com/awslabs/smithy-go" "github.com/awslabs/smithy-go/middleware" @@ -184,7 +185,7 @@ func addOperationPutBucketTaggingMiddlewares(stack *middleware.Stack, options Op if err = addMetadataRetrieverMiddleware(stack); err != nil { return err } - if err = addUpdateEndpointMiddleware(stack, options); err != nil { + if err = addPutBucketTaggingUpdateEndpoint(stack, options); err != nil { return err } if err = addResponseErrorMiddleware(stack); err != nil { @@ -251,3 +252,49 @@ func newServiceMetadataMiddleware_opPutBucketTagging(region string) *awsmiddlewa OperationName: "PutBucketTagging", } } + +func copyPutBucketTaggingInputForUpdateEndpoint(params interface{}) (interface{}, error) { + input, ok := params.(*PutBucketTaggingInput) + if !ok { + return nil, fmt.Errorf("expect *PutBucketTaggingInput type, got %T", params) + } + cpy := *input + return &cpy, nil +} +func getPutBucketTaggingARNMember(input interface{}) (*string, bool) { + in := input.(*PutBucketTaggingInput) + if in.Bucket == nil { + return nil, false + } + return in.Bucket, true +} +func setPutBucketTaggingARNMember(input interface{}, v string) error { + in := input.(*PutBucketTaggingInput) + in.Bucket = &v + return nil +} +func backFillPutBucketTaggingAccountID(input interface{}, v string) error { + in := input.(*PutBucketTaggingInput) + if in.AccountId != nil { + if !strings.EqualFold(*in.AccountId, v) { + return fmt.Errorf("error backfilling account id") + } + return nil + } + in.AccountId = &v + return nil +} +func addPutBucketTaggingUpdateEndpoint(stack *middleware.Stack, options Options) error { + return s3controlcust.UpdateEndpoint(stack, s3controlcust.UpdateEndpointOptions{ + Accessor: s3controlcust.UpdateEndpointParameterAccessor{GetARNInput: getPutBucketTaggingARNMember, + BackfillAccountID: backFillPutBucketTaggingAccountID, + GetOutpostIDInput: getOutpostIDFromInput, + UpdateARNField: setPutBucketTaggingARNMember, + CopyInput: copyPutBucketTaggingInputForUpdateEndpoint, + }, + EndpointResolver: options.EndpointResolver, + EndpointResolverOptions: options.EndpointOptions, + UseDualstack: options.UseDualstack, + UseARNRegion: options.UseARNRegion, + }) +} diff --git a/service/s3control/api_op_PutJobTagging.go b/service/s3control/api_op_PutJobTagging.go index af1244dc520..6eb7801ed3e 100644 --- a/service/s3control/api_op_PutJobTagging.go +++ b/service/s3control/api_op_PutJobTagging.go @@ -7,6 +7,7 @@ import ( "fmt" awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + s3controlcust "github.com/aws/aws-sdk-go-v2/service/s3control/internal/customizations" "github.com/aws/aws-sdk-go-v2/service/s3control/types" smithy "github.com/awslabs/smithy-go" "github.com/awslabs/smithy-go/middleware" @@ -165,7 +166,7 @@ func addOperationPutJobTaggingMiddlewares(stack *middleware.Stack, options Optio if err = addMetadataRetrieverMiddleware(stack); err != nil { return err } - if err = addUpdateEndpointMiddleware(stack, options); err != nil { + if err = addPutJobTaggingUpdateEndpoint(stack, options); err != nil { return err } if err = addResponseErrorMiddleware(stack); err != nil { @@ -229,3 +230,43 @@ func newServiceMetadataMiddleware_opPutJobTagging(region string) *awsmiddleware. OperationName: "PutJobTagging", } } + +func copyPutJobTaggingInputForUpdateEndpoint(params interface{}) (interface{}, error) { + input, ok := params.(*PutJobTaggingInput) + if !ok { + return nil, fmt.Errorf("expect *PutJobTaggingInput type, got %T", params) + } + cpy := *input + return &cpy, nil +} +func getPutJobTaggingARNMember(input interface{}) (*string, bool) { + return nil, false +} +func setPutJobTaggingARNMember(input interface{}, v string) error { + return nil +} +func backFillPutJobTaggingAccountID(input interface{}, v string) error { + in := input.(*PutJobTaggingInput) + if in.AccountId != nil { + if !strings.EqualFold(*in.AccountId, v) { + return fmt.Errorf("error backfilling account id") + } + return nil + } + in.AccountId = &v + return nil +} +func addPutJobTaggingUpdateEndpoint(stack *middleware.Stack, options Options) error { + return s3controlcust.UpdateEndpoint(stack, s3controlcust.UpdateEndpointOptions{ + Accessor: s3controlcust.UpdateEndpointParameterAccessor{GetARNInput: getPutJobTaggingARNMember, + BackfillAccountID: backFillPutJobTaggingAccountID, + GetOutpostIDInput: getOutpostIDFromInput, + UpdateARNField: setPutJobTaggingARNMember, + CopyInput: copyPutJobTaggingInputForUpdateEndpoint, + }, + EndpointResolver: options.EndpointResolver, + EndpointResolverOptions: options.EndpointOptions, + UseDualstack: options.UseDualstack, + UseARNRegion: options.UseARNRegion, + }) +} diff --git a/service/s3control/api_op_PutPublicAccessBlock.go b/service/s3control/api_op_PutPublicAccessBlock.go index 2ac705ffc30..7b519acbb7e 100644 --- a/service/s3control/api_op_PutPublicAccessBlock.go +++ b/service/s3control/api_op_PutPublicAccessBlock.go @@ -7,6 +7,7 @@ import ( "fmt" awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + s3controlcust "github.com/aws/aws-sdk-go-v2/service/s3control/internal/customizations" "github.com/aws/aws-sdk-go-v2/service/s3control/types" smithy "github.com/awslabs/smithy-go" "github.com/awslabs/smithy-go/middleware" @@ -114,7 +115,7 @@ func addOperationPutPublicAccessBlockMiddlewares(stack *middleware.Stack, option if err = addMetadataRetrieverMiddleware(stack); err != nil { return err } - if err = addUpdateEndpointMiddleware(stack, options); err != nil { + if err = addPutPublicAccessBlockUpdateEndpoint(stack, options); err != nil { return err } if err = addResponseErrorMiddleware(stack); err != nil { @@ -178,3 +179,43 @@ func newServiceMetadataMiddleware_opPutPublicAccessBlock(region string) *awsmidd OperationName: "PutPublicAccessBlock", } } + +func copyPutPublicAccessBlockInputForUpdateEndpoint(params interface{}) (interface{}, error) { + input, ok := params.(*PutPublicAccessBlockInput) + if !ok { + return nil, fmt.Errorf("expect *PutPublicAccessBlockInput type, got %T", params) + } + cpy := *input + return &cpy, nil +} +func getPutPublicAccessBlockARNMember(input interface{}) (*string, bool) { + return nil, false +} +func setPutPublicAccessBlockARNMember(input interface{}, v string) error { + return nil +} +func backFillPutPublicAccessBlockAccountID(input interface{}, v string) error { + in := input.(*PutPublicAccessBlockInput) + if in.AccountId != nil { + if !strings.EqualFold(*in.AccountId, v) { + return fmt.Errorf("error backfilling account id") + } + return nil + } + in.AccountId = &v + return nil +} +func addPutPublicAccessBlockUpdateEndpoint(stack *middleware.Stack, options Options) error { + return s3controlcust.UpdateEndpoint(stack, s3controlcust.UpdateEndpointOptions{ + Accessor: s3controlcust.UpdateEndpointParameterAccessor{GetARNInput: getPutPublicAccessBlockARNMember, + BackfillAccountID: backFillPutPublicAccessBlockAccountID, + GetOutpostIDInput: getOutpostIDFromInput, + UpdateARNField: setPutPublicAccessBlockARNMember, + CopyInput: copyPutPublicAccessBlockInputForUpdateEndpoint, + }, + EndpointResolver: options.EndpointResolver, + EndpointResolverOptions: options.EndpointOptions, + UseDualstack: options.UseDualstack, + UseARNRegion: options.UseARNRegion, + }) +} diff --git a/service/s3control/api_op_UpdateJobPriority.go b/service/s3control/api_op_UpdateJobPriority.go index 3ef0fddaf0e..b41091ae103 100644 --- a/service/s3control/api_op_UpdateJobPriority.go +++ b/service/s3control/api_op_UpdateJobPriority.go @@ -7,6 +7,7 @@ import ( "fmt" awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + s3controlcust "github.com/aws/aws-sdk-go-v2/service/s3control/internal/customizations" smithy "github.com/awslabs/smithy-go" "github.com/awslabs/smithy-go/middleware" smithyhttp "github.com/awslabs/smithy-go/transport/http" @@ -136,7 +137,7 @@ func addOperationUpdateJobPriorityMiddlewares(stack *middleware.Stack, options O if err = addMetadataRetrieverMiddleware(stack); err != nil { return err } - if err = addUpdateEndpointMiddleware(stack, options); err != nil { + if err = addUpdateJobPriorityUpdateEndpoint(stack, options); err != nil { return err } if err = addResponseErrorMiddleware(stack); err != nil { @@ -200,3 +201,43 @@ func newServiceMetadataMiddleware_opUpdateJobPriority(region string) *awsmiddlew OperationName: "UpdateJobPriority", } } + +func copyUpdateJobPriorityInputForUpdateEndpoint(params interface{}) (interface{}, error) { + input, ok := params.(*UpdateJobPriorityInput) + if !ok { + return nil, fmt.Errorf("expect *UpdateJobPriorityInput type, got %T", params) + } + cpy := *input + return &cpy, nil +} +func getUpdateJobPriorityARNMember(input interface{}) (*string, bool) { + return nil, false +} +func setUpdateJobPriorityARNMember(input interface{}, v string) error { + return nil +} +func backFillUpdateJobPriorityAccountID(input interface{}, v string) error { + in := input.(*UpdateJobPriorityInput) + if in.AccountId != nil { + if !strings.EqualFold(*in.AccountId, v) { + return fmt.Errorf("error backfilling account id") + } + return nil + } + in.AccountId = &v + return nil +} +func addUpdateJobPriorityUpdateEndpoint(stack *middleware.Stack, options Options) error { + return s3controlcust.UpdateEndpoint(stack, s3controlcust.UpdateEndpointOptions{ + Accessor: s3controlcust.UpdateEndpointParameterAccessor{GetARNInput: getUpdateJobPriorityARNMember, + BackfillAccountID: backFillUpdateJobPriorityAccountID, + GetOutpostIDInput: getOutpostIDFromInput, + UpdateARNField: setUpdateJobPriorityARNMember, + CopyInput: copyUpdateJobPriorityInputForUpdateEndpoint, + }, + EndpointResolver: options.EndpointResolver, + EndpointResolverOptions: options.EndpointOptions, + UseDualstack: options.UseDualstack, + UseARNRegion: options.UseARNRegion, + }) +} diff --git a/service/s3control/api_op_UpdateJobStatus.go b/service/s3control/api_op_UpdateJobStatus.go index 72c186f805b..45a8404dcd8 100644 --- a/service/s3control/api_op_UpdateJobStatus.go +++ b/service/s3control/api_op_UpdateJobStatus.go @@ -7,6 +7,7 @@ import ( "fmt" awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + s3controlcust "github.com/aws/aws-sdk-go-v2/service/s3control/internal/customizations" "github.com/aws/aws-sdk-go-v2/service/s3control/types" smithy "github.com/awslabs/smithy-go" "github.com/awslabs/smithy-go/middleware" @@ -141,7 +142,7 @@ func addOperationUpdateJobStatusMiddlewares(stack *middleware.Stack, options Opt if err = addMetadataRetrieverMiddleware(stack); err != nil { return err } - if err = addUpdateEndpointMiddleware(stack, options); err != nil { + if err = addUpdateJobStatusUpdateEndpoint(stack, options); err != nil { return err } if err = addResponseErrorMiddleware(stack); err != nil { @@ -205,3 +206,43 @@ func newServiceMetadataMiddleware_opUpdateJobStatus(region string) *awsmiddlewar OperationName: "UpdateJobStatus", } } + +func copyUpdateJobStatusInputForUpdateEndpoint(params interface{}) (interface{}, error) { + input, ok := params.(*UpdateJobStatusInput) + if !ok { + return nil, fmt.Errorf("expect *UpdateJobStatusInput type, got %T", params) + } + cpy := *input + return &cpy, nil +} +func getUpdateJobStatusARNMember(input interface{}) (*string, bool) { + return nil, false +} +func setUpdateJobStatusARNMember(input interface{}, v string) error { + return nil +} +func backFillUpdateJobStatusAccountID(input interface{}, v string) error { + in := input.(*UpdateJobStatusInput) + if in.AccountId != nil { + if !strings.EqualFold(*in.AccountId, v) { + return fmt.Errorf("error backfilling account id") + } + return nil + } + in.AccountId = &v + return nil +} +func addUpdateJobStatusUpdateEndpoint(stack *middleware.Stack, options Options) error { + return s3controlcust.UpdateEndpoint(stack, s3controlcust.UpdateEndpointOptions{ + Accessor: s3controlcust.UpdateEndpointParameterAccessor{GetARNInput: getUpdateJobStatusARNMember, + BackfillAccountID: backFillUpdateJobStatusAccountID, + GetOutpostIDInput: getOutpostIDFromInput, + UpdateARNField: setUpdateJobStatusARNMember, + CopyInput: copyUpdateJobStatusInputForUpdateEndpoint, + }, + EndpointResolver: options.EndpointResolver, + EndpointResolverOptions: options.EndpointOptions, + UseDualstack: options.UseDualstack, + UseARNRegion: options.UseARNRegion, + }) +} diff --git a/service/s3control/endpoints.go b/service/s3control/endpoints.go index 4a86f8245fe..7bb32fe2781 100644 --- a/service/s3control/endpoints.go +++ b/service/s3control/endpoints.go @@ -84,10 +84,9 @@ func (m *ResolveEndpoint) HandleSerialize(ctx context.Context, in middleware.Ser } ctx = awsmiddleware.SetSigningName(ctx, signingName) } - - ctx = awsmiddleware.SetSigningRegion(ctx, endpoint.SigningRegion) ctx = smithyhttp.SetHostnameImmutable(ctx, endpoint.HostnameImmutable) - + ctx = awsmiddleware.SetSigningRegion(ctx, endpoint.SigningRegion) + ctx = awsmiddleware.SetPartitionID(ctx, endpoint.PartitionID) return next.HandleSerialize(ctx, in) } func addResolveEndpointMiddleware(stack *middleware.Stack, o Options) error { From 4d3dfad612b2bd52431cdb9d5778259b4f0c0ff8 Mon Sep 17 00:00:00 2001 From: skotambkar Date: Mon, 9 Nov 2020 09:22:01 -0800 Subject: [PATCH 11/21] fix codegen to only apply this change to s3 and s3control service --- .../smithy/aws/go/codegen/customization/S3UpdateEndpoint.java | 1 - 1 file changed, 1 deletion(-) diff --git a/codegen/smithy-aws-go-codegen/src/main/java/software/amazon/smithy/aws/go/codegen/customization/S3UpdateEndpoint.java b/codegen/smithy-aws-go-codegen/src/main/java/software/amazon/smithy/aws/go/codegen/customization/S3UpdateEndpoint.java index 05a6502cb0d..b740ba7d8e9 100644 --- a/codegen/smithy-aws-go-codegen/src/main/java/software/amazon/smithy/aws/go/codegen/customization/S3UpdateEndpoint.java +++ b/codegen/smithy-aws-go-codegen/src/main/java/software/amazon/smithy/aws/go/codegen/customization/S3UpdateEndpoint.java @@ -146,7 +146,6 @@ public void processFinalizedModel(GoSettings settings, Model model) { runtimeClientPlugins.add(RuntimeClientPlugin.builder() .servicePredicate(S3UpdateEndpoint::isS3SharedService) - .operationPredicate((m, s, o) -> o.equals(operation)) .registerMiddleware(MiddlewareRegistrar.builder() .resolvedFunction(SymbolUtils.createValueSymbolBuilder(helperFuncName) .build()) From efd767e266a56ad783c2328bca0846eb3aa56c8e Mon Sep 17 00:00:00 2001 From: skotambkar Date: Mon, 9 Nov 2020 09:49:30 -0800 Subject: [PATCH 12/21] fix concurrent-change exception and operation predicate behavior for runtime plugin --- .../aws/go/codegen/customization/S3UpdateEndpoint.java | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/codegen/smithy-aws-go-codegen/src/main/java/software/amazon/smithy/aws/go/codegen/customization/S3UpdateEndpoint.java b/codegen/smithy-aws-go-codegen/src/main/java/software/amazon/smithy/aws/go/codegen/customization/S3UpdateEndpoint.java index b740ba7d8e9..72f19b910f9 100644 --- a/codegen/smithy-aws-go-codegen/src/main/java/software/amazon/smithy/aws/go/codegen/customization/S3UpdateEndpoint.java +++ b/codegen/smithy-aws-go-codegen/src/main/java/software/amazon/smithy/aws/go/codegen/customization/S3UpdateEndpoint.java @@ -62,7 +62,7 @@ public class S3UpdateEndpoint implements GoIntegration { private static final String USE_ARNREGION_OPTION = "UseARNRegion"; // list of runtime-client plugins - private static final List runtimeClientPlugins = new ArrayList<>(); + private final List runtimeClientPlugins = new ArrayList<>(); private static boolean isS3Service(Model model, ServiceShape service) { return service.expectTrait(ServiceTrait.class).getSdkId().equalsIgnoreCase("S3"); @@ -145,7 +145,12 @@ public void processFinalizedModel(GoSettings settings, Model model) { ); runtimeClientPlugins.add(RuntimeClientPlugin.builder() - .servicePredicate(S3UpdateEndpoint::isS3SharedService) + .operationPredicate((m,s,o)-> { + if (!isS3SharedService(m, s)) { + return false; + } + return o.equals(operation); + }) .registerMiddleware(MiddlewareRegistrar.builder() .resolvedFunction(SymbolUtils.createValueSymbolBuilder(helperFuncName) .build()) From 9f6037a87bf949890a01595dbed7e1a619ca5bad Mon Sep 17 00:00:00 2001 From: skotambkar Date: Fri, 13 Nov 2020 14:51:04 -0800 Subject: [PATCH 13/21] java feedback changes --- .../aws/go/codegen/EndpointGenerator.java | 25 +- .../customization/S3UpdateEndpoint.java | 390 +++++++++++------- 2 files changed, 253 insertions(+), 162 deletions(-) diff --git a/codegen/smithy-aws-go-codegen/src/main/java/software/amazon/smithy/aws/go/codegen/EndpointGenerator.java b/codegen/smithy-aws-go-codegen/src/main/java/software/amazon/smithy/aws/go/codegen/EndpointGenerator.java index a7d903f1665..ad9cbcaf3e7 100644 --- a/codegen/smithy-aws-go-codegen/src/main/java/software/amazon/smithy/aws/go/codegen/EndpointGenerator.java +++ b/codegen/smithy-aws-go-codegen/src/main/java/software/amazon/smithy/aws/go/codegen/EndpointGenerator.java @@ -77,22 +77,21 @@ public class EndpointGenerator implements Runnable { private final Boolean isInternalOnly; private final String resolvedSdkID; - public EndpointGenerator( GoSettings settings, Model model, TriConsumer> writerFactory ) { - this.settings = settings; - this.model = model; - this.writerFactory = writerFactory; - serviceShape = settings.getService(model); - this.endpointPrefix = getEndpointPrefix(serviceShape); - this.endpointData = Node.parse(IoUtils.readUtf8Resource(getClass(), "endpoints.json")).expectObjectNode(); - validateVersion(); - loadPartitions(); - this.isInternalOnly = false; - this.resolvedSdkID = serviceShape.expectTrait(ServiceTrait.class).getSdkId(); + this( + settings, + model, + writerFactory, + settings.getService(model).expectTrait(ServiceTrait.class) + .getSdkId(), + settings.getService(model).expectTrait(ServiceTrait.class) + .getArnNamespace(), + false + ); } public EndpointGenerator( @@ -109,10 +108,10 @@ public EndpointGenerator( serviceShape = settings.getService(model); this.endpointPrefix = getEndpointPrefix(sdkID, arnNamespace); this.endpointData = Node.parse(IoUtils.readUtf8Resource(getClass(), "endpoints.json")).expectObjectNode(); - validateVersion(); - loadPartitions(); this.isInternalOnly = internalOnly; this.resolvedSdkID = sdkID; + validateVersion(); + loadPartitions(); } private void validateVersion() { diff --git a/codegen/smithy-aws-go-codegen/src/main/java/software/amazon/smithy/aws/go/codegen/customization/S3UpdateEndpoint.java b/codegen/smithy-aws-go-codegen/src/main/java/software/amazon/smithy/aws/go/codegen/customization/S3UpdateEndpoint.java index 72f19b910f9..0716037233f 100644 --- a/codegen/smithy-aws-go-codegen/src/main/java/software/amazon/smithy/aws/go/codegen/customization/S3UpdateEndpoint.java +++ b/codegen/smithy-aws-go-codegen/src/main/java/software/amazon/smithy/aws/go/codegen/customization/S3UpdateEndpoint.java @@ -20,6 +20,7 @@ import java.util.ArrayList; import java.util.List; import java.util.Set; +import java.util.TreeSet; import java.util.stream.Collectors; import software.amazon.smithy.aws.traits.ServiceTrait; import software.amazon.smithy.codegen.core.CodegenException; @@ -114,14 +115,14 @@ public void writeAdditionalFiles( // if service is s3control if (isS3ControlService(model, service)) { - s3control obj = new s3control(service); - obj.writeAdditionalFiles(settings, model, symbolProvider, goDelegator); + S3control s3control = new S3control(service); + s3control.writeAdditionalFiles(settings, model, symbolProvider, goDelegator); } // check if service is s3 if (isS3Service(model, service)) { - s3 obj = new s3(service); - obj.writeAdditionalFiles(settings, model, symbolProvider, goDelegator); + S3 s3 = new S3(service); + s3.writeAdditionalFiles(settings, model, symbolProvider, goDelegator); } } @@ -145,7 +146,7 @@ public void processFinalizedModel(GoSettings settings, Model model) { ); runtimeClientPlugins.add(RuntimeClientPlugin.builder() - .operationPredicate((m,s,o)-> { + .operationPredicate((m, s, o) -> { if (!isS3SharedService(m, s)) { return false; } @@ -185,7 +186,7 @@ public List getClientPlugins() { )) .build() )); - runtimeClientPlugins.addAll(s3.getClientPlugins()); + runtimeClientPlugins.addAll(S3.getClientPlugins()); return runtimeClientPlugins; } @@ -193,24 +194,22 @@ public List getClientPlugins() { /* * s3 class is the private class handling s3 goIntegration for endpoint mutations */ - private static class s3 { - + private static class S3 { // options to be generated on Client's options type private static final String USE_PATH_STYLE_OPTION = "UsePathStyle"; private static final String USE_ACCELERATE_OPTION = "UseAccelerate"; - // private function getter constant - private static final String GET_BUCKET_FROM_INPUT = "getBucketFromInput"; - private static final String SUPPORT_ACCELERATE = "supportAccelerate"; - + private static final String NOP_BUCKET_ACCESSOR = "nopGetBucketAccessor"; // service shape representing s3 private final ServiceShape service; + // list of operations that take in bucket as input + private final Set SUPPORT_BUCKET_AS_INPUT = new TreeSet<>(); // list of operations that do not support accelerate private final Set NOT_SUPPORT_ACCELERATE = SetUtils.of( "ListBuckets", "CreateBucket", "DeleteBucket" ); - private s3(ServiceShape service) { + private S3(ServiceShape service) { this.service = service; } @@ -251,33 +250,39 @@ private static List getClientPlugins() { return list; } + // retrieves function name for get bucket accessor function + private String getBucketAccessorFuncName(String operationName) { + return getterFuncName(operationName, "BucketMember"); + } + private void writeAdditionalFiles( GoSettings settings, Model model, SymbolProvider symbolProvider, GoDelegator goDelegator ) { - goDelegator.useShapeWriter(service, writer -> { - writeInputGetter(writer, model, symbolProvider, service); - }); - - goDelegator.useShapeWriter(service, writer -> { - writeAccelerateValidator(writer, model, symbolProvider, service); - }); for (ShapeId operationID : service.getAllOperations()) { OperationShape operation = model.expectShape(operationID, OperationShape.class); goDelegator.useShapeWriter(operation, writer -> { - // get input shape from operation - StructureShape input = model.expectShape(operation.getInput().get(), StructureShape.class); + // generate get bucket member helper function + writeGetBucketMemberHelper(writer, model, symbolProvider, operation); // generate update endpoint middleware helper function writeMiddlewareHelper(writer, model, symbolProvider, operation); }); } + + goDelegator.useShapeWriter(service, writer -> { + // generate NOP bucket accessor helper + writeNOPBucketAccessorHelper(writer); + }); } private void writeMiddlewareHelper( - GoWriter writer, Model model, SymbolProvider symbolProvider, OperationShape operationShape + GoWriter writer, + Model model, + SymbolProvider symbolProvider, + OperationShape operationShape ) { // imports writer.addUseImports(SmithyGoDependency.SMITHY_MIDDLEWARE); @@ -289,7 +294,8 @@ private void writeMiddlewareHelper( addMiddlewareFuncName(symbolProvider.toSymbol(operationShape).getName(), UPDATE_ENDPOINT_INTERNAL_ADDER), () -> { writer.write("return $T(stack, $T{ \n" - + "Accessor : $T{GetBucketFromInput: $L,\n SupportsAccelerate: $L,\n }, \n" + + "Accessor : $T{\n " + + "GetBucketFromInput: $L,\n SupportsAccelerate: $L,\n }, \n" + "UsePathStyle: options.$L,\n " + "UseAccelerate: options.$L,\n " + "EndpointResolver: options.EndpointResolver,\n " @@ -301,8 +307,9 @@ private void writeMiddlewareHelper( AwsCustomGoDependency.S3_CUSTOMIZATION).build(), SymbolUtils.createValueSymbolBuilder(UPDATE_ENDPOINT_INTERNAL_PARAMETER_ACCESSOR, AwsCustomGoDependency.S3_CUSTOMIZATION).build(), - GET_BUCKET_FROM_INPUT, - SUPPORT_ACCELERATE, + SUPPORT_BUCKET_AS_INPUT.contains(operationName) ? + getBucketAccessorFuncName(operationName) : NOP_BUCKET_ACCESSOR, + !NOT_SUPPORT_ACCELERATE.contains(operationName), USE_PATH_STYLE_OPTION, USE_ACCELERATE_OPTION, USE_DUALSTACK_OPTION, @@ -312,68 +319,79 @@ private void writeMiddlewareHelper( writer.insertTrailingNewline(); } - private void writeInputGetter( - GoWriter writer, Model model, SymbolProvider symbolProvider, ServiceShape service + private void writeNOPBucketAccessorHelper( + GoWriter writer ) { writer.writeDocs( - "getBucketFromInput returns a boolean indicating if the input has a modeled bucket name, " + - " and a pointer to string denoting a provided bucket member value"); - writer.openBlock("func getBucketFromInput(input interface{}) (*string, bool) {", "}", () -> { - writer.openBlock("switch i:= input.(type) {", "}", () -> { - service.getAllOperations().forEach((operationId) -> { - OperationShape operation = model.expectShape(operationId, OperationShape.class); - StructureShape input = model.expectShape(operation.getInput().get(), StructureShape.class); - - List targetBucketShape = input.getAllMembers().values().stream() - .filter(m -> m.getTarget().getName().equals("BucketName")) - .collect(Collectors.toList()); - // if model has multiple top level shapes targeting `BucketName`, we throw a codegen exception - if (targetBucketShape.size() > 1) { - throw new CodegenException( - "BucketName shape should be targeted by only one input member, found " + - targetBucketShape.size() + " for Input shape: " + input.getId()); - } - - if (!targetBucketShape.isEmpty() && !operationId.getName().equalsIgnoreCase( - "GetBucketLocation")) { - writer.write("case $P: return i.$L, true", symbolProvider.toSymbol(input), - targetBucketShape.get(0).getMemberName()); - } + String.format("%s is no-op accessor for operation that don't support bucket member as input", + NOP_BUCKET_ACCESSOR) + ); + writer.openBlock("func $L(input interface{}) (*string, bool) {", "}", NOP_BUCKET_ACCESSOR, + () -> { + writer.write("return nil, false"); }); - writer.write("default: return nil, false"); - }); - }); + writer.insertTrailingNewline(); } - private void writeAccelerateValidator( - GoWriter writer, Model model, SymbolProvider symbolProvider, ServiceShape service + private void writeGetBucketMemberHelper( + GoWriter writer, + Model model, + SymbolProvider symbolProvider, + OperationShape operation ) { + Symbol operationSymbol = symbolProvider.toSymbol(operation); + String operationName = operationSymbol.getName(); + String funcName = getBucketAccessorFuncName(operationSymbol.getName()); + + StructureShape input = model.expectShape(operation.getInput().get(), StructureShape.class); + + List targetBucketShape = input.getAllMembers().values().stream() + .filter(m -> m.getTarget().getName().equals("BucketName")) + .collect(Collectors.toList()); + // if model has multiple top level shapes targeting `BucketName`, we throw a codegen exception + if (targetBucketShape.size() > 1) { + throw new CodegenException( + "BucketName shape should be targeted by only one input member, found " + + targetBucketShape.size() + " for Input shape: " + input.getId()); + } + + if (targetBucketShape.isEmpty()) { + return; + } + + // add operation to set denoting operation supports bucket input member + SUPPORT_BUCKET_AS_INPUT.add(operationName); + + writer.writeDocs( - "supportAccelerate returns a boolean indicating if the operation associated with the provided input " - + "supports S3 Transfer Acceleration"); - writer.openBlock("func $L(input interface{}) bool {", "}", SUPPORT_ACCELERATE, () -> { - writer.openBlock("switch input.(type) {", "}", () -> { - for (ShapeId operationId : service.getAllOperations()) { - // check if operation does not support s3 accelerate - if (NOT_SUPPORT_ACCELERATE.contains(operationId.getName())) { - OperationShape operation = model.expectShape(operationId, OperationShape.class); - StructureShape input = model.expectShape(operation.getInput().get(), StructureShape.class); - writer.write("case $P: return false", symbolProvider.toSymbol(input)); - } - } - writer.write("default: return true"); - }); - }); + String.format("%s returns a pointer to string denoting a provided bucket member value" + + "and a boolean indicating if the input has a modeled bucket name,", funcName) + ); + writer.openBlock("func $L(input interface{}) (*string, bool) {", "}", funcName, + () -> { + String targetShapeName = targetBucketShape.get(0).getMemberName(); + writer.write("in := input.($P)", symbolProvider.toSymbol(input)); + writer.openBlock("if in.$L == nil {", "}", targetShapeName, () -> { + writer.write("return nil, false"); + }); + writer.write("return in.$L, true", targetShapeName); + }); + writer.insertTrailingNewline(); } } /** * s3control class is the private class handling s3control goIntegration for endpoint mutations */ - private static class s3control { - - // S3Control function getter constant - private static final String GET_OUTPOST_ID_FROM_INPUT = "getOutpostIDFromInput"; + private static class S3control { + + // nop accessor constants + private static final String NOP_GET_ARN_ACCESSOR = "nopGetARNAccessor"; + private static final String NOP_SET_ARN_ACCESSOR = "nopSetARNAccessor"; + private static final String NOP_BACKFILL_ACCOUNT_ID_HELPER = "nopBackfillAccountIDAccessor"; + private static final String NOP_GET_OUTPOST_ID_FROM_INPUT = "nopGetOutpostIDFromInput"; + // Map of service, list of operationName that support ARNs as input + private static final Set supportsARN = new TreeSet<>(); // service associated with this class private final ServiceShape service; // List of operations that use Accesspoint field as ARN input source. @@ -386,7 +404,7 @@ private static class s3control { "CreateBucket", "ListRegionalBuckets" ); - private s3control(ServiceShape service) { + private S3control(ServiceShape service) { this.service = service; } @@ -405,17 +423,17 @@ private static final String getARNMemberFuncName(String operation) { return getterFuncName(operation, "ARNMember"); } + // returns a function identifier string for outpost id member getter function + private static final String getOutpostIDMemberFuncName(String operation) { + return getterFuncName(operation, "OutpostIDMember"); + } + void writeAdditionalFiles( GoSettings settings, Model model, SymbolProvider symbolProvider, GoDelegator goDelegator ) { - goDelegator.useShapeWriter(service, writer -> { - // generate outpost id helper function - writeOutpostIDHelper(writer, model, symbolProvider, service); - }); - for (ShapeId operationID : service.getAllOperations()) { OperationShape operation = model.expectShape(operationID, OperationShape.class); goDelegator.useShapeWriter(operation, writer -> { @@ -423,6 +441,8 @@ void writeAdditionalFiles( StructureShape input = model.expectShape(operation.getInput().get(), StructureShape.class); // generate input copy function writeInputCopy(writer, symbolProvider, input); + // generate outpost id accessor function + writeOutpostIDHelper(writer, model, symbolProvider, operation); // generate arn helper function writeARNHelper(writer, model, symbolProvider, operation); // generate backfill account id helper function @@ -431,6 +451,63 @@ void writeAdditionalFiles( writeMiddlewareHelper(writer, model, symbolProvider, operation); }); } + + // services must be processed later than operations to help generation of Nop helpers + goDelegator.useShapeWriter(service, writer -> { + // generate outpost id helper function + writeNopOutpostIDHelper(writer); + // generate Nop methods for ARNHelper + writeNopARNHelper(writer); + // generate Nop methods for BackfillAccountIDHelper + writeNopBackfillAccountIDHelper(writer); + }); + } + + private void writeNopARNHelper( + GoWriter writer + ) { + // generate get arn member accessor getter function + writer.writeDocs("nopGetARNAccessor provides a nop get accessor function to be used " + + "when a certain operation does not support ARNs"); + writer.openBlock("func $L (input interface{}) (*string, bool) { ", "}", + NOP_GET_ARN_ACCESSOR, () -> { + writer.write("return nil, false"); + }); + writer.insertTrailingNewline(); + + // generate set arn member accessor setter function + writer.writeDocs("nopSetARNAccessor provides a nop set accessor function to be used " + + "when a certain operation does not support ARNs"); + writer.openBlock("func $L (input interface{}, v string) error {", "}", + NOP_SET_ARN_ACCESSOR, () -> { + writer.write("return nil"); + }); + writer.insertTrailingNewline(); + } + + private void writeNopBackfillAccountIDHelper( + GoWriter writer + ) { + // generate arn member accessor getter function + writer.writeDocs("nopBackfillAccountIDAccessor provides a nop accessor function to be used " + + "when a certain operation does not need to validate and backfill account id"); + writer.openBlock("func $L (input interface{}, v string) error {", "}", + NOP_BACKFILL_ACCOUNT_ID_HELPER, () -> { + writer.write("return nil"); + }); + writer.insertTrailingNewline(); + } + + private void writeNopOutpostIDHelper( + GoWriter writer + ) { + writer.writeDocs("nopGetOutpostIDFromInput provides a nop accessor function to be used " + + "when endpoint customization behavior is not based on presence of outpost id member if any"); + writer.openBlock("func $L (input interface{}) (*string, bool) {", "}", + NOP_GET_OUTPOST_ID_FROM_INPUT, () -> { + writer.write("return nil, false"); + }); + writer.insertTrailingNewline(); } private void writeMiddlewareHelper( @@ -458,13 +535,14 @@ private void writeMiddlewareHelper( AwsCustomGoDependency.S3CONTROL_CUSTOMIZATION).build(), SymbolUtils.createValueSymbolBuilder(UPDATE_ENDPOINT_INTERNAL_PARAMETER_ACCESSOR, AwsCustomGoDependency.S3CONTROL_CUSTOMIZATION).build(), - LIST_OUTPOST_ID_INPUT.contains(operationName) ? "nil" : getARNMemberFuncName( - operationName), - LIST_OUTPOST_ID_INPUT.contains(operationName) ? "nil" : backFillAccountIDFuncName( - operationName), - GET_OUTPOST_ID_FROM_INPUT, - LIST_OUTPOST_ID_INPUT.contains(operationName) ? "nil" : setARNMemberFuncName( - operationName), + supportsARN.contains(operationName) ? getARNMemberFuncName( + operationName) : NOP_GET_ARN_ACCESSOR, + supportsARN.contains(operationName) ? backFillAccountIDFuncName( + operationName) : NOP_BACKFILL_ACCOUNT_ID_HELPER, + LIST_OUTPOST_ID_INPUT.contains(operationName) ? getOutpostIDMemberFuncName( + operationName) : NOP_GET_OUTPOST_ID_FROM_INPUT, + supportsARN.contains(operationName) ? setARNMemberFuncName( + operationName) : NOP_SET_ARN_ACCESSOR, copyInputFuncName(symbolProvider.toSymbol(inputShape).getName()), USE_DUALSTACK_OPTION, USE_ARNREGION_OPTION @@ -531,23 +609,27 @@ private void writeBackfillAccountIDHelper( targetAccountIDShape.size() + " for Input shape: " + input.getId()); } + if (targetAccountIDShape.isEmpty()) { + return; + } + Symbol inputSymbol = symbolProvider.toSymbol(input); writer.write("func $L (input interface{}, v string) error { ", backFillAccountIDFuncName(symbolProvider.toSymbol(operation).getName())); - if (!targetAccountIDShape.isEmpty()) { - String memberName = targetAccountIDShape.get(0).getMemberName(); - writer.write("in := input.($P)", inputSymbol); - writer.write("if in.$L != nil {", memberName); - - writer.addUseImports(SmithyGoDependency.STRINGS); - writer.write("if !strings.EqualFold(*in.$L, v) {", memberName); - - writer.addUseImports(SmithyGoDependency.FMT); - writer.write("return fmt.Errorf(\"error backfilling account id\") }"); - writer.write("return nil }"); - writer.write("in.$L = &v", memberName); - } + String memberName = targetAccountIDShape.get(0).getMemberName(); + writer.write("in := input.($P)", inputSymbol); + writer.write("if in.$L != nil {", memberName); + + writer.addUseImports(SmithyGoDependency.STRINGS); + writer.write("if !strings.EqualFold(*in.$L, v) {", memberName); + + writer.addUseImports(SmithyGoDependency.FMT); + writer.write("return fmt.Errorf(\"error backfilling account id\") }"); writer.write("return nil }"); + writer.write("in.$L = &v", memberName); + writer.write("return nil }"); + + writer.insertTrailingNewline(); } /** @@ -576,79 +658,89 @@ private void writeARNHelper( listOfARNMembers.size() + " for Input shape: " + input.getId()); } + if (listOfARNMembers.isEmpty()) { + return; + } + + String operationName = symbolProvider.toSymbol(operation).getName(); + // this operation supports taking arn as input + supportsARN.add(operationName); + Symbol inputSymbol = symbolProvider.toSymbol(input); + String memberName = listOfARNMembers.get(0).getMemberName(); // generate arn member accessor getter function - writer.write("func $L (input interface{}) (*string, bool) { ", + writer.write("func $L (input interface{}) (*string, bool) {", getARNMemberFuncName(symbolProvider.toSymbol(operation).getName())); - if (!listOfARNMembers.isEmpty()) { - String memberName = listOfARNMembers.get(0).getMemberName(); - writer.write("in := input.($P)", inputSymbol); - writer.write("if in.$L == nil {return nil, false }", memberName); - writer.write("return in.$L, true }", memberName); - } else { - writer.write("return nil, false }"); - } + writer.write("in := input.($P)", inputSymbol); + writer.write("if in.$L == nil {return nil, false }", memberName); + writer.write("return in.$L, true }", memberName); writer.insertTrailingNewline(); // generate arn member accessor setter function writer.write("func $L (input interface{}, v string) error {", setARNMemberFuncName(symbolProvider.toSymbol(operation).getName())); - if (!listOfARNMembers.isEmpty()) { - String memberName = listOfARNMembers.get(0).getMemberName(); - writer.write("in := input.($P)", inputSymbol); - writer.write("in.$L = &v", memberName); - } + writer.write("in := input.($P)", inputSymbol); + writer.write("in.$L = &v", memberName); writer.write("return nil }"); + + writer.insertTrailingNewline(); } /** * writes OutpostID Helper function for operations CreateBucket and ListRegionalBuckets *

* Generates code: - * func getOutpostIDFromInput (in interface{}) (*string, bool) { - * switch in.(type) { - * case CreateBucket: return in.OutpostId, true - * case listRegionalBuckets : return in.OutpostID, true - * default: nil, false + * func getOutpostIDHelper (in interface{}) (*string, bool) { + * i, ok := input.(*OpName) + * if !ok { + * return nil, fmt.Errorf("Expected input of type *OpName, got %T", input) * } + * return i., nil * } */ private void writeOutpostIDHelper( - GoWriter writer, Model model, SymbolProvider symbolProvider, ServiceShape service + GoWriter writer, + Model model, + SymbolProvider symbolProvider, + OperationShape operation ) { + String operationName = symbolProvider.toSymbol(operation).getName(); + if (!LIST_OUTPOST_ID_INPUT.contains(operationName)) { + return; + } + + String funcName = getOutpostIDMemberFuncName(operationName); + writer.writeDocs( - "getOutpostIDFromInput returns a boolean indicating if the input has a modeled outpost-id, " + - " and a pointer to string denoting a provided outpost-id member value"); + String.format("%s returns a pointer to string denoting a provided outpost-id member value" + + " and a boolean indicating if the input has a modeled outpost-id,", funcName)); writer.openBlock("func $L (input interface{}) (*string, bool) {", "}", - GET_OUTPOST_ID_FROM_INPUT, () -> { - writer.openBlock("switch i:= input.(type) {", "}", () -> { - for (ShapeId operationId : service.getAllOperations()) { - // customization only applied to operations CreateBucket, ListRegionalBuckets - if (!LIST_OUTPOST_ID_INPUT.contains(operationId.getName())) { - continue; - } - OperationShape operation = model.expectShape(operationId, OperationShape.class); - StructureShape input = model.expectShape(operation.getInput().get(), - StructureShape.class); - List outpostIDMemberShapes = input.getAllMembers().values().stream() - .filter(m -> m.getMemberName().equalsIgnoreCase("OutpostId")) - .collect(Collectors.toList()); - // if model has multiple top level shapes targeting `OutpostId`, we throw a codegen exception - if (outpostIDMemberShapes.size() > 1) { - throw new CodegenException( - "OutpostID shape should be targeted by only one input member, found " + - outpostIDMemberShapes.size() + " for Input shape: " + input.getId()); - } - - if (!outpostIDMemberShapes.isEmpty()) { - writer.write("case $P: return i.$L, true", symbolProvider.toSymbol(input), - outpostIDMemberShapes.get(0).getMemberName()); - } - } - writer.write("default: return nil, false"); + funcName, () -> { + StructureShape input = model.expectShape(operation.getInput().get(), + StructureShape.class); + List outpostIDMemberShapes = input.getAllMembers().values().stream() + .filter(m -> m.getMemberName().equalsIgnoreCase("OutpostId")) + .collect(Collectors.toList()); + // if model has multiple top level shapes targeting `OutpostId`, we throw a codegen exception + if (outpostIDMemberShapes.size() > 1) { + throw new CodegenException( + "OutpostID shape should be targeted by only one input member, found " + + outpostIDMemberShapes.size() + " for Input shape: " + input.getId()); + } + + if (outpostIDMemberShapes.isEmpty()) { + LIST_OUTPOST_ID_INPUT.remove(operationName); + } + + Symbol inputSymbol = symbolProvider.toSymbol(input); + String memberName = outpostIDMemberShapes.get(0).getMemberName(); + writer.write("in := input.($P)", inputSymbol); + writer.openBlock("if in.$L == nil {", "}", memberName, () -> { + writer.write("return nil, false"); }); + writer.write("return in.$L, true", memberName); }); } } From 708ee6f4379004d2e98c80c2fac3bd9cb80d1724 Mon Sep 17 00:00:00 2001 From: skotambkar Date: Fri, 13 Nov 2020 14:53:11 -0800 Subject: [PATCH 14/21] updates s3 shared errors, adds s3shared metadata for cloned key, and feedback around naming of arn lookup middleware --- service/internal/s3shared/arn_lookup.go | 8 ++-- service/internal/s3shared/endpoint_error.go | 50 ++++++++------------- service/internal/s3shared/metadata.go | 20 +++++++++ 3 files changed, 42 insertions(+), 36 deletions(-) create mode 100644 service/internal/s3shared/metadata.go diff --git a/service/internal/s3shared/arn_lookup.go b/service/internal/s3shared/arn_lookup.go index 81854e96d79..617f6400992 100644 --- a/service/internal/s3shared/arn_lookup.go +++ b/service/internal/s3shared/arn_lookup.go @@ -50,18 +50,18 @@ func (m *ARNLookup) HandleInitialize(ctx context.Context, in middleware.Initiali return next.HandleInitialize(ctx, in) } -// arnResourceValue is the key set on context used to identify, retrive an ARN resource +// arnResourceKey is the key set on context used to identify, retrive an ARN resource // if present on the context. -type arnResourceValue struct { +type arnResourceKey struct { } // SetARNResourceOnContext sets arn on context func setARNResourceOnContext(ctx context.Context, value arn.ARN) context.Context { - return context.WithValue(ctx, arnResourceValue{}, value) + return context.WithValue(ctx, arnResourceKey{}, value) } // GetARNResourceFromContext returns an ARN from context and a bool indicating presence of ARN on ctx func GetARNResourceFromContext(ctx context.Context) (arn.ARN, bool) { - v, ok := ctx.Value(arnResourceValue{}).(arn.ARN) + v, ok := ctx.Value(arnResourceKey{}).(arn.ARN) return v, ok } diff --git a/service/internal/s3shared/endpoint_error.go b/service/internal/s3shared/endpoint_error.go index f1688c35745..7422151025e 100644 --- a/service/internal/s3shared/endpoint_error.go +++ b/service/internal/s3shared/endpoint_error.go @@ -20,27 +20,27 @@ type InvalidARNError struct { origErr error } -// Error returns the InvalidARNError +// Code returns the invalid ARN error code +func (e InvalidARNError) Code() string { + return invalidARNErrorErrCode +} + +// Error returns the InvalidARN error string func (e InvalidARNError) Error() string { var extra string if e.resource != nil { extra = "ARN: " + e.resource.String() } - return (SprintError(e.Code(), e.Message(), extra, e.origErr)) -} - -// Code returns the invalid ARN error code -func (e InvalidARNError) Code() string { - return invalidARNErrorErrCode -} + msg := e.Code() + " : " + e.message + if extra != "" { + msg = msg + "\n\t" + extra + } -// Message returns the message for Invalid ARN error -func (e InvalidARNError) Message() string { - return e.message + return msg } // OrigErr is the original error wrapped by Invalid ARN Error -func (e InvalidARNError) OrigErr() error { +func (e InvalidARNError) Unwrap() error { return e.origErr } @@ -85,7 +85,11 @@ func (e ConfigurationError) Error() string { extra := fmt.Sprintf("ARN: %s, client partition: %s, client region: %s", e.resource, e.clientPartitionID, e.clientRegion) - return SprintError(e.Code(), e.Message(), extra, e.origErr) + msg := e.Code() + " : " + e.message + if extra != "" { + msg = msg + "\n\t" + extra + } + return msg } // Code returns configuration error's error-code @@ -93,13 +97,8 @@ func (e ConfigurationError) Code() string { return configurationErrorErrCode } -// Message returns the configuration error message -func (e ConfigurationError) Message() string { - return e.message -} - // OrigErr is the original error wrapped by Configuration Error -func (e ConfigurationError) OrigErr() error { +func (e ConfigurationError) Unwrap() error { return e.origErr } @@ -179,16 +178,3 @@ func NewClientConfiguredForDualStackError(resource arn.Resource, clientPartition clientRegion: clientRegion, } } - -// SprintError returns a formatted error message string -func SprintError(code, message, extra string, origErr error) string { - msg := code + " : " + message - if extra != "" { - msg = msg + "\n\t" + extra - } - if origErr != nil { - // TODO: replace origErr to use %w - msg = msg + "\ncaused by: " + origErr.Error() - } - return msg -} diff --git a/service/internal/s3shared/metadata.go b/service/internal/s3shared/metadata.go new file mode 100644 index 00000000000..e0a7118a57a --- /dev/null +++ b/service/internal/s3shared/metadata.go @@ -0,0 +1,20 @@ +package s3shared + +import ( + "context" +) + +// clonedInputKey used to denote if request input was cloned. +type clonedInputKey struct{} + +// SetClonedInputKey sets a key on context to denote input was cloned previously +func SetClonedInputKey(ctx context.Context, value bool) context.Context { + return context.WithValue(ctx, clonedInputKey{}, value) +} + +// IsClonedInput retrieves if context key for cloned input was set. +// If set, we can infer that the reuqest input was cloned previously. +func IsClonedInput(ctx context.Context) bool { + v, _ := ctx.Value(clonedInputKey{}).(bool) + return v +} From 8553c9402a0d54f8ff1941c8840fda762b57bc63 Mon Sep 17 00:00:00 2001 From: skotambkar Date: Fri, 13 Nov 2020 14:56:08 -0800 Subject: [PATCH 15/21] s3 control customization feedback changes, also uncomments test cases --- .../internal/customizations/backfill_input.go | 28 +- .../customizations/process_arn_resource.go | 32 +- .../customizations/update_endpoint.go | 11 +- .../customizations/update_endpoint_test.go | 449 +++++++++--------- 4 files changed, 274 insertions(+), 246 deletions(-) diff --git a/service/s3control/internal/customizations/backfill_input.go b/service/s3control/internal/customizations/backfill_input.go index dac1dd43273..a48714890b2 100644 --- a/service/s3control/internal/customizations/backfill_input.go +++ b/service/s3control/internal/customizations/backfill_input.go @@ -9,9 +9,9 @@ import ( "github.com/aws/aws-sdk-go-v2/service/internal/s3shared" ) -// BackfillInputMiddleware validates and backfill's values from ARN into request serializable input. +// BackfillInput validates and backfill's values from ARN into request serializable input. // This middleware must be executed after `ARNLookup` and before `inputValidationMiddleware`. -type BackfillInputMiddleware struct { +type BackfillInput struct { // CopyInput creates a copy of input to be modified, this ensures the original input is not modified. CopyInput func(interface{}) (interface{}, error) @@ -22,12 +22,12 @@ type BackfillInputMiddleware struct { } // ID representing the middleware -func (m *BackfillInputMiddleware) ID() string { - return "S3Control:BackfillInputMiddleware" +func (m *BackfillInput) ID() string { + return "S3Control:BackfillInput" } // HandleInitialize handles the middleware behavior in an Initialize step. -func (m *BackfillInputMiddleware) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( +func (m *BackfillInput) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( out middleware.InitializeOutput, metadata middleware.Metadata, err error, ) { // fetch arn from context @@ -36,17 +36,23 @@ func (m *BackfillInputMiddleware) HandleInitialize(ctx context.Context, in middl return next.HandleInitialize(ctx, in) } - // create a copy of input, and assign it on params - in.Parameters, err = m.CopyInput(in.Parameters) - if err != nil { - return out, metadata, fmt.Errorf("error creating a copy of input") - } - // if not supported, move to next if m.BackfillAccountID == nil { return next.HandleInitialize(ctx, in) } + // check if input is already cloned + if !s3shared.IsClonedInput(ctx) { + // create a copy of input, and assign it on params + in.Parameters, err = m.CopyInput(in.Parameters) + if err != nil { + return out, metadata, fmt.Errorf("error creating a copy of input") + } + // set clone key on context + ctx = s3shared.SetClonedInputKey(ctx, true) + } + + // backfill account id err = m.BackfillAccountID(in.Parameters, av.AccountID) if err != nil { return out, metadata, fmt.Errorf("invalid ARN, %w", err) diff --git a/service/s3control/internal/customizations/process_arn_resource.go b/service/s3control/internal/customizations/process_arn_resource.go index bc1faf0496a..ea4e96d46c2 100644 --- a/service/s3control/internal/customizations/process_arn_resource.go +++ b/service/s3control/internal/customizations/process_arn_resource.go @@ -28,6 +28,9 @@ const ( // processARNResource is used to process an ARN resource. type processARNResource struct { + // CopyInput creates a copy of input to be modified, this ensures the original input is not modified. + CopyInput func(interface{}) (interface{}, error) + // UpdateARNField points to a function that takes in a copy of input, updates the ARN field with // the provided value and returns the input UpdateARNField func(interface{}, string) error @@ -53,14 +56,14 @@ func (m *processARNResource) HandleSerialize( ) ( out middleware.SerializeOutput, metadata middleware.Metadata, err error, ) { - // check if arn was provided, if not skip this middleware - arnValue, ok := s3shared.GetARNResourceFromContext(ctx) - if !ok { + // if arn region resolves to custom endpoint that is mutable + if smithyhttp.GetHostnameImmutable(ctx) { return next.HandleSerialize(ctx, in) } - // if arn region resolves to custom endpoint that is mutable - if smithyhttp.GetHostnameImmutable(ctx) { + // check if arn was provided, if not skip this middleware + arnValue, ok := s3shared.GetARNResourceFromContext(ctx) + if !ok { return next.HandleSerialize(ctx, in) } @@ -110,6 +113,15 @@ func (m *processARNResource) HandleSerialize( return out, metadata, fmt.Errorf("error updating arnable field while serializing") } + if !s3shared.IsClonedInput(ctx) { + in.Parameters, err = m.CopyInput(in.Parameters) + if err != nil { + return out, metadata, fmt.Errorf("error creating a copy of input while processing arn") + } + // set copy input key on context + ctx = s3shared.SetClonedInputKey(ctx, true) + } + // update the arnable field with access point name err = m.UpdateARNField(in.Parameters, tv.AccessPointName) if err != nil { @@ -155,6 +167,16 @@ func (m *processARNResource) HandleSerialize( if m.UpdateARNField == nil { return out, metadata, fmt.Errorf("error updating arnable field while serializing") } + + if !s3shared.IsClonedInput(ctx) { + in.Parameters, err = m.CopyInput(in.Parameters) + if err != nil { + return out, metadata, fmt.Errorf("error creating a copy of input while processing arn") + } + // set copy input key on context + ctx = s3shared.SetClonedInputKey(ctx, true) + } + // update the arnable field with bucket name err = m.UpdateARNField(in.Parameters, tv.BucketName) if err != nil { diff --git a/service/s3control/internal/customizations/update_endpoint.go b/service/s3control/internal/customizations/update_endpoint.go index 7a6bb8bb355..95d24ad5de6 100644 --- a/service/s3control/internal/customizations/update_endpoint.go +++ b/service/s3control/internal/customizations/update_endpoint.go @@ -61,24 +61,25 @@ type UpdateEndpointOptions struct { // UpdateEndpoint adds the middleware to the middleware stack based on the UpdateEndpointOptions. func UpdateEndpoint(stack *middleware.Stack, options UpdateEndpointOptions) (err error) { // validate and backfill account id from ARN - err = stack.Initialize.Insert(&BackfillInputMiddleware{ + err = stack.Initialize.Add(&BackfillInput{ CopyInput: options.Accessor.CopyInput, BackfillAccountID: options.Accessor.BackfillAccountID, - }, "OperationInputValidation", middleware.Before) + }, middleware.Before) if err != nil { return err } - // initial arn look up middleware should be before BackfillInputMiddleware + // initial arn look up middleware should be before BackfillInput err = stack.Initialize.Insert(&s3shared.ARNLookup{ GetARNValue: options.Accessor.GetARNInput, - }, (*BackfillInputMiddleware)(nil).ID(), middleware.Before) + }, (*BackfillInput)(nil).ID(), middleware.Before) if err != nil { return err } // process arn err = stack.Serialize.Insert(&processARNResource{ + CopyInput: options.Accessor.CopyInput, UpdateARNField: options.Accessor.UpdateARNField, UseARNRegion: options.UseARNRegion, UseDualstack: options.UseDualstack, @@ -93,7 +94,7 @@ func UpdateEndpoint(stack *middleware.Stack, options UpdateEndpointOptions) (err err = stack.Serialize.Insert(&processOutpostIDMiddleware{ GetOutpostID: options.Accessor.GetOutpostIDInput, UseDualstack: options.UseDualstack, - }, (&processARNResource{}).ID(), middleware.Before) + }, (*processARNResource)(nil).ID(), middleware.Before) if err != nil { return err } diff --git a/service/s3control/internal/customizations/update_endpoint_test.go b/service/s3control/internal/customizations/update_endpoint_test.go index 24b95a9ed47..5311fc36029 100644 --- a/service/s3control/internal/customizations/update_endpoint_test.go +++ b/service/s3control/internal/customizations/update_endpoint_test.go @@ -155,143 +155,142 @@ func TestEndpointWithARN(t *testing.T) { expectedHeaderForOutpostID string expectedHeaderForAccountID bool }{ - // "Outpost AccessPoint with no S3UseARNRegion flag set": { - // bucket: "arn:aws:s3-outposts:us-west-2:123456789012:outpost:op-01234567890123456:accesspoint:myaccesspoint", - // options: s3control.Options{ - // Region: "us-west-2", - // }, - // expectedReqURL: "https://s3-outposts.us-west-2.amazonaws.com/v20180820/bucket/myaccesspoint", - // expectedSigningName: "s3-outposts", - // expectedSigningRegion: "us-west-2", - // expectedHeaderForAccountID: true, - // expectedHeaderForOutpostID: "op-01234567890123456", - // }, - // "Outpost AccessPoint Cross-Region Enabled": { - // bucket: "arn:aws:s3-outposts:us-east-1:123456789012:outpost:op-01234567890123456:accesspoint:myaccesspoint", - // options: s3control.Options{ - // Region: "us-west-2", - // UseARNRegion: true, - // }, - // expectedReqURL: "https://s3-outposts.us-east-1.amazonaws.com/v20180820/bucket/myaccesspoint", - // expectedSigningName: "s3-outposts", - // expectedSigningRegion: "us-east-1", - // expectedHeaderForAccountID: true, - // expectedHeaderForOutpostID: "op-01234567890123456", - // }, - // "Outpost AccessPoint Cross-Region Disabled": { - // bucket: "arn:aws:s3-outposts:us-east-1:123456789012:outpost:op-01234567890123456:accesspoint:myaccesspoint", - // options: s3control.Options{ - // Region: "us-west-2", - // }, - // expectedErr: "client region does not match provided ARN region", - // }, - // "Outpost AccessPoint other partition": { - // bucket: "arn:aws-cn:s3-outposts:cn-north-1:123456789012:outpost:op-01234567890123456:accesspoint:myaccesspoint", - // options: s3control.Options{ - // Region: "us-west-2", - // UseARNRegion: true, - // }, - // expectedErr: "ConfigurationError : client partition does not match provided ARN partition", - // }, - // "Outpost AccessPoint us-gov region": { - // bucket: "arn:aws-us-gov:s3-outposts:us-gov-east-1:123456789012:outpost:op-01234567890123456:accesspoint:myaccesspoint", - // options: s3control.Options{ - // Region: "us-gov-east-1", - // UseARNRegion: true, - // }, - // expectedReqURL: "https://s3-outposts.us-gov-east-1.amazonaws.com/v20180820/bucket/myaccesspoint", - // expectedSigningName: "s3-outposts", - // expectedSigningRegion: "us-gov-east-1", - // expectedHeaderForAccountID: true, - // expectedHeaderForOutpostID: "op-01234567890123456", - // }, - // "Outpost AccessPoint with client region as Fips": { - // bucket: "arn:aws-us-gov:s3-outposts:us-gov-east-1:123456789012:outpost:op-01234567890123456:accesspoint:myaccesspoint", - // options: s3control.Options{ - // Region: "us-gov-east-1-fips", - // }, - // expectedErr: "InvalidARNError : resource ARN not supported for FIPS region", - // }, - // "Outpost AccessPoint with client Fips region and use arn region enabled": { - // bucket: "arn:aws-us-gov:s3-outposts:us-gov-east-1:123456789012:outpost:op-01234567890123456:accesspoint:myaccesspoint", - // options: s3control.Options{ - // Region: "us-gov-east-1-fips", - // UseARNRegion: true, - // }, - // expectedSigningName: "s3-outposts", - // expectedSigningRegion: "us-gov-east-1", - // expectedReqURL: "https://s3-outposts.us-gov-east-1.amazonaws.com/v20180820/bucket/myaccesspoint", - // expectedHeaderForAccountID: true, - // expectedHeaderForOutpostID: "op-01234567890123456", - // }, - // "Outpost AccessPoint Fips region in Arn": { - // bucket: "arn:aws-us-gov:s3-outposts:us-gov-east-1-fips:123456789012:outpost:op-01234567890123456:accesspoint:myaccesspoint", - // options: s3control.Options{ - // Region: "us-gov-east-1-fips", - // UseARNRegion: true, - // }, - // expectedErr: "InvalidARNError : resource ARN not supported for FIPS region", - // }, - // "Outpost AccessPoint Fips region with valid ARN region": { - // bucket: "arn:aws-us-gov:s3-outposts:us-gov-east-1:123456789012:outpost:op-01234567890123456:accesspoint:myaccesspoint", - // options: s3control.Options{ - // Region: "us-gov-east-1-fips", - // UseARNRegion: true, - // }, - // expectedReqURL: "https://s3-outposts.us-gov-east-1.amazonaws.com/v20180820/bucket/myaccesspoint", - // expectedSigningName: "s3-outposts", - // expectedSigningRegion: "us-gov-east-1", - // expectedHeaderForAccountID: true, - // expectedHeaderForOutpostID: "op-01234567890123456", - // }, - // "Outpost AccessPoint with DualStack": { - // bucket: "arn:aws:s3-outposts:us-west-2:123456789012:outpost:op-01234567890123456:accesspoint:myaccesspoint", - // options: s3control.Options{ - // Region: "us-west-2", - // UseARNRegion: true, - // UseDualstack: true, - // }, - // expectedErr: "ConfigurationError : client configured for S3 Dual-stack but is not supported with resource ARN", - // }, - // "Invalid outpost resource format": { - // bucket: "arn:aws:s3-outposts:us-west-2:123456789012:outpost", - // options: s3control.Options{ - // Region: "us-west-2", - // }, - // expectedErr: "outpost resource-id not set", - // }, - // "Missing access point for outpost resource": { - // bucket: "arn:aws:s3-outposts:us-west-2:123456789012:outpost:op-01234567890123456", - // options: s3control.Options{ - // Region: "us-west-2", - // }, - // expectedErr: "incomplete outpost resource type", - // }, - // "access point": { - // bucket: "myaccesspoint", - // options: s3control.Options{ - // Region: "us-west-2", - // }, - // expectedReqURL: "https://123456789012.s3-control.us-west-2.amazonaws.com/v20180820/bucket/myaccesspoint", - // expectedHeaderForAccountID: true, - // expectedSigningRegion: "us-west-2", - // expectedSigningName: "s3", - // }, - // "outpost access point with unsupported sub-resource": { - // bucket: "arn:aws:s3-outposts:us-west-2:123456789012:outpost:op-01234567890123456:accesspoint:mybucket:object:foo", - // options: s3control.Options{ - // Region: "us-west-2", - // }, - // expectedErr: "sub resource not supported", - // }, - // "Missing outpost identifiers in outpost access point arn": { - // bucket: "arn:aws:s3-outposts:us-west-2:123456789012:accesspoint:myendpoint", - // options: s3control.Options{ - // Region: "us-west-2", - // }, - // expectedErr: "invalid Amazon s3-outposts ARN", - // }, - // Outpost Bucket + "Outpost AccessPoint with no S3UseARNRegion flag set": { + bucket: "arn:aws:s3-outposts:us-west-2:123456789012:outpost:op-01234567890123456:accesspoint:myaccesspoint", + options: s3control.Options{ + Region: "us-west-2", + }, + expectedReqURL: "https://s3-outposts.us-west-2.amazonaws.com/v20180820/bucket/myaccesspoint", + expectedSigningName: "s3-outposts", + expectedSigningRegion: "us-west-2", + expectedHeaderForAccountID: true, + expectedHeaderForOutpostID: "op-01234567890123456", + }, + "Outpost AccessPoint Cross-Region Enabled": { + bucket: "arn:aws:s3-outposts:us-east-1:123456789012:outpost:op-01234567890123456:accesspoint:myaccesspoint", + options: s3control.Options{ + Region: "us-west-2", + UseARNRegion: true, + }, + expectedReqURL: "https://s3-outposts.us-east-1.amazonaws.com/v20180820/bucket/myaccesspoint", + expectedSigningName: "s3-outposts", + expectedSigningRegion: "us-east-1", + expectedHeaderForAccountID: true, + expectedHeaderForOutpostID: "op-01234567890123456", + }, + "Outpost AccessPoint Cross-Region Disabled": { + bucket: "arn:aws:s3-outposts:us-east-1:123456789012:outpost:op-01234567890123456:accesspoint:myaccesspoint", + options: s3control.Options{ + Region: "us-west-2", + }, + expectedErr: "client region does not match provided ARN region", + }, + "Outpost AccessPoint other partition": { + bucket: "arn:aws-cn:s3-outposts:cn-north-1:123456789012:outpost:op-01234567890123456:accesspoint:myaccesspoint", + options: s3control.Options{ + Region: "us-west-2", + UseARNRegion: true, + }, + expectedErr: "ConfigurationError : client partition does not match provided ARN partition", + }, + "Outpost AccessPoint us-gov region": { + bucket: "arn:aws-us-gov:s3-outposts:us-gov-east-1:123456789012:outpost:op-01234567890123456:accesspoint:myaccesspoint", + options: s3control.Options{ + Region: "us-gov-east-1", + UseARNRegion: true, + }, + expectedReqURL: "https://s3-outposts.us-gov-east-1.amazonaws.com/v20180820/bucket/myaccesspoint", + expectedSigningName: "s3-outposts", + expectedSigningRegion: "us-gov-east-1", + expectedHeaderForAccountID: true, + expectedHeaderForOutpostID: "op-01234567890123456", + }, + "Outpost AccessPoint with client region as Fips": { + bucket: "arn:aws-us-gov:s3-outposts:us-gov-east-1:123456789012:outpost:op-01234567890123456:accesspoint:myaccesspoint", + options: s3control.Options{ + Region: "us-gov-east-1-fips", + }, + expectedErr: "InvalidARNError : resource ARN not supported for FIPS region", + }, + "Outpost AccessPoint with client Fips region and use arn region enabled": { + bucket: "arn:aws-us-gov:s3-outposts:us-gov-east-1:123456789012:outpost:op-01234567890123456:accesspoint:myaccesspoint", + options: s3control.Options{ + Region: "us-gov-east-1-fips", + UseARNRegion: true, + }, + expectedSigningName: "s3-outposts", + expectedSigningRegion: "us-gov-east-1", + expectedReqURL: "https://s3-outposts.us-gov-east-1.amazonaws.com/v20180820/bucket/myaccesspoint", + expectedHeaderForAccountID: true, + expectedHeaderForOutpostID: "op-01234567890123456", + }, + "Outpost AccessPoint Fips region in Arn": { + bucket: "arn:aws-us-gov:s3-outposts:us-gov-east-1-fips:123456789012:outpost:op-01234567890123456:accesspoint:myaccesspoint", + options: s3control.Options{ + Region: "us-gov-east-1-fips", + UseARNRegion: true, + }, + expectedErr: "InvalidARNError : resource ARN not supported for FIPS region", + }, + "Outpost AccessPoint Fips region with valid ARN region": { + bucket: "arn:aws-us-gov:s3-outposts:us-gov-east-1:123456789012:outpost:op-01234567890123456:accesspoint:myaccesspoint", + options: s3control.Options{ + Region: "us-gov-east-1-fips", + UseARNRegion: true, + }, + expectedReqURL: "https://s3-outposts.us-gov-east-1.amazonaws.com/v20180820/bucket/myaccesspoint", + expectedSigningName: "s3-outposts", + expectedSigningRegion: "us-gov-east-1", + expectedHeaderForAccountID: true, + expectedHeaderForOutpostID: "op-01234567890123456", + }, + "Outpost AccessPoint with DualStack": { + bucket: "arn:aws:s3-outposts:us-west-2:123456789012:outpost:op-01234567890123456:accesspoint:myaccesspoint", + options: s3control.Options{ + Region: "us-west-2", + UseARNRegion: true, + UseDualstack: true, + }, + expectedErr: "ConfigurationError : client configured for S3 Dual-stack but is not supported with resource ARN", + }, + "Invalid outpost resource format": { + bucket: "arn:aws:s3-outposts:us-west-2:123456789012:outpost", + options: s3control.Options{ + Region: "us-west-2", + }, + expectedErr: "outpost resource-id not set", + }, + "Missing access point for outpost resource": { + bucket: "arn:aws:s3-outposts:us-west-2:123456789012:outpost:op-01234567890123456", + options: s3control.Options{ + Region: "us-west-2", + }, + expectedErr: "incomplete outpost resource type", + }, + "access point": { + bucket: "myaccesspoint", + options: s3control.Options{ + Region: "us-west-2", + }, + expectedReqURL: "https://123456789012.s3-control.us-west-2.amazonaws.com/v20180820/bucket/myaccesspoint", + expectedHeaderForAccountID: true, + expectedSigningRegion: "us-west-2", + expectedSigningName: "s3", + }, + "outpost access point with unsupported sub-resource": { + bucket: "arn:aws:s3-outposts:us-west-2:123456789012:outpost:op-01234567890123456:accesspoint:mybucket:object:foo", + options: s3control.Options{ + Region: "us-west-2", + }, + expectedErr: "sub resource not supported", + }, + "Missing outpost identifiers in outpost access point arn": { + bucket: "arn:aws:s3-outposts:us-west-2:123456789012:accesspoint:myendpoint", + options: s3control.Options{ + Region: "us-west-2", + }, + expectedErr: "invalid Amazon s3-outposts ARN", + }, "Outpost Bucket with no S3UseARNRegion flag set": { bucket: "arn:aws:s3-outposts:us-west-2:123456789012:outpost:op-01234567890123456:bucket:mybucket", options: s3control.Options{ @@ -303,94 +302,94 @@ func TestEndpointWithARN(t *testing.T) { expectedHeaderForOutpostID: "op-01234567890123456", expectedHeaderForAccountID: true, }, - // "Outpost Bucket Cross-Region Enabled": { - // bucket: "arn:aws:s3-outposts:us-east-1:123456789012:outpost:op-01234567890123456:bucket:mybucket", - // options: s3control.Options{ - // Region: "us-west-2", - // UseARNRegion: true, - // }, - // expectedReqURL: "https://s3-outposts.us-east-1.amazonaws.com/v20180820/bucket/mybucket", - // expectedSigningName: "s3-outposts", - // expectedSigningRegion: "us-east-1", - // expectedHeaderForOutpostID: "op-01234567890123456", - // expectedHeaderForAccountID: true, - // }, - // "Outpost Bucket Cross-Region Disabled": { - // bucket: "arn:aws:s3-outposts:us-east-1:123456789012:outpost:op-01234567890123456:bucket:mybucket", - // options: s3control.Options{ - // Region: "us-west-2", - // }, - // expectedErr: "client region does not match provided ARN region", - // }, - // "Outpost Bucket other partition": { - // bucket: "arn:aws-cn:s3-outposts:cn-north-1:123456789012:outpost:op-01234567890123456:bucket:mybucket", - // options: s3control.Options{ - // Region: "us-west-2", - // UseARNRegion: true, - // }, - // expectedErr: "ConfigurationError : client partition does not match provided ARN partition", - // }, - // "Outpost Bucket us-gov region": { - // bucket: "arn:aws-us-gov:s3-outposts:us-gov-east-1:123456789012:outpost:op-01234567890123456:bucket:mybucket", - // options: s3control.Options{ - // Region: "us-gov-east-1", - // UseARNRegion: true, - // }, - // expectedReqURL: "https://s3-outposts.us-gov-east-1.amazonaws.com/v20180820/bucket/mybucket", - // expectedSigningName: "s3-outposts", - // expectedSigningRegion: "us-gov-east-1", - // expectedHeaderForOutpostID: "op-01234567890123456", - // expectedHeaderForAccountID: true, - // }, - // "Outpost Bucket Fips region": { - // bucket: "arn:aws-us-gov:s3-outposts:us-gov-east-1:123456789012:outpost:op-01234567890123456:bucket:mybucket", - // options: s3control.Options{ - // Region: "us-gov-west-1-fips", - // }, - // expectedErr: "ConfigurationError : client region does not match provided ARN region", - // }, - // "Outpost Bucket Fips region in Arn": { - // bucket: "arn:aws-us-gov:s3-outposts:fips-us-gov-east-1:123456789012:outpost:op-01234567890123456:bucket:mybucket", - // options: s3control.Options{ - // Region: "us-gov-east-1-fips", - // UseARNRegion: true, - // }, - // expectedErr: "InvalidARNError : resource ARN not supported for FIPS region", - // }, - // "Outpost Bucket Fips region with valid ARN region": { - // bucket: "arn:aws-us-gov:s3-outposts:us-gov-east-1:123456789012:outpost:op-01234567890123456:bucket:mybucket", - // options: s3control.Options{ - // Region: "us-gov-east-1-fips", - // UseARNRegion: true, - // }, - // expectedReqURL: "https://s3-outposts.us-gov-east-1.amazonaws.com/v20180820/bucket/mybucket", - // expectedSigningName: "s3-outposts", - // expectedSigningRegion: "us-gov-east-1", - // expectedHeaderForOutpostID: "op-01234567890123456", - // expectedHeaderForAccountID: true, - // }, - // "Outpost Bucket with DualStack": { - // bucket: "arn:aws:s3-outposts:us-west-2:123456789012:outpost:op-01234567890123456:bucket:mybucket", - // options: s3control.Options{ - // Region: "us-west-2", - // UseDualstack: true, - // }, - // expectedErr: "ConfigurationError : client configured for S3 Dual-stack but is not supported with resource ARN", - // }, - // "Missing bucket id": { - // bucket: "arn:aws:s3-outposts:us-west-2:123456789012:outpost:op-01234567890123456:bucket", - // options: s3control.Options{ - // Region: "us-west-2", - // }, - // expectedErr: "invalid Amazon s3-outposts ARN", - // }, - // "Invalid ARN": { - // bucket: "arn:aws:s3-outposts:us-west-2:123456789012:bucket:mybucket", - // options: s3control.Options{ - // Region: "us-west-2", - // }, - // expectedErr: "invalid Amazon s3-outposts ARN, unknown resource type", - // }, + "Outpost Bucket Cross-Region Enabled": { + bucket: "arn:aws:s3-outposts:us-east-1:123456789012:outpost:op-01234567890123456:bucket:mybucket", + options: s3control.Options{ + Region: "us-west-2", + UseARNRegion: true, + }, + expectedReqURL: "https://s3-outposts.us-east-1.amazonaws.com/v20180820/bucket/mybucket", + expectedSigningName: "s3-outposts", + expectedSigningRegion: "us-east-1", + expectedHeaderForOutpostID: "op-01234567890123456", + expectedHeaderForAccountID: true, + }, + "Outpost Bucket Cross-Region Disabled": { + bucket: "arn:aws:s3-outposts:us-east-1:123456789012:outpost:op-01234567890123456:bucket:mybucket", + options: s3control.Options{ + Region: "us-west-2", + }, + expectedErr: "client region does not match provided ARN region", + }, + "Outpost Bucket other partition": { + bucket: "arn:aws-cn:s3-outposts:cn-north-1:123456789012:outpost:op-01234567890123456:bucket:mybucket", + options: s3control.Options{ + Region: "us-west-2", + UseARNRegion: true, + }, + expectedErr: "ConfigurationError : client partition does not match provided ARN partition", + }, + "Outpost Bucket us-gov region": { + bucket: "arn:aws-us-gov:s3-outposts:us-gov-east-1:123456789012:outpost:op-01234567890123456:bucket:mybucket", + options: s3control.Options{ + Region: "us-gov-east-1", + UseARNRegion: true, + }, + expectedReqURL: "https://s3-outposts.us-gov-east-1.amazonaws.com/v20180820/bucket/mybucket", + expectedSigningName: "s3-outposts", + expectedSigningRegion: "us-gov-east-1", + expectedHeaderForOutpostID: "op-01234567890123456", + expectedHeaderForAccountID: true, + }, + "Outpost Bucket Fips region": { + bucket: "arn:aws-us-gov:s3-outposts:us-gov-east-1:123456789012:outpost:op-01234567890123456:bucket:mybucket", + options: s3control.Options{ + Region: "us-gov-west-1-fips", + }, + expectedErr: "ConfigurationError : client region does not match provided ARN region", + }, + "Outpost Bucket Fips region in Arn": { + bucket: "arn:aws-us-gov:s3-outposts:fips-us-gov-east-1:123456789012:outpost:op-01234567890123456:bucket:mybucket", + options: s3control.Options{ + Region: "us-gov-east-1-fips", + UseARNRegion: true, + }, + expectedErr: "InvalidARNError : resource ARN not supported for FIPS region", + }, + "Outpost Bucket Fips region with valid ARN region": { + bucket: "arn:aws-us-gov:s3-outposts:us-gov-east-1:123456789012:outpost:op-01234567890123456:bucket:mybucket", + options: s3control.Options{ + Region: "us-gov-east-1-fips", + UseARNRegion: true, + }, + expectedReqURL: "https://s3-outposts.us-gov-east-1.amazonaws.com/v20180820/bucket/mybucket", + expectedSigningName: "s3-outposts", + expectedSigningRegion: "us-gov-east-1", + expectedHeaderForOutpostID: "op-01234567890123456", + expectedHeaderForAccountID: true, + }, + "Outpost Bucket with DualStack": { + bucket: "arn:aws:s3-outposts:us-west-2:123456789012:outpost:op-01234567890123456:bucket:mybucket", + options: s3control.Options{ + Region: "us-west-2", + UseDualstack: true, + }, + expectedErr: "ConfigurationError : client configured for S3 Dual-stack but is not supported with resource ARN", + }, + "Missing bucket id": { + bucket: "arn:aws:s3-outposts:us-west-2:123456789012:outpost:op-01234567890123456:bucket", + options: s3control.Options{ + Region: "us-west-2", + }, + expectedErr: "invalid Amazon s3-outposts ARN", + }, + "Invalid ARN": { + bucket: "arn:aws:s3-outposts:us-west-2:123456789012:bucket:mybucket", + options: s3control.Options{ + Region: "us-west-2", + }, + expectedErr: "invalid Amazon s3-outposts ARN, unknown resource type", + }, } for name, c := range cases { From add13c6447024e4855c8c38fde1006654bbfb06f Mon Sep 17 00:00:00 2001 From: skotambkar Date: Fri, 13 Nov 2020 14:56:55 -0800 Subject: [PATCH 16/21] s3 customization feedback changes --- .../s3/internal/customizations/update_endpoint.go | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/service/s3/internal/customizations/update_endpoint.go b/service/s3/internal/customizations/update_endpoint.go index ca08f1991d8..8d9f08b2860 100644 --- a/service/s3/internal/customizations/update_endpoint.go +++ b/service/s3/internal/customizations/update_endpoint.go @@ -33,10 +33,8 @@ type UpdateEndpointParameterAccessor struct { // input has no bucket member. GetBucketFromInput func(interface{}) (*string, bool) - // functional pointer to indicate support for accelerate. - // The function is intended to take an input value, and - // return if the operation supports accelerate. - SupportsAccelerate func(interface{}) bool + // indicates if an operation supports s3 transfer acceleration. + SupportsAccelerate bool } // UpdateEndpointOptions provides the options for the UpdateEndpoint middleware setup. @@ -67,9 +65,9 @@ type UpdateEndpointOptions struct { // UpdateEndpoint adds the middleware to the middleware stack based on the UpdateEndpointOptions. func UpdateEndpoint(stack *middleware.Stack, options UpdateEndpointOptions) (err error) { // initial arn look up middleware - err = stack.Initialize.Insert(&s3shared.ARNLookup{ + err = stack.Initialize.Add(&s3shared.ARNLookup{ GetARNValue: options.Accessor.GetBucketFromInput, - }, "OperationInputValidation", middleware.Before) + }, middleware.Before) if err != nil { return err } @@ -122,7 +120,7 @@ type updateEndpoint struct { // accelerate options useAccelerate bool - supportsAccelerate func(interface{}) bool + supportsAccelerate bool } // ID returns the middleware ID. @@ -151,7 +149,7 @@ func (u *updateEndpoint) HandleSerialize( } // check if accelerate is supported - if u.supportsAccelerate == nil || (u.useAccelerate && !u.supportsAccelerate(in.Parameters)) { + if u.useAccelerate && !u.supportsAccelerate { // accelerate is not supported, thus will be ignored log.Println("Transfer acceleration is not supported for the operation, ignoring UseAccelerate.") u.useAccelerate = false From b322e8c623356bd98abf3b3b7c9023451adcb495 Mon Sep 17 00:00:00 2001 From: skotambkar Date: Fri, 13 Nov 2020 14:58:15 -0800 Subject: [PATCH 17/21] allow s3 accesspoint test to run --- service/internal/integrationtest/s3/endpoint_test.go | 1 - 1 file changed, 1 deletion(-) diff --git a/service/internal/integrationtest/s3/endpoint_test.go b/service/internal/integrationtest/s3/endpoint_test.go index 55a1f6afe2e..9b49cb7e15f 100644 --- a/service/internal/integrationtest/s3/endpoint_test.go +++ b/service/internal/integrationtest/s3/endpoint_test.go @@ -7,6 +7,5 @@ import ( ) func TestInteg_AccessPoint_WriteToObject(t *testing.T) { - t.Skip("skip till accesspoint support is merged in") testWriteToObject(t, setupMetadata.AccessPoints.Source.ARN, nil) } From 8cf2f51a3c08b075809df580c5772dc6bbf95895 Mon Sep 17 00:00:00 2001 From: skotambkar Date: Fri, 13 Nov 2020 14:58:51 -0800 Subject: [PATCH 18/21] generated s3 control and s3 client with all feedback changes --- service/s3/api_client.go | 194 +----------------- service/s3/api_op_AbortMultipartUpload.go | 15 +- service/s3/api_op_CompleteMultipartUpload.go | 15 +- service/s3/api_op_CopyObject.go | 14 +- service/s3/api_op_CreateBucket.go | 15 +- service/s3/api_op_CreateMultipartUpload.go | 15 +- service/s3/api_op_DeleteBucket.go | 15 +- ...i_op_DeleteBucketAnalyticsConfiguration.go | 15 +- service/s3/api_op_DeleteBucketCors.go | 15 +- service/s3/api_op_DeleteBucketEncryption.go | 15 +- ...i_op_DeleteBucketInventoryConfiguration.go | 15 +- service/s3/api_op_DeleteBucketLifecycle.go | 15 +- ...api_op_DeleteBucketMetricsConfiguration.go | 15 +- .../api_op_DeleteBucketOwnershipControls.go | 15 +- service/s3/api_op_DeleteBucketPolicy.go | 15 +- service/s3/api_op_DeleteBucketReplication.go | 15 +- service/s3/api_op_DeleteBucketTagging.go | 15 +- service/s3/api_op_DeleteBucketWebsite.go | 15 +- service/s3/api_op_DeleteObject.go | 15 +- service/s3/api_op_DeleteObjectTagging.go | 15 +- service/s3/api_op_DeleteObjects.go | 15 +- service/s3/api_op_DeletePublicAccessBlock.go | 15 +- ...api_op_GetBucketAccelerateConfiguration.go | 15 +- service/s3/api_op_GetBucketAcl.go | 15 +- .../api_op_GetBucketAnalyticsConfiguration.go | 15 +- service/s3/api_op_GetBucketCors.go | 15 +- service/s3/api_op_GetBucketEncryption.go | 15 +- .../api_op_GetBucketInventoryConfiguration.go | 15 +- .../api_op_GetBucketLifecycleConfiguration.go | 15 +- service/s3/api_op_GetBucketLocation.go | 15 +- service/s3/api_op_GetBucketLogging.go | 15 +- .../api_op_GetBucketMetricsConfiguration.go | 15 +- ...i_op_GetBucketNotificationConfiguration.go | 15 +- .../s3/api_op_GetBucketOwnershipControls.go | 15 +- service/s3/api_op_GetBucketPolicy.go | 15 +- service/s3/api_op_GetBucketPolicyStatus.go | 15 +- service/s3/api_op_GetBucketReplication.go | 15 +- service/s3/api_op_GetBucketRequestPayment.go | 15 +- service/s3/api_op_GetBucketTagging.go | 15 +- service/s3/api_op_GetBucketVersioning.go | 15 +- service/s3/api_op_GetBucketWebsite.go | 15 +- service/s3/api_op_GetObject.go | 14 +- service/s3/api_op_GetObjectAcl.go | 15 +- service/s3/api_op_GetObjectLegalHold.go | 15 +- .../s3/api_op_GetObjectLockConfiguration.go | 15 +- service/s3/api_op_GetObjectRetention.go | 15 +- service/s3/api_op_GetObjectTagging.go | 15 +- service/s3/api_op_GetObjectTorrent.go | 15 +- service/s3/api_op_GetPublicAccessBlock.go | 15 +- service/s3/api_op_HeadBucket.go | 14 +- service/s3/api_op_HeadObject.go | 14 +- ...pi_op_ListBucketAnalyticsConfigurations.go | 15 +- ...pi_op_ListBucketInventoryConfigurations.go | 15 +- .../api_op_ListBucketMetricsConfigurations.go | 15 +- service/s3/api_op_ListBuckets.go | 5 +- service/s3/api_op_ListMultipartUploads.go | 15 +- service/s3/api_op_ListObjectVersions.go | 15 +- service/s3/api_op_ListObjects.go | 15 +- service/s3/api_op_ListObjectsV2.go | 15 +- service/s3/api_op_ListParts.go | 14 +- ...api_op_PutBucketAccelerateConfiguration.go | 15 +- service/s3/api_op_PutBucketAcl.go | 15 +- .../api_op_PutBucketAnalyticsConfiguration.go | 15 +- service/s3/api_op_PutBucketCors.go | 15 +- service/s3/api_op_PutBucketEncryption.go | 15 +- .../api_op_PutBucketInventoryConfiguration.go | 15 +- .../api_op_PutBucketLifecycleConfiguration.go | 15 +- service/s3/api_op_PutBucketLogging.go | 15 +- .../api_op_PutBucketMetricsConfiguration.go | 15 +- ...i_op_PutBucketNotificationConfiguration.go | 15 +- .../s3/api_op_PutBucketOwnershipControls.go | 15 +- service/s3/api_op_PutBucketPolicy.go | 15 +- service/s3/api_op_PutBucketReplication.go | 15 +- service/s3/api_op_PutBucketRequestPayment.go | 15 +- service/s3/api_op_PutBucketTagging.go | 15 +- service/s3/api_op_PutBucketVersioning.go | 15 +- service/s3/api_op_PutBucketWebsite.go | 15 +- service/s3/api_op_PutObject.go | 14 +- service/s3/api_op_PutObjectAcl.go | 15 +- service/s3/api_op_PutObjectLegalHold.go | 15 +- .../s3/api_op_PutObjectLockConfiguration.go | 15 +- service/s3/api_op_PutObjectRetention.go | 15 +- service/s3/api_op_PutObjectTagging.go | 15 +- service/s3/api_op_PutPublicAccessBlock.go | 15 +- service/s3/api_op_RestoreObject.go | 15 +- service/s3/api_op_UploadPart.go | 14 +- service/s3/api_op_UploadPartCopy.go | 15 +- service/s3control/api_client.go | 34 ++- service/s3control/api_op_CreateAccessPoint.go | 2 +- service/s3control/api_op_CreateBucket.go | 20 +- service/s3control/api_op_CreateJob.go | 14 +- service/s3control/api_op_DeleteAccessPoint.go | 2 +- .../api_op_DeleteAccessPointPolicy.go | 2 +- service/s3control/api_op_DeleteBucket.go | 2 +- ...i_op_DeleteBucketLifecycleConfiguration.go | 2 +- .../s3control/api_op_DeleteBucketPolicy.go | 2 +- .../s3control/api_op_DeleteBucketTagging.go | 2 +- service/s3control/api_op_DeleteJobTagging.go | 14 +- .../api_op_DeletePublicAccessBlock.go | 14 +- service/s3control/api_op_DescribeJob.go | 14 +- service/s3control/api_op_GetAccessPoint.go | 2 +- .../s3control/api_op_GetAccessPointPolicy.go | 2 +- .../api_op_GetAccessPointPolicyStatus.go | 14 +- service/s3control/api_op_GetBucket.go | 2 +- .../api_op_GetBucketLifecycleConfiguration.go | 2 +- service/s3control/api_op_GetBucketPolicy.go | 2 +- service/s3control/api_op_GetBucketTagging.go | 2 +- service/s3control/api_op_GetJobTagging.go | 14 +- .../s3control/api_op_GetPublicAccessBlock.go | 14 +- service/s3control/api_op_ListAccessPoints.go | 2 +- service/s3control/api_op_ListJobs.go | 14 +- .../s3control/api_op_ListRegionalBuckets.go | 19 +- .../s3control/api_op_PutAccessPointPolicy.go | 2 +- .../api_op_PutBucketLifecycleConfiguration.go | 2 +- service/s3control/api_op_PutBucketPolicy.go | 2 +- service/s3control/api_op_PutBucketTagging.go | 2 +- service/s3control/api_op_PutJobTagging.go | 14 +- .../s3control/api_op_PutPublicAccessBlock.go | 14 +- service/s3control/api_op_UpdateJobPriority.go | 14 +- service/s3control/api_op_UpdateJobStatus.go | 14 +- service/s3control/go.sum | 10 + 121 files changed, 1233 insertions(+), 521 deletions(-) diff --git a/service/s3/api_client.go b/service/s3/api_client.go index 18ea6cff9cc..2825f4011d6 100644 --- a/service/s3/api_client.go +++ b/service/s3/api_client.go @@ -236,196 +236,10 @@ func addMetadataRetrieverMiddleware(stack *middleware.Stack) error { return s3shared.AddMetadataRetrieverMiddleware(stack) } -// getBucketFromInput returns a boolean indicating if the input has a modeled -// bucket name, and a pointer to string denoting a provided bucket member value -func getBucketFromInput(input interface{}) (*string, bool) { - switch i := input.(type) { - case *AbortMultipartUploadInput: - return i.Bucket, true - case *CompleteMultipartUploadInput: - return i.Bucket, true - case *CopyObjectInput: - return i.Bucket, true - case *CreateBucketInput: - return i.Bucket, true - case *CreateMultipartUploadInput: - return i.Bucket, true - case *DeleteBucketInput: - return i.Bucket, true - case *DeleteBucketAnalyticsConfigurationInput: - return i.Bucket, true - case *DeleteBucketCorsInput: - return i.Bucket, true - case *DeleteBucketEncryptionInput: - return i.Bucket, true - case *DeleteBucketInventoryConfigurationInput: - return i.Bucket, true - case *DeleteBucketLifecycleInput: - return i.Bucket, true - case *DeleteBucketMetricsConfigurationInput: - return i.Bucket, true - case *DeleteBucketOwnershipControlsInput: - return i.Bucket, true - case *DeleteBucketPolicyInput: - return i.Bucket, true - case *DeleteBucketReplicationInput: - return i.Bucket, true - case *DeleteBucketTaggingInput: - return i.Bucket, true - case *DeleteBucketWebsiteInput: - return i.Bucket, true - case *DeleteObjectInput: - return i.Bucket, true - case *DeleteObjectsInput: - return i.Bucket, true - case *DeleteObjectTaggingInput: - return i.Bucket, true - case *DeletePublicAccessBlockInput: - return i.Bucket, true - case *GetBucketAccelerateConfigurationInput: - return i.Bucket, true - case *GetBucketAclInput: - return i.Bucket, true - case *GetBucketAnalyticsConfigurationInput: - return i.Bucket, true - case *GetBucketCorsInput: - return i.Bucket, true - case *GetBucketEncryptionInput: - return i.Bucket, true - case *GetBucketInventoryConfigurationInput: - return i.Bucket, true - case *GetBucketLifecycleConfigurationInput: - return i.Bucket, true - case *GetBucketLoggingInput: - return i.Bucket, true - case *GetBucketMetricsConfigurationInput: - return i.Bucket, true - case *GetBucketNotificationConfigurationInput: - return i.Bucket, true - case *GetBucketOwnershipControlsInput: - return i.Bucket, true - case *GetBucketPolicyInput: - return i.Bucket, true - case *GetBucketPolicyStatusInput: - return i.Bucket, true - case *GetBucketReplicationInput: - return i.Bucket, true - case *GetBucketRequestPaymentInput: - return i.Bucket, true - case *GetBucketTaggingInput: - return i.Bucket, true - case *GetBucketVersioningInput: - return i.Bucket, true - case *GetBucketWebsiteInput: - return i.Bucket, true - case *GetObjectInput: - return i.Bucket, true - case *GetObjectAclInput: - return i.Bucket, true - case *GetObjectLegalHoldInput: - return i.Bucket, true - case *GetObjectLockConfigurationInput: - return i.Bucket, true - case *GetObjectRetentionInput: - return i.Bucket, true - case *GetObjectTaggingInput: - return i.Bucket, true - case *GetObjectTorrentInput: - return i.Bucket, true - case *GetPublicAccessBlockInput: - return i.Bucket, true - case *HeadBucketInput: - return i.Bucket, true - case *HeadObjectInput: - return i.Bucket, true - case *ListBucketAnalyticsConfigurationsInput: - return i.Bucket, true - case *ListBucketInventoryConfigurationsInput: - return i.Bucket, true - case *ListBucketMetricsConfigurationsInput: - return i.Bucket, true - case *ListMultipartUploadsInput: - return i.Bucket, true - case *ListObjectsInput: - return i.Bucket, true - case *ListObjectsV2Input: - return i.Bucket, true - case *ListObjectVersionsInput: - return i.Bucket, true - case *ListPartsInput: - return i.Bucket, true - case *PutBucketAccelerateConfigurationInput: - return i.Bucket, true - case *PutBucketAclInput: - return i.Bucket, true - case *PutBucketAnalyticsConfigurationInput: - return i.Bucket, true - case *PutBucketCorsInput: - return i.Bucket, true - case *PutBucketEncryptionInput: - return i.Bucket, true - case *PutBucketInventoryConfigurationInput: - return i.Bucket, true - case *PutBucketLifecycleConfigurationInput: - return i.Bucket, true - case *PutBucketLoggingInput: - return i.Bucket, true - case *PutBucketMetricsConfigurationInput: - return i.Bucket, true - case *PutBucketNotificationConfigurationInput: - return i.Bucket, true - case *PutBucketOwnershipControlsInput: - return i.Bucket, true - case *PutBucketPolicyInput: - return i.Bucket, true - case *PutBucketReplicationInput: - return i.Bucket, true - case *PutBucketRequestPaymentInput: - return i.Bucket, true - case *PutBucketTaggingInput: - return i.Bucket, true - case *PutBucketVersioningInput: - return i.Bucket, true - case *PutBucketWebsiteInput: - return i.Bucket, true - case *PutObjectInput: - return i.Bucket, true - case *PutObjectAclInput: - return i.Bucket, true - case *PutObjectLegalHoldInput: - return i.Bucket, true - case *PutObjectLockConfigurationInput: - return i.Bucket, true - case *PutObjectRetentionInput: - return i.Bucket, true - case *PutObjectTaggingInput: - return i.Bucket, true - case *PutPublicAccessBlockInput: - return i.Bucket, true - case *RestoreObjectInput: - return i.Bucket, true - case *UploadPartInput: - return i.Bucket, true - case *UploadPartCopyInput: - return i.Bucket, true - default: - return nil, false - } -} - -// supportAccelerate returns a boolean indicating if the operation associated with -// the provided input supports S3 Transfer Acceleration -func supportAccelerate(input interface{}) bool { - switch input.(type) { - case *CreateBucketInput: - return false - case *DeleteBucketInput: - return false - case *ListBucketsInput: - return false - default: - return true - } +// nopGetBucketAccessor is no-op accessor for operation that don't support bucket +// member as input +func nopGetBucketAccessor(input interface{}) (*string, bool) { + return nil, false } func addResponseErrorMiddleware(stack *middleware.Stack) error { diff --git a/service/s3/api_op_AbortMultipartUpload.go b/service/s3/api_op_AbortMultipartUpload.go index 279821d6966..a2766715581 100644 --- a/service/s3/api_op_AbortMultipartUpload.go +++ b/service/s3/api_op_AbortMultipartUpload.go @@ -195,10 +195,21 @@ func newServiceMetadataMiddleware_opAbortMultipartUpload(region string) *awsmidd } } +// getAbortMultipartUploadBucketMember returns a pointer to string denoting a +// provided bucket member valueand a boolean indicating if the input has a modeled +// bucket name, +func getAbortMultipartUploadBucketMember(input interface{}) (*string, bool) { + in := input.(*AbortMultipartUploadInput) + if in.Bucket == nil { + return nil, false + } + return in.Bucket, true +} func addAbortMultipartUploadUpdateEndpoint(stack *middleware.Stack, options Options) error { return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ - Accessor: s3cust.UpdateEndpointParameterAccessor{GetBucketFromInput: getBucketFromInput, - SupportsAccelerate: supportAccelerate, + Accessor: s3cust.UpdateEndpointParameterAccessor{ + GetBucketFromInput: getAbortMultipartUploadBucketMember, + SupportsAccelerate: true, }, UsePathStyle: options.UsePathStyle, UseAccelerate: options.UseAccelerate, diff --git a/service/s3/api_op_CompleteMultipartUpload.go b/service/s3/api_op_CompleteMultipartUpload.go index 221a9e729a1..05957b7728b 100644 --- a/service/s3/api_op_CompleteMultipartUpload.go +++ b/service/s3/api_op_CompleteMultipartUpload.go @@ -286,10 +286,21 @@ func newServiceMetadataMiddleware_opCompleteMultipartUpload(region string) *awsm } } +// getCompleteMultipartUploadBucketMember returns a pointer to string denoting a +// provided bucket member valueand a boolean indicating if the input has a modeled +// bucket name, +func getCompleteMultipartUploadBucketMember(input interface{}) (*string, bool) { + in := input.(*CompleteMultipartUploadInput) + if in.Bucket == nil { + return nil, false + } + return in.Bucket, true +} func addCompleteMultipartUploadUpdateEndpoint(stack *middleware.Stack, options Options) error { return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ - Accessor: s3cust.UpdateEndpointParameterAccessor{GetBucketFromInput: getBucketFromInput, - SupportsAccelerate: supportAccelerate, + Accessor: s3cust.UpdateEndpointParameterAccessor{ + GetBucketFromInput: getCompleteMultipartUploadBucketMember, + SupportsAccelerate: true, }, UsePathStyle: options.UsePathStyle, UseAccelerate: options.UseAccelerate, diff --git a/service/s3/api_op_CopyObject.go b/service/s3/api_op_CopyObject.go index 0b3e238c2c4..b7062957cea 100644 --- a/service/s3/api_op_CopyObject.go +++ b/service/s3/api_op_CopyObject.go @@ -509,10 +509,20 @@ func newServiceMetadataMiddleware_opCopyObject(region string) *awsmiddleware.Reg } } +// getCopyObjectBucketMember returns a pointer to string denoting a provided bucket +// member valueand a boolean indicating if the input has a modeled bucket name, +func getCopyObjectBucketMember(input interface{}) (*string, bool) { + in := input.(*CopyObjectInput) + if in.Bucket == nil { + return nil, false + } + return in.Bucket, true +} func addCopyObjectUpdateEndpoint(stack *middleware.Stack, options Options) error { return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ - Accessor: s3cust.UpdateEndpointParameterAccessor{GetBucketFromInput: getBucketFromInput, - SupportsAccelerate: supportAccelerate, + Accessor: s3cust.UpdateEndpointParameterAccessor{ + GetBucketFromInput: getCopyObjectBucketMember, + SupportsAccelerate: true, }, UsePathStyle: options.UsePathStyle, UseAccelerate: options.UseAccelerate, diff --git a/service/s3/api_op_CreateBucket.go b/service/s3/api_op_CreateBucket.go index 4155fbd1741..bedb4a12dd3 100644 --- a/service/s3/api_op_CreateBucket.go +++ b/service/s3/api_op_CreateBucket.go @@ -239,10 +239,21 @@ func newServiceMetadataMiddleware_opCreateBucket(region string) *awsmiddleware.R } } +// getCreateBucketBucketMember returns a pointer to string denoting a provided +// bucket member valueand a boolean indicating if the input has a modeled bucket +// name, +func getCreateBucketBucketMember(input interface{}) (*string, bool) { + in := input.(*CreateBucketInput) + if in.Bucket == nil { + return nil, false + } + return in.Bucket, true +} func addCreateBucketUpdateEndpoint(stack *middleware.Stack, options Options) error { return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ - Accessor: s3cust.UpdateEndpointParameterAccessor{GetBucketFromInput: getBucketFromInput, - SupportsAccelerate: supportAccelerate, + Accessor: s3cust.UpdateEndpointParameterAccessor{ + GetBucketFromInput: getCreateBucketBucketMember, + SupportsAccelerate: false, }, UsePathStyle: options.UsePathStyle, UseAccelerate: options.UseAccelerate, diff --git a/service/s3/api_op_CreateMultipartUpload.go b/service/s3/api_op_CreateMultipartUpload.go index c893d6afa0f..d6470133108 100644 --- a/service/s3/api_op_CreateMultipartUpload.go +++ b/service/s3/api_op_CreateMultipartUpload.go @@ -535,10 +535,21 @@ func newServiceMetadataMiddleware_opCreateMultipartUpload(region string) *awsmid } } +// getCreateMultipartUploadBucketMember returns a pointer to string denoting a +// provided bucket member valueand a boolean indicating if the input has a modeled +// bucket name, +func getCreateMultipartUploadBucketMember(input interface{}) (*string, bool) { + in := input.(*CreateMultipartUploadInput) + if in.Bucket == nil { + return nil, false + } + return in.Bucket, true +} func addCreateMultipartUploadUpdateEndpoint(stack *middleware.Stack, options Options) error { return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ - Accessor: s3cust.UpdateEndpointParameterAccessor{GetBucketFromInput: getBucketFromInput, - SupportsAccelerate: supportAccelerate, + Accessor: s3cust.UpdateEndpointParameterAccessor{ + GetBucketFromInput: getCreateMultipartUploadBucketMember, + SupportsAccelerate: true, }, UsePathStyle: options.UsePathStyle, UseAccelerate: options.UseAccelerate, diff --git a/service/s3/api_op_DeleteBucket.go b/service/s3/api_op_DeleteBucket.go index ea9756ef5f4..43096a30b77 100644 --- a/service/s3/api_op_DeleteBucket.go +++ b/service/s3/api_op_DeleteBucket.go @@ -131,10 +131,21 @@ func newServiceMetadataMiddleware_opDeleteBucket(region string) *awsmiddleware.R } } +// getDeleteBucketBucketMember returns a pointer to string denoting a provided +// bucket member valueand a boolean indicating if the input has a modeled bucket +// name, +func getDeleteBucketBucketMember(input interface{}) (*string, bool) { + in := input.(*DeleteBucketInput) + if in.Bucket == nil { + return nil, false + } + return in.Bucket, true +} func addDeleteBucketUpdateEndpoint(stack *middleware.Stack, options Options) error { return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ - Accessor: s3cust.UpdateEndpointParameterAccessor{GetBucketFromInput: getBucketFromInput, - SupportsAccelerate: supportAccelerate, + Accessor: s3cust.UpdateEndpointParameterAccessor{ + GetBucketFromInput: getDeleteBucketBucketMember, + SupportsAccelerate: false, }, UsePathStyle: options.UsePathStyle, UseAccelerate: options.UseAccelerate, diff --git a/service/s3/api_op_DeleteBucketAnalyticsConfiguration.go b/service/s3/api_op_DeleteBucketAnalyticsConfiguration.go index 4d8bc23061f..e1f597a2789 100644 --- a/service/s3/api_op_DeleteBucketAnalyticsConfiguration.go +++ b/service/s3/api_op_DeleteBucketAnalyticsConfiguration.go @@ -151,10 +151,21 @@ func newServiceMetadataMiddleware_opDeleteBucketAnalyticsConfiguration(region st } } +// getDeleteBucketAnalyticsConfigurationBucketMember returns a pointer to string +// denoting a provided bucket member valueand a boolean indicating if the input has +// a modeled bucket name, +func getDeleteBucketAnalyticsConfigurationBucketMember(input interface{}) (*string, bool) { + in := input.(*DeleteBucketAnalyticsConfigurationInput) + if in.Bucket == nil { + return nil, false + } + return in.Bucket, true +} func addDeleteBucketAnalyticsConfigurationUpdateEndpoint(stack *middleware.Stack, options Options) error { return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ - Accessor: s3cust.UpdateEndpointParameterAccessor{GetBucketFromInput: getBucketFromInput, - SupportsAccelerate: supportAccelerate, + Accessor: s3cust.UpdateEndpointParameterAccessor{ + GetBucketFromInput: getDeleteBucketAnalyticsConfigurationBucketMember, + SupportsAccelerate: true, }, UsePathStyle: options.UsePathStyle, UseAccelerate: options.UseAccelerate, diff --git a/service/s3/api_op_DeleteBucketCors.go b/service/s3/api_op_DeleteBucketCors.go index fefdf870633..084fbb257f4 100644 --- a/service/s3/api_op_DeleteBucketCors.go +++ b/service/s3/api_op_DeleteBucketCors.go @@ -134,10 +134,21 @@ func newServiceMetadataMiddleware_opDeleteBucketCors(region string) *awsmiddlewa } } +// getDeleteBucketCorsBucketMember returns a pointer to string denoting a provided +// bucket member valueand a boolean indicating if the input has a modeled bucket +// name, +func getDeleteBucketCorsBucketMember(input interface{}) (*string, bool) { + in := input.(*DeleteBucketCorsInput) + if in.Bucket == nil { + return nil, false + } + return in.Bucket, true +} func addDeleteBucketCorsUpdateEndpoint(stack *middleware.Stack, options Options) error { return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ - Accessor: s3cust.UpdateEndpointParameterAccessor{GetBucketFromInput: getBucketFromInput, - SupportsAccelerate: supportAccelerate, + Accessor: s3cust.UpdateEndpointParameterAccessor{ + GetBucketFromInput: getDeleteBucketCorsBucketMember, + SupportsAccelerate: true, }, UsePathStyle: options.UsePathStyle, UseAccelerate: options.UseAccelerate, diff --git a/service/s3/api_op_DeleteBucketEncryption.go b/service/s3/api_op_DeleteBucketEncryption.go index 8858a5b3925..b306e1d62ce 100644 --- a/service/s3/api_op_DeleteBucketEncryption.go +++ b/service/s3/api_op_DeleteBucketEncryption.go @@ -143,10 +143,21 @@ func newServiceMetadataMiddleware_opDeleteBucketEncryption(region string) *awsmi } } +// getDeleteBucketEncryptionBucketMember returns a pointer to string denoting a +// provided bucket member valueand a boolean indicating if the input has a modeled +// bucket name, +func getDeleteBucketEncryptionBucketMember(input interface{}) (*string, bool) { + in := input.(*DeleteBucketEncryptionInput) + if in.Bucket == nil { + return nil, false + } + return in.Bucket, true +} func addDeleteBucketEncryptionUpdateEndpoint(stack *middleware.Stack, options Options) error { return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ - Accessor: s3cust.UpdateEndpointParameterAccessor{GetBucketFromInput: getBucketFromInput, - SupportsAccelerate: supportAccelerate, + Accessor: s3cust.UpdateEndpointParameterAccessor{ + GetBucketFromInput: getDeleteBucketEncryptionBucketMember, + SupportsAccelerate: true, }, UsePathStyle: options.UsePathStyle, UseAccelerate: options.UseAccelerate, diff --git a/service/s3/api_op_DeleteBucketInventoryConfiguration.go b/service/s3/api_op_DeleteBucketInventoryConfiguration.go index db69a627a26..898dcae59b7 100644 --- a/service/s3/api_op_DeleteBucketInventoryConfiguration.go +++ b/service/s3/api_op_DeleteBucketInventoryConfiguration.go @@ -150,10 +150,21 @@ func newServiceMetadataMiddleware_opDeleteBucketInventoryConfiguration(region st } } +// getDeleteBucketInventoryConfigurationBucketMember returns a pointer to string +// denoting a provided bucket member valueand a boolean indicating if the input has +// a modeled bucket name, +func getDeleteBucketInventoryConfigurationBucketMember(input interface{}) (*string, bool) { + in := input.(*DeleteBucketInventoryConfigurationInput) + if in.Bucket == nil { + return nil, false + } + return in.Bucket, true +} func addDeleteBucketInventoryConfigurationUpdateEndpoint(stack *middleware.Stack, options Options) error { return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ - Accessor: s3cust.UpdateEndpointParameterAccessor{GetBucketFromInput: getBucketFromInput, - SupportsAccelerate: supportAccelerate, + Accessor: s3cust.UpdateEndpointParameterAccessor{ + GetBucketFromInput: getDeleteBucketInventoryConfigurationBucketMember, + SupportsAccelerate: true, }, UsePathStyle: options.UsePathStyle, UseAccelerate: options.UseAccelerate, diff --git a/service/s3/api_op_DeleteBucketLifecycle.go b/service/s3/api_op_DeleteBucketLifecycle.go index f6e61fcf4d2..0259c617bb6 100644 --- a/service/s3/api_op_DeleteBucketLifecycle.go +++ b/service/s3/api_op_DeleteBucketLifecycle.go @@ -140,10 +140,21 @@ func newServiceMetadataMiddleware_opDeleteBucketLifecycle(region string) *awsmid } } +// getDeleteBucketLifecycleBucketMember returns a pointer to string denoting a +// provided bucket member valueand a boolean indicating if the input has a modeled +// bucket name, +func getDeleteBucketLifecycleBucketMember(input interface{}) (*string, bool) { + in := input.(*DeleteBucketLifecycleInput) + if in.Bucket == nil { + return nil, false + } + return in.Bucket, true +} func addDeleteBucketLifecycleUpdateEndpoint(stack *middleware.Stack, options Options) error { return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ - Accessor: s3cust.UpdateEndpointParameterAccessor{GetBucketFromInput: getBucketFromInput, - SupportsAccelerate: supportAccelerate, + Accessor: s3cust.UpdateEndpointParameterAccessor{ + GetBucketFromInput: getDeleteBucketLifecycleBucketMember, + SupportsAccelerate: true, }, UsePathStyle: options.UsePathStyle, UseAccelerate: options.UseAccelerate, diff --git a/service/s3/api_op_DeleteBucketMetricsConfiguration.go b/service/s3/api_op_DeleteBucketMetricsConfiguration.go index cf2e26877fe..1d0915b3190 100644 --- a/service/s3/api_op_DeleteBucketMetricsConfiguration.go +++ b/service/s3/api_op_DeleteBucketMetricsConfiguration.go @@ -156,10 +156,21 @@ func newServiceMetadataMiddleware_opDeleteBucketMetricsConfiguration(region stri } } +// getDeleteBucketMetricsConfigurationBucketMember returns a pointer to string +// denoting a provided bucket member valueand a boolean indicating if the input has +// a modeled bucket name, +func getDeleteBucketMetricsConfigurationBucketMember(input interface{}) (*string, bool) { + in := input.(*DeleteBucketMetricsConfigurationInput) + if in.Bucket == nil { + return nil, false + } + return in.Bucket, true +} func addDeleteBucketMetricsConfigurationUpdateEndpoint(stack *middleware.Stack, options Options) error { return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ - Accessor: s3cust.UpdateEndpointParameterAccessor{GetBucketFromInput: getBucketFromInput, - SupportsAccelerate: supportAccelerate, + Accessor: s3cust.UpdateEndpointParameterAccessor{ + GetBucketFromInput: getDeleteBucketMetricsConfigurationBucketMember, + SupportsAccelerate: true, }, UsePathStyle: options.UsePathStyle, UseAccelerate: options.UseAccelerate, diff --git a/service/s3/api_op_DeleteBucketOwnershipControls.go b/service/s3/api_op_DeleteBucketOwnershipControls.go index d2ba1e52ea1..38584463c25 100644 --- a/service/s3/api_op_DeleteBucketOwnershipControls.go +++ b/service/s3/api_op_DeleteBucketOwnershipControls.go @@ -131,10 +131,21 @@ func newServiceMetadataMiddleware_opDeleteBucketOwnershipControls(region string) } } +// getDeleteBucketOwnershipControlsBucketMember returns a pointer to string +// denoting a provided bucket member valueand a boolean indicating if the input has +// a modeled bucket name, +func getDeleteBucketOwnershipControlsBucketMember(input interface{}) (*string, bool) { + in := input.(*DeleteBucketOwnershipControlsInput) + if in.Bucket == nil { + return nil, false + } + return in.Bucket, true +} func addDeleteBucketOwnershipControlsUpdateEndpoint(stack *middleware.Stack, options Options) error { return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ - Accessor: s3cust.UpdateEndpointParameterAccessor{GetBucketFromInput: getBucketFromInput, - SupportsAccelerate: supportAccelerate, + Accessor: s3cust.UpdateEndpointParameterAccessor{ + GetBucketFromInput: getDeleteBucketOwnershipControlsBucketMember, + SupportsAccelerate: true, }, UsePathStyle: options.UsePathStyle, UseAccelerate: options.UseAccelerate, diff --git a/service/s3/api_op_DeleteBucketPolicy.go b/service/s3/api_op_DeleteBucketPolicy.go index cdc55fbdb57..271ead1d172 100644 --- a/service/s3/api_op_DeleteBucketPolicy.go +++ b/service/s3/api_op_DeleteBucketPolicy.go @@ -142,10 +142,21 @@ func newServiceMetadataMiddleware_opDeleteBucketPolicy(region string) *awsmiddle } } +// getDeleteBucketPolicyBucketMember returns a pointer to string denoting a +// provided bucket member valueand a boolean indicating if the input has a modeled +// bucket name, +func getDeleteBucketPolicyBucketMember(input interface{}) (*string, bool) { + in := input.(*DeleteBucketPolicyInput) + if in.Bucket == nil { + return nil, false + } + return in.Bucket, true +} func addDeleteBucketPolicyUpdateEndpoint(stack *middleware.Stack, options Options) error { return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ - Accessor: s3cust.UpdateEndpointParameterAccessor{GetBucketFromInput: getBucketFromInput, - SupportsAccelerate: supportAccelerate, + Accessor: s3cust.UpdateEndpointParameterAccessor{ + GetBucketFromInput: getDeleteBucketPolicyBucketMember, + SupportsAccelerate: true, }, UsePathStyle: options.UsePathStyle, UseAccelerate: options.UseAccelerate, diff --git a/service/s3/api_op_DeleteBucketReplication.go b/service/s3/api_op_DeleteBucketReplication.go index 5691acdff6d..d04369c5fc9 100644 --- a/service/s3/api_op_DeleteBucketReplication.go +++ b/service/s3/api_op_DeleteBucketReplication.go @@ -141,10 +141,21 @@ func newServiceMetadataMiddleware_opDeleteBucketReplication(region string) *awsm } } +// getDeleteBucketReplicationBucketMember returns a pointer to string denoting a +// provided bucket member valueand a boolean indicating if the input has a modeled +// bucket name, +func getDeleteBucketReplicationBucketMember(input interface{}) (*string, bool) { + in := input.(*DeleteBucketReplicationInput) + if in.Bucket == nil { + return nil, false + } + return in.Bucket, true +} func addDeleteBucketReplicationUpdateEndpoint(stack *middleware.Stack, options Options) error { return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ - Accessor: s3cust.UpdateEndpointParameterAccessor{GetBucketFromInput: getBucketFromInput, - SupportsAccelerate: supportAccelerate, + Accessor: s3cust.UpdateEndpointParameterAccessor{ + GetBucketFromInput: getDeleteBucketReplicationBucketMember, + SupportsAccelerate: true, }, UsePathStyle: options.UsePathStyle, UseAccelerate: options.UseAccelerate, diff --git a/service/s3/api_op_DeleteBucketTagging.go b/service/s3/api_op_DeleteBucketTagging.go index e37fd586a02..1803154bfd3 100644 --- a/service/s3/api_op_DeleteBucketTagging.go +++ b/service/s3/api_op_DeleteBucketTagging.go @@ -132,10 +132,21 @@ func newServiceMetadataMiddleware_opDeleteBucketTagging(region string) *awsmiddl } } +// getDeleteBucketTaggingBucketMember returns a pointer to string denoting a +// provided bucket member valueand a boolean indicating if the input has a modeled +// bucket name, +func getDeleteBucketTaggingBucketMember(input interface{}) (*string, bool) { + in := input.(*DeleteBucketTaggingInput) + if in.Bucket == nil { + return nil, false + } + return in.Bucket, true +} func addDeleteBucketTaggingUpdateEndpoint(stack *middleware.Stack, options Options) error { return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ - Accessor: s3cust.UpdateEndpointParameterAccessor{GetBucketFromInput: getBucketFromInput, - SupportsAccelerate: supportAccelerate, + Accessor: s3cust.UpdateEndpointParameterAccessor{ + GetBucketFromInput: getDeleteBucketTaggingBucketMember, + SupportsAccelerate: true, }, UsePathStyle: options.UsePathStyle, UseAccelerate: options.UseAccelerate, diff --git a/service/s3/api_op_DeleteBucketWebsite.go b/service/s3/api_op_DeleteBucketWebsite.go index eac349c299c..faa410e90c8 100644 --- a/service/s3/api_op_DeleteBucketWebsite.go +++ b/service/s3/api_op_DeleteBucketWebsite.go @@ -141,10 +141,21 @@ func newServiceMetadataMiddleware_opDeleteBucketWebsite(region string) *awsmiddl } } +// getDeleteBucketWebsiteBucketMember returns a pointer to string denoting a +// provided bucket member valueand a boolean indicating if the input has a modeled +// bucket name, +func getDeleteBucketWebsiteBucketMember(input interface{}) (*string, bool) { + in := input.(*DeleteBucketWebsiteInput) + if in.Bucket == nil { + return nil, false + } + return in.Bucket, true +} func addDeleteBucketWebsiteUpdateEndpoint(stack *middleware.Stack, options Options) error { return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ - Accessor: s3cust.UpdateEndpointParameterAccessor{GetBucketFromInput: getBucketFromInput, - SupportsAccelerate: supportAccelerate, + Accessor: s3cust.UpdateEndpointParameterAccessor{ + GetBucketFromInput: getDeleteBucketWebsiteBucketMember, + SupportsAccelerate: true, }, UsePathStyle: options.UsePathStyle, UseAccelerate: options.UseAccelerate, diff --git a/service/s3/api_op_DeleteObject.go b/service/s3/api_op_DeleteObject.go index e38c1780dc4..95593af67de 100644 --- a/service/s3/api_op_DeleteObject.go +++ b/service/s3/api_op_DeleteObject.go @@ -199,10 +199,21 @@ func newServiceMetadataMiddleware_opDeleteObject(region string) *awsmiddleware.R } } +// getDeleteObjectBucketMember returns a pointer to string denoting a provided +// bucket member valueand a boolean indicating if the input has a modeled bucket +// name, +func getDeleteObjectBucketMember(input interface{}) (*string, bool) { + in := input.(*DeleteObjectInput) + if in.Bucket == nil { + return nil, false + } + return in.Bucket, true +} func addDeleteObjectUpdateEndpoint(stack *middleware.Stack, options Options) error { return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ - Accessor: s3cust.UpdateEndpointParameterAccessor{GetBucketFromInput: getBucketFromInput, - SupportsAccelerate: supportAccelerate, + Accessor: s3cust.UpdateEndpointParameterAccessor{ + GetBucketFromInput: getDeleteObjectBucketMember, + SupportsAccelerate: true, }, UsePathStyle: options.UsePathStyle, UseAccelerate: options.UseAccelerate, diff --git a/service/s3/api_op_DeleteObjectTagging.go b/service/s3/api_op_DeleteObjectTagging.go index 46f80a6c9be..0232fcd99f9 100644 --- a/service/s3/api_op_DeleteObjectTagging.go +++ b/service/s3/api_op_DeleteObjectTagging.go @@ -164,10 +164,21 @@ func newServiceMetadataMiddleware_opDeleteObjectTagging(region string) *awsmiddl } } +// getDeleteObjectTaggingBucketMember returns a pointer to string denoting a +// provided bucket member valueand a boolean indicating if the input has a modeled +// bucket name, +func getDeleteObjectTaggingBucketMember(input interface{}) (*string, bool) { + in := input.(*DeleteObjectTaggingInput) + if in.Bucket == nil { + return nil, false + } + return in.Bucket, true +} func addDeleteObjectTaggingUpdateEndpoint(stack *middleware.Stack, options Options) error { return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ - Accessor: s3cust.UpdateEndpointParameterAccessor{GetBucketFromInput: getBucketFromInput, - SupportsAccelerate: supportAccelerate, + Accessor: s3cust.UpdateEndpointParameterAccessor{ + GetBucketFromInput: getDeleteObjectTaggingBucketMember, + SupportsAccelerate: true, }, UsePathStyle: options.UsePathStyle, UseAccelerate: options.UseAccelerate, diff --git a/service/s3/api_op_DeleteObjects.go b/service/s3/api_op_DeleteObjects.go index 97af323d6b6..1d6e35a776b 100644 --- a/service/s3/api_op_DeleteObjects.go +++ b/service/s3/api_op_DeleteObjects.go @@ -222,10 +222,21 @@ func newServiceMetadataMiddleware_opDeleteObjects(region string) *awsmiddleware. } } +// getDeleteObjectsBucketMember returns a pointer to string denoting a provided +// bucket member valueand a boolean indicating if the input has a modeled bucket +// name, +func getDeleteObjectsBucketMember(input interface{}) (*string, bool) { + in := input.(*DeleteObjectsInput) + if in.Bucket == nil { + return nil, false + } + return in.Bucket, true +} func addDeleteObjectsUpdateEndpoint(stack *middleware.Stack, options Options) error { return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ - Accessor: s3cust.UpdateEndpointParameterAccessor{GetBucketFromInput: getBucketFromInput, - SupportsAccelerate: supportAccelerate, + Accessor: s3cust.UpdateEndpointParameterAccessor{ + GetBucketFromInput: getDeleteObjectsBucketMember, + SupportsAccelerate: true, }, UsePathStyle: options.UsePathStyle, UseAccelerate: options.UseAccelerate, diff --git a/service/s3/api_op_DeletePublicAccessBlock.go b/service/s3/api_op_DeletePublicAccessBlock.go index c3b47688b12..f3e15dd21f0 100644 --- a/service/s3/api_op_DeletePublicAccessBlock.go +++ b/service/s3/api_op_DeletePublicAccessBlock.go @@ -145,10 +145,21 @@ func newServiceMetadataMiddleware_opDeletePublicAccessBlock(region string) *awsm } } +// getDeletePublicAccessBlockBucketMember returns a pointer to string denoting a +// provided bucket member valueand a boolean indicating if the input has a modeled +// bucket name, +func getDeletePublicAccessBlockBucketMember(input interface{}) (*string, bool) { + in := input.(*DeletePublicAccessBlockInput) + if in.Bucket == nil { + return nil, false + } + return in.Bucket, true +} func addDeletePublicAccessBlockUpdateEndpoint(stack *middleware.Stack, options Options) error { return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ - Accessor: s3cust.UpdateEndpointParameterAccessor{GetBucketFromInput: getBucketFromInput, - SupportsAccelerate: supportAccelerate, + Accessor: s3cust.UpdateEndpointParameterAccessor{ + GetBucketFromInput: getDeletePublicAccessBlockBucketMember, + SupportsAccelerate: true, }, UsePathStyle: options.UsePathStyle, UseAccelerate: options.UseAccelerate, diff --git a/service/s3/api_op_GetBucketAccelerateConfiguration.go b/service/s3/api_op_GetBucketAccelerateConfiguration.go index f3447307556..6b589f5e475 100644 --- a/service/s3/api_op_GetBucketAccelerateConfiguration.go +++ b/service/s3/api_op_GetBucketAccelerateConfiguration.go @@ -151,10 +151,21 @@ func newServiceMetadataMiddleware_opGetBucketAccelerateConfiguration(region stri } } +// getGetBucketAccelerateConfigurationBucketMember returns a pointer to string +// denoting a provided bucket member valueand a boolean indicating if the input has +// a modeled bucket name, +func getGetBucketAccelerateConfigurationBucketMember(input interface{}) (*string, bool) { + in := input.(*GetBucketAccelerateConfigurationInput) + if in.Bucket == nil { + return nil, false + } + return in.Bucket, true +} func addGetBucketAccelerateConfigurationUpdateEndpoint(stack *middleware.Stack, options Options) error { return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ - Accessor: s3cust.UpdateEndpointParameterAccessor{GetBucketFromInput: getBucketFromInput, - SupportsAccelerate: supportAccelerate, + Accessor: s3cust.UpdateEndpointParameterAccessor{ + GetBucketFromInput: getGetBucketAccelerateConfigurationBucketMember, + SupportsAccelerate: true, }, UsePathStyle: options.UsePathStyle, UseAccelerate: options.UseAccelerate, diff --git a/service/s3/api_op_GetBucketAcl.go b/service/s3/api_op_GetBucketAcl.go index 7fad0506c13..5abe57d4d69 100644 --- a/service/s3/api_op_GetBucketAcl.go +++ b/service/s3/api_op_GetBucketAcl.go @@ -137,10 +137,21 @@ func newServiceMetadataMiddleware_opGetBucketAcl(region string) *awsmiddleware.R } } +// getGetBucketAclBucketMember returns a pointer to string denoting a provided +// bucket member valueand a boolean indicating if the input has a modeled bucket +// name, +func getGetBucketAclBucketMember(input interface{}) (*string, bool) { + in := input.(*GetBucketAclInput) + if in.Bucket == nil { + return nil, false + } + return in.Bucket, true +} func addGetBucketAclUpdateEndpoint(stack *middleware.Stack, options Options) error { return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ - Accessor: s3cust.UpdateEndpointParameterAccessor{GetBucketFromInput: getBucketFromInput, - SupportsAccelerate: supportAccelerate, + Accessor: s3cust.UpdateEndpointParameterAccessor{ + GetBucketFromInput: getGetBucketAclBucketMember, + SupportsAccelerate: true, }, UsePathStyle: options.UsePathStyle, UseAccelerate: options.UseAccelerate, diff --git a/service/s3/api_op_GetBucketAnalyticsConfiguration.go b/service/s3/api_op_GetBucketAnalyticsConfiguration.go index 6f46256a7e0..1948ff302c6 100644 --- a/service/s3/api_op_GetBucketAnalyticsConfiguration.go +++ b/service/s3/api_op_GetBucketAnalyticsConfiguration.go @@ -156,10 +156,21 @@ func newServiceMetadataMiddleware_opGetBucketAnalyticsConfiguration(region strin } } +// getGetBucketAnalyticsConfigurationBucketMember returns a pointer to string +// denoting a provided bucket member valueand a boolean indicating if the input has +// a modeled bucket name, +func getGetBucketAnalyticsConfigurationBucketMember(input interface{}) (*string, bool) { + in := input.(*GetBucketAnalyticsConfigurationInput) + if in.Bucket == nil { + return nil, false + } + return in.Bucket, true +} func addGetBucketAnalyticsConfigurationUpdateEndpoint(stack *middleware.Stack, options Options) error { return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ - Accessor: s3cust.UpdateEndpointParameterAccessor{GetBucketFromInput: getBucketFromInput, - SupportsAccelerate: supportAccelerate, + Accessor: s3cust.UpdateEndpointParameterAccessor{ + GetBucketFromInput: getGetBucketAnalyticsConfigurationBucketMember, + SupportsAccelerate: true, }, UsePathStyle: options.UsePathStyle, UseAccelerate: options.UseAccelerate, diff --git a/service/s3/api_op_GetBucketCors.go b/service/s3/api_op_GetBucketCors.go index 9aefa022b02..ca91c4220e1 100644 --- a/service/s3/api_op_GetBucketCors.go +++ b/service/s3/api_op_GetBucketCors.go @@ -140,10 +140,21 @@ func newServiceMetadataMiddleware_opGetBucketCors(region string) *awsmiddleware. } } +// getGetBucketCorsBucketMember returns a pointer to string denoting a provided +// bucket member valueand a boolean indicating if the input has a modeled bucket +// name, +func getGetBucketCorsBucketMember(input interface{}) (*string, bool) { + in := input.(*GetBucketCorsInput) + if in.Bucket == nil { + return nil, false + } + return in.Bucket, true +} func addGetBucketCorsUpdateEndpoint(stack *middleware.Stack, options Options) error { return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ - Accessor: s3cust.UpdateEndpointParameterAccessor{GetBucketFromInput: getBucketFromInput, - SupportsAccelerate: supportAccelerate, + Accessor: s3cust.UpdateEndpointParameterAccessor{ + GetBucketFromInput: getGetBucketCorsBucketMember, + SupportsAccelerate: true, }, UsePathStyle: options.UsePathStyle, UseAccelerate: options.UseAccelerate, diff --git a/service/s3/api_op_GetBucketEncryption.go b/service/s3/api_op_GetBucketEncryption.go index ab37edc97ba..203fcb9d09f 100644 --- a/service/s3/api_op_GetBucketEncryption.go +++ b/service/s3/api_op_GetBucketEncryption.go @@ -147,10 +147,21 @@ func newServiceMetadataMiddleware_opGetBucketEncryption(region string) *awsmiddl } } +// getGetBucketEncryptionBucketMember returns a pointer to string denoting a +// provided bucket member valueand a boolean indicating if the input has a modeled +// bucket name, +func getGetBucketEncryptionBucketMember(input interface{}) (*string, bool) { + in := input.(*GetBucketEncryptionInput) + if in.Bucket == nil { + return nil, false + } + return in.Bucket, true +} func addGetBucketEncryptionUpdateEndpoint(stack *middleware.Stack, options Options) error { return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ - Accessor: s3cust.UpdateEndpointParameterAccessor{GetBucketFromInput: getBucketFromInput, - SupportsAccelerate: supportAccelerate, + Accessor: s3cust.UpdateEndpointParameterAccessor{ + GetBucketFromInput: getGetBucketEncryptionBucketMember, + SupportsAccelerate: true, }, UsePathStyle: options.UsePathStyle, UseAccelerate: options.UseAccelerate, diff --git a/service/s3/api_op_GetBucketInventoryConfiguration.go b/service/s3/api_op_GetBucketInventoryConfiguration.go index 7f4180e80cb..9b4d7a5d5ce 100644 --- a/service/s3/api_op_GetBucketInventoryConfiguration.go +++ b/service/s3/api_op_GetBucketInventoryConfiguration.go @@ -154,10 +154,21 @@ func newServiceMetadataMiddleware_opGetBucketInventoryConfiguration(region strin } } +// getGetBucketInventoryConfigurationBucketMember returns a pointer to string +// denoting a provided bucket member valueand a boolean indicating if the input has +// a modeled bucket name, +func getGetBucketInventoryConfigurationBucketMember(input interface{}) (*string, bool) { + in := input.(*GetBucketInventoryConfigurationInput) + if in.Bucket == nil { + return nil, false + } + return in.Bucket, true +} func addGetBucketInventoryConfigurationUpdateEndpoint(stack *middleware.Stack, options Options) error { return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ - Accessor: s3cust.UpdateEndpointParameterAccessor{GetBucketFromInput: getBucketFromInput, - SupportsAccelerate: supportAccelerate, + Accessor: s3cust.UpdateEndpointParameterAccessor{ + GetBucketFromInput: getGetBucketInventoryConfigurationBucketMember, + SupportsAccelerate: true, }, UsePathStyle: options.UsePathStyle, UseAccelerate: options.UseAccelerate, diff --git a/service/s3/api_op_GetBucketLifecycleConfiguration.go b/service/s3/api_op_GetBucketLifecycleConfiguration.go index 1857127acba..981b31697e9 100644 --- a/service/s3/api_op_GetBucketLifecycleConfiguration.go +++ b/service/s3/api_op_GetBucketLifecycleConfiguration.go @@ -171,10 +171,21 @@ func newServiceMetadataMiddleware_opGetBucketLifecycleConfiguration(region strin } } +// getGetBucketLifecycleConfigurationBucketMember returns a pointer to string +// denoting a provided bucket member valueand a boolean indicating if the input has +// a modeled bucket name, +func getGetBucketLifecycleConfigurationBucketMember(input interface{}) (*string, bool) { + in := input.(*GetBucketLifecycleConfigurationInput) + if in.Bucket == nil { + return nil, false + } + return in.Bucket, true +} func addGetBucketLifecycleConfigurationUpdateEndpoint(stack *middleware.Stack, options Options) error { return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ - Accessor: s3cust.UpdateEndpointParameterAccessor{GetBucketFromInput: getBucketFromInput, - SupportsAccelerate: supportAccelerate, + Accessor: s3cust.UpdateEndpointParameterAccessor{ + GetBucketFromInput: getGetBucketLifecycleConfigurationBucketMember, + SupportsAccelerate: true, }, UsePathStyle: options.UsePathStyle, UseAccelerate: options.UseAccelerate, diff --git a/service/s3/api_op_GetBucketLocation.go b/service/s3/api_op_GetBucketLocation.go index a734c66fc7a..f43346c7bc4 100644 --- a/service/s3/api_op_GetBucketLocation.go +++ b/service/s3/api_op_GetBucketLocation.go @@ -142,10 +142,21 @@ func newServiceMetadataMiddleware_opGetBucketLocation(region string) *awsmiddlew } } +// getGetBucketLocationBucketMember returns a pointer to string denoting a provided +// bucket member valueand a boolean indicating if the input has a modeled bucket +// name, +func getGetBucketLocationBucketMember(input interface{}) (*string, bool) { + in := input.(*GetBucketLocationInput) + if in.Bucket == nil { + return nil, false + } + return in.Bucket, true +} func addGetBucketLocationUpdateEndpoint(stack *middleware.Stack, options Options) error { return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ - Accessor: s3cust.UpdateEndpointParameterAccessor{GetBucketFromInput: getBucketFromInput, - SupportsAccelerate: supportAccelerate, + Accessor: s3cust.UpdateEndpointParameterAccessor{ + GetBucketFromInput: getGetBucketLocationBucketMember, + SupportsAccelerate: true, }, UsePathStyle: options.UsePathStyle, UseAccelerate: options.UseAccelerate, diff --git a/service/s3/api_op_GetBucketLogging.go b/service/s3/api_op_GetBucketLogging.go index af08cbbaaa2..cdef1cf29e0 100644 --- a/service/s3/api_op_GetBucketLogging.go +++ b/service/s3/api_op_GetBucketLogging.go @@ -139,10 +139,21 @@ func newServiceMetadataMiddleware_opGetBucketLogging(region string) *awsmiddlewa } } +// getGetBucketLoggingBucketMember returns a pointer to string denoting a provided +// bucket member valueand a boolean indicating if the input has a modeled bucket +// name, +func getGetBucketLoggingBucketMember(input interface{}) (*string, bool) { + in := input.(*GetBucketLoggingInput) + if in.Bucket == nil { + return nil, false + } + return in.Bucket, true +} func addGetBucketLoggingUpdateEndpoint(stack *middleware.Stack, options Options) error { return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ - Accessor: s3cust.UpdateEndpointParameterAccessor{GetBucketFromInput: getBucketFromInput, - SupportsAccelerate: supportAccelerate, + Accessor: s3cust.UpdateEndpointParameterAccessor{ + GetBucketFromInput: getGetBucketLoggingBucketMember, + SupportsAccelerate: true, }, UsePathStyle: options.UsePathStyle, UseAccelerate: options.UseAccelerate, diff --git a/service/s3/api_op_GetBucketMetricsConfiguration.go b/service/s3/api_op_GetBucketMetricsConfiguration.go index 48ddb09063d..fb79e8e92ba 100644 --- a/service/s3/api_op_GetBucketMetricsConfiguration.go +++ b/service/s3/api_op_GetBucketMetricsConfiguration.go @@ -161,10 +161,21 @@ func newServiceMetadataMiddleware_opGetBucketMetricsConfiguration(region string) } } +// getGetBucketMetricsConfigurationBucketMember returns a pointer to string +// denoting a provided bucket member valueand a boolean indicating if the input has +// a modeled bucket name, +func getGetBucketMetricsConfigurationBucketMember(input interface{}) (*string, bool) { + in := input.(*GetBucketMetricsConfigurationInput) + if in.Bucket == nil { + return nil, false + } + return in.Bucket, true +} func addGetBucketMetricsConfigurationUpdateEndpoint(stack *middleware.Stack, options Options) error { return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ - Accessor: s3cust.UpdateEndpointParameterAccessor{GetBucketFromInput: getBucketFromInput, - SupportsAccelerate: supportAccelerate, + Accessor: s3cust.UpdateEndpointParameterAccessor{ + GetBucketFromInput: getGetBucketMetricsConfigurationBucketMember, + SupportsAccelerate: true, }, UsePathStyle: options.UsePathStyle, UseAccelerate: options.UseAccelerate, diff --git a/service/s3/api_op_GetBucketNotificationConfiguration.go b/service/s3/api_op_GetBucketNotificationConfiguration.go index d58f7f1a0e0..7f16e0461fd 100644 --- a/service/s3/api_op_GetBucketNotificationConfiguration.go +++ b/service/s3/api_op_GetBucketNotificationConfiguration.go @@ -153,10 +153,21 @@ func newServiceMetadataMiddleware_opGetBucketNotificationConfiguration(region st } } +// getGetBucketNotificationConfigurationBucketMember returns a pointer to string +// denoting a provided bucket member valueand a boolean indicating if the input has +// a modeled bucket name, +func getGetBucketNotificationConfigurationBucketMember(input interface{}) (*string, bool) { + in := input.(*GetBucketNotificationConfigurationInput) + if in.Bucket == nil { + return nil, false + } + return in.Bucket, true +} func addGetBucketNotificationConfigurationUpdateEndpoint(stack *middleware.Stack, options Options) error { return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ - Accessor: s3cust.UpdateEndpointParameterAccessor{GetBucketFromInput: getBucketFromInput, - SupportsAccelerate: supportAccelerate, + Accessor: s3cust.UpdateEndpointParameterAccessor{ + GetBucketFromInput: getGetBucketNotificationConfigurationBucketMember, + SupportsAccelerate: true, }, UsePathStyle: options.UsePathStyle, UseAccelerate: options.UseAccelerate, diff --git a/service/s3/api_op_GetBucketOwnershipControls.go b/service/s3/api_op_GetBucketOwnershipControls.go index 555bc2bf1ed..6d56188b108 100644 --- a/service/s3/api_op_GetBucketOwnershipControls.go +++ b/service/s3/api_op_GetBucketOwnershipControls.go @@ -137,10 +137,21 @@ func newServiceMetadataMiddleware_opGetBucketOwnershipControls(region string) *a } } +// getGetBucketOwnershipControlsBucketMember returns a pointer to string denoting a +// provided bucket member valueand a boolean indicating if the input has a modeled +// bucket name, +func getGetBucketOwnershipControlsBucketMember(input interface{}) (*string, bool) { + in := input.(*GetBucketOwnershipControlsInput) + if in.Bucket == nil { + return nil, false + } + return in.Bucket, true +} func addGetBucketOwnershipControlsUpdateEndpoint(stack *middleware.Stack, options Options) error { return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ - Accessor: s3cust.UpdateEndpointParameterAccessor{GetBucketFromInput: getBucketFromInput, - SupportsAccelerate: supportAccelerate, + Accessor: s3cust.UpdateEndpointParameterAccessor{ + GetBucketFromInput: getGetBucketOwnershipControlsBucketMember, + SupportsAccelerate: true, }, UsePathStyle: options.UsePathStyle, UseAccelerate: options.UseAccelerate, diff --git a/service/s3/api_op_GetBucketPolicy.go b/service/s3/api_op_GetBucketPolicy.go index ce75d6abd41..977dc89aff1 100644 --- a/service/s3/api_op_GetBucketPolicy.go +++ b/service/s3/api_op_GetBucketPolicy.go @@ -141,10 +141,21 @@ func newServiceMetadataMiddleware_opGetBucketPolicy(region string) *awsmiddlewar } } +// getGetBucketPolicyBucketMember returns a pointer to string denoting a provided +// bucket member valueand a boolean indicating if the input has a modeled bucket +// name, +func getGetBucketPolicyBucketMember(input interface{}) (*string, bool) { + in := input.(*GetBucketPolicyInput) + if in.Bucket == nil { + return nil, false + } + return in.Bucket, true +} func addGetBucketPolicyUpdateEndpoint(stack *middleware.Stack, options Options) error { return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ - Accessor: s3cust.UpdateEndpointParameterAccessor{GetBucketFromInput: getBucketFromInput, - SupportsAccelerate: supportAccelerate, + Accessor: s3cust.UpdateEndpointParameterAccessor{ + GetBucketFromInput: getGetBucketPolicyBucketMember, + SupportsAccelerate: true, }, UsePathStyle: options.UsePathStyle, UseAccelerate: options.UseAccelerate, diff --git a/service/s3/api_op_GetBucketPolicyStatus.go b/service/s3/api_op_GetBucketPolicyStatus.go index eab4b5a34c8..fc741381f02 100644 --- a/service/s3/api_op_GetBucketPolicyStatus.go +++ b/service/s3/api_op_GetBucketPolicyStatus.go @@ -151,10 +151,21 @@ func newServiceMetadataMiddleware_opGetBucketPolicyStatus(region string) *awsmid } } +// getGetBucketPolicyStatusBucketMember returns a pointer to string denoting a +// provided bucket member valueand a boolean indicating if the input has a modeled +// bucket name, +func getGetBucketPolicyStatusBucketMember(input interface{}) (*string, bool) { + in := input.(*GetBucketPolicyStatusInput) + if in.Bucket == nil { + return nil, false + } + return in.Bucket, true +} func addGetBucketPolicyStatusUpdateEndpoint(stack *middleware.Stack, options Options) error { return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ - Accessor: s3cust.UpdateEndpointParameterAccessor{GetBucketFromInput: getBucketFromInput, - SupportsAccelerate: supportAccelerate, + Accessor: s3cust.UpdateEndpointParameterAccessor{ + GetBucketFromInput: getGetBucketPolicyStatusBucketMember, + SupportsAccelerate: true, }, UsePathStyle: options.UsePathStyle, UseAccelerate: options.UseAccelerate, diff --git a/service/s3/api_op_GetBucketReplication.go b/service/s3/api_op_GetBucketReplication.go index 8f555e626bc..fbcaadfc992 100644 --- a/service/s3/api_op_GetBucketReplication.go +++ b/service/s3/api_op_GetBucketReplication.go @@ -150,10 +150,21 @@ func newServiceMetadataMiddleware_opGetBucketReplication(region string) *awsmidd } } +// getGetBucketReplicationBucketMember returns a pointer to string denoting a +// provided bucket member valueand a boolean indicating if the input has a modeled +// bucket name, +func getGetBucketReplicationBucketMember(input interface{}) (*string, bool) { + in := input.(*GetBucketReplicationInput) + if in.Bucket == nil { + return nil, false + } + return in.Bucket, true +} func addGetBucketReplicationUpdateEndpoint(stack *middleware.Stack, options Options) error { return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ - Accessor: s3cust.UpdateEndpointParameterAccessor{GetBucketFromInput: getBucketFromInput, - SupportsAccelerate: supportAccelerate, + Accessor: s3cust.UpdateEndpointParameterAccessor{ + GetBucketFromInput: getGetBucketReplicationBucketMember, + SupportsAccelerate: true, }, UsePathStyle: options.UsePathStyle, UseAccelerate: options.UseAccelerate, diff --git a/service/s3/api_op_GetBucketRequestPayment.go b/service/s3/api_op_GetBucketRequestPayment.go index fdfa0582c2b..cdb657494e1 100644 --- a/service/s3/api_op_GetBucketRequestPayment.go +++ b/service/s3/api_op_GetBucketRequestPayment.go @@ -134,10 +134,21 @@ func newServiceMetadataMiddleware_opGetBucketRequestPayment(region string) *awsm } } +// getGetBucketRequestPaymentBucketMember returns a pointer to string denoting a +// provided bucket member valueand a boolean indicating if the input has a modeled +// bucket name, +func getGetBucketRequestPaymentBucketMember(input interface{}) (*string, bool) { + in := input.(*GetBucketRequestPaymentInput) + if in.Bucket == nil { + return nil, false + } + return in.Bucket, true +} func addGetBucketRequestPaymentUpdateEndpoint(stack *middleware.Stack, options Options) error { return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ - Accessor: s3cust.UpdateEndpointParameterAccessor{GetBucketFromInput: getBucketFromInput, - SupportsAccelerate: supportAccelerate, + Accessor: s3cust.UpdateEndpointParameterAccessor{ + GetBucketFromInput: getGetBucketRequestPaymentBucketMember, + SupportsAccelerate: true, }, UsePathStyle: options.UsePathStyle, UseAccelerate: options.UseAccelerate, diff --git a/service/s3/api_op_GetBucketTagging.go b/service/s3/api_op_GetBucketTagging.go index b7029d6061e..7b908593b6c 100644 --- a/service/s3/api_op_GetBucketTagging.go +++ b/service/s3/api_op_GetBucketTagging.go @@ -148,10 +148,21 @@ func newServiceMetadataMiddleware_opGetBucketTagging(region string) *awsmiddlewa } } +// getGetBucketTaggingBucketMember returns a pointer to string denoting a provided +// bucket member valueand a boolean indicating if the input has a modeled bucket +// name, +func getGetBucketTaggingBucketMember(input interface{}) (*string, bool) { + in := input.(*GetBucketTaggingInput) + if in.Bucket == nil { + return nil, false + } + return in.Bucket, true +} func addGetBucketTaggingUpdateEndpoint(stack *middleware.Stack, options Options) error { return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ - Accessor: s3cust.UpdateEndpointParameterAccessor{GetBucketFromInput: getBucketFromInput, - SupportsAccelerate: supportAccelerate, + Accessor: s3cust.UpdateEndpointParameterAccessor{ + GetBucketFromInput: getGetBucketTaggingBucketMember, + SupportsAccelerate: true, }, UsePathStyle: options.UsePathStyle, UseAccelerate: options.UseAccelerate, diff --git a/service/s3/api_op_GetBucketVersioning.go b/service/s3/api_op_GetBucketVersioning.go index 53360ec60e3..769ca092936 100644 --- a/service/s3/api_op_GetBucketVersioning.go +++ b/service/s3/api_op_GetBucketVersioning.go @@ -148,10 +148,21 @@ func newServiceMetadataMiddleware_opGetBucketVersioning(region string) *awsmiddl } } +// getGetBucketVersioningBucketMember returns a pointer to string denoting a +// provided bucket member valueand a boolean indicating if the input has a modeled +// bucket name, +func getGetBucketVersioningBucketMember(input interface{}) (*string, bool) { + in := input.(*GetBucketVersioningInput) + if in.Bucket == nil { + return nil, false + } + return in.Bucket, true +} func addGetBucketVersioningUpdateEndpoint(stack *middleware.Stack, options Options) error { return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ - Accessor: s3cust.UpdateEndpointParameterAccessor{GetBucketFromInput: getBucketFromInput, - SupportsAccelerate: supportAccelerate, + Accessor: s3cust.UpdateEndpointParameterAccessor{ + GetBucketFromInput: getGetBucketVersioningBucketMember, + SupportsAccelerate: true, }, UsePathStyle: options.UsePathStyle, UseAccelerate: options.UseAccelerate, diff --git a/service/s3/api_op_GetBucketWebsite.go b/service/s3/api_op_GetBucketWebsite.go index 293e56b9a9c..fef46bc8afd 100644 --- a/service/s3/api_op_GetBucketWebsite.go +++ b/service/s3/api_op_GetBucketWebsite.go @@ -152,10 +152,21 @@ func newServiceMetadataMiddleware_opGetBucketWebsite(region string) *awsmiddlewa } } +// getGetBucketWebsiteBucketMember returns a pointer to string denoting a provided +// bucket member valueand a boolean indicating if the input has a modeled bucket +// name, +func getGetBucketWebsiteBucketMember(input interface{}) (*string, bool) { + in := input.(*GetBucketWebsiteInput) + if in.Bucket == nil { + return nil, false + } + return in.Bucket, true +} func addGetBucketWebsiteUpdateEndpoint(stack *middleware.Stack, options Options) error { return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ - Accessor: s3cust.UpdateEndpointParameterAccessor{GetBucketFromInput: getBucketFromInput, - SupportsAccelerate: supportAccelerate, + Accessor: s3cust.UpdateEndpointParameterAccessor{ + GetBucketFromInput: getGetBucketWebsiteBucketMember, + SupportsAccelerate: true, }, UsePathStyle: options.UsePathStyle, UseAccelerate: options.UseAccelerate, diff --git a/service/s3/api_op_GetObject.go b/service/s3/api_op_GetObject.go index 15dfd6f1401..106d94da378 100644 --- a/service/s3/api_op_GetObject.go +++ b/service/s3/api_op_GetObject.go @@ -450,10 +450,20 @@ func newServiceMetadataMiddleware_opGetObject(region string) *awsmiddleware.Regi } } +// getGetObjectBucketMember returns a pointer to string denoting a provided bucket +// member valueand a boolean indicating if the input has a modeled bucket name, +func getGetObjectBucketMember(input interface{}) (*string, bool) { + in := input.(*GetObjectInput) + if in.Bucket == nil { + return nil, false + } + return in.Bucket, true +} func addGetObjectUpdateEndpoint(stack *middleware.Stack, options Options) error { return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ - Accessor: s3cust.UpdateEndpointParameterAccessor{GetBucketFromInput: getBucketFromInput, - SupportsAccelerate: supportAccelerate, + Accessor: s3cust.UpdateEndpointParameterAccessor{ + GetBucketFromInput: getGetObjectBucketMember, + SupportsAccelerate: true, }, UsePathStyle: options.UsePathStyle, UseAccelerate: options.UseAccelerate, diff --git a/service/s3/api_op_GetObjectAcl.go b/service/s3/api_op_GetObjectAcl.go index e8970409259..e6702863dec 100644 --- a/service/s3/api_op_GetObjectAcl.go +++ b/service/s3/api_op_GetObjectAcl.go @@ -173,10 +173,21 @@ func newServiceMetadataMiddleware_opGetObjectAcl(region string) *awsmiddleware.R } } +// getGetObjectAclBucketMember returns a pointer to string denoting a provided +// bucket member valueand a boolean indicating if the input has a modeled bucket +// name, +func getGetObjectAclBucketMember(input interface{}) (*string, bool) { + in := input.(*GetObjectAclInput) + if in.Bucket == nil { + return nil, false + } + return in.Bucket, true +} func addGetObjectAclUpdateEndpoint(stack *middleware.Stack, options Options) error { return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ - Accessor: s3cust.UpdateEndpointParameterAccessor{GetBucketFromInput: getBucketFromInput, - SupportsAccelerate: supportAccelerate, + Accessor: s3cust.UpdateEndpointParameterAccessor{ + GetBucketFromInput: getGetObjectAclBucketMember, + SupportsAccelerate: true, }, UsePathStyle: options.UsePathStyle, UseAccelerate: options.UseAccelerate, diff --git a/service/s3/api_op_GetObjectLegalHold.go b/service/s3/api_op_GetObjectLegalHold.go index 165bcdf12bb..62980557cc5 100644 --- a/service/s3/api_op_GetObjectLegalHold.go +++ b/service/s3/api_op_GetObjectLegalHold.go @@ -153,10 +153,21 @@ func newServiceMetadataMiddleware_opGetObjectLegalHold(region string) *awsmiddle } } +// getGetObjectLegalHoldBucketMember returns a pointer to string denoting a +// provided bucket member valueand a boolean indicating if the input has a modeled +// bucket name, +func getGetObjectLegalHoldBucketMember(input interface{}) (*string, bool) { + in := input.(*GetObjectLegalHoldInput) + if in.Bucket == nil { + return nil, false + } + return in.Bucket, true +} func addGetObjectLegalHoldUpdateEndpoint(stack *middleware.Stack, options Options) error { return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ - Accessor: s3cust.UpdateEndpointParameterAccessor{GetBucketFromInput: getBucketFromInput, - SupportsAccelerate: supportAccelerate, + Accessor: s3cust.UpdateEndpointParameterAccessor{ + GetBucketFromInput: getGetObjectLegalHoldBucketMember, + SupportsAccelerate: true, }, UsePathStyle: options.UsePathStyle, UseAccelerate: options.UseAccelerate, diff --git a/service/s3/api_op_GetObjectLockConfiguration.go b/service/s3/api_op_GetObjectLockConfiguration.go index 3a382188761..f208c84fbee 100644 --- a/service/s3/api_op_GetObjectLockConfiguration.go +++ b/service/s3/api_op_GetObjectLockConfiguration.go @@ -138,10 +138,21 @@ func newServiceMetadataMiddleware_opGetObjectLockConfiguration(region string) *a } } +// getGetObjectLockConfigurationBucketMember returns a pointer to string denoting a +// provided bucket member valueand a boolean indicating if the input has a modeled +// bucket name, +func getGetObjectLockConfigurationBucketMember(input interface{}) (*string, bool) { + in := input.(*GetObjectLockConfigurationInput) + if in.Bucket == nil { + return nil, false + } + return in.Bucket, true +} func addGetObjectLockConfigurationUpdateEndpoint(stack *middleware.Stack, options Options) error { return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ - Accessor: s3cust.UpdateEndpointParameterAccessor{GetBucketFromInput: getBucketFromInput, - SupportsAccelerate: supportAccelerate, + Accessor: s3cust.UpdateEndpointParameterAccessor{ + GetBucketFromInput: getGetObjectLockConfigurationBucketMember, + SupportsAccelerate: true, }, UsePathStyle: options.UsePathStyle, UseAccelerate: options.UseAccelerate, diff --git a/service/s3/api_op_GetObjectRetention.go b/service/s3/api_op_GetObjectRetention.go index e15ade691a6..ab3f645fa51 100644 --- a/service/s3/api_op_GetObjectRetention.go +++ b/service/s3/api_op_GetObjectRetention.go @@ -153,10 +153,21 @@ func newServiceMetadataMiddleware_opGetObjectRetention(region string) *awsmiddle } } +// getGetObjectRetentionBucketMember returns a pointer to string denoting a +// provided bucket member valueand a boolean indicating if the input has a modeled +// bucket name, +func getGetObjectRetentionBucketMember(input interface{}) (*string, bool) { + in := input.(*GetObjectRetentionInput) + if in.Bucket == nil { + return nil, false + } + return in.Bucket, true +} func addGetObjectRetentionUpdateEndpoint(stack *middleware.Stack, options Options) error { return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ - Accessor: s3cust.UpdateEndpointParameterAccessor{GetBucketFromInput: getBucketFromInput, - SupportsAccelerate: supportAccelerate, + Accessor: s3cust.UpdateEndpointParameterAccessor{ + GetBucketFromInput: getGetObjectRetentionBucketMember, + SupportsAccelerate: true, }, UsePathStyle: options.UsePathStyle, UseAccelerate: options.UseAccelerate, diff --git a/service/s3/api_op_GetObjectTagging.go b/service/s3/api_op_GetObjectTagging.go index 2ba4ad4a310..9cfa44fcdb8 100644 --- a/service/s3/api_op_GetObjectTagging.go +++ b/service/s3/api_op_GetObjectTagging.go @@ -169,10 +169,21 @@ func newServiceMetadataMiddleware_opGetObjectTagging(region string) *awsmiddlewa } } +// getGetObjectTaggingBucketMember returns a pointer to string denoting a provided +// bucket member valueand a boolean indicating if the input has a modeled bucket +// name, +func getGetObjectTaggingBucketMember(input interface{}) (*string, bool) { + in := input.(*GetObjectTaggingInput) + if in.Bucket == nil { + return nil, false + } + return in.Bucket, true +} func addGetObjectTaggingUpdateEndpoint(stack *middleware.Stack, options Options) error { return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ - Accessor: s3cust.UpdateEndpointParameterAccessor{GetBucketFromInput: getBucketFromInput, - SupportsAccelerate: supportAccelerate, + Accessor: s3cust.UpdateEndpointParameterAccessor{ + GetBucketFromInput: getGetObjectTaggingBucketMember, + SupportsAccelerate: true, }, UsePathStyle: options.UsePathStyle, UseAccelerate: options.UseAccelerate, diff --git a/service/s3/api_op_GetObjectTorrent.go b/service/s3/api_op_GetObjectTorrent.go index af8d921e07f..72bd81180d7 100644 --- a/service/s3/api_op_GetObjectTorrent.go +++ b/service/s3/api_op_GetObjectTorrent.go @@ -153,10 +153,21 @@ func newServiceMetadataMiddleware_opGetObjectTorrent(region string) *awsmiddlewa } } +// getGetObjectTorrentBucketMember returns a pointer to string denoting a provided +// bucket member valueand a boolean indicating if the input has a modeled bucket +// name, +func getGetObjectTorrentBucketMember(input interface{}) (*string, bool) { + in := input.(*GetObjectTorrentInput) + if in.Bucket == nil { + return nil, false + } + return in.Bucket, true +} func addGetObjectTorrentUpdateEndpoint(stack *middleware.Stack, options Options) error { return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ - Accessor: s3cust.UpdateEndpointParameterAccessor{GetBucketFromInput: getBucketFromInput, - SupportsAccelerate: supportAccelerate, + Accessor: s3cust.UpdateEndpointParameterAccessor{ + GetBucketFromInput: getGetObjectTorrentBucketMember, + SupportsAccelerate: true, }, UsePathStyle: options.UsePathStyle, UseAccelerate: options.UseAccelerate, diff --git a/service/s3/api_op_GetPublicAccessBlock.go b/service/s3/api_op_GetPublicAccessBlock.go index 4515ba4078a..14b195e9f54 100644 --- a/service/s3/api_op_GetPublicAccessBlock.go +++ b/service/s3/api_op_GetPublicAccessBlock.go @@ -158,10 +158,21 @@ func newServiceMetadataMiddleware_opGetPublicAccessBlock(region string) *awsmidd } } +// getGetPublicAccessBlockBucketMember returns a pointer to string denoting a +// provided bucket member valueand a boolean indicating if the input has a modeled +// bucket name, +func getGetPublicAccessBlockBucketMember(input interface{}) (*string, bool) { + in := input.(*GetPublicAccessBlockInput) + if in.Bucket == nil { + return nil, false + } + return in.Bucket, true +} func addGetPublicAccessBlockUpdateEndpoint(stack *middleware.Stack, options Options) error { return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ - Accessor: s3cust.UpdateEndpointParameterAccessor{GetBucketFromInput: getBucketFromInput, - SupportsAccelerate: supportAccelerate, + Accessor: s3cust.UpdateEndpointParameterAccessor{ + GetBucketFromInput: getGetPublicAccessBlockBucketMember, + SupportsAccelerate: true, }, UsePathStyle: options.UsePathStyle, UseAccelerate: options.UseAccelerate, diff --git a/service/s3/api_op_HeadBucket.go b/service/s3/api_op_HeadBucket.go index 2f281e47dfd..23b1181298a 100644 --- a/service/s3/api_op_HeadBucket.go +++ b/service/s3/api_op_HeadBucket.go @@ -147,10 +147,20 @@ func newServiceMetadataMiddleware_opHeadBucket(region string) *awsmiddleware.Reg } } +// getHeadBucketBucketMember returns a pointer to string denoting a provided bucket +// member valueand a boolean indicating if the input has a modeled bucket name, +func getHeadBucketBucketMember(input interface{}) (*string, bool) { + in := input.(*HeadBucketInput) + if in.Bucket == nil { + return nil, false + } + return in.Bucket, true +} func addHeadBucketUpdateEndpoint(stack *middleware.Stack, options Options) error { return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ - Accessor: s3cust.UpdateEndpointParameterAccessor{GetBucketFromInput: getBucketFromInput, - SupportsAccelerate: supportAccelerate, + Accessor: s3cust.UpdateEndpointParameterAccessor{ + GetBucketFromInput: getHeadBucketBucketMember, + SupportsAccelerate: true, }, UsePathStyle: options.UsePathStyle, UseAccelerate: options.UseAccelerate, diff --git a/service/s3/api_op_HeadObject.go b/service/s3/api_op_HeadObject.go index 6153de8f0ed..a7e12ef908e 100644 --- a/service/s3/api_op_HeadObject.go +++ b/service/s3/api_op_HeadObject.go @@ -424,10 +424,20 @@ func newServiceMetadataMiddleware_opHeadObject(region string) *awsmiddleware.Reg } } +// getHeadObjectBucketMember returns a pointer to string denoting a provided bucket +// member valueand a boolean indicating if the input has a modeled bucket name, +func getHeadObjectBucketMember(input interface{}) (*string, bool) { + in := input.(*HeadObjectInput) + if in.Bucket == nil { + return nil, false + } + return in.Bucket, true +} func addHeadObjectUpdateEndpoint(stack *middleware.Stack, options Options) error { return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ - Accessor: s3cust.UpdateEndpointParameterAccessor{GetBucketFromInput: getBucketFromInput, - SupportsAccelerate: supportAccelerate, + Accessor: s3cust.UpdateEndpointParameterAccessor{ + GetBucketFromInput: getHeadObjectBucketMember, + SupportsAccelerate: true, }, UsePathStyle: options.UsePathStyle, UseAccelerate: options.UseAccelerate, diff --git a/service/s3/api_op_ListBucketAnalyticsConfigurations.go b/service/s3/api_op_ListBucketAnalyticsConfigurations.go index b779b9f5595..679c53c41bc 100644 --- a/service/s3/api_op_ListBucketAnalyticsConfigurations.go +++ b/service/s3/api_op_ListBucketAnalyticsConfigurations.go @@ -176,10 +176,21 @@ func newServiceMetadataMiddleware_opListBucketAnalyticsConfigurations(region str } } +// getListBucketAnalyticsConfigurationsBucketMember returns a pointer to string +// denoting a provided bucket member valueand a boolean indicating if the input has +// a modeled bucket name, +func getListBucketAnalyticsConfigurationsBucketMember(input interface{}) (*string, bool) { + in := input.(*ListBucketAnalyticsConfigurationsInput) + if in.Bucket == nil { + return nil, false + } + return in.Bucket, true +} func addListBucketAnalyticsConfigurationsUpdateEndpoint(stack *middleware.Stack, options Options) error { return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ - Accessor: s3cust.UpdateEndpointParameterAccessor{GetBucketFromInput: getBucketFromInput, - SupportsAccelerate: supportAccelerate, + Accessor: s3cust.UpdateEndpointParameterAccessor{ + GetBucketFromInput: getListBucketAnalyticsConfigurationsBucketMember, + SupportsAccelerate: true, }, UsePathStyle: options.UsePathStyle, UseAccelerate: options.UseAccelerate, diff --git a/service/s3/api_op_ListBucketInventoryConfigurations.go b/service/s3/api_op_ListBucketInventoryConfigurations.go index d72cc7bfe27..0e6aa66f4f1 100644 --- a/service/s3/api_op_ListBucketInventoryConfigurations.go +++ b/service/s3/api_op_ListBucketInventoryConfigurations.go @@ -177,10 +177,21 @@ func newServiceMetadataMiddleware_opListBucketInventoryConfigurations(region str } } +// getListBucketInventoryConfigurationsBucketMember returns a pointer to string +// denoting a provided bucket member valueand a boolean indicating if the input has +// a modeled bucket name, +func getListBucketInventoryConfigurationsBucketMember(input interface{}) (*string, bool) { + in := input.(*ListBucketInventoryConfigurationsInput) + if in.Bucket == nil { + return nil, false + } + return in.Bucket, true +} func addListBucketInventoryConfigurationsUpdateEndpoint(stack *middleware.Stack, options Options) error { return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ - Accessor: s3cust.UpdateEndpointParameterAccessor{GetBucketFromInput: getBucketFromInput, - SupportsAccelerate: supportAccelerate, + Accessor: s3cust.UpdateEndpointParameterAccessor{ + GetBucketFromInput: getListBucketInventoryConfigurationsBucketMember, + SupportsAccelerate: true, }, UsePathStyle: options.UsePathStyle, UseAccelerate: options.UseAccelerate, diff --git a/service/s3/api_op_ListBucketMetricsConfigurations.go b/service/s3/api_op_ListBucketMetricsConfigurations.go index 84b58df41ea..121847b1c72 100644 --- a/service/s3/api_op_ListBucketMetricsConfigurations.go +++ b/service/s3/api_op_ListBucketMetricsConfigurations.go @@ -180,10 +180,21 @@ func newServiceMetadataMiddleware_opListBucketMetricsConfigurations(region strin } } +// getListBucketMetricsConfigurationsBucketMember returns a pointer to string +// denoting a provided bucket member valueand a boolean indicating if the input has +// a modeled bucket name, +func getListBucketMetricsConfigurationsBucketMember(input interface{}) (*string, bool) { + in := input.(*ListBucketMetricsConfigurationsInput) + if in.Bucket == nil { + return nil, false + } + return in.Bucket, true +} func addListBucketMetricsConfigurationsUpdateEndpoint(stack *middleware.Stack, options Options) error { return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ - Accessor: s3cust.UpdateEndpointParameterAccessor{GetBucketFromInput: getBucketFromInput, - SupportsAccelerate: supportAccelerate, + Accessor: s3cust.UpdateEndpointParameterAccessor{ + GetBucketFromInput: getListBucketMetricsConfigurationsBucketMember, + SupportsAccelerate: true, }, UsePathStyle: options.UsePathStyle, UseAccelerate: options.UseAccelerate, diff --git a/service/s3/api_op_ListBuckets.go b/service/s3/api_op_ListBuckets.go index 3790c43605a..d61ea14eadf 100644 --- a/service/s3/api_op_ListBuckets.go +++ b/service/s3/api_op_ListBuckets.go @@ -120,8 +120,9 @@ func newServiceMetadataMiddleware_opListBuckets(region string) *awsmiddleware.Re func addListBucketsUpdateEndpoint(stack *middleware.Stack, options Options) error { return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ - Accessor: s3cust.UpdateEndpointParameterAccessor{GetBucketFromInput: getBucketFromInput, - SupportsAccelerate: supportAccelerate, + Accessor: s3cust.UpdateEndpointParameterAccessor{ + GetBucketFromInput: nopGetBucketAccessor, + SupportsAccelerate: false, }, UsePathStyle: options.UsePathStyle, UseAccelerate: options.UseAccelerate, diff --git a/service/s3/api_op_ListMultipartUploads.go b/service/s3/api_op_ListMultipartUploads.go index c4a5219a203..52039be7e2a 100644 --- a/service/s3/api_op_ListMultipartUploads.go +++ b/service/s3/api_op_ListMultipartUploads.go @@ -271,10 +271,21 @@ func newServiceMetadataMiddleware_opListMultipartUploads(region string) *awsmidd } } +// getListMultipartUploadsBucketMember returns a pointer to string denoting a +// provided bucket member valueand a boolean indicating if the input has a modeled +// bucket name, +func getListMultipartUploadsBucketMember(input interface{}) (*string, bool) { + in := input.(*ListMultipartUploadsInput) + if in.Bucket == nil { + return nil, false + } + return in.Bucket, true +} func addListMultipartUploadsUpdateEndpoint(stack *middleware.Stack, options Options) error { return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ - Accessor: s3cust.UpdateEndpointParameterAccessor{GetBucketFromInput: getBucketFromInput, - SupportsAccelerate: supportAccelerate, + Accessor: s3cust.UpdateEndpointParameterAccessor{ + GetBucketFromInput: getListMultipartUploadsBucketMember, + SupportsAccelerate: true, }, UsePathStyle: options.UsePathStyle, UseAccelerate: options.UseAccelerate, diff --git a/service/s3/api_op_ListObjectVersions.go b/service/s3/api_op_ListObjectVersions.go index 22fd7801454..55eb14895b5 100644 --- a/service/s3/api_op_ListObjectVersions.go +++ b/service/s3/api_op_ListObjectVersions.go @@ -236,10 +236,21 @@ func newServiceMetadataMiddleware_opListObjectVersions(region string) *awsmiddle } } +// getListObjectVersionsBucketMember returns a pointer to string denoting a +// provided bucket member valueand a boolean indicating if the input has a modeled +// bucket name, +func getListObjectVersionsBucketMember(input interface{}) (*string, bool) { + in := input.(*ListObjectVersionsInput) + if in.Bucket == nil { + return nil, false + } + return in.Bucket, true +} func addListObjectVersionsUpdateEndpoint(stack *middleware.Stack, options Options) error { return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ - Accessor: s3cust.UpdateEndpointParameterAccessor{GetBucketFromInput: getBucketFromInput, - SupportsAccelerate: supportAccelerate, + Accessor: s3cust.UpdateEndpointParameterAccessor{ + GetBucketFromInput: getListObjectVersionsBucketMember, + SupportsAccelerate: true, }, UsePathStyle: options.UsePathStyle, UseAccelerate: options.UseAccelerate, diff --git a/service/s3/api_op_ListObjects.go b/service/s3/api_op_ListObjects.go index 202cc5f8a7c..6c604f89efa 100644 --- a/service/s3/api_op_ListObjects.go +++ b/service/s3/api_op_ListObjects.go @@ -245,10 +245,21 @@ func newServiceMetadataMiddleware_opListObjects(region string) *awsmiddleware.Re } } +// getListObjectsBucketMember returns a pointer to string denoting a provided +// bucket member valueand a boolean indicating if the input has a modeled bucket +// name, +func getListObjectsBucketMember(input interface{}) (*string, bool) { + in := input.(*ListObjectsInput) + if in.Bucket == nil { + return nil, false + } + return in.Bucket, true +} func addListObjectsUpdateEndpoint(stack *middleware.Stack, options Options) error { return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ - Accessor: s3cust.UpdateEndpointParameterAccessor{GetBucketFromInput: getBucketFromInput, - SupportsAccelerate: supportAccelerate, + Accessor: s3cust.UpdateEndpointParameterAccessor{ + GetBucketFromInput: getListObjectsBucketMember, + SupportsAccelerate: true, }, UsePathStyle: options.UsePathStyle, UseAccelerate: options.UseAccelerate, diff --git a/service/s3/api_op_ListObjectsV2.go b/service/s3/api_op_ListObjectsV2.go index 6bdea446c29..10181e16de6 100644 --- a/service/s3/api_op_ListObjectsV2.go +++ b/service/s3/api_op_ListObjectsV2.go @@ -275,10 +275,21 @@ func newServiceMetadataMiddleware_opListObjectsV2(region string) *awsmiddleware. } } +// getListObjectsV2BucketMember returns a pointer to string denoting a provided +// bucket member valueand a boolean indicating if the input has a modeled bucket +// name, +func getListObjectsV2BucketMember(input interface{}) (*string, bool) { + in := input.(*ListObjectsV2Input) + if in.Bucket == nil { + return nil, false + } + return in.Bucket, true +} func addListObjectsV2UpdateEndpoint(stack *middleware.Stack, options Options) error { return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ - Accessor: s3cust.UpdateEndpointParameterAccessor{GetBucketFromInput: getBucketFromInput, - SupportsAccelerate: supportAccelerate, + Accessor: s3cust.UpdateEndpointParameterAccessor{ + GetBucketFromInput: getListObjectsV2BucketMember, + SupportsAccelerate: true, }, UsePathStyle: options.UsePathStyle, UseAccelerate: options.UseAccelerate, diff --git a/service/s3/api_op_ListParts.go b/service/s3/api_op_ListParts.go index 3fa0afcf5f2..22d2883f554 100644 --- a/service/s3/api_op_ListParts.go +++ b/service/s3/api_op_ListParts.go @@ -267,10 +267,20 @@ func newServiceMetadataMiddleware_opListParts(region string) *awsmiddleware.Regi } } +// getListPartsBucketMember returns a pointer to string denoting a provided bucket +// member valueand a boolean indicating if the input has a modeled bucket name, +func getListPartsBucketMember(input interface{}) (*string, bool) { + in := input.(*ListPartsInput) + if in.Bucket == nil { + return nil, false + } + return in.Bucket, true +} func addListPartsUpdateEndpoint(stack *middleware.Stack, options Options) error { return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ - Accessor: s3cust.UpdateEndpointParameterAccessor{GetBucketFromInput: getBucketFromInput, - SupportsAccelerate: supportAccelerate, + Accessor: s3cust.UpdateEndpointParameterAccessor{ + GetBucketFromInput: getListPartsBucketMember, + SupportsAccelerate: true, }, UsePathStyle: options.UsePathStyle, UseAccelerate: options.UseAccelerate, diff --git a/service/s3/api_op_PutBucketAccelerateConfiguration.go b/service/s3/api_op_PutBucketAccelerateConfiguration.go index 355d1e61855..95f51b53e60 100644 --- a/service/s3/api_op_PutBucketAccelerateConfiguration.go +++ b/service/s3/api_op_PutBucketAccelerateConfiguration.go @@ -164,10 +164,21 @@ func newServiceMetadataMiddleware_opPutBucketAccelerateConfiguration(region stri } } +// getPutBucketAccelerateConfigurationBucketMember returns a pointer to string +// denoting a provided bucket member valueand a boolean indicating if the input has +// a modeled bucket name, +func getPutBucketAccelerateConfigurationBucketMember(input interface{}) (*string, bool) { + in := input.(*PutBucketAccelerateConfigurationInput) + if in.Bucket == nil { + return nil, false + } + return in.Bucket, true +} func addPutBucketAccelerateConfigurationUpdateEndpoint(stack *middleware.Stack, options Options) error { return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ - Accessor: s3cust.UpdateEndpointParameterAccessor{GetBucketFromInput: getBucketFromInput, - SupportsAccelerate: supportAccelerate, + Accessor: s3cust.UpdateEndpointParameterAccessor{ + GetBucketFromInput: getPutBucketAccelerateConfigurationBucketMember, + SupportsAccelerate: true, }, UsePathStyle: options.UsePathStyle, UseAccelerate: options.UseAccelerate, diff --git a/service/s3/api_op_PutBucketAcl.go b/service/s3/api_op_PutBucketAcl.go index 3a199cc0f30..7c586e63374 100644 --- a/service/s3/api_op_PutBucketAcl.go +++ b/service/s3/api_op_PutBucketAcl.go @@ -288,10 +288,21 @@ func newServiceMetadataMiddleware_opPutBucketAcl(region string) *awsmiddleware.R } } +// getPutBucketAclBucketMember returns a pointer to string denoting a provided +// bucket member valueand a boolean indicating if the input has a modeled bucket +// name, +func getPutBucketAclBucketMember(input interface{}) (*string, bool) { + in := input.(*PutBucketAclInput) + if in.Bucket == nil { + return nil, false + } + return in.Bucket, true +} func addPutBucketAclUpdateEndpoint(stack *middleware.Stack, options Options) error { return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ - Accessor: s3cust.UpdateEndpointParameterAccessor{GetBucketFromInput: getBucketFromInput, - SupportsAccelerate: supportAccelerate, + Accessor: s3cust.UpdateEndpointParameterAccessor{ + GetBucketFromInput: getPutBucketAclBucketMember, + SupportsAccelerate: true, }, UsePathStyle: options.UsePathStyle, UseAccelerate: options.UseAccelerate, diff --git a/service/s3/api_op_PutBucketAnalyticsConfiguration.go b/service/s3/api_op_PutBucketAnalyticsConfiguration.go index a5ca4895b7d..cf77d568d2c 100644 --- a/service/s3/api_op_PutBucketAnalyticsConfiguration.go +++ b/service/s3/api_op_PutBucketAnalyticsConfiguration.go @@ -196,10 +196,21 @@ func newServiceMetadataMiddleware_opPutBucketAnalyticsConfiguration(region strin } } +// getPutBucketAnalyticsConfigurationBucketMember returns a pointer to string +// denoting a provided bucket member valueand a boolean indicating if the input has +// a modeled bucket name, +func getPutBucketAnalyticsConfigurationBucketMember(input interface{}) (*string, bool) { + in := input.(*PutBucketAnalyticsConfigurationInput) + if in.Bucket == nil { + return nil, false + } + return in.Bucket, true +} func addPutBucketAnalyticsConfigurationUpdateEndpoint(stack *middleware.Stack, options Options) error { return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ - Accessor: s3cust.UpdateEndpointParameterAccessor{GetBucketFromInput: getBucketFromInput, - SupportsAccelerate: supportAccelerate, + Accessor: s3cust.UpdateEndpointParameterAccessor{ + GetBucketFromInput: getPutBucketAnalyticsConfigurationBucketMember, + SupportsAccelerate: true, }, UsePathStyle: options.UsePathStyle, UseAccelerate: options.UseAccelerate, diff --git a/service/s3/api_op_PutBucketCors.go b/service/s3/api_op_PutBucketCors.go index 6bebec21775..63f6f21b9f4 100644 --- a/service/s3/api_op_PutBucketCors.go +++ b/service/s3/api_op_PutBucketCors.go @@ -181,10 +181,21 @@ func newServiceMetadataMiddleware_opPutBucketCors(region string) *awsmiddleware. } } +// getPutBucketCorsBucketMember returns a pointer to string denoting a provided +// bucket member valueand a boolean indicating if the input has a modeled bucket +// name, +func getPutBucketCorsBucketMember(input interface{}) (*string, bool) { + in := input.(*PutBucketCorsInput) + if in.Bucket == nil { + return nil, false + } + return in.Bucket, true +} func addPutBucketCorsUpdateEndpoint(stack *middleware.Stack, options Options) error { return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ - Accessor: s3cust.UpdateEndpointParameterAccessor{GetBucketFromInput: getBucketFromInput, - SupportsAccelerate: supportAccelerate, + Accessor: s3cust.UpdateEndpointParameterAccessor{ + GetBucketFromInput: getPutBucketCorsBucketMember, + SupportsAccelerate: true, }, UsePathStyle: options.UsePathStyle, UseAccelerate: options.UseAccelerate, diff --git a/service/s3/api_op_PutBucketEncryption.go b/service/s3/api_op_PutBucketEncryption.go index 7252063e175..5b43fe8ee0f 100644 --- a/service/s3/api_op_PutBucketEncryption.go +++ b/service/s3/api_op_PutBucketEncryption.go @@ -165,10 +165,21 @@ func newServiceMetadataMiddleware_opPutBucketEncryption(region string) *awsmiddl } } +// getPutBucketEncryptionBucketMember returns a pointer to string denoting a +// provided bucket member valueand a boolean indicating if the input has a modeled +// bucket name, +func getPutBucketEncryptionBucketMember(input interface{}) (*string, bool) { + in := input.(*PutBucketEncryptionInput) + if in.Bucket == nil { + return nil, false + } + return in.Bucket, true +} func addPutBucketEncryptionUpdateEndpoint(stack *middleware.Stack, options Options) error { return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ - Accessor: s3cust.UpdateEndpointParameterAccessor{GetBucketFromInput: getBucketFromInput, - SupportsAccelerate: supportAccelerate, + Accessor: s3cust.UpdateEndpointParameterAccessor{ + GetBucketFromInput: getPutBucketEncryptionBucketMember, + SupportsAccelerate: true, }, UsePathStyle: options.UsePathStyle, UseAccelerate: options.UseAccelerate, diff --git a/service/s3/api_op_PutBucketInventoryConfiguration.go b/service/s3/api_op_PutBucketInventoryConfiguration.go index 7b72c05aa33..cf1297edcc7 100644 --- a/service/s3/api_op_PutBucketInventoryConfiguration.go +++ b/service/s3/api_op_PutBucketInventoryConfiguration.go @@ -196,10 +196,21 @@ func newServiceMetadataMiddleware_opPutBucketInventoryConfiguration(region strin } } +// getPutBucketInventoryConfigurationBucketMember returns a pointer to string +// denoting a provided bucket member valueand a boolean indicating if the input has +// a modeled bucket name, +func getPutBucketInventoryConfigurationBucketMember(input interface{}) (*string, bool) { + in := input.(*PutBucketInventoryConfigurationInput) + if in.Bucket == nil { + return nil, false + } + return in.Bucket, true +} func addPutBucketInventoryConfigurationUpdateEndpoint(stack *middleware.Stack, options Options) error { return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ - Accessor: s3cust.UpdateEndpointParameterAccessor{GetBucketFromInput: getBucketFromInput, - SupportsAccelerate: supportAccelerate, + Accessor: s3cust.UpdateEndpointParameterAccessor{ + GetBucketFromInput: getPutBucketInventoryConfigurationBucketMember, + SupportsAccelerate: true, }, UsePathStyle: options.UsePathStyle, UseAccelerate: options.UseAccelerate, diff --git a/service/s3/api_op_PutBucketLifecycleConfiguration.go b/service/s3/api_op_PutBucketLifecycleConfiguration.go index 1b001f4ad25..f886d3e2acd 100644 --- a/service/s3/api_op_PutBucketLifecycleConfiguration.go +++ b/service/s3/api_op_PutBucketLifecycleConfiguration.go @@ -194,10 +194,21 @@ func newServiceMetadataMiddleware_opPutBucketLifecycleConfiguration(region strin } } +// getPutBucketLifecycleConfigurationBucketMember returns a pointer to string +// denoting a provided bucket member valueand a boolean indicating if the input has +// a modeled bucket name, +func getPutBucketLifecycleConfigurationBucketMember(input interface{}) (*string, bool) { + in := input.(*PutBucketLifecycleConfigurationInput) + if in.Bucket == nil { + return nil, false + } + return in.Bucket, true +} func addPutBucketLifecycleConfigurationUpdateEndpoint(stack *middleware.Stack, options Options) error { return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ - Accessor: s3cust.UpdateEndpointParameterAccessor{GetBucketFromInput: getBucketFromInput, - SupportsAccelerate: supportAccelerate, + Accessor: s3cust.UpdateEndpointParameterAccessor{ + GetBucketFromInput: getPutBucketLifecycleConfigurationBucketMember, + SupportsAccelerate: true, }, UsePathStyle: options.UsePathStyle, UseAccelerate: options.UseAccelerate, diff --git a/service/s3/api_op_PutBucketLogging.go b/service/s3/api_op_PutBucketLogging.go index 3135343769e..5547f86a1be 100644 --- a/service/s3/api_op_PutBucketLogging.go +++ b/service/s3/api_op_PutBucketLogging.go @@ -179,10 +179,21 @@ func newServiceMetadataMiddleware_opPutBucketLogging(region string) *awsmiddlewa } } +// getPutBucketLoggingBucketMember returns a pointer to string denoting a provided +// bucket member valueand a boolean indicating if the input has a modeled bucket +// name, +func getPutBucketLoggingBucketMember(input interface{}) (*string, bool) { + in := input.(*PutBucketLoggingInput) + if in.Bucket == nil { + return nil, false + } + return in.Bucket, true +} func addPutBucketLoggingUpdateEndpoint(stack *middleware.Stack, options Options) error { return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ - Accessor: s3cust.UpdateEndpointParameterAccessor{GetBucketFromInput: getBucketFromInput, - SupportsAccelerate: supportAccelerate, + Accessor: s3cust.UpdateEndpointParameterAccessor{ + GetBucketFromInput: getPutBucketLoggingBucketMember, + SupportsAccelerate: true, }, UsePathStyle: options.UsePathStyle, UseAccelerate: options.UseAccelerate, diff --git a/service/s3/api_op_PutBucketMetricsConfiguration.go b/service/s3/api_op_PutBucketMetricsConfiguration.go index d9a9f03211c..3d00005047c 100644 --- a/service/s3/api_op_PutBucketMetricsConfiguration.go +++ b/service/s3/api_op_PutBucketMetricsConfiguration.go @@ -171,10 +171,21 @@ func newServiceMetadataMiddleware_opPutBucketMetricsConfiguration(region string) } } +// getPutBucketMetricsConfigurationBucketMember returns a pointer to string +// denoting a provided bucket member valueand a boolean indicating if the input has +// a modeled bucket name, +func getPutBucketMetricsConfigurationBucketMember(input interface{}) (*string, bool) { + in := input.(*PutBucketMetricsConfigurationInput) + if in.Bucket == nil { + return nil, false + } + return in.Bucket, true +} func addPutBucketMetricsConfigurationUpdateEndpoint(stack *middleware.Stack, options Options) error { return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ - Accessor: s3cust.UpdateEndpointParameterAccessor{GetBucketFromInput: getBucketFromInput, - SupportsAccelerate: supportAccelerate, + Accessor: s3cust.UpdateEndpointParameterAccessor{ + GetBucketFromInput: getPutBucketMetricsConfigurationBucketMember, + SupportsAccelerate: true, }, UsePathStyle: options.UsePathStyle, UseAccelerate: options.UseAccelerate, diff --git a/service/s3/api_op_PutBucketNotificationConfiguration.go b/service/s3/api_op_PutBucketNotificationConfiguration.go index 54225dc33b5..3a7a09f3e23 100644 --- a/service/s3/api_op_PutBucketNotificationConfiguration.go +++ b/service/s3/api_op_PutBucketNotificationConfiguration.go @@ -163,10 +163,21 @@ func newServiceMetadataMiddleware_opPutBucketNotificationConfiguration(region st } } +// getPutBucketNotificationConfigurationBucketMember returns a pointer to string +// denoting a provided bucket member valueand a boolean indicating if the input has +// a modeled bucket name, +func getPutBucketNotificationConfigurationBucketMember(input interface{}) (*string, bool) { + in := input.(*PutBucketNotificationConfigurationInput) + if in.Bucket == nil { + return nil, false + } + return in.Bucket, true +} func addPutBucketNotificationConfigurationUpdateEndpoint(stack *middleware.Stack, options Options) error { return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ - Accessor: s3cust.UpdateEndpointParameterAccessor{GetBucketFromInput: getBucketFromInput, - SupportsAccelerate: supportAccelerate, + Accessor: s3cust.UpdateEndpointParameterAccessor{ + GetBucketFromInput: getPutBucketNotificationConfigurationBucketMember, + SupportsAccelerate: true, }, UsePathStyle: options.UsePathStyle, UseAccelerate: options.UseAccelerate, diff --git a/service/s3/api_op_PutBucketOwnershipControls.go b/service/s3/api_op_PutBucketOwnershipControls.go index 6961c305a10..668c336b715 100644 --- a/service/s3/api_op_PutBucketOwnershipControls.go +++ b/service/s3/api_op_PutBucketOwnershipControls.go @@ -141,10 +141,21 @@ func newServiceMetadataMiddleware_opPutBucketOwnershipControls(region string) *a } } +// getPutBucketOwnershipControlsBucketMember returns a pointer to string denoting a +// provided bucket member valueand a boolean indicating if the input has a modeled +// bucket name, +func getPutBucketOwnershipControlsBucketMember(input interface{}) (*string, bool) { + in := input.(*PutBucketOwnershipControlsInput) + if in.Bucket == nil { + return nil, false + } + return in.Bucket, true +} func addPutBucketOwnershipControlsUpdateEndpoint(stack *middleware.Stack, options Options) error { return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ - Accessor: s3cust.UpdateEndpointParameterAccessor{GetBucketFromInput: getBucketFromInput, - SupportsAccelerate: supportAccelerate, + Accessor: s3cust.UpdateEndpointParameterAccessor{ + GetBucketFromInput: getPutBucketOwnershipControlsBucketMember, + SupportsAccelerate: true, }, UsePathStyle: options.UsePathStyle, UseAccelerate: options.UseAccelerate, diff --git a/service/s3/api_op_PutBucketPolicy.go b/service/s3/api_op_PutBucketPolicy.go index 2c4eedf5de0..71fca403d92 100644 --- a/service/s3/api_op_PutBucketPolicy.go +++ b/service/s3/api_op_PutBucketPolicy.go @@ -156,10 +156,21 @@ func newServiceMetadataMiddleware_opPutBucketPolicy(region string) *awsmiddlewar } } +// getPutBucketPolicyBucketMember returns a pointer to string denoting a provided +// bucket member valueand a boolean indicating if the input has a modeled bucket +// name, +func getPutBucketPolicyBucketMember(input interface{}) (*string, bool) { + in := input.(*PutBucketPolicyInput) + if in.Bucket == nil { + return nil, false + } + return in.Bucket, true +} func addPutBucketPolicyUpdateEndpoint(stack *middleware.Stack, options Options) error { return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ - Accessor: s3cust.UpdateEndpointParameterAccessor{GetBucketFromInput: getBucketFromInput, - SupportsAccelerate: supportAccelerate, + Accessor: s3cust.UpdateEndpointParameterAccessor{ + GetBucketFromInput: getPutBucketPolicyBucketMember, + SupportsAccelerate: true, }, UsePathStyle: options.UsePathStyle, UseAccelerate: options.UseAccelerate, diff --git a/service/s3/api_op_PutBucketReplication.go b/service/s3/api_op_PutBucketReplication.go index a1f274ceaac..afb21db02a7 100644 --- a/service/s3/api_op_PutBucketReplication.go +++ b/service/s3/api_op_PutBucketReplication.go @@ -194,10 +194,21 @@ func newServiceMetadataMiddleware_opPutBucketReplication(region string) *awsmidd } } +// getPutBucketReplicationBucketMember returns a pointer to string denoting a +// provided bucket member valueand a boolean indicating if the input has a modeled +// bucket name, +func getPutBucketReplicationBucketMember(input interface{}) (*string, bool) { + in := input.(*PutBucketReplicationInput) + if in.Bucket == nil { + return nil, false + } + return in.Bucket, true +} func addPutBucketReplicationUpdateEndpoint(stack *middleware.Stack, options Options) error { return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ - Accessor: s3cust.UpdateEndpointParameterAccessor{GetBucketFromInput: getBucketFromInput, - SupportsAccelerate: supportAccelerate, + Accessor: s3cust.UpdateEndpointParameterAccessor{ + GetBucketFromInput: getPutBucketReplicationBucketMember, + SupportsAccelerate: true, }, UsePathStyle: options.UsePathStyle, UseAccelerate: options.UseAccelerate, diff --git a/service/s3/api_op_PutBucketRequestPayment.go b/service/s3/api_op_PutBucketRequestPayment.go index b3ac343e7c2..bda9beab42b 100644 --- a/service/s3/api_op_PutBucketRequestPayment.go +++ b/service/s3/api_op_PutBucketRequestPayment.go @@ -149,10 +149,21 @@ func newServiceMetadataMiddleware_opPutBucketRequestPayment(region string) *awsm } } +// getPutBucketRequestPaymentBucketMember returns a pointer to string denoting a +// provided bucket member valueand a boolean indicating if the input has a modeled +// bucket name, +func getPutBucketRequestPaymentBucketMember(input interface{}) (*string, bool) { + in := input.(*PutBucketRequestPaymentInput) + if in.Bucket == nil { + return nil, false + } + return in.Bucket, true +} func addPutBucketRequestPaymentUpdateEndpoint(stack *middleware.Stack, options Options) error { return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ - Accessor: s3cust.UpdateEndpointParameterAccessor{GetBucketFromInput: getBucketFromInput, - SupportsAccelerate: supportAccelerate, + Accessor: s3cust.UpdateEndpointParameterAccessor{ + GetBucketFromInput: getPutBucketRequestPaymentBucketMember, + SupportsAccelerate: true, }, UsePathStyle: options.UsePathStyle, UseAccelerate: options.UseAccelerate, diff --git a/service/s3/api_op_PutBucketTagging.go b/service/s3/api_op_PutBucketTagging.go index 692fa23a84f..7cffc206a47 100644 --- a/service/s3/api_op_PutBucketTagging.go +++ b/service/s3/api_op_PutBucketTagging.go @@ -193,10 +193,21 @@ func newServiceMetadataMiddleware_opPutBucketTagging(region string) *awsmiddlewa } } +// getPutBucketTaggingBucketMember returns a pointer to string denoting a provided +// bucket member valueand a boolean indicating if the input has a modeled bucket +// name, +func getPutBucketTaggingBucketMember(input interface{}) (*string, bool) { + in := input.(*PutBucketTaggingInput) + if in.Bucket == nil { + return nil, false + } + return in.Bucket, true +} func addPutBucketTaggingUpdateEndpoint(stack *middleware.Stack, options Options) error { return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ - Accessor: s3cust.UpdateEndpointParameterAccessor{GetBucketFromInput: getBucketFromInput, - SupportsAccelerate: supportAccelerate, + Accessor: s3cust.UpdateEndpointParameterAccessor{ + GetBucketFromInput: getPutBucketTaggingBucketMember, + SupportsAccelerate: true, }, UsePathStyle: options.UsePathStyle, UseAccelerate: options.UseAccelerate, diff --git a/service/s3/api_op_PutBucketVersioning.go b/service/s3/api_op_PutBucketVersioning.go index 6f227d5d8b8..f8e43a623f2 100644 --- a/service/s3/api_op_PutBucketVersioning.go +++ b/service/s3/api_op_PutBucketVersioning.go @@ -171,10 +171,21 @@ func newServiceMetadataMiddleware_opPutBucketVersioning(region string) *awsmiddl } } +// getPutBucketVersioningBucketMember returns a pointer to string denoting a +// provided bucket member valueand a boolean indicating if the input has a modeled +// bucket name, +func getPutBucketVersioningBucketMember(input interface{}) (*string, bool) { + in := input.(*PutBucketVersioningInput) + if in.Bucket == nil { + return nil, false + } + return in.Bucket, true +} func addPutBucketVersioningUpdateEndpoint(stack *middleware.Stack, options Options) error { return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ - Accessor: s3cust.UpdateEndpointParameterAccessor{GetBucketFromInput: getBucketFromInput, - SupportsAccelerate: supportAccelerate, + Accessor: s3cust.UpdateEndpointParameterAccessor{ + GetBucketFromInput: getPutBucketVersioningBucketMember, + SupportsAccelerate: true, }, UsePathStyle: options.UsePathStyle, UseAccelerate: options.UseAccelerate, diff --git a/service/s3/api_op_PutBucketWebsite.go b/service/s3/api_op_PutBucketWebsite.go index 3d6a60931d9..ad9ee60b067 100644 --- a/service/s3/api_op_PutBucketWebsite.go +++ b/service/s3/api_op_PutBucketWebsite.go @@ -207,10 +207,21 @@ func newServiceMetadataMiddleware_opPutBucketWebsite(region string) *awsmiddlewa } } +// getPutBucketWebsiteBucketMember returns a pointer to string denoting a provided +// bucket member valueand a boolean indicating if the input has a modeled bucket +// name, +func getPutBucketWebsiteBucketMember(input interface{}) (*string, bool) { + in := input.(*PutBucketWebsiteInput) + if in.Bucket == nil { + return nil, false + } + return in.Bucket, true +} func addPutBucketWebsiteUpdateEndpoint(stack *middleware.Stack, options Options) error { return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ - Accessor: s3cust.UpdateEndpointParameterAccessor{GetBucketFromInput: getBucketFromInput, - SupportsAccelerate: supportAccelerate, + Accessor: s3cust.UpdateEndpointParameterAccessor{ + GetBucketFromInput: getPutBucketWebsiteBucketMember, + SupportsAccelerate: true, }, UsePathStyle: options.UsePathStyle, UseAccelerate: options.UseAccelerate, diff --git a/service/s3/api_op_PutObject.go b/service/s3/api_op_PutObject.go index fa464df8c85..a47fc6f4b38 100644 --- a/service/s3/api_op_PutObject.go +++ b/service/s3/api_op_PutObject.go @@ -401,10 +401,20 @@ func newServiceMetadataMiddleware_opPutObject(region string) *awsmiddleware.Regi } } +// getPutObjectBucketMember returns a pointer to string denoting a provided bucket +// member valueand a boolean indicating if the input has a modeled bucket name, +func getPutObjectBucketMember(input interface{}) (*string, bool) { + in := input.(*PutObjectInput) + if in.Bucket == nil { + return nil, false + } + return in.Bucket, true +} func addPutObjectUpdateEndpoint(stack *middleware.Stack, options Options) error { return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ - Accessor: s3cust.UpdateEndpointParameterAccessor{GetBucketFromInput: getBucketFromInput, - SupportsAccelerate: supportAccelerate, + Accessor: s3cust.UpdateEndpointParameterAccessor{ + GetBucketFromInput: getPutObjectBucketMember, + SupportsAccelerate: true, }, UsePathStyle: options.UsePathStyle, UseAccelerate: options.UseAccelerate, diff --git a/service/s3/api_op_PutObjectAcl.go b/service/s3/api_op_PutObjectAcl.go index fdfffb8c04d..72d483644d5 100644 --- a/service/s3/api_op_PutObjectAcl.go +++ b/service/s3/api_op_PutObjectAcl.go @@ -330,10 +330,21 @@ func newServiceMetadataMiddleware_opPutObjectAcl(region string) *awsmiddleware.R } } +// getPutObjectAclBucketMember returns a pointer to string denoting a provided +// bucket member valueand a boolean indicating if the input has a modeled bucket +// name, +func getPutObjectAclBucketMember(input interface{}) (*string, bool) { + in := input.(*PutObjectAclInput) + if in.Bucket == nil { + return nil, false + } + return in.Bucket, true +} func addPutObjectAclUpdateEndpoint(stack *middleware.Stack, options Options) error { return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ - Accessor: s3cust.UpdateEndpointParameterAccessor{GetBucketFromInput: getBucketFromInput, - SupportsAccelerate: supportAccelerate, + Accessor: s3cust.UpdateEndpointParameterAccessor{ + GetBucketFromInput: getPutObjectAclBucketMember, + SupportsAccelerate: true, }, UsePathStyle: options.UsePathStyle, UseAccelerate: options.UseAccelerate, diff --git a/service/s3/api_op_PutObjectLegalHold.go b/service/s3/api_op_PutObjectLegalHold.go index 827194bd8c9..bf0fb174098 100644 --- a/service/s3/api_op_PutObjectLegalHold.go +++ b/service/s3/api_op_PutObjectLegalHold.go @@ -166,10 +166,21 @@ func newServiceMetadataMiddleware_opPutObjectLegalHold(region string) *awsmiddle } } +// getPutObjectLegalHoldBucketMember returns a pointer to string denoting a +// provided bucket member valueand a boolean indicating if the input has a modeled +// bucket name, +func getPutObjectLegalHoldBucketMember(input interface{}) (*string, bool) { + in := input.(*PutObjectLegalHoldInput) + if in.Bucket == nil { + return nil, false + } + return in.Bucket, true +} func addPutObjectLegalHoldUpdateEndpoint(stack *middleware.Stack, options Options) error { return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ - Accessor: s3cust.UpdateEndpointParameterAccessor{GetBucketFromInput: getBucketFromInput, - SupportsAccelerate: supportAccelerate, + Accessor: s3cust.UpdateEndpointParameterAccessor{ + GetBucketFromInput: getPutObjectLegalHoldBucketMember, + SupportsAccelerate: true, }, UsePathStyle: options.UsePathStyle, UseAccelerate: options.UseAccelerate, diff --git a/service/s3/api_op_PutObjectLockConfiguration.go b/service/s3/api_op_PutObjectLockConfiguration.go index 5e429095fe6..90959085335 100644 --- a/service/s3/api_op_PutObjectLockConfiguration.go +++ b/service/s3/api_op_PutObjectLockConfiguration.go @@ -154,10 +154,21 @@ func newServiceMetadataMiddleware_opPutObjectLockConfiguration(region string) *a } } +// getPutObjectLockConfigurationBucketMember returns a pointer to string denoting a +// provided bucket member valueand a boolean indicating if the input has a modeled +// bucket name, +func getPutObjectLockConfigurationBucketMember(input interface{}) (*string, bool) { + in := input.(*PutObjectLockConfigurationInput) + if in.Bucket == nil { + return nil, false + } + return in.Bucket, true +} func addPutObjectLockConfigurationUpdateEndpoint(stack *middleware.Stack, options Options) error { return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ - Accessor: s3cust.UpdateEndpointParameterAccessor{GetBucketFromInput: getBucketFromInput, - SupportsAccelerate: supportAccelerate, + Accessor: s3cust.UpdateEndpointParameterAccessor{ + GetBucketFromInput: getPutObjectLockConfigurationBucketMember, + SupportsAccelerate: true, }, UsePathStyle: options.UsePathStyle, UseAccelerate: options.UseAccelerate, diff --git a/service/s3/api_op_PutObjectRetention.go b/service/s3/api_op_PutObjectRetention.go index abb9a8ee8e5..10b2e9446cb 100644 --- a/service/s3/api_op_PutObjectRetention.go +++ b/service/s3/api_op_PutObjectRetention.go @@ -170,10 +170,21 @@ func newServiceMetadataMiddleware_opPutObjectRetention(region string) *awsmiddle } } +// getPutObjectRetentionBucketMember returns a pointer to string denoting a +// provided bucket member valueand a boolean indicating if the input has a modeled +// bucket name, +func getPutObjectRetentionBucketMember(input interface{}) (*string, bool) { + in := input.(*PutObjectRetentionInput) + if in.Bucket == nil { + return nil, false + } + return in.Bucket, true +} func addPutObjectRetentionUpdateEndpoint(stack *middleware.Stack, options Options) error { return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ - Accessor: s3cust.UpdateEndpointParameterAccessor{GetBucketFromInput: getBucketFromInput, - SupportsAccelerate: supportAccelerate, + Accessor: s3cust.UpdateEndpointParameterAccessor{ + GetBucketFromInput: getPutObjectRetentionBucketMember, + SupportsAccelerate: true, }, UsePathStyle: options.UsePathStyle, UseAccelerate: options.UseAccelerate, diff --git a/service/s3/api_op_PutObjectTagging.go b/service/s3/api_op_PutObjectTagging.go index e803211a52c..208fc269179 100644 --- a/service/s3/api_op_PutObjectTagging.go +++ b/service/s3/api_op_PutObjectTagging.go @@ -206,10 +206,21 @@ func newServiceMetadataMiddleware_opPutObjectTagging(region string) *awsmiddlewa } } +// getPutObjectTaggingBucketMember returns a pointer to string denoting a provided +// bucket member valueand a boolean indicating if the input has a modeled bucket +// name, +func getPutObjectTaggingBucketMember(input interface{}) (*string, bool) { + in := input.(*PutObjectTaggingInput) + if in.Bucket == nil { + return nil, false + } + return in.Bucket, true +} func addPutObjectTaggingUpdateEndpoint(stack *middleware.Stack, options Options) error { return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ - Accessor: s3cust.UpdateEndpointParameterAccessor{GetBucketFromInput: getBucketFromInput, - SupportsAccelerate: supportAccelerate, + Accessor: s3cust.UpdateEndpointParameterAccessor{ + GetBucketFromInput: getPutObjectTaggingBucketMember, + SupportsAccelerate: true, }, UsePathStyle: options.UsePathStyle, UseAccelerate: options.UseAccelerate, diff --git a/service/s3/api_op_PutPublicAccessBlock.go b/service/s3/api_op_PutPublicAccessBlock.go index fb08a43287c..9146886303c 100644 --- a/service/s3/api_op_PutPublicAccessBlock.go +++ b/service/s3/api_op_PutPublicAccessBlock.go @@ -168,10 +168,21 @@ func newServiceMetadataMiddleware_opPutPublicAccessBlock(region string) *awsmidd } } +// getPutPublicAccessBlockBucketMember returns a pointer to string denoting a +// provided bucket member valueand a boolean indicating if the input has a modeled +// bucket name, +func getPutPublicAccessBlockBucketMember(input interface{}) (*string, bool) { + in := input.(*PutPublicAccessBlockInput) + if in.Bucket == nil { + return nil, false + } + return in.Bucket, true +} func addPutPublicAccessBlockUpdateEndpoint(stack *middleware.Stack, options Options) error { return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ - Accessor: s3cust.UpdateEndpointParameterAccessor{GetBucketFromInput: getBucketFromInput, - SupportsAccelerate: supportAccelerate, + Accessor: s3cust.UpdateEndpointParameterAccessor{ + GetBucketFromInput: getPutPublicAccessBlockBucketMember, + SupportsAccelerate: true, }, UsePathStyle: options.UsePathStyle, UseAccelerate: options.UseAccelerate, diff --git a/service/s3/api_op_RestoreObject.go b/service/s3/api_op_RestoreObject.go index 1e7ae791492..58e72578b67 100644 --- a/service/s3/api_op_RestoreObject.go +++ b/service/s3/api_op_RestoreObject.go @@ -383,10 +383,21 @@ func newServiceMetadataMiddleware_opRestoreObject(region string) *awsmiddleware. } } +// getRestoreObjectBucketMember returns a pointer to string denoting a provided +// bucket member valueand a boolean indicating if the input has a modeled bucket +// name, +func getRestoreObjectBucketMember(input interface{}) (*string, bool) { + in := input.(*RestoreObjectInput) + if in.Bucket == nil { + return nil, false + } + return in.Bucket, true +} func addRestoreObjectUpdateEndpoint(stack *middleware.Stack, options Options) error { return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ - Accessor: s3cust.UpdateEndpointParameterAccessor{GetBucketFromInput: getBucketFromInput, - SupportsAccelerate: supportAccelerate, + Accessor: s3cust.UpdateEndpointParameterAccessor{ + GetBucketFromInput: getRestoreObjectBucketMember, + SupportsAccelerate: true, }, UsePathStyle: options.UsePathStyle, UseAccelerate: options.UseAccelerate, diff --git a/service/s3/api_op_UploadPart.go b/service/s3/api_op_UploadPart.go index ddfff458925..f781b40c9b0 100644 --- a/service/s3/api_op_UploadPart.go +++ b/service/s3/api_op_UploadPart.go @@ -313,10 +313,20 @@ func newServiceMetadataMiddleware_opUploadPart(region string) *awsmiddleware.Reg } } +// getUploadPartBucketMember returns a pointer to string denoting a provided bucket +// member valueand a boolean indicating if the input has a modeled bucket name, +func getUploadPartBucketMember(input interface{}) (*string, bool) { + in := input.(*UploadPartInput) + if in.Bucket == nil { + return nil, false + } + return in.Bucket, true +} func addUploadPartUpdateEndpoint(stack *middleware.Stack, options Options) error { return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ - Accessor: s3cust.UpdateEndpointParameterAccessor{GetBucketFromInput: getBucketFromInput, - SupportsAccelerate: supportAccelerate, + Accessor: s3cust.UpdateEndpointParameterAccessor{ + GetBucketFromInput: getUploadPartBucketMember, + SupportsAccelerate: true, }, UsePathStyle: options.UsePathStyle, UseAccelerate: options.UseAccelerate, diff --git a/service/s3/api_op_UploadPartCopy.go b/service/s3/api_op_UploadPartCopy.go index d298e85213b..488b03c1b6e 100644 --- a/service/s3/api_op_UploadPartCopy.go +++ b/service/s3/api_op_UploadPartCopy.go @@ -399,10 +399,21 @@ func newServiceMetadataMiddleware_opUploadPartCopy(region string) *awsmiddleware } } +// getUploadPartCopyBucketMember returns a pointer to string denoting a provided +// bucket member valueand a boolean indicating if the input has a modeled bucket +// name, +func getUploadPartCopyBucketMember(input interface{}) (*string, bool) { + in := input.(*UploadPartCopyInput) + if in.Bucket == nil { + return nil, false + } + return in.Bucket, true +} func addUploadPartCopyUpdateEndpoint(stack *middleware.Stack, options Options) error { return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ - Accessor: s3cust.UpdateEndpointParameterAccessor{GetBucketFromInput: getBucketFromInput, - SupportsAccelerate: supportAccelerate, + Accessor: s3cust.UpdateEndpointParameterAccessor{ + GetBucketFromInput: getUploadPartCopyBucketMember, + SupportsAccelerate: true, }, UsePathStyle: options.UsePathStyle, UseAccelerate: options.UseAccelerate, diff --git a/service/s3control/api_client.go b/service/s3control/api_client.go index 2b51bf42940..4a43d826c83 100644 --- a/service/s3control/api_client.go +++ b/service/s3control/api_client.go @@ -240,17 +240,29 @@ func addMetadataRetrieverMiddleware(stack *middleware.Stack) error { return s3shared.AddMetadataRetrieverMiddleware(stack) } -// getOutpostIDFromInput returns a boolean indicating if the input has a modeled -// outpost-id, and a pointer to string denoting a provided outpost-id member value -func getOutpostIDFromInput(input interface{}) (*string, bool) { - switch i := input.(type) { - case *CreateBucketInput: - return i.OutpostId, true - case *ListRegionalBucketsInput: - return i.OutpostId, true - default: - return nil, false - } +// nopGetOutpostIDFromInput provides a nop accessor function to be used when +// endpoint customization behavior is not based on presence of outpost id member if +// any +func nopGetOutpostIDFromInput(input interface{}) (*string, bool) { + return nil, false +} + +// nopGetARNAccessor provides a nop get accessor function to be used when a certain +// operation does not support ARNs +func nopGetARNAccessor(input interface{}) (*string, bool) { + return nil, false +} + +// nopSetARNAccessor provides a nop set accessor function to be used when a certain +// operation does not support ARNs +func nopSetARNAccessor(input interface{}, v string) error { + return nil +} + +// nopBackfillAccountIDAccessor provides a nop accessor function to be used when a +// certain operation does not need to validate and backfill account id +func nopBackfillAccountIDAccessor(input interface{}, v string) error { + return nil } func addResponseErrorMiddleware(stack *middleware.Stack) error { diff --git a/service/s3control/api_op_CreateAccessPoint.go b/service/s3control/api_op_CreateAccessPoint.go index 45c160018a6..a48da7b7582 100644 --- a/service/s3control/api_op_CreateAccessPoint.go +++ b/service/s3control/api_op_CreateAccessPoint.go @@ -271,7 +271,7 @@ func addCreateAccessPointUpdateEndpoint(stack *middleware.Stack, options Options return s3controlcust.UpdateEndpoint(stack, s3controlcust.UpdateEndpointOptions{ Accessor: s3controlcust.UpdateEndpointParameterAccessor{GetARNInput: getCreateAccessPointARNMember, BackfillAccountID: backFillCreateAccessPointAccountID, - GetOutpostIDInput: getOutpostIDFromInput, + GetOutpostIDInput: nopGetOutpostIDFromInput, UpdateARNField: setCreateAccessPointARNMember, CopyInput: copyCreateAccessPointInputForUpdateEndpoint, }, diff --git a/service/s3control/api_op_CreateBucket.go b/service/s3control/api_op_CreateBucket.go index 76e4458ae5e..d1e47e2f030 100644 --- a/service/s3control/api_op_CreateBucket.go +++ b/service/s3control/api_op_CreateBucket.go @@ -224,15 +224,23 @@ func copyCreateBucketInputForUpdateEndpoint(params interface{}) (interface{}, er cpy := *input return &cpy, nil } -func backFillCreateBucketAccountID(input interface{}, v string) error { - return nil + +// getCreateBucketOutpostIDMember returns a pointer to string denoting a provided +// outpost-id member value and a boolean indicating if the input has a modeled +// outpost-id, +func getCreateBucketOutpostIDMember(input interface{}) (*string, bool) { + in := input.(*CreateBucketInput) + if in.OutpostId == nil { + return nil, false + } + return in.OutpostId, true } func addCreateBucketUpdateEndpoint(stack *middleware.Stack, options Options) error { return s3controlcust.UpdateEndpoint(stack, s3controlcust.UpdateEndpointOptions{ - Accessor: s3controlcust.UpdateEndpointParameterAccessor{GetARNInput: nil, - BackfillAccountID: nil, - GetOutpostIDInput: getOutpostIDFromInput, - UpdateARNField: nil, + Accessor: s3controlcust.UpdateEndpointParameterAccessor{GetARNInput: nopGetARNAccessor, + BackfillAccountID: nopBackfillAccountIDAccessor, + GetOutpostIDInput: getCreateBucketOutpostIDMember, + UpdateARNField: nopSetARNAccessor, CopyInput: copyCreateBucketInputForUpdateEndpoint, }, EndpointResolver: options.EndpointResolver, diff --git a/service/s3control/api_op_CreateJob.go b/service/s3control/api_op_CreateJob.go index 5924c0cf2aa..8b4b4a1dd90 100644 --- a/service/s3control/api_op_CreateJob.go +++ b/service/s3control/api_op_CreateJob.go @@ -280,12 +280,6 @@ func copyCreateJobInputForUpdateEndpoint(params interface{}) (interface{}, error cpy := *input return &cpy, nil } -func getCreateJobARNMember(input interface{}) (*string, bool) { - return nil, false -} -func setCreateJobARNMember(input interface{}, v string) error { - return nil -} func backFillCreateJobAccountID(input interface{}, v string) error { in := input.(*CreateJobInput) if in.AccountId != nil { @@ -299,10 +293,10 @@ func backFillCreateJobAccountID(input interface{}, v string) error { } func addCreateJobUpdateEndpoint(stack *middleware.Stack, options Options) error { return s3controlcust.UpdateEndpoint(stack, s3controlcust.UpdateEndpointOptions{ - Accessor: s3controlcust.UpdateEndpointParameterAccessor{GetARNInput: getCreateJobARNMember, - BackfillAccountID: backFillCreateJobAccountID, - GetOutpostIDInput: getOutpostIDFromInput, - UpdateARNField: setCreateJobARNMember, + Accessor: s3controlcust.UpdateEndpointParameterAccessor{GetARNInput: nopGetARNAccessor, + BackfillAccountID: nopBackfillAccountIDAccessor, + GetOutpostIDInput: nopGetOutpostIDFromInput, + UpdateARNField: nopSetARNAccessor, CopyInput: copyCreateJobInputForUpdateEndpoint, }, EndpointResolver: options.EndpointResolver, diff --git a/service/s3control/api_op_DeleteAccessPoint.go b/service/s3control/api_op_DeleteAccessPoint.go index bc6d88a6219..74ae85b8422 100644 --- a/service/s3control/api_op_DeleteAccessPoint.go +++ b/service/s3control/api_op_DeleteAccessPoint.go @@ -227,7 +227,7 @@ func addDeleteAccessPointUpdateEndpoint(stack *middleware.Stack, options Options return s3controlcust.UpdateEndpoint(stack, s3controlcust.UpdateEndpointOptions{ Accessor: s3controlcust.UpdateEndpointParameterAccessor{GetARNInput: getDeleteAccessPointARNMember, BackfillAccountID: backFillDeleteAccessPointAccountID, - GetOutpostIDInput: getOutpostIDFromInput, + GetOutpostIDInput: nopGetOutpostIDFromInput, UpdateARNField: setDeleteAccessPointARNMember, CopyInput: copyDeleteAccessPointInputForUpdateEndpoint, }, diff --git a/service/s3control/api_op_DeleteAccessPointPolicy.go b/service/s3control/api_op_DeleteAccessPointPolicy.go index e67945b0ce4..7c1477524d1 100644 --- a/service/s3control/api_op_DeleteAccessPointPolicy.go +++ b/service/s3control/api_op_DeleteAccessPointPolicy.go @@ -223,7 +223,7 @@ func addDeleteAccessPointPolicyUpdateEndpoint(stack *middleware.Stack, options O return s3controlcust.UpdateEndpoint(stack, s3controlcust.UpdateEndpointOptions{ Accessor: s3controlcust.UpdateEndpointParameterAccessor{GetARNInput: getDeleteAccessPointPolicyARNMember, BackfillAccountID: backFillDeleteAccessPointPolicyAccountID, - GetOutpostIDInput: getOutpostIDFromInput, + GetOutpostIDInput: nopGetOutpostIDFromInput, UpdateARNField: setDeleteAccessPointPolicyARNMember, CopyInput: copyDeleteAccessPointPolicyInputForUpdateEndpoint, }, diff --git a/service/s3control/api_op_DeleteBucket.go b/service/s3control/api_op_DeleteBucket.go index bb8a591c8ca..1d9b4e92ce1 100644 --- a/service/s3control/api_op_DeleteBucket.go +++ b/service/s3control/api_op_DeleteBucket.go @@ -233,7 +233,7 @@ func addDeleteBucketUpdateEndpoint(stack *middleware.Stack, options Options) err return s3controlcust.UpdateEndpoint(stack, s3controlcust.UpdateEndpointOptions{ Accessor: s3controlcust.UpdateEndpointParameterAccessor{GetARNInput: getDeleteBucketARNMember, BackfillAccountID: backFillDeleteBucketAccountID, - GetOutpostIDInput: getOutpostIDFromInput, + GetOutpostIDInput: nopGetOutpostIDFromInput, UpdateARNField: setDeleteBucketARNMember, CopyInput: copyDeleteBucketInputForUpdateEndpoint, }, diff --git a/service/s3control/api_op_DeleteBucketLifecycleConfiguration.go b/service/s3control/api_op_DeleteBucketLifecycleConfiguration.go index e7554e8fc46..a6c393dc79e 100644 --- a/service/s3control/api_op_DeleteBucketLifecycleConfiguration.go +++ b/service/s3control/api_op_DeleteBucketLifecycleConfiguration.go @@ -238,7 +238,7 @@ func addDeleteBucketLifecycleConfigurationUpdateEndpoint(stack *middleware.Stack return s3controlcust.UpdateEndpoint(stack, s3controlcust.UpdateEndpointOptions{ Accessor: s3controlcust.UpdateEndpointParameterAccessor{GetARNInput: getDeleteBucketLifecycleConfigurationARNMember, BackfillAccountID: backFillDeleteBucketLifecycleConfigurationAccountID, - GetOutpostIDInput: getOutpostIDFromInput, + GetOutpostIDInput: nopGetOutpostIDFromInput, UpdateARNField: setDeleteBucketLifecycleConfigurationARNMember, CopyInput: copyDeleteBucketLifecycleConfigurationInputForUpdateEndpoint, }, diff --git a/service/s3control/api_op_DeleteBucketPolicy.go b/service/s3control/api_op_DeleteBucketPolicy.go index be5fbf89d28..ad42e361890 100644 --- a/service/s3control/api_op_DeleteBucketPolicy.go +++ b/service/s3control/api_op_DeleteBucketPolicy.go @@ -241,7 +241,7 @@ func addDeleteBucketPolicyUpdateEndpoint(stack *middleware.Stack, options Option return s3controlcust.UpdateEndpoint(stack, s3controlcust.UpdateEndpointOptions{ Accessor: s3controlcust.UpdateEndpointParameterAccessor{GetARNInput: getDeleteBucketPolicyARNMember, BackfillAccountID: backFillDeleteBucketPolicyAccountID, - GetOutpostIDInput: getOutpostIDFromInput, + GetOutpostIDInput: nopGetOutpostIDFromInput, UpdateARNField: setDeleteBucketPolicyARNMember, CopyInput: copyDeleteBucketPolicyInputForUpdateEndpoint, }, diff --git a/service/s3control/api_op_DeleteBucketTagging.go b/service/s3control/api_op_DeleteBucketTagging.go index eb4474b12e4..56cd4f62b95 100644 --- a/service/s3control/api_op_DeleteBucketTagging.go +++ b/service/s3control/api_op_DeleteBucketTagging.go @@ -231,7 +231,7 @@ func addDeleteBucketTaggingUpdateEndpoint(stack *middleware.Stack, options Optio return s3controlcust.UpdateEndpoint(stack, s3controlcust.UpdateEndpointOptions{ Accessor: s3controlcust.UpdateEndpointParameterAccessor{GetARNInput: getDeleteBucketTaggingARNMember, BackfillAccountID: backFillDeleteBucketTaggingAccountID, - GetOutpostIDInput: getOutpostIDFromInput, + GetOutpostIDInput: nopGetOutpostIDFromInput, UpdateARNField: setDeleteBucketTaggingARNMember, CopyInput: copyDeleteBucketTaggingInputForUpdateEndpoint, }, diff --git a/service/s3control/api_op_DeleteJobTagging.go b/service/s3control/api_op_DeleteJobTagging.go index 914ef1d5467..01aa37de34b 100644 --- a/service/s3control/api_op_DeleteJobTagging.go +++ b/service/s3control/api_op_DeleteJobTagging.go @@ -192,12 +192,6 @@ func copyDeleteJobTaggingInputForUpdateEndpoint(params interface{}) (interface{} cpy := *input return &cpy, nil } -func getDeleteJobTaggingARNMember(input interface{}) (*string, bool) { - return nil, false -} -func setDeleteJobTaggingARNMember(input interface{}, v string) error { - return nil -} func backFillDeleteJobTaggingAccountID(input interface{}, v string) error { in := input.(*DeleteJobTaggingInput) if in.AccountId != nil { @@ -211,10 +205,10 @@ func backFillDeleteJobTaggingAccountID(input interface{}, v string) error { } func addDeleteJobTaggingUpdateEndpoint(stack *middleware.Stack, options Options) error { return s3controlcust.UpdateEndpoint(stack, s3controlcust.UpdateEndpointOptions{ - Accessor: s3controlcust.UpdateEndpointParameterAccessor{GetARNInput: getDeleteJobTaggingARNMember, - BackfillAccountID: backFillDeleteJobTaggingAccountID, - GetOutpostIDInput: getOutpostIDFromInput, - UpdateARNField: setDeleteJobTaggingARNMember, + Accessor: s3controlcust.UpdateEndpointParameterAccessor{GetARNInput: nopGetARNAccessor, + BackfillAccountID: nopBackfillAccountIDAccessor, + GetOutpostIDInput: nopGetOutpostIDFromInput, + UpdateARNField: nopSetARNAccessor, CopyInput: copyDeleteJobTaggingInputForUpdateEndpoint, }, EndpointResolver: options.EndpointResolver, diff --git a/service/s3control/api_op_DeletePublicAccessBlock.go b/service/s3control/api_op_DeletePublicAccessBlock.go index 3f00474281c..a66df25b495 100644 --- a/service/s3control/api_op_DeletePublicAccessBlock.go +++ b/service/s3control/api_op_DeletePublicAccessBlock.go @@ -181,12 +181,6 @@ func copyDeletePublicAccessBlockInputForUpdateEndpoint(params interface{}) (inte cpy := *input return &cpy, nil } -func getDeletePublicAccessBlockARNMember(input interface{}) (*string, bool) { - return nil, false -} -func setDeletePublicAccessBlockARNMember(input interface{}, v string) error { - return nil -} func backFillDeletePublicAccessBlockAccountID(input interface{}, v string) error { in := input.(*DeletePublicAccessBlockInput) if in.AccountId != nil { @@ -200,10 +194,10 @@ func backFillDeletePublicAccessBlockAccountID(input interface{}, v string) error } func addDeletePublicAccessBlockUpdateEndpoint(stack *middleware.Stack, options Options) error { return s3controlcust.UpdateEndpoint(stack, s3controlcust.UpdateEndpointOptions{ - Accessor: s3controlcust.UpdateEndpointParameterAccessor{GetARNInput: getDeletePublicAccessBlockARNMember, - BackfillAccountID: backFillDeletePublicAccessBlockAccountID, - GetOutpostIDInput: getOutpostIDFromInput, - UpdateARNField: setDeletePublicAccessBlockARNMember, + Accessor: s3controlcust.UpdateEndpointParameterAccessor{GetARNInput: nopGetARNAccessor, + BackfillAccountID: nopBackfillAccountIDAccessor, + GetOutpostIDInput: nopGetOutpostIDFromInput, + UpdateARNField: nopSetARNAccessor, CopyInput: copyDeletePublicAccessBlockInputForUpdateEndpoint, }, EndpointResolver: options.EndpointResolver, diff --git a/service/s3control/api_op_DescribeJob.go b/service/s3control/api_op_DescribeJob.go index 65cd0cd8741..2c6012bdec4 100644 --- a/service/s3control/api_op_DescribeJob.go +++ b/service/s3control/api_op_DescribeJob.go @@ -200,12 +200,6 @@ func copyDescribeJobInputForUpdateEndpoint(params interface{}) (interface{}, err cpy := *input return &cpy, nil } -func getDescribeJobARNMember(input interface{}) (*string, bool) { - return nil, false -} -func setDescribeJobARNMember(input interface{}, v string) error { - return nil -} func backFillDescribeJobAccountID(input interface{}, v string) error { in := input.(*DescribeJobInput) if in.AccountId != nil { @@ -219,10 +213,10 @@ func backFillDescribeJobAccountID(input interface{}, v string) error { } func addDescribeJobUpdateEndpoint(stack *middleware.Stack, options Options) error { return s3controlcust.UpdateEndpoint(stack, s3controlcust.UpdateEndpointOptions{ - Accessor: s3controlcust.UpdateEndpointParameterAccessor{GetARNInput: getDescribeJobARNMember, - BackfillAccountID: backFillDescribeJobAccountID, - GetOutpostIDInput: getOutpostIDFromInput, - UpdateARNField: setDescribeJobARNMember, + Accessor: s3controlcust.UpdateEndpointParameterAccessor{GetARNInput: nopGetARNAccessor, + BackfillAccountID: nopBackfillAccountIDAccessor, + GetOutpostIDInput: nopGetOutpostIDFromInput, + UpdateARNField: nopSetARNAccessor, CopyInput: copyDescribeJobInputForUpdateEndpoint, }, EndpointResolver: options.EndpointResolver, diff --git a/service/s3control/api_op_GetAccessPoint.go b/service/s3control/api_op_GetAccessPoint.go index 698526e09ef..01397b57a48 100644 --- a/service/s3control/api_op_GetAccessPoint.go +++ b/service/s3control/api_op_GetAccessPoint.go @@ -260,7 +260,7 @@ func addGetAccessPointUpdateEndpoint(stack *middleware.Stack, options Options) e return s3controlcust.UpdateEndpoint(stack, s3controlcust.UpdateEndpointOptions{ Accessor: s3controlcust.UpdateEndpointParameterAccessor{GetARNInput: getGetAccessPointARNMember, BackfillAccountID: backFillGetAccessPointAccountID, - GetOutpostIDInput: getOutpostIDFromInput, + GetOutpostIDInput: nopGetOutpostIDFromInput, UpdateARNField: setGetAccessPointARNMember, CopyInput: copyGetAccessPointInputForUpdateEndpoint, }, diff --git a/service/s3control/api_op_GetAccessPointPolicy.go b/service/s3control/api_op_GetAccessPointPolicy.go index 11536689ddc..c51319453a0 100644 --- a/service/s3control/api_op_GetAccessPointPolicy.go +++ b/service/s3control/api_op_GetAccessPointPolicy.go @@ -220,7 +220,7 @@ func addGetAccessPointPolicyUpdateEndpoint(stack *middleware.Stack, options Opti return s3controlcust.UpdateEndpoint(stack, s3controlcust.UpdateEndpointOptions{ Accessor: s3controlcust.UpdateEndpointParameterAccessor{GetARNInput: getGetAccessPointPolicyARNMember, BackfillAccountID: backFillGetAccessPointPolicyAccountID, - GetOutpostIDInput: getOutpostIDFromInput, + GetOutpostIDInput: nopGetOutpostIDFromInput, UpdateARNField: setGetAccessPointPolicyARNMember, CopyInput: copyGetAccessPointPolicyInputForUpdateEndpoint, }, diff --git a/service/s3control/api_op_GetAccessPointPolicyStatus.go b/service/s3control/api_op_GetAccessPointPolicyStatus.go index cbdc2916447..01f75b43151 100644 --- a/service/s3control/api_op_GetAccessPointPolicyStatus.go +++ b/service/s3control/api_op_GetAccessPointPolicyStatus.go @@ -184,12 +184,6 @@ func copyGetAccessPointPolicyStatusInputForUpdateEndpoint(params interface{}) (i cpy := *input return &cpy, nil } -func getGetAccessPointPolicyStatusARNMember(input interface{}) (*string, bool) { - return nil, false -} -func setGetAccessPointPolicyStatusARNMember(input interface{}, v string) error { - return nil -} func backFillGetAccessPointPolicyStatusAccountID(input interface{}, v string) error { in := input.(*GetAccessPointPolicyStatusInput) if in.AccountId != nil { @@ -203,10 +197,10 @@ func backFillGetAccessPointPolicyStatusAccountID(input interface{}, v string) er } func addGetAccessPointPolicyStatusUpdateEndpoint(stack *middleware.Stack, options Options) error { return s3controlcust.UpdateEndpoint(stack, s3controlcust.UpdateEndpointOptions{ - Accessor: s3controlcust.UpdateEndpointParameterAccessor{GetARNInput: getGetAccessPointPolicyStatusARNMember, - BackfillAccountID: backFillGetAccessPointPolicyStatusAccountID, - GetOutpostIDInput: getOutpostIDFromInput, - UpdateARNField: setGetAccessPointPolicyStatusARNMember, + Accessor: s3controlcust.UpdateEndpointParameterAccessor{GetARNInput: nopGetARNAccessor, + BackfillAccountID: nopBackfillAccountIDAccessor, + GetOutpostIDInput: nopGetOutpostIDFromInput, + UpdateARNField: nopSetARNAccessor, CopyInput: copyGetAccessPointPolicyStatusInputForUpdateEndpoint, }, EndpointResolver: options.EndpointResolver, diff --git a/service/s3control/api_op_GetBucket.go b/service/s3control/api_op_GetBucket.go index 09b380485c1..ed9785630d5 100644 --- a/service/s3control/api_op_GetBucket.go +++ b/service/s3control/api_op_GetBucket.go @@ -232,7 +232,7 @@ func addGetBucketUpdateEndpoint(stack *middleware.Stack, options Options) error return s3controlcust.UpdateEndpoint(stack, s3controlcust.UpdateEndpointOptions{ Accessor: s3controlcust.UpdateEndpointParameterAccessor{GetARNInput: getGetBucketARNMember, BackfillAccountID: backFillGetBucketAccountID, - GetOutpostIDInput: getOutpostIDFromInput, + GetOutpostIDInput: nopGetOutpostIDFromInput, UpdateARNField: setGetBucketARNMember, CopyInput: copyGetBucketInputForUpdateEndpoint, }, diff --git a/service/s3control/api_op_GetBucketLifecycleConfiguration.go b/service/s3control/api_op_GetBucketLifecycleConfiguration.go index 7ce82ff69c8..8bfb0030d58 100644 --- a/service/s3control/api_op_GetBucketLifecycleConfiguration.go +++ b/service/s3control/api_op_GetBucketLifecycleConfiguration.go @@ -258,7 +258,7 @@ func addGetBucketLifecycleConfigurationUpdateEndpoint(stack *middleware.Stack, o return s3controlcust.UpdateEndpoint(stack, s3controlcust.UpdateEndpointOptions{ Accessor: s3controlcust.UpdateEndpointParameterAccessor{GetARNInput: getGetBucketLifecycleConfigurationARNMember, BackfillAccountID: backFillGetBucketLifecycleConfigurationAccountID, - GetOutpostIDInput: getOutpostIDFromInput, + GetOutpostIDInput: nopGetOutpostIDFromInput, UpdateARNField: setGetBucketLifecycleConfigurationARNMember, CopyInput: copyGetBucketLifecycleConfigurationInputForUpdateEndpoint, }, diff --git a/service/s3control/api_op_GetBucketPolicy.go b/service/s3control/api_op_GetBucketPolicy.go index e9c5e42fa26..09f62a9122e 100644 --- a/service/s3control/api_op_GetBucketPolicy.go +++ b/service/s3control/api_op_GetBucketPolicy.go @@ -247,7 +247,7 @@ func addGetBucketPolicyUpdateEndpoint(stack *middleware.Stack, options Options) return s3controlcust.UpdateEndpoint(stack, s3controlcust.UpdateEndpointOptions{ Accessor: s3controlcust.UpdateEndpointParameterAccessor{GetARNInput: getGetBucketPolicyARNMember, BackfillAccountID: backFillGetBucketPolicyAccountID, - GetOutpostIDInput: getOutpostIDFromInput, + GetOutpostIDInput: nopGetOutpostIDFromInput, UpdateARNField: setGetBucketPolicyARNMember, CopyInput: copyGetBucketPolicyInputForUpdateEndpoint, }, diff --git a/service/s3control/api_op_GetBucketTagging.go b/service/s3control/api_op_GetBucketTagging.go index 2cdab00e6de..e7f98ca4475 100644 --- a/service/s3control/api_op_GetBucketTagging.go +++ b/service/s3control/api_op_GetBucketTagging.go @@ -246,7 +246,7 @@ func addGetBucketTaggingUpdateEndpoint(stack *middleware.Stack, options Options) return s3controlcust.UpdateEndpoint(stack, s3controlcust.UpdateEndpointOptions{ Accessor: s3controlcust.UpdateEndpointParameterAccessor{GetARNInput: getGetBucketTaggingARNMember, BackfillAccountID: backFillGetBucketTaggingAccountID, - GetOutpostIDInput: getOutpostIDFromInput, + GetOutpostIDInput: nopGetOutpostIDFromInput, UpdateARNField: setGetBucketTaggingARNMember, CopyInput: copyGetBucketTaggingInputForUpdateEndpoint, }, diff --git a/service/s3control/api_op_GetJobTagging.go b/service/s3control/api_op_GetJobTagging.go index 64c06ec8cd2..834249646dd 100644 --- a/service/s3control/api_op_GetJobTagging.go +++ b/service/s3control/api_op_GetJobTagging.go @@ -196,12 +196,6 @@ func copyGetJobTaggingInputForUpdateEndpoint(params interface{}) (interface{}, e cpy := *input return &cpy, nil } -func getGetJobTaggingARNMember(input interface{}) (*string, bool) { - return nil, false -} -func setGetJobTaggingARNMember(input interface{}, v string) error { - return nil -} func backFillGetJobTaggingAccountID(input interface{}, v string) error { in := input.(*GetJobTaggingInput) if in.AccountId != nil { @@ -215,10 +209,10 @@ func backFillGetJobTaggingAccountID(input interface{}, v string) error { } func addGetJobTaggingUpdateEndpoint(stack *middleware.Stack, options Options) error { return s3controlcust.UpdateEndpoint(stack, s3controlcust.UpdateEndpointOptions{ - Accessor: s3controlcust.UpdateEndpointParameterAccessor{GetARNInput: getGetJobTaggingARNMember, - BackfillAccountID: backFillGetJobTaggingAccountID, - GetOutpostIDInput: getOutpostIDFromInput, - UpdateARNField: setGetJobTaggingARNMember, + Accessor: s3controlcust.UpdateEndpointParameterAccessor{GetARNInput: nopGetARNAccessor, + BackfillAccountID: nopBackfillAccountIDAccessor, + GetOutpostIDInput: nopGetOutpostIDFromInput, + UpdateARNField: nopSetARNAccessor, CopyInput: copyGetJobTaggingInputForUpdateEndpoint, }, EndpointResolver: options.EndpointResolver, diff --git a/service/s3control/api_op_GetPublicAccessBlock.go b/service/s3control/api_op_GetPublicAccessBlock.go index 562e2dbfd51..2b69b846e55 100644 --- a/service/s3control/api_op_GetPublicAccessBlock.go +++ b/service/s3control/api_op_GetPublicAccessBlock.go @@ -186,12 +186,6 @@ func copyGetPublicAccessBlockInputForUpdateEndpoint(params interface{}) (interfa cpy := *input return &cpy, nil } -func getGetPublicAccessBlockARNMember(input interface{}) (*string, bool) { - return nil, false -} -func setGetPublicAccessBlockARNMember(input interface{}, v string) error { - return nil -} func backFillGetPublicAccessBlockAccountID(input interface{}, v string) error { in := input.(*GetPublicAccessBlockInput) if in.AccountId != nil { @@ -205,10 +199,10 @@ func backFillGetPublicAccessBlockAccountID(input interface{}, v string) error { } func addGetPublicAccessBlockUpdateEndpoint(stack *middleware.Stack, options Options) error { return s3controlcust.UpdateEndpoint(stack, s3controlcust.UpdateEndpointOptions{ - Accessor: s3controlcust.UpdateEndpointParameterAccessor{GetARNInput: getGetPublicAccessBlockARNMember, - BackfillAccountID: backFillGetPublicAccessBlockAccountID, - GetOutpostIDInput: getOutpostIDFromInput, - UpdateARNField: setGetPublicAccessBlockARNMember, + Accessor: s3controlcust.UpdateEndpointParameterAccessor{GetARNInput: nopGetARNAccessor, + BackfillAccountID: nopBackfillAccountIDAccessor, + GetOutpostIDInput: nopGetOutpostIDFromInput, + UpdateARNField: nopSetARNAccessor, CopyInput: copyGetPublicAccessBlockInputForUpdateEndpoint, }, EndpointResolver: options.EndpointResolver, diff --git a/service/s3control/api_op_ListAccessPoints.go b/service/s3control/api_op_ListAccessPoints.go index 9e5e6da98bf..ef320d6b40f 100644 --- a/service/s3control/api_op_ListAccessPoints.go +++ b/service/s3control/api_op_ListAccessPoints.go @@ -251,7 +251,7 @@ func addListAccessPointsUpdateEndpoint(stack *middleware.Stack, options Options) return s3controlcust.UpdateEndpoint(stack, s3controlcust.UpdateEndpointOptions{ Accessor: s3controlcust.UpdateEndpointParameterAccessor{GetARNInput: getListAccessPointsARNMember, BackfillAccountID: backFillListAccessPointsAccountID, - GetOutpostIDInput: getOutpostIDFromInput, + GetOutpostIDInput: nopGetOutpostIDFromInput, UpdateARNField: setListAccessPointsARNMember, CopyInput: copyListAccessPointsInputForUpdateEndpoint, }, diff --git a/service/s3control/api_op_ListJobs.go b/service/s3control/api_op_ListJobs.go index 455176d29e5..2eb52e8db8e 100644 --- a/service/s3control/api_op_ListJobs.go +++ b/service/s3control/api_op_ListJobs.go @@ -215,12 +215,6 @@ func copyListJobsInputForUpdateEndpoint(params interface{}) (interface{}, error) cpy := *input return &cpy, nil } -func getListJobsARNMember(input interface{}) (*string, bool) { - return nil, false -} -func setListJobsARNMember(input interface{}, v string) error { - return nil -} func backFillListJobsAccountID(input interface{}, v string) error { in := input.(*ListJobsInput) if in.AccountId != nil { @@ -234,10 +228,10 @@ func backFillListJobsAccountID(input interface{}, v string) error { } func addListJobsUpdateEndpoint(stack *middleware.Stack, options Options) error { return s3controlcust.UpdateEndpoint(stack, s3controlcust.UpdateEndpointOptions{ - Accessor: s3controlcust.UpdateEndpointParameterAccessor{GetARNInput: getListJobsARNMember, - BackfillAccountID: backFillListJobsAccountID, - GetOutpostIDInput: getOutpostIDFromInput, - UpdateARNField: setListJobsARNMember, + Accessor: s3controlcust.UpdateEndpointParameterAccessor{GetARNInput: nopGetARNAccessor, + BackfillAccountID: nopBackfillAccountIDAccessor, + GetOutpostIDInput: nopGetOutpostIDFromInput, + UpdateARNField: nopSetARNAccessor, CopyInput: copyListJobsInputForUpdateEndpoint, }, EndpointResolver: options.EndpointResolver, diff --git a/service/s3control/api_op_ListRegionalBuckets.go b/service/s3control/api_op_ListRegionalBuckets.go index 89ca9c9ac14..2dd2e12854a 100644 --- a/service/s3control/api_op_ListRegionalBuckets.go +++ b/service/s3control/api_op_ListRegionalBuckets.go @@ -196,6 +196,17 @@ func copyListRegionalBucketsInputForUpdateEndpoint(params interface{}) (interfac cpy := *input return &cpy, nil } + +// getListRegionalBucketsOutpostIDMember returns a pointer to string denoting a +// provided outpost-id member value and a boolean indicating if the input has a +// modeled outpost-id, +func getListRegionalBucketsOutpostIDMember(input interface{}) (*string, bool) { + in := input.(*ListRegionalBucketsInput) + if in.OutpostId == nil { + return nil, false + } + return in.OutpostId, true +} func backFillListRegionalBucketsAccountID(input interface{}, v string) error { in := input.(*ListRegionalBucketsInput) if in.AccountId != nil { @@ -209,10 +220,10 @@ func backFillListRegionalBucketsAccountID(input interface{}, v string) error { } func addListRegionalBucketsUpdateEndpoint(stack *middleware.Stack, options Options) error { return s3controlcust.UpdateEndpoint(stack, s3controlcust.UpdateEndpointOptions{ - Accessor: s3controlcust.UpdateEndpointParameterAccessor{GetARNInput: nil, - BackfillAccountID: nil, - GetOutpostIDInput: getOutpostIDFromInput, - UpdateARNField: nil, + Accessor: s3controlcust.UpdateEndpointParameterAccessor{GetARNInput: nopGetARNAccessor, + BackfillAccountID: nopBackfillAccountIDAccessor, + GetOutpostIDInput: getListRegionalBucketsOutpostIDMember, + UpdateARNField: nopSetARNAccessor, CopyInput: copyListRegionalBucketsInputForUpdateEndpoint, }, EndpointResolver: options.EndpointResolver, diff --git a/service/s3control/api_op_PutAccessPointPolicy.go b/service/s3control/api_op_PutAccessPointPolicy.go index a45a61469e1..c401c02ed04 100644 --- a/service/s3control/api_op_PutAccessPointPolicy.go +++ b/service/s3control/api_op_PutAccessPointPolicy.go @@ -235,7 +235,7 @@ func addPutAccessPointPolicyUpdateEndpoint(stack *middleware.Stack, options Opti return s3controlcust.UpdateEndpoint(stack, s3controlcust.UpdateEndpointOptions{ Accessor: s3controlcust.UpdateEndpointParameterAccessor{GetARNInput: getPutAccessPointPolicyARNMember, BackfillAccountID: backFillPutAccessPointPolicyAccountID, - GetOutpostIDInput: getOutpostIDFromInput, + GetOutpostIDInput: nopGetOutpostIDFromInput, UpdateARNField: setPutAccessPointPolicyARNMember, CopyInput: copyPutAccessPointPolicyInputForUpdateEndpoint, }, diff --git a/service/s3control/api_op_PutBucketLifecycleConfiguration.go b/service/s3control/api_op_PutBucketLifecycleConfiguration.go index e25651e614d..136f3c0e77c 100644 --- a/service/s3control/api_op_PutBucketLifecycleConfiguration.go +++ b/service/s3control/api_op_PutBucketLifecycleConfiguration.go @@ -233,7 +233,7 @@ func addPutBucketLifecycleConfigurationUpdateEndpoint(stack *middleware.Stack, o return s3controlcust.UpdateEndpoint(stack, s3controlcust.UpdateEndpointOptions{ Accessor: s3controlcust.UpdateEndpointParameterAccessor{GetARNInput: getPutBucketLifecycleConfigurationARNMember, BackfillAccountID: backFillPutBucketLifecycleConfigurationAccountID, - GetOutpostIDInput: getOutpostIDFromInput, + GetOutpostIDInput: nopGetOutpostIDFromInput, UpdateARNField: setPutBucketLifecycleConfigurationARNMember, CopyInput: copyPutBucketLifecycleConfigurationInputForUpdateEndpoint, }, diff --git a/service/s3control/api_op_PutBucketPolicy.go b/service/s3control/api_op_PutBucketPolicy.go index 4ed6e42467d..2ab93af85c9 100644 --- a/service/s3control/api_op_PutBucketPolicy.go +++ b/service/s3control/api_op_PutBucketPolicy.go @@ -252,7 +252,7 @@ func addPutBucketPolicyUpdateEndpoint(stack *middleware.Stack, options Options) return s3controlcust.UpdateEndpoint(stack, s3controlcust.UpdateEndpointOptions{ Accessor: s3controlcust.UpdateEndpointParameterAccessor{GetARNInput: getPutBucketPolicyARNMember, BackfillAccountID: backFillPutBucketPolicyAccountID, - GetOutpostIDInput: getOutpostIDFromInput, + GetOutpostIDInput: nopGetOutpostIDFromInput, UpdateARNField: setPutBucketPolicyARNMember, CopyInput: copyPutBucketPolicyInputForUpdateEndpoint, }, diff --git a/service/s3control/api_op_PutBucketTagging.go b/service/s3control/api_op_PutBucketTagging.go index 262c33f5f37..adca2a78b3b 100644 --- a/service/s3control/api_op_PutBucketTagging.go +++ b/service/s3control/api_op_PutBucketTagging.go @@ -288,7 +288,7 @@ func addPutBucketTaggingUpdateEndpoint(stack *middleware.Stack, options Options) return s3controlcust.UpdateEndpoint(stack, s3controlcust.UpdateEndpointOptions{ Accessor: s3controlcust.UpdateEndpointParameterAccessor{GetARNInput: getPutBucketTaggingARNMember, BackfillAccountID: backFillPutBucketTaggingAccountID, - GetOutpostIDInput: getOutpostIDFromInput, + GetOutpostIDInput: nopGetOutpostIDFromInput, UpdateARNField: setPutBucketTaggingARNMember, CopyInput: copyPutBucketTaggingInputForUpdateEndpoint, }, diff --git a/service/s3control/api_op_PutJobTagging.go b/service/s3control/api_op_PutJobTagging.go index 6eb7801ed3e..66a1275e2df 100644 --- a/service/s3control/api_op_PutJobTagging.go +++ b/service/s3control/api_op_PutJobTagging.go @@ -239,12 +239,6 @@ func copyPutJobTaggingInputForUpdateEndpoint(params interface{}) (interface{}, e cpy := *input return &cpy, nil } -func getPutJobTaggingARNMember(input interface{}) (*string, bool) { - return nil, false -} -func setPutJobTaggingARNMember(input interface{}, v string) error { - return nil -} func backFillPutJobTaggingAccountID(input interface{}, v string) error { in := input.(*PutJobTaggingInput) if in.AccountId != nil { @@ -258,10 +252,10 @@ func backFillPutJobTaggingAccountID(input interface{}, v string) error { } func addPutJobTaggingUpdateEndpoint(stack *middleware.Stack, options Options) error { return s3controlcust.UpdateEndpoint(stack, s3controlcust.UpdateEndpointOptions{ - Accessor: s3controlcust.UpdateEndpointParameterAccessor{GetARNInput: getPutJobTaggingARNMember, - BackfillAccountID: backFillPutJobTaggingAccountID, - GetOutpostIDInput: getOutpostIDFromInput, - UpdateARNField: setPutJobTaggingARNMember, + Accessor: s3controlcust.UpdateEndpointParameterAccessor{GetARNInput: nopGetARNAccessor, + BackfillAccountID: nopBackfillAccountIDAccessor, + GetOutpostIDInput: nopGetOutpostIDFromInput, + UpdateARNField: nopSetARNAccessor, CopyInput: copyPutJobTaggingInputForUpdateEndpoint, }, EndpointResolver: options.EndpointResolver, diff --git a/service/s3control/api_op_PutPublicAccessBlock.go b/service/s3control/api_op_PutPublicAccessBlock.go index 7b519acbb7e..5ff7bb09509 100644 --- a/service/s3control/api_op_PutPublicAccessBlock.go +++ b/service/s3control/api_op_PutPublicAccessBlock.go @@ -188,12 +188,6 @@ func copyPutPublicAccessBlockInputForUpdateEndpoint(params interface{}) (interfa cpy := *input return &cpy, nil } -func getPutPublicAccessBlockARNMember(input interface{}) (*string, bool) { - return nil, false -} -func setPutPublicAccessBlockARNMember(input interface{}, v string) error { - return nil -} func backFillPutPublicAccessBlockAccountID(input interface{}, v string) error { in := input.(*PutPublicAccessBlockInput) if in.AccountId != nil { @@ -207,10 +201,10 @@ func backFillPutPublicAccessBlockAccountID(input interface{}, v string) error { } func addPutPublicAccessBlockUpdateEndpoint(stack *middleware.Stack, options Options) error { return s3controlcust.UpdateEndpoint(stack, s3controlcust.UpdateEndpointOptions{ - Accessor: s3controlcust.UpdateEndpointParameterAccessor{GetARNInput: getPutPublicAccessBlockARNMember, - BackfillAccountID: backFillPutPublicAccessBlockAccountID, - GetOutpostIDInput: getOutpostIDFromInput, - UpdateARNField: setPutPublicAccessBlockARNMember, + Accessor: s3controlcust.UpdateEndpointParameterAccessor{GetARNInput: nopGetARNAccessor, + BackfillAccountID: nopBackfillAccountIDAccessor, + GetOutpostIDInput: nopGetOutpostIDFromInput, + UpdateARNField: nopSetARNAccessor, CopyInput: copyPutPublicAccessBlockInputForUpdateEndpoint, }, EndpointResolver: options.EndpointResolver, diff --git a/service/s3control/api_op_UpdateJobPriority.go b/service/s3control/api_op_UpdateJobPriority.go index b41091ae103..5a8c6aee356 100644 --- a/service/s3control/api_op_UpdateJobPriority.go +++ b/service/s3control/api_op_UpdateJobPriority.go @@ -210,12 +210,6 @@ func copyUpdateJobPriorityInputForUpdateEndpoint(params interface{}) (interface{ cpy := *input return &cpy, nil } -func getUpdateJobPriorityARNMember(input interface{}) (*string, bool) { - return nil, false -} -func setUpdateJobPriorityARNMember(input interface{}, v string) error { - return nil -} func backFillUpdateJobPriorityAccountID(input interface{}, v string) error { in := input.(*UpdateJobPriorityInput) if in.AccountId != nil { @@ -229,10 +223,10 @@ func backFillUpdateJobPriorityAccountID(input interface{}, v string) error { } func addUpdateJobPriorityUpdateEndpoint(stack *middleware.Stack, options Options) error { return s3controlcust.UpdateEndpoint(stack, s3controlcust.UpdateEndpointOptions{ - Accessor: s3controlcust.UpdateEndpointParameterAccessor{GetARNInput: getUpdateJobPriorityARNMember, - BackfillAccountID: backFillUpdateJobPriorityAccountID, - GetOutpostIDInput: getOutpostIDFromInput, - UpdateARNField: setUpdateJobPriorityARNMember, + Accessor: s3controlcust.UpdateEndpointParameterAccessor{GetARNInput: nopGetARNAccessor, + BackfillAccountID: nopBackfillAccountIDAccessor, + GetOutpostIDInput: nopGetOutpostIDFromInput, + UpdateARNField: nopSetARNAccessor, CopyInput: copyUpdateJobPriorityInputForUpdateEndpoint, }, EndpointResolver: options.EndpointResolver, diff --git a/service/s3control/api_op_UpdateJobStatus.go b/service/s3control/api_op_UpdateJobStatus.go index 45a8404dcd8..5fca8df8dc6 100644 --- a/service/s3control/api_op_UpdateJobStatus.go +++ b/service/s3control/api_op_UpdateJobStatus.go @@ -215,12 +215,6 @@ func copyUpdateJobStatusInputForUpdateEndpoint(params interface{}) (interface{}, cpy := *input return &cpy, nil } -func getUpdateJobStatusARNMember(input interface{}) (*string, bool) { - return nil, false -} -func setUpdateJobStatusARNMember(input interface{}, v string) error { - return nil -} func backFillUpdateJobStatusAccountID(input interface{}, v string) error { in := input.(*UpdateJobStatusInput) if in.AccountId != nil { @@ -234,10 +228,10 @@ func backFillUpdateJobStatusAccountID(input interface{}, v string) error { } func addUpdateJobStatusUpdateEndpoint(stack *middleware.Stack, options Options) error { return s3controlcust.UpdateEndpoint(stack, s3controlcust.UpdateEndpointOptions{ - Accessor: s3controlcust.UpdateEndpointParameterAccessor{GetARNInput: getUpdateJobStatusARNMember, - BackfillAccountID: backFillUpdateJobStatusAccountID, - GetOutpostIDInput: getOutpostIDFromInput, - UpdateARNField: setUpdateJobStatusARNMember, + Accessor: s3controlcust.UpdateEndpointParameterAccessor{GetARNInput: nopGetARNAccessor, + BackfillAccountID: nopBackfillAccountIDAccessor, + GetOutpostIDInput: nopGetOutpostIDFromInput, + UpdateARNField: nopSetARNAccessor, CopyInput: copyUpdateJobStatusInputForUpdateEndpoint, }, EndpointResolver: options.EndpointResolver, diff --git a/service/s3control/go.sum b/service/s3control/go.sum index ae15bbd55b5..d62e77529fa 100644 --- a/service/s3control/go.sum +++ b/service/s3control/go.sum @@ -1,3 +1,12 @@ +github.com/aws/aws-sdk-go-v2 v0.28.1-0.20201027160747-2592e9547fe4/go.mod h1:P9h1Cf+uOpElAT533QXKOzrpFaOlm8JMorThJNUfQ6Q= +github.com/aws/aws-sdk-go-v2 v0.29.0 h1:V/KKvuMO2hwHRg2SXJc5aasBHhD1AWbS6KMWg/Ueq1w= +github.com/aws/aws-sdk-go-v2 v0.29.0/go.mod h1:4d1/Ee0vCwCF7BfG1hCT3zu82493cRy5+VZ8JHvMPf0= +github.com/aws/aws-sdk-go-v2/service/internal/s3shared v0.3.1-0.20201027184009-8eb8fc303e7c h1:Cm++f8Gc+n+R7LRF2/uYSxSRw+dIS3lepE7qCHsZzYE= +github.com/aws/aws-sdk-go-v2/service/internal/s3shared v0.3.1-0.20201027184009-8eb8fc303e7c/go.mod h1:/45/g9thJEPyLQ5x6wj5tlXz+i6uLWLlJkHABYdYFH0= +github.com/aws/aws-sdk-go-v2/service/internal/s3shared v0.3.1 h1:5dV7pN0xCrnecvbn7+qkK1XbsYwSqbDoSCzVeaW2LJE= +github.com/awslabs/smithy-go v0.2.1/go.mod h1:hPOQwnmBLHsUphH13tVSjQhTAFma0/0XoZGbBcOuABI= +github.com/awslabs/smithy-go v0.2.2-0.20201026231331-345290040c23/go.mod h1:hPOQwnmBLHsUphH13tVSjQhTAFma0/0XoZGbBcOuABI= +github.com/awslabs/smithy-go v0.3.0/go.mod h1:hPOQwnmBLHsUphH13tVSjQhTAFma0/0XoZGbBcOuABI= github.com/awslabs/smithy-go v0.3.1-0.20201104233911-38864709e183/go.mod h1:hPOQwnmBLHsUphH13tVSjQhTAFma0/0XoZGbBcOuABI= github.com/awslabs/smithy-go v0.3.1-0.20201108010311-62c2a93810b4 h1:Aj5dOF+lDoEhU92no7YZF0IokuWGjiNrcm/DGIG3iII= github.com/awslabs/smithy-go v0.3.1-0.20201108010311-62c2a93810b4/go.mod h1:hPOQwnmBLHsUphH13tVSjQhTAFma0/0XoZGbBcOuABI= @@ -10,5 +19,6 @@ github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZN github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= From 88d48ab6d9a6115de5932c1f4f012751143e8007 Mon Sep 17 00:00:00 2001 From: skotambkar Date: Fri, 13 Nov 2020 16:00:37 -0800 Subject: [PATCH 19/21] minor feedback --- service/internal/s3shared/endpoint_error.go | 14 ++-------- .../customizations/process_arn_resource.go | 28 +++++++------------ 2 files changed, 12 insertions(+), 30 deletions(-) diff --git a/service/internal/s3shared/endpoint_error.go b/service/internal/s3shared/endpoint_error.go index 7422151025e..46f6197e155 100644 --- a/service/internal/s3shared/endpoint_error.go +++ b/service/internal/s3shared/endpoint_error.go @@ -20,18 +20,13 @@ type InvalidARNError struct { origErr error } -// Code returns the invalid ARN error code -func (e InvalidARNError) Code() string { - return invalidARNErrorErrCode -} - // Error returns the InvalidARN error string func (e InvalidARNError) Error() string { var extra string if e.resource != nil { extra = "ARN: " + e.resource.String() } - msg := e.Code() + " : " + e.message + msg := invalidARNErrorErrCode + " : " + e.message if extra != "" { msg = msg + "\n\t" + extra } @@ -85,18 +80,13 @@ func (e ConfigurationError) Error() string { extra := fmt.Sprintf("ARN: %s, client partition: %s, client region: %s", e.resource, e.clientPartitionID, e.clientRegion) - msg := e.Code() + " : " + e.message + msg := configurationErrorErrCode + " : " + e.message if extra != "" { msg = msg + "\n\t" + extra } return msg } -// Code returns configuration error's error-code -func (e ConfigurationError) Code() string { - return configurationErrorErrCode -} - // OrigErr is the original error wrapped by Configuration Error func (e ConfigurationError) Unwrap() error { return e.origErr diff --git a/service/s3control/internal/customizations/process_arn_resource.go b/service/s3control/internal/customizations/process_arn_resource.go index ea4e96d46c2..923fb7093c1 100644 --- a/service/s3control/internal/customizations/process_arn_resource.go +++ b/service/s3control/internal/customizations/process_arn_resource.go @@ -91,6 +91,16 @@ func (m *processARNResource) HandleSerialize( return out, metadata, err } + // if not done already, clone the input and reassign it to in.Parameters + if !s3shared.IsClonedInput(ctx) { + in.Parameters, err = m.CopyInput(in.Parameters) + if err != nil { + return out, metadata, fmt.Errorf("error creating a copy of input while processing arn") + } + // set copy input key on context + ctx = s3shared.SetClonedInputKey(ctx, true) + } + // switch to correct endpoint updater switch tv := resource.(type) { case arn.OutpostAccessPointARN: @@ -113,15 +123,6 @@ func (m *processARNResource) HandleSerialize( return out, metadata, fmt.Errorf("error updating arnable field while serializing") } - if !s3shared.IsClonedInput(ctx) { - in.Parameters, err = m.CopyInput(in.Parameters) - if err != nil { - return out, metadata, fmt.Errorf("error creating a copy of input while processing arn") - } - // set copy input key on context - ctx = s3shared.SetClonedInputKey(ctx, true) - } - // update the arnable field with access point name err = m.UpdateARNField(in.Parameters, tv.AccessPointName) if err != nil { @@ -168,15 +169,6 @@ func (m *processARNResource) HandleSerialize( return out, metadata, fmt.Errorf("error updating arnable field while serializing") } - if !s3shared.IsClonedInput(ctx) { - in.Parameters, err = m.CopyInput(in.Parameters) - if err != nil { - return out, metadata, fmt.Errorf("error creating a copy of input while processing arn") - } - // set copy input key on context - ctx = s3shared.SetClonedInputKey(ctx, true) - } - // update the arnable field with bucket name err = m.UpdateARNField(in.Parameters, tv.BucketName) if err != nil { From 5cd23c90af27b12f57016edcd0c6f32f400cd504 Mon Sep 17 00:00:00 2001 From: skotambkar Date: Mon, 16 Nov 2020 15:41:41 -0800 Subject: [PATCH 20/21] moves supports Accelerate option out of update endpoint accessors --- .../aws/go/codegen/customization/S3UpdateEndpoint.java | 5 +++-- service/s3/internal/customizations/update_endpoint.go | 8 ++++---- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/codegen/smithy-aws-go-codegen/src/main/java/software/amazon/smithy/aws/go/codegen/customization/S3UpdateEndpoint.java b/codegen/smithy-aws-go-codegen/src/main/java/software/amazon/smithy/aws/go/codegen/customization/S3UpdateEndpoint.java index 0716037233f..427a05ac3c0 100644 --- a/codegen/smithy-aws-go-codegen/src/main/java/software/amazon/smithy/aws/go/codegen/customization/S3UpdateEndpoint.java +++ b/codegen/smithy-aws-go-codegen/src/main/java/software/amazon/smithy/aws/go/codegen/customization/S3UpdateEndpoint.java @@ -295,9 +295,10 @@ private void writeMiddlewareHelper( UPDATE_ENDPOINT_INTERNAL_ADDER), () -> { writer.write("return $T(stack, $T{ \n" + "Accessor : $T{\n " - + "GetBucketFromInput: $L,\n SupportsAccelerate: $L,\n }, \n" + + "GetBucketFromInput: $L,\n}, \n" + "UsePathStyle: options.$L,\n " + "UseAccelerate: options.$L,\n " + + "SupportsAccelerate: $L,\n " + "EndpointResolver: options.EndpointResolver,\n " + "EndpointResolverOptions: options.EndpointOptions,\n" + "UseDualstack: options.$L, \n UseARNRegion: options.$L, \n })", @@ -309,9 +310,9 @@ private void writeMiddlewareHelper( AwsCustomGoDependency.S3_CUSTOMIZATION).build(), SUPPORT_BUCKET_AS_INPUT.contains(operationName) ? getBucketAccessorFuncName(operationName) : NOP_BUCKET_ACCESSOR, - !NOT_SUPPORT_ACCELERATE.contains(operationName), USE_PATH_STYLE_OPTION, USE_ACCELERATE_OPTION, + !NOT_SUPPORT_ACCELERATE.contains(operationName), USE_DUALSTACK_OPTION, USE_ARNREGION_OPTION ); diff --git a/service/s3/internal/customizations/update_endpoint.go b/service/s3/internal/customizations/update_endpoint.go index 8d9f08b2860..923c6435a49 100644 --- a/service/s3/internal/customizations/update_endpoint.go +++ b/service/s3/internal/customizations/update_endpoint.go @@ -32,9 +32,6 @@ type UpdateEndpointParameterAccessor struct { // return a string pointer to value of string, and bool if // input has no bucket member. GetBucketFromInput func(interface{}) (*string, bool) - - // indicates if an operation supports s3 transfer acceleration. - SupportsAccelerate bool } // UpdateEndpointOptions provides the options for the UpdateEndpoint middleware setup. @@ -49,6 +46,9 @@ type UpdateEndpointOptions struct { // use transfer acceleration UseAccelerate bool + // indicates if an operation supports s3 transfer acceleration. + SupportsAccelerate bool + // use dualstack UseDualstack bool @@ -104,7 +104,7 @@ func UpdateEndpoint(stack *middleware.Stack, options UpdateEndpointOptions) (err usePathStyle: options.UsePathStyle, getBucketFromInput: options.Accessor.GetBucketFromInput, useAccelerate: options.UseAccelerate, - supportsAccelerate: options.Accessor.SupportsAccelerate, + supportsAccelerate: options.SupportsAccelerate, }, (*s3shared.EnableDualstack)(nil).ID(), middleware.After) if err != nil { return err From c0b60701746de3a703911584c3a1f1a5a5d416c8 Mon Sep 17 00:00:00 2001 From: skotambkar Date: Mon, 16 Nov 2020 15:42:20 -0800 Subject: [PATCH 21/21] regenerate s3 client --- service/s3/api_op_AbortMultipartUpload.go | 2 +- service/s3/api_op_CompleteMultipartUpload.go | 2 +- service/s3/api_op_CopyObject.go | 2 +- service/s3/api_op_CreateBucket.go | 2 +- service/s3/api_op_CreateMultipartUpload.go | 2 +- service/s3/api_op_DeleteBucket.go | 2 +- service/s3/api_op_DeleteBucketAnalyticsConfiguration.go | 2 +- service/s3/api_op_DeleteBucketCors.go | 2 +- service/s3/api_op_DeleteBucketEncryption.go | 2 +- service/s3/api_op_DeleteBucketInventoryConfiguration.go | 2 +- service/s3/api_op_DeleteBucketLifecycle.go | 2 +- service/s3/api_op_DeleteBucketMetricsConfiguration.go | 2 +- service/s3/api_op_DeleteBucketOwnershipControls.go | 2 +- service/s3/api_op_DeleteBucketPolicy.go | 2 +- service/s3/api_op_DeleteBucketReplication.go | 2 +- service/s3/api_op_DeleteBucketTagging.go | 2 +- service/s3/api_op_DeleteBucketWebsite.go | 2 +- service/s3/api_op_DeleteObject.go | 2 +- service/s3/api_op_DeleteObjectTagging.go | 2 +- service/s3/api_op_DeleteObjects.go | 2 +- service/s3/api_op_DeletePublicAccessBlock.go | 2 +- service/s3/api_op_GetBucketAccelerateConfiguration.go | 2 +- service/s3/api_op_GetBucketAcl.go | 2 +- service/s3/api_op_GetBucketAnalyticsConfiguration.go | 2 +- service/s3/api_op_GetBucketCors.go | 2 +- service/s3/api_op_GetBucketEncryption.go | 2 +- service/s3/api_op_GetBucketInventoryConfiguration.go | 2 +- service/s3/api_op_GetBucketLifecycleConfiguration.go | 2 +- service/s3/api_op_GetBucketLocation.go | 2 +- service/s3/api_op_GetBucketLogging.go | 2 +- service/s3/api_op_GetBucketMetricsConfiguration.go | 2 +- service/s3/api_op_GetBucketNotificationConfiguration.go | 2 +- service/s3/api_op_GetBucketOwnershipControls.go | 2 +- service/s3/api_op_GetBucketPolicy.go | 2 +- service/s3/api_op_GetBucketPolicyStatus.go | 2 +- service/s3/api_op_GetBucketReplication.go | 2 +- service/s3/api_op_GetBucketRequestPayment.go | 2 +- service/s3/api_op_GetBucketTagging.go | 2 +- service/s3/api_op_GetBucketVersioning.go | 2 +- service/s3/api_op_GetBucketWebsite.go | 2 +- service/s3/api_op_GetObject.go | 2 +- service/s3/api_op_GetObjectAcl.go | 2 +- service/s3/api_op_GetObjectLegalHold.go | 2 +- service/s3/api_op_GetObjectLockConfiguration.go | 2 +- service/s3/api_op_GetObjectRetention.go | 2 +- service/s3/api_op_GetObjectTagging.go | 2 +- service/s3/api_op_GetObjectTorrent.go | 2 +- service/s3/api_op_GetPublicAccessBlock.go | 2 +- service/s3/api_op_HeadBucket.go | 2 +- service/s3/api_op_HeadObject.go | 2 +- service/s3/api_op_ListBucketAnalyticsConfigurations.go | 2 +- service/s3/api_op_ListBucketInventoryConfigurations.go | 2 +- service/s3/api_op_ListBucketMetricsConfigurations.go | 2 +- service/s3/api_op_ListBuckets.go | 2 +- service/s3/api_op_ListMultipartUploads.go | 2 +- service/s3/api_op_ListObjectVersions.go | 2 +- service/s3/api_op_ListObjects.go | 2 +- service/s3/api_op_ListObjectsV2.go | 2 +- service/s3/api_op_ListParts.go | 2 +- service/s3/api_op_PutBucketAccelerateConfiguration.go | 2 +- service/s3/api_op_PutBucketAcl.go | 2 +- service/s3/api_op_PutBucketAnalyticsConfiguration.go | 2 +- service/s3/api_op_PutBucketCors.go | 2 +- service/s3/api_op_PutBucketEncryption.go | 2 +- service/s3/api_op_PutBucketInventoryConfiguration.go | 2 +- service/s3/api_op_PutBucketLifecycleConfiguration.go | 2 +- service/s3/api_op_PutBucketLogging.go | 2 +- service/s3/api_op_PutBucketMetricsConfiguration.go | 2 +- service/s3/api_op_PutBucketNotificationConfiguration.go | 2 +- service/s3/api_op_PutBucketOwnershipControls.go | 2 +- service/s3/api_op_PutBucketPolicy.go | 2 +- service/s3/api_op_PutBucketReplication.go | 2 +- service/s3/api_op_PutBucketRequestPayment.go | 2 +- service/s3/api_op_PutBucketTagging.go | 2 +- service/s3/api_op_PutBucketVersioning.go | 2 +- service/s3/api_op_PutBucketWebsite.go | 2 +- service/s3/api_op_PutObject.go | 2 +- service/s3/api_op_PutObjectAcl.go | 2 +- service/s3/api_op_PutObjectLegalHold.go | 2 +- service/s3/api_op_PutObjectLockConfiguration.go | 2 +- service/s3/api_op_PutObjectRetention.go | 2 +- service/s3/api_op_PutObjectTagging.go | 2 +- service/s3/api_op_PutPublicAccessBlock.go | 2 +- service/s3/api_op_RestoreObject.go | 2 +- service/s3/api_op_UploadPart.go | 2 +- service/s3/api_op_UploadPartCopy.go | 2 +- 86 files changed, 86 insertions(+), 86 deletions(-) diff --git a/service/s3/api_op_AbortMultipartUpload.go b/service/s3/api_op_AbortMultipartUpload.go index a2766715581..c6758aa1c57 100644 --- a/service/s3/api_op_AbortMultipartUpload.go +++ b/service/s3/api_op_AbortMultipartUpload.go @@ -209,10 +209,10 @@ func addAbortMultipartUploadUpdateEndpoint(stack *middleware.Stack, options Opti return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ Accessor: s3cust.UpdateEndpointParameterAccessor{ GetBucketFromInput: getAbortMultipartUploadBucketMember, - SupportsAccelerate: true, }, UsePathStyle: options.UsePathStyle, UseAccelerate: options.UseAccelerate, + SupportsAccelerate: true, EndpointResolver: options.EndpointResolver, EndpointResolverOptions: options.EndpointOptions, UseDualstack: options.UseDualstack, diff --git a/service/s3/api_op_CompleteMultipartUpload.go b/service/s3/api_op_CompleteMultipartUpload.go index 05957b7728b..054807226be 100644 --- a/service/s3/api_op_CompleteMultipartUpload.go +++ b/service/s3/api_op_CompleteMultipartUpload.go @@ -300,10 +300,10 @@ func addCompleteMultipartUploadUpdateEndpoint(stack *middleware.Stack, options O return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ Accessor: s3cust.UpdateEndpointParameterAccessor{ GetBucketFromInput: getCompleteMultipartUploadBucketMember, - SupportsAccelerate: true, }, UsePathStyle: options.UsePathStyle, UseAccelerate: options.UseAccelerate, + SupportsAccelerate: true, EndpointResolver: options.EndpointResolver, EndpointResolverOptions: options.EndpointOptions, UseDualstack: options.UseDualstack, diff --git a/service/s3/api_op_CopyObject.go b/service/s3/api_op_CopyObject.go index b7062957cea..fea34c8a3ed 100644 --- a/service/s3/api_op_CopyObject.go +++ b/service/s3/api_op_CopyObject.go @@ -522,10 +522,10 @@ func addCopyObjectUpdateEndpoint(stack *middleware.Stack, options Options) error return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ Accessor: s3cust.UpdateEndpointParameterAccessor{ GetBucketFromInput: getCopyObjectBucketMember, - SupportsAccelerate: true, }, UsePathStyle: options.UsePathStyle, UseAccelerate: options.UseAccelerate, + SupportsAccelerate: true, EndpointResolver: options.EndpointResolver, EndpointResolverOptions: options.EndpointOptions, UseDualstack: options.UseDualstack, diff --git a/service/s3/api_op_CreateBucket.go b/service/s3/api_op_CreateBucket.go index bedb4a12dd3..136470f47a5 100644 --- a/service/s3/api_op_CreateBucket.go +++ b/service/s3/api_op_CreateBucket.go @@ -253,10 +253,10 @@ func addCreateBucketUpdateEndpoint(stack *middleware.Stack, options Options) err return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ Accessor: s3cust.UpdateEndpointParameterAccessor{ GetBucketFromInput: getCreateBucketBucketMember, - SupportsAccelerate: false, }, UsePathStyle: options.UsePathStyle, UseAccelerate: options.UseAccelerate, + SupportsAccelerate: false, EndpointResolver: options.EndpointResolver, EndpointResolverOptions: options.EndpointOptions, UseDualstack: options.UseDualstack, diff --git a/service/s3/api_op_CreateMultipartUpload.go b/service/s3/api_op_CreateMultipartUpload.go index d6470133108..c5a8d579855 100644 --- a/service/s3/api_op_CreateMultipartUpload.go +++ b/service/s3/api_op_CreateMultipartUpload.go @@ -549,10 +549,10 @@ func addCreateMultipartUploadUpdateEndpoint(stack *middleware.Stack, options Opt return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ Accessor: s3cust.UpdateEndpointParameterAccessor{ GetBucketFromInput: getCreateMultipartUploadBucketMember, - SupportsAccelerate: true, }, UsePathStyle: options.UsePathStyle, UseAccelerate: options.UseAccelerate, + SupportsAccelerate: true, EndpointResolver: options.EndpointResolver, EndpointResolverOptions: options.EndpointOptions, UseDualstack: options.UseDualstack, diff --git a/service/s3/api_op_DeleteBucket.go b/service/s3/api_op_DeleteBucket.go index 43096a30b77..d4397bba604 100644 --- a/service/s3/api_op_DeleteBucket.go +++ b/service/s3/api_op_DeleteBucket.go @@ -145,10 +145,10 @@ func addDeleteBucketUpdateEndpoint(stack *middleware.Stack, options Options) err return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ Accessor: s3cust.UpdateEndpointParameterAccessor{ GetBucketFromInput: getDeleteBucketBucketMember, - SupportsAccelerate: false, }, UsePathStyle: options.UsePathStyle, UseAccelerate: options.UseAccelerate, + SupportsAccelerate: false, EndpointResolver: options.EndpointResolver, EndpointResolverOptions: options.EndpointOptions, UseDualstack: options.UseDualstack, diff --git a/service/s3/api_op_DeleteBucketAnalyticsConfiguration.go b/service/s3/api_op_DeleteBucketAnalyticsConfiguration.go index e1f597a2789..08a98f420c4 100644 --- a/service/s3/api_op_DeleteBucketAnalyticsConfiguration.go +++ b/service/s3/api_op_DeleteBucketAnalyticsConfiguration.go @@ -165,10 +165,10 @@ func addDeleteBucketAnalyticsConfigurationUpdateEndpoint(stack *middleware.Stack return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ Accessor: s3cust.UpdateEndpointParameterAccessor{ GetBucketFromInput: getDeleteBucketAnalyticsConfigurationBucketMember, - SupportsAccelerate: true, }, UsePathStyle: options.UsePathStyle, UseAccelerate: options.UseAccelerate, + SupportsAccelerate: true, EndpointResolver: options.EndpointResolver, EndpointResolverOptions: options.EndpointOptions, UseDualstack: options.UseDualstack, diff --git a/service/s3/api_op_DeleteBucketCors.go b/service/s3/api_op_DeleteBucketCors.go index 084fbb257f4..ebba1436f9d 100644 --- a/service/s3/api_op_DeleteBucketCors.go +++ b/service/s3/api_op_DeleteBucketCors.go @@ -148,10 +148,10 @@ func addDeleteBucketCorsUpdateEndpoint(stack *middleware.Stack, options Options) return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ Accessor: s3cust.UpdateEndpointParameterAccessor{ GetBucketFromInput: getDeleteBucketCorsBucketMember, - SupportsAccelerate: true, }, UsePathStyle: options.UsePathStyle, UseAccelerate: options.UseAccelerate, + SupportsAccelerate: true, EndpointResolver: options.EndpointResolver, EndpointResolverOptions: options.EndpointOptions, UseDualstack: options.UseDualstack, diff --git a/service/s3/api_op_DeleteBucketEncryption.go b/service/s3/api_op_DeleteBucketEncryption.go index b306e1d62ce..00481a3abc3 100644 --- a/service/s3/api_op_DeleteBucketEncryption.go +++ b/service/s3/api_op_DeleteBucketEncryption.go @@ -157,10 +157,10 @@ func addDeleteBucketEncryptionUpdateEndpoint(stack *middleware.Stack, options Op return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ Accessor: s3cust.UpdateEndpointParameterAccessor{ GetBucketFromInput: getDeleteBucketEncryptionBucketMember, - SupportsAccelerate: true, }, UsePathStyle: options.UsePathStyle, UseAccelerate: options.UseAccelerate, + SupportsAccelerate: true, EndpointResolver: options.EndpointResolver, EndpointResolverOptions: options.EndpointOptions, UseDualstack: options.UseDualstack, diff --git a/service/s3/api_op_DeleteBucketInventoryConfiguration.go b/service/s3/api_op_DeleteBucketInventoryConfiguration.go index 898dcae59b7..89b607c5e8f 100644 --- a/service/s3/api_op_DeleteBucketInventoryConfiguration.go +++ b/service/s3/api_op_DeleteBucketInventoryConfiguration.go @@ -164,10 +164,10 @@ func addDeleteBucketInventoryConfigurationUpdateEndpoint(stack *middleware.Stack return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ Accessor: s3cust.UpdateEndpointParameterAccessor{ GetBucketFromInput: getDeleteBucketInventoryConfigurationBucketMember, - SupportsAccelerate: true, }, UsePathStyle: options.UsePathStyle, UseAccelerate: options.UseAccelerate, + SupportsAccelerate: true, EndpointResolver: options.EndpointResolver, EndpointResolverOptions: options.EndpointOptions, UseDualstack: options.UseDualstack, diff --git a/service/s3/api_op_DeleteBucketLifecycle.go b/service/s3/api_op_DeleteBucketLifecycle.go index 0259c617bb6..83c5c8e515b 100644 --- a/service/s3/api_op_DeleteBucketLifecycle.go +++ b/service/s3/api_op_DeleteBucketLifecycle.go @@ -154,10 +154,10 @@ func addDeleteBucketLifecycleUpdateEndpoint(stack *middleware.Stack, options Opt return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ Accessor: s3cust.UpdateEndpointParameterAccessor{ GetBucketFromInput: getDeleteBucketLifecycleBucketMember, - SupportsAccelerate: true, }, UsePathStyle: options.UsePathStyle, UseAccelerate: options.UseAccelerate, + SupportsAccelerate: true, EndpointResolver: options.EndpointResolver, EndpointResolverOptions: options.EndpointOptions, UseDualstack: options.UseDualstack, diff --git a/service/s3/api_op_DeleteBucketMetricsConfiguration.go b/service/s3/api_op_DeleteBucketMetricsConfiguration.go index 1d0915b3190..6da378d8601 100644 --- a/service/s3/api_op_DeleteBucketMetricsConfiguration.go +++ b/service/s3/api_op_DeleteBucketMetricsConfiguration.go @@ -170,10 +170,10 @@ func addDeleteBucketMetricsConfigurationUpdateEndpoint(stack *middleware.Stack, return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ Accessor: s3cust.UpdateEndpointParameterAccessor{ GetBucketFromInput: getDeleteBucketMetricsConfigurationBucketMember, - SupportsAccelerate: true, }, UsePathStyle: options.UsePathStyle, UseAccelerate: options.UseAccelerate, + SupportsAccelerate: true, EndpointResolver: options.EndpointResolver, EndpointResolverOptions: options.EndpointOptions, UseDualstack: options.UseDualstack, diff --git a/service/s3/api_op_DeleteBucketOwnershipControls.go b/service/s3/api_op_DeleteBucketOwnershipControls.go index 38584463c25..a43f2a02817 100644 --- a/service/s3/api_op_DeleteBucketOwnershipControls.go +++ b/service/s3/api_op_DeleteBucketOwnershipControls.go @@ -145,10 +145,10 @@ func addDeleteBucketOwnershipControlsUpdateEndpoint(stack *middleware.Stack, opt return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ Accessor: s3cust.UpdateEndpointParameterAccessor{ GetBucketFromInput: getDeleteBucketOwnershipControlsBucketMember, - SupportsAccelerate: true, }, UsePathStyle: options.UsePathStyle, UseAccelerate: options.UseAccelerate, + SupportsAccelerate: true, EndpointResolver: options.EndpointResolver, EndpointResolverOptions: options.EndpointOptions, UseDualstack: options.UseDualstack, diff --git a/service/s3/api_op_DeleteBucketPolicy.go b/service/s3/api_op_DeleteBucketPolicy.go index 271ead1d172..1c951dc1dfc 100644 --- a/service/s3/api_op_DeleteBucketPolicy.go +++ b/service/s3/api_op_DeleteBucketPolicy.go @@ -156,10 +156,10 @@ func addDeleteBucketPolicyUpdateEndpoint(stack *middleware.Stack, options Option return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ Accessor: s3cust.UpdateEndpointParameterAccessor{ GetBucketFromInput: getDeleteBucketPolicyBucketMember, - SupportsAccelerate: true, }, UsePathStyle: options.UsePathStyle, UseAccelerate: options.UseAccelerate, + SupportsAccelerate: true, EndpointResolver: options.EndpointResolver, EndpointResolverOptions: options.EndpointOptions, UseDualstack: options.UseDualstack, diff --git a/service/s3/api_op_DeleteBucketReplication.go b/service/s3/api_op_DeleteBucketReplication.go index d04369c5fc9..5d5c2cbf117 100644 --- a/service/s3/api_op_DeleteBucketReplication.go +++ b/service/s3/api_op_DeleteBucketReplication.go @@ -155,10 +155,10 @@ func addDeleteBucketReplicationUpdateEndpoint(stack *middleware.Stack, options O return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ Accessor: s3cust.UpdateEndpointParameterAccessor{ GetBucketFromInput: getDeleteBucketReplicationBucketMember, - SupportsAccelerate: true, }, UsePathStyle: options.UsePathStyle, UseAccelerate: options.UseAccelerate, + SupportsAccelerate: true, EndpointResolver: options.EndpointResolver, EndpointResolverOptions: options.EndpointOptions, UseDualstack: options.UseDualstack, diff --git a/service/s3/api_op_DeleteBucketTagging.go b/service/s3/api_op_DeleteBucketTagging.go index 1803154bfd3..e296210cf22 100644 --- a/service/s3/api_op_DeleteBucketTagging.go +++ b/service/s3/api_op_DeleteBucketTagging.go @@ -146,10 +146,10 @@ func addDeleteBucketTaggingUpdateEndpoint(stack *middleware.Stack, options Optio return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ Accessor: s3cust.UpdateEndpointParameterAccessor{ GetBucketFromInput: getDeleteBucketTaggingBucketMember, - SupportsAccelerate: true, }, UsePathStyle: options.UsePathStyle, UseAccelerate: options.UseAccelerate, + SupportsAccelerate: true, EndpointResolver: options.EndpointResolver, EndpointResolverOptions: options.EndpointOptions, UseDualstack: options.UseDualstack, diff --git a/service/s3/api_op_DeleteBucketWebsite.go b/service/s3/api_op_DeleteBucketWebsite.go index faa410e90c8..7af9279ebe5 100644 --- a/service/s3/api_op_DeleteBucketWebsite.go +++ b/service/s3/api_op_DeleteBucketWebsite.go @@ -155,10 +155,10 @@ func addDeleteBucketWebsiteUpdateEndpoint(stack *middleware.Stack, options Optio return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ Accessor: s3cust.UpdateEndpointParameterAccessor{ GetBucketFromInput: getDeleteBucketWebsiteBucketMember, - SupportsAccelerate: true, }, UsePathStyle: options.UsePathStyle, UseAccelerate: options.UseAccelerate, + SupportsAccelerate: true, EndpointResolver: options.EndpointResolver, EndpointResolverOptions: options.EndpointOptions, UseDualstack: options.UseDualstack, diff --git a/service/s3/api_op_DeleteObject.go b/service/s3/api_op_DeleteObject.go index 95593af67de..ec8b885a595 100644 --- a/service/s3/api_op_DeleteObject.go +++ b/service/s3/api_op_DeleteObject.go @@ -213,10 +213,10 @@ func addDeleteObjectUpdateEndpoint(stack *middleware.Stack, options Options) err return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ Accessor: s3cust.UpdateEndpointParameterAccessor{ GetBucketFromInput: getDeleteObjectBucketMember, - SupportsAccelerate: true, }, UsePathStyle: options.UsePathStyle, UseAccelerate: options.UseAccelerate, + SupportsAccelerate: true, EndpointResolver: options.EndpointResolver, EndpointResolverOptions: options.EndpointOptions, UseDualstack: options.UseDualstack, diff --git a/service/s3/api_op_DeleteObjectTagging.go b/service/s3/api_op_DeleteObjectTagging.go index 0232fcd99f9..c1719bedd29 100644 --- a/service/s3/api_op_DeleteObjectTagging.go +++ b/service/s3/api_op_DeleteObjectTagging.go @@ -178,10 +178,10 @@ func addDeleteObjectTaggingUpdateEndpoint(stack *middleware.Stack, options Optio return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ Accessor: s3cust.UpdateEndpointParameterAccessor{ GetBucketFromInput: getDeleteObjectTaggingBucketMember, - SupportsAccelerate: true, }, UsePathStyle: options.UsePathStyle, UseAccelerate: options.UseAccelerate, + SupportsAccelerate: true, EndpointResolver: options.EndpointResolver, EndpointResolverOptions: options.EndpointOptions, UseDualstack: options.UseDualstack, diff --git a/service/s3/api_op_DeleteObjects.go b/service/s3/api_op_DeleteObjects.go index 1d6e35a776b..2253c4a8cd0 100644 --- a/service/s3/api_op_DeleteObjects.go +++ b/service/s3/api_op_DeleteObjects.go @@ -236,10 +236,10 @@ func addDeleteObjectsUpdateEndpoint(stack *middleware.Stack, options Options) er return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ Accessor: s3cust.UpdateEndpointParameterAccessor{ GetBucketFromInput: getDeleteObjectsBucketMember, - SupportsAccelerate: true, }, UsePathStyle: options.UsePathStyle, UseAccelerate: options.UseAccelerate, + SupportsAccelerate: true, EndpointResolver: options.EndpointResolver, EndpointResolverOptions: options.EndpointOptions, UseDualstack: options.UseDualstack, diff --git a/service/s3/api_op_DeletePublicAccessBlock.go b/service/s3/api_op_DeletePublicAccessBlock.go index f3e15dd21f0..8dfaa2468bd 100644 --- a/service/s3/api_op_DeletePublicAccessBlock.go +++ b/service/s3/api_op_DeletePublicAccessBlock.go @@ -159,10 +159,10 @@ func addDeletePublicAccessBlockUpdateEndpoint(stack *middleware.Stack, options O return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ Accessor: s3cust.UpdateEndpointParameterAccessor{ GetBucketFromInput: getDeletePublicAccessBlockBucketMember, - SupportsAccelerate: true, }, UsePathStyle: options.UsePathStyle, UseAccelerate: options.UseAccelerate, + SupportsAccelerate: true, EndpointResolver: options.EndpointResolver, EndpointResolverOptions: options.EndpointOptions, UseDualstack: options.UseDualstack, diff --git a/service/s3/api_op_GetBucketAccelerateConfiguration.go b/service/s3/api_op_GetBucketAccelerateConfiguration.go index 6b589f5e475..6d41bbdfdc6 100644 --- a/service/s3/api_op_GetBucketAccelerateConfiguration.go +++ b/service/s3/api_op_GetBucketAccelerateConfiguration.go @@ -165,10 +165,10 @@ func addGetBucketAccelerateConfigurationUpdateEndpoint(stack *middleware.Stack, return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ Accessor: s3cust.UpdateEndpointParameterAccessor{ GetBucketFromInput: getGetBucketAccelerateConfigurationBucketMember, - SupportsAccelerate: true, }, UsePathStyle: options.UsePathStyle, UseAccelerate: options.UseAccelerate, + SupportsAccelerate: true, EndpointResolver: options.EndpointResolver, EndpointResolverOptions: options.EndpointOptions, UseDualstack: options.UseDualstack, diff --git a/service/s3/api_op_GetBucketAcl.go b/service/s3/api_op_GetBucketAcl.go index 5abe57d4d69..be58813cc85 100644 --- a/service/s3/api_op_GetBucketAcl.go +++ b/service/s3/api_op_GetBucketAcl.go @@ -151,10 +151,10 @@ func addGetBucketAclUpdateEndpoint(stack *middleware.Stack, options Options) err return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ Accessor: s3cust.UpdateEndpointParameterAccessor{ GetBucketFromInput: getGetBucketAclBucketMember, - SupportsAccelerate: true, }, UsePathStyle: options.UsePathStyle, UseAccelerate: options.UseAccelerate, + SupportsAccelerate: true, EndpointResolver: options.EndpointResolver, EndpointResolverOptions: options.EndpointOptions, UseDualstack: options.UseDualstack, diff --git a/service/s3/api_op_GetBucketAnalyticsConfiguration.go b/service/s3/api_op_GetBucketAnalyticsConfiguration.go index 1948ff302c6..bc8c3f55ff8 100644 --- a/service/s3/api_op_GetBucketAnalyticsConfiguration.go +++ b/service/s3/api_op_GetBucketAnalyticsConfiguration.go @@ -170,10 +170,10 @@ func addGetBucketAnalyticsConfigurationUpdateEndpoint(stack *middleware.Stack, o return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ Accessor: s3cust.UpdateEndpointParameterAccessor{ GetBucketFromInput: getGetBucketAnalyticsConfigurationBucketMember, - SupportsAccelerate: true, }, UsePathStyle: options.UsePathStyle, UseAccelerate: options.UseAccelerate, + SupportsAccelerate: true, EndpointResolver: options.EndpointResolver, EndpointResolverOptions: options.EndpointOptions, UseDualstack: options.UseDualstack, diff --git a/service/s3/api_op_GetBucketCors.go b/service/s3/api_op_GetBucketCors.go index ca91c4220e1..278f60e9dab 100644 --- a/service/s3/api_op_GetBucketCors.go +++ b/service/s3/api_op_GetBucketCors.go @@ -154,10 +154,10 @@ func addGetBucketCorsUpdateEndpoint(stack *middleware.Stack, options Options) er return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ Accessor: s3cust.UpdateEndpointParameterAccessor{ GetBucketFromInput: getGetBucketCorsBucketMember, - SupportsAccelerate: true, }, UsePathStyle: options.UsePathStyle, UseAccelerate: options.UseAccelerate, + SupportsAccelerate: true, EndpointResolver: options.EndpointResolver, EndpointResolverOptions: options.EndpointOptions, UseDualstack: options.UseDualstack, diff --git a/service/s3/api_op_GetBucketEncryption.go b/service/s3/api_op_GetBucketEncryption.go index 203fcb9d09f..081fd4c05fe 100644 --- a/service/s3/api_op_GetBucketEncryption.go +++ b/service/s3/api_op_GetBucketEncryption.go @@ -161,10 +161,10 @@ func addGetBucketEncryptionUpdateEndpoint(stack *middleware.Stack, options Optio return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ Accessor: s3cust.UpdateEndpointParameterAccessor{ GetBucketFromInput: getGetBucketEncryptionBucketMember, - SupportsAccelerate: true, }, UsePathStyle: options.UsePathStyle, UseAccelerate: options.UseAccelerate, + SupportsAccelerate: true, EndpointResolver: options.EndpointResolver, EndpointResolverOptions: options.EndpointOptions, UseDualstack: options.UseDualstack, diff --git a/service/s3/api_op_GetBucketInventoryConfiguration.go b/service/s3/api_op_GetBucketInventoryConfiguration.go index 9b4d7a5d5ce..19af07b0ff8 100644 --- a/service/s3/api_op_GetBucketInventoryConfiguration.go +++ b/service/s3/api_op_GetBucketInventoryConfiguration.go @@ -168,10 +168,10 @@ func addGetBucketInventoryConfigurationUpdateEndpoint(stack *middleware.Stack, o return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ Accessor: s3cust.UpdateEndpointParameterAccessor{ GetBucketFromInput: getGetBucketInventoryConfigurationBucketMember, - SupportsAccelerate: true, }, UsePathStyle: options.UsePathStyle, UseAccelerate: options.UseAccelerate, + SupportsAccelerate: true, EndpointResolver: options.EndpointResolver, EndpointResolverOptions: options.EndpointOptions, UseDualstack: options.UseDualstack, diff --git a/service/s3/api_op_GetBucketLifecycleConfiguration.go b/service/s3/api_op_GetBucketLifecycleConfiguration.go index 981b31697e9..66cf1652aff 100644 --- a/service/s3/api_op_GetBucketLifecycleConfiguration.go +++ b/service/s3/api_op_GetBucketLifecycleConfiguration.go @@ -185,10 +185,10 @@ func addGetBucketLifecycleConfigurationUpdateEndpoint(stack *middleware.Stack, o return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ Accessor: s3cust.UpdateEndpointParameterAccessor{ GetBucketFromInput: getGetBucketLifecycleConfigurationBucketMember, - SupportsAccelerate: true, }, UsePathStyle: options.UsePathStyle, UseAccelerate: options.UseAccelerate, + SupportsAccelerate: true, EndpointResolver: options.EndpointResolver, EndpointResolverOptions: options.EndpointOptions, UseDualstack: options.UseDualstack, diff --git a/service/s3/api_op_GetBucketLocation.go b/service/s3/api_op_GetBucketLocation.go index f43346c7bc4..539aeb44332 100644 --- a/service/s3/api_op_GetBucketLocation.go +++ b/service/s3/api_op_GetBucketLocation.go @@ -156,10 +156,10 @@ func addGetBucketLocationUpdateEndpoint(stack *middleware.Stack, options Options return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ Accessor: s3cust.UpdateEndpointParameterAccessor{ GetBucketFromInput: getGetBucketLocationBucketMember, - SupportsAccelerate: true, }, UsePathStyle: options.UsePathStyle, UseAccelerate: options.UseAccelerate, + SupportsAccelerate: true, EndpointResolver: options.EndpointResolver, EndpointResolverOptions: options.EndpointOptions, UseDualstack: options.UseDualstack, diff --git a/service/s3/api_op_GetBucketLogging.go b/service/s3/api_op_GetBucketLogging.go index cdef1cf29e0..6f4acf8f674 100644 --- a/service/s3/api_op_GetBucketLogging.go +++ b/service/s3/api_op_GetBucketLogging.go @@ -153,10 +153,10 @@ func addGetBucketLoggingUpdateEndpoint(stack *middleware.Stack, options Options) return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ Accessor: s3cust.UpdateEndpointParameterAccessor{ GetBucketFromInput: getGetBucketLoggingBucketMember, - SupportsAccelerate: true, }, UsePathStyle: options.UsePathStyle, UseAccelerate: options.UseAccelerate, + SupportsAccelerate: true, EndpointResolver: options.EndpointResolver, EndpointResolverOptions: options.EndpointOptions, UseDualstack: options.UseDualstack, diff --git a/service/s3/api_op_GetBucketMetricsConfiguration.go b/service/s3/api_op_GetBucketMetricsConfiguration.go index fb79e8e92ba..78daaba1fd1 100644 --- a/service/s3/api_op_GetBucketMetricsConfiguration.go +++ b/service/s3/api_op_GetBucketMetricsConfiguration.go @@ -175,10 +175,10 @@ func addGetBucketMetricsConfigurationUpdateEndpoint(stack *middleware.Stack, opt return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ Accessor: s3cust.UpdateEndpointParameterAccessor{ GetBucketFromInput: getGetBucketMetricsConfigurationBucketMember, - SupportsAccelerate: true, }, UsePathStyle: options.UsePathStyle, UseAccelerate: options.UseAccelerate, + SupportsAccelerate: true, EndpointResolver: options.EndpointResolver, EndpointResolverOptions: options.EndpointOptions, UseDualstack: options.UseDualstack, diff --git a/service/s3/api_op_GetBucketNotificationConfiguration.go b/service/s3/api_op_GetBucketNotificationConfiguration.go index 7f16e0461fd..7ae27b4b835 100644 --- a/service/s3/api_op_GetBucketNotificationConfiguration.go +++ b/service/s3/api_op_GetBucketNotificationConfiguration.go @@ -167,10 +167,10 @@ func addGetBucketNotificationConfigurationUpdateEndpoint(stack *middleware.Stack return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ Accessor: s3cust.UpdateEndpointParameterAccessor{ GetBucketFromInput: getGetBucketNotificationConfigurationBucketMember, - SupportsAccelerate: true, }, UsePathStyle: options.UsePathStyle, UseAccelerate: options.UseAccelerate, + SupportsAccelerate: true, EndpointResolver: options.EndpointResolver, EndpointResolverOptions: options.EndpointOptions, UseDualstack: options.UseDualstack, diff --git a/service/s3/api_op_GetBucketOwnershipControls.go b/service/s3/api_op_GetBucketOwnershipControls.go index 6d56188b108..a8e29b6b44e 100644 --- a/service/s3/api_op_GetBucketOwnershipControls.go +++ b/service/s3/api_op_GetBucketOwnershipControls.go @@ -151,10 +151,10 @@ func addGetBucketOwnershipControlsUpdateEndpoint(stack *middleware.Stack, option return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ Accessor: s3cust.UpdateEndpointParameterAccessor{ GetBucketFromInput: getGetBucketOwnershipControlsBucketMember, - SupportsAccelerate: true, }, UsePathStyle: options.UsePathStyle, UseAccelerate: options.UseAccelerate, + SupportsAccelerate: true, EndpointResolver: options.EndpointResolver, EndpointResolverOptions: options.EndpointOptions, UseDualstack: options.UseDualstack, diff --git a/service/s3/api_op_GetBucketPolicy.go b/service/s3/api_op_GetBucketPolicy.go index 977dc89aff1..32ac1661167 100644 --- a/service/s3/api_op_GetBucketPolicy.go +++ b/service/s3/api_op_GetBucketPolicy.go @@ -155,10 +155,10 @@ func addGetBucketPolicyUpdateEndpoint(stack *middleware.Stack, options Options) return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ Accessor: s3cust.UpdateEndpointParameterAccessor{ GetBucketFromInput: getGetBucketPolicyBucketMember, - SupportsAccelerate: true, }, UsePathStyle: options.UsePathStyle, UseAccelerate: options.UseAccelerate, + SupportsAccelerate: true, EndpointResolver: options.EndpointResolver, EndpointResolverOptions: options.EndpointOptions, UseDualstack: options.UseDualstack, diff --git a/service/s3/api_op_GetBucketPolicyStatus.go b/service/s3/api_op_GetBucketPolicyStatus.go index fc741381f02..6e5404357b2 100644 --- a/service/s3/api_op_GetBucketPolicyStatus.go +++ b/service/s3/api_op_GetBucketPolicyStatus.go @@ -165,10 +165,10 @@ func addGetBucketPolicyStatusUpdateEndpoint(stack *middleware.Stack, options Opt return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ Accessor: s3cust.UpdateEndpointParameterAccessor{ GetBucketFromInput: getGetBucketPolicyStatusBucketMember, - SupportsAccelerate: true, }, UsePathStyle: options.UsePathStyle, UseAccelerate: options.UseAccelerate, + SupportsAccelerate: true, EndpointResolver: options.EndpointResolver, EndpointResolverOptions: options.EndpointOptions, UseDualstack: options.UseDualstack, diff --git a/service/s3/api_op_GetBucketReplication.go b/service/s3/api_op_GetBucketReplication.go index fbcaadfc992..5e779b92e33 100644 --- a/service/s3/api_op_GetBucketReplication.go +++ b/service/s3/api_op_GetBucketReplication.go @@ -164,10 +164,10 @@ func addGetBucketReplicationUpdateEndpoint(stack *middleware.Stack, options Opti return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ Accessor: s3cust.UpdateEndpointParameterAccessor{ GetBucketFromInput: getGetBucketReplicationBucketMember, - SupportsAccelerate: true, }, UsePathStyle: options.UsePathStyle, UseAccelerate: options.UseAccelerate, + SupportsAccelerate: true, EndpointResolver: options.EndpointResolver, EndpointResolverOptions: options.EndpointOptions, UseDualstack: options.UseDualstack, diff --git a/service/s3/api_op_GetBucketRequestPayment.go b/service/s3/api_op_GetBucketRequestPayment.go index cdb657494e1..d4dc954b19e 100644 --- a/service/s3/api_op_GetBucketRequestPayment.go +++ b/service/s3/api_op_GetBucketRequestPayment.go @@ -148,10 +148,10 @@ func addGetBucketRequestPaymentUpdateEndpoint(stack *middleware.Stack, options O return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ Accessor: s3cust.UpdateEndpointParameterAccessor{ GetBucketFromInput: getGetBucketRequestPaymentBucketMember, - SupportsAccelerate: true, }, UsePathStyle: options.UsePathStyle, UseAccelerate: options.UseAccelerate, + SupportsAccelerate: true, EndpointResolver: options.EndpointResolver, EndpointResolverOptions: options.EndpointOptions, UseDualstack: options.UseDualstack, diff --git a/service/s3/api_op_GetBucketTagging.go b/service/s3/api_op_GetBucketTagging.go index 7b908593b6c..bd40071535a 100644 --- a/service/s3/api_op_GetBucketTagging.go +++ b/service/s3/api_op_GetBucketTagging.go @@ -162,10 +162,10 @@ func addGetBucketTaggingUpdateEndpoint(stack *middleware.Stack, options Options) return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ Accessor: s3cust.UpdateEndpointParameterAccessor{ GetBucketFromInput: getGetBucketTaggingBucketMember, - SupportsAccelerate: true, }, UsePathStyle: options.UsePathStyle, UseAccelerate: options.UseAccelerate, + SupportsAccelerate: true, EndpointResolver: options.EndpointResolver, EndpointResolverOptions: options.EndpointOptions, UseDualstack: options.UseDualstack, diff --git a/service/s3/api_op_GetBucketVersioning.go b/service/s3/api_op_GetBucketVersioning.go index 769ca092936..a3b1658eea5 100644 --- a/service/s3/api_op_GetBucketVersioning.go +++ b/service/s3/api_op_GetBucketVersioning.go @@ -162,10 +162,10 @@ func addGetBucketVersioningUpdateEndpoint(stack *middleware.Stack, options Optio return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ Accessor: s3cust.UpdateEndpointParameterAccessor{ GetBucketFromInput: getGetBucketVersioningBucketMember, - SupportsAccelerate: true, }, UsePathStyle: options.UsePathStyle, UseAccelerate: options.UseAccelerate, + SupportsAccelerate: true, EndpointResolver: options.EndpointResolver, EndpointResolverOptions: options.EndpointOptions, UseDualstack: options.UseDualstack, diff --git a/service/s3/api_op_GetBucketWebsite.go b/service/s3/api_op_GetBucketWebsite.go index fef46bc8afd..177b872b7ec 100644 --- a/service/s3/api_op_GetBucketWebsite.go +++ b/service/s3/api_op_GetBucketWebsite.go @@ -166,10 +166,10 @@ func addGetBucketWebsiteUpdateEndpoint(stack *middleware.Stack, options Options) return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ Accessor: s3cust.UpdateEndpointParameterAccessor{ GetBucketFromInput: getGetBucketWebsiteBucketMember, - SupportsAccelerate: true, }, UsePathStyle: options.UsePathStyle, UseAccelerate: options.UseAccelerate, + SupportsAccelerate: true, EndpointResolver: options.EndpointResolver, EndpointResolverOptions: options.EndpointOptions, UseDualstack: options.UseDualstack, diff --git a/service/s3/api_op_GetObject.go b/service/s3/api_op_GetObject.go index 106d94da378..a0a8a6778bb 100644 --- a/service/s3/api_op_GetObject.go +++ b/service/s3/api_op_GetObject.go @@ -463,10 +463,10 @@ func addGetObjectUpdateEndpoint(stack *middleware.Stack, options Options) error return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ Accessor: s3cust.UpdateEndpointParameterAccessor{ GetBucketFromInput: getGetObjectBucketMember, - SupportsAccelerate: true, }, UsePathStyle: options.UsePathStyle, UseAccelerate: options.UseAccelerate, + SupportsAccelerate: true, EndpointResolver: options.EndpointResolver, EndpointResolverOptions: options.EndpointOptions, UseDualstack: options.UseDualstack, diff --git a/service/s3/api_op_GetObjectAcl.go b/service/s3/api_op_GetObjectAcl.go index e6702863dec..be590fe1247 100644 --- a/service/s3/api_op_GetObjectAcl.go +++ b/service/s3/api_op_GetObjectAcl.go @@ -187,10 +187,10 @@ func addGetObjectAclUpdateEndpoint(stack *middleware.Stack, options Options) err return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ Accessor: s3cust.UpdateEndpointParameterAccessor{ GetBucketFromInput: getGetObjectAclBucketMember, - SupportsAccelerate: true, }, UsePathStyle: options.UsePathStyle, UseAccelerate: options.UseAccelerate, + SupportsAccelerate: true, EndpointResolver: options.EndpointResolver, EndpointResolverOptions: options.EndpointOptions, UseDualstack: options.UseDualstack, diff --git a/service/s3/api_op_GetObjectLegalHold.go b/service/s3/api_op_GetObjectLegalHold.go index 62980557cc5..148e57315cd 100644 --- a/service/s3/api_op_GetObjectLegalHold.go +++ b/service/s3/api_op_GetObjectLegalHold.go @@ -167,10 +167,10 @@ func addGetObjectLegalHoldUpdateEndpoint(stack *middleware.Stack, options Option return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ Accessor: s3cust.UpdateEndpointParameterAccessor{ GetBucketFromInput: getGetObjectLegalHoldBucketMember, - SupportsAccelerate: true, }, UsePathStyle: options.UsePathStyle, UseAccelerate: options.UseAccelerate, + SupportsAccelerate: true, EndpointResolver: options.EndpointResolver, EndpointResolverOptions: options.EndpointOptions, UseDualstack: options.UseDualstack, diff --git a/service/s3/api_op_GetObjectLockConfiguration.go b/service/s3/api_op_GetObjectLockConfiguration.go index f208c84fbee..9b0281cacba 100644 --- a/service/s3/api_op_GetObjectLockConfiguration.go +++ b/service/s3/api_op_GetObjectLockConfiguration.go @@ -152,10 +152,10 @@ func addGetObjectLockConfigurationUpdateEndpoint(stack *middleware.Stack, option return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ Accessor: s3cust.UpdateEndpointParameterAccessor{ GetBucketFromInput: getGetObjectLockConfigurationBucketMember, - SupportsAccelerate: true, }, UsePathStyle: options.UsePathStyle, UseAccelerate: options.UseAccelerate, + SupportsAccelerate: true, EndpointResolver: options.EndpointResolver, EndpointResolverOptions: options.EndpointOptions, UseDualstack: options.UseDualstack, diff --git a/service/s3/api_op_GetObjectRetention.go b/service/s3/api_op_GetObjectRetention.go index ab3f645fa51..4a7471b08c3 100644 --- a/service/s3/api_op_GetObjectRetention.go +++ b/service/s3/api_op_GetObjectRetention.go @@ -167,10 +167,10 @@ func addGetObjectRetentionUpdateEndpoint(stack *middleware.Stack, options Option return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ Accessor: s3cust.UpdateEndpointParameterAccessor{ GetBucketFromInput: getGetObjectRetentionBucketMember, - SupportsAccelerate: true, }, UsePathStyle: options.UsePathStyle, UseAccelerate: options.UseAccelerate, + SupportsAccelerate: true, EndpointResolver: options.EndpointResolver, EndpointResolverOptions: options.EndpointOptions, UseDualstack: options.UseDualstack, diff --git a/service/s3/api_op_GetObjectTagging.go b/service/s3/api_op_GetObjectTagging.go index 9cfa44fcdb8..67524678134 100644 --- a/service/s3/api_op_GetObjectTagging.go +++ b/service/s3/api_op_GetObjectTagging.go @@ -183,10 +183,10 @@ func addGetObjectTaggingUpdateEndpoint(stack *middleware.Stack, options Options) return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ Accessor: s3cust.UpdateEndpointParameterAccessor{ GetBucketFromInput: getGetObjectTaggingBucketMember, - SupportsAccelerate: true, }, UsePathStyle: options.UsePathStyle, UseAccelerate: options.UseAccelerate, + SupportsAccelerate: true, EndpointResolver: options.EndpointResolver, EndpointResolverOptions: options.EndpointOptions, UseDualstack: options.UseDualstack, diff --git a/service/s3/api_op_GetObjectTorrent.go b/service/s3/api_op_GetObjectTorrent.go index 72bd81180d7..14ff728ef7e 100644 --- a/service/s3/api_op_GetObjectTorrent.go +++ b/service/s3/api_op_GetObjectTorrent.go @@ -167,10 +167,10 @@ func addGetObjectTorrentUpdateEndpoint(stack *middleware.Stack, options Options) return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ Accessor: s3cust.UpdateEndpointParameterAccessor{ GetBucketFromInput: getGetObjectTorrentBucketMember, - SupportsAccelerate: true, }, UsePathStyle: options.UsePathStyle, UseAccelerate: options.UseAccelerate, + SupportsAccelerate: true, EndpointResolver: options.EndpointResolver, EndpointResolverOptions: options.EndpointOptions, UseDualstack: options.UseDualstack, diff --git a/service/s3/api_op_GetPublicAccessBlock.go b/service/s3/api_op_GetPublicAccessBlock.go index 14b195e9f54..d077ef421d2 100644 --- a/service/s3/api_op_GetPublicAccessBlock.go +++ b/service/s3/api_op_GetPublicAccessBlock.go @@ -172,10 +172,10 @@ func addGetPublicAccessBlockUpdateEndpoint(stack *middleware.Stack, options Opti return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ Accessor: s3cust.UpdateEndpointParameterAccessor{ GetBucketFromInput: getGetPublicAccessBlockBucketMember, - SupportsAccelerate: true, }, UsePathStyle: options.UsePathStyle, UseAccelerate: options.UseAccelerate, + SupportsAccelerate: true, EndpointResolver: options.EndpointResolver, EndpointResolverOptions: options.EndpointOptions, UseDualstack: options.UseDualstack, diff --git a/service/s3/api_op_HeadBucket.go b/service/s3/api_op_HeadBucket.go index 23b1181298a..26f456782c3 100644 --- a/service/s3/api_op_HeadBucket.go +++ b/service/s3/api_op_HeadBucket.go @@ -160,10 +160,10 @@ func addHeadBucketUpdateEndpoint(stack *middleware.Stack, options Options) error return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ Accessor: s3cust.UpdateEndpointParameterAccessor{ GetBucketFromInput: getHeadBucketBucketMember, - SupportsAccelerate: true, }, UsePathStyle: options.UsePathStyle, UseAccelerate: options.UseAccelerate, + SupportsAccelerate: true, EndpointResolver: options.EndpointResolver, EndpointResolverOptions: options.EndpointOptions, UseDualstack: options.UseDualstack, diff --git a/service/s3/api_op_HeadObject.go b/service/s3/api_op_HeadObject.go index a7e12ef908e..898af0712bc 100644 --- a/service/s3/api_op_HeadObject.go +++ b/service/s3/api_op_HeadObject.go @@ -437,10 +437,10 @@ func addHeadObjectUpdateEndpoint(stack *middleware.Stack, options Options) error return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ Accessor: s3cust.UpdateEndpointParameterAccessor{ GetBucketFromInput: getHeadObjectBucketMember, - SupportsAccelerate: true, }, UsePathStyle: options.UsePathStyle, UseAccelerate: options.UseAccelerate, + SupportsAccelerate: true, EndpointResolver: options.EndpointResolver, EndpointResolverOptions: options.EndpointOptions, UseDualstack: options.UseDualstack, diff --git a/service/s3/api_op_ListBucketAnalyticsConfigurations.go b/service/s3/api_op_ListBucketAnalyticsConfigurations.go index 679c53c41bc..973a2ba9ada 100644 --- a/service/s3/api_op_ListBucketAnalyticsConfigurations.go +++ b/service/s3/api_op_ListBucketAnalyticsConfigurations.go @@ -190,10 +190,10 @@ func addListBucketAnalyticsConfigurationsUpdateEndpoint(stack *middleware.Stack, return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ Accessor: s3cust.UpdateEndpointParameterAccessor{ GetBucketFromInput: getListBucketAnalyticsConfigurationsBucketMember, - SupportsAccelerate: true, }, UsePathStyle: options.UsePathStyle, UseAccelerate: options.UseAccelerate, + SupportsAccelerate: true, EndpointResolver: options.EndpointResolver, EndpointResolverOptions: options.EndpointOptions, UseDualstack: options.UseDualstack, diff --git a/service/s3/api_op_ListBucketInventoryConfigurations.go b/service/s3/api_op_ListBucketInventoryConfigurations.go index 0e6aa66f4f1..ae4bafa95b2 100644 --- a/service/s3/api_op_ListBucketInventoryConfigurations.go +++ b/service/s3/api_op_ListBucketInventoryConfigurations.go @@ -191,10 +191,10 @@ func addListBucketInventoryConfigurationsUpdateEndpoint(stack *middleware.Stack, return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ Accessor: s3cust.UpdateEndpointParameterAccessor{ GetBucketFromInput: getListBucketInventoryConfigurationsBucketMember, - SupportsAccelerate: true, }, UsePathStyle: options.UsePathStyle, UseAccelerate: options.UseAccelerate, + SupportsAccelerate: true, EndpointResolver: options.EndpointResolver, EndpointResolverOptions: options.EndpointOptions, UseDualstack: options.UseDualstack, diff --git a/service/s3/api_op_ListBucketMetricsConfigurations.go b/service/s3/api_op_ListBucketMetricsConfigurations.go index 121847b1c72..82273f75be4 100644 --- a/service/s3/api_op_ListBucketMetricsConfigurations.go +++ b/service/s3/api_op_ListBucketMetricsConfigurations.go @@ -194,10 +194,10 @@ func addListBucketMetricsConfigurationsUpdateEndpoint(stack *middleware.Stack, o return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ Accessor: s3cust.UpdateEndpointParameterAccessor{ GetBucketFromInput: getListBucketMetricsConfigurationsBucketMember, - SupportsAccelerate: true, }, UsePathStyle: options.UsePathStyle, UseAccelerate: options.UseAccelerate, + SupportsAccelerate: true, EndpointResolver: options.EndpointResolver, EndpointResolverOptions: options.EndpointOptions, UseDualstack: options.UseDualstack, diff --git a/service/s3/api_op_ListBuckets.go b/service/s3/api_op_ListBuckets.go index d61ea14eadf..e17f39029d3 100644 --- a/service/s3/api_op_ListBuckets.go +++ b/service/s3/api_op_ListBuckets.go @@ -122,10 +122,10 @@ func addListBucketsUpdateEndpoint(stack *middleware.Stack, options Options) erro return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ Accessor: s3cust.UpdateEndpointParameterAccessor{ GetBucketFromInput: nopGetBucketAccessor, - SupportsAccelerate: false, }, UsePathStyle: options.UsePathStyle, UseAccelerate: options.UseAccelerate, + SupportsAccelerate: false, EndpointResolver: options.EndpointResolver, EndpointResolverOptions: options.EndpointOptions, UseDualstack: options.UseDualstack, diff --git a/service/s3/api_op_ListMultipartUploads.go b/service/s3/api_op_ListMultipartUploads.go index 52039be7e2a..6c64ec68a85 100644 --- a/service/s3/api_op_ListMultipartUploads.go +++ b/service/s3/api_op_ListMultipartUploads.go @@ -285,10 +285,10 @@ func addListMultipartUploadsUpdateEndpoint(stack *middleware.Stack, options Opti return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ Accessor: s3cust.UpdateEndpointParameterAccessor{ GetBucketFromInput: getListMultipartUploadsBucketMember, - SupportsAccelerate: true, }, UsePathStyle: options.UsePathStyle, UseAccelerate: options.UseAccelerate, + SupportsAccelerate: true, EndpointResolver: options.EndpointResolver, EndpointResolverOptions: options.EndpointOptions, UseDualstack: options.UseDualstack, diff --git a/service/s3/api_op_ListObjectVersions.go b/service/s3/api_op_ListObjectVersions.go index 55eb14895b5..f7039ce6442 100644 --- a/service/s3/api_op_ListObjectVersions.go +++ b/service/s3/api_op_ListObjectVersions.go @@ -250,10 +250,10 @@ func addListObjectVersionsUpdateEndpoint(stack *middleware.Stack, options Option return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ Accessor: s3cust.UpdateEndpointParameterAccessor{ GetBucketFromInput: getListObjectVersionsBucketMember, - SupportsAccelerate: true, }, UsePathStyle: options.UsePathStyle, UseAccelerate: options.UseAccelerate, + SupportsAccelerate: true, EndpointResolver: options.EndpointResolver, EndpointResolverOptions: options.EndpointOptions, UseDualstack: options.UseDualstack, diff --git a/service/s3/api_op_ListObjects.go b/service/s3/api_op_ListObjects.go index 6c604f89efa..749183830dd 100644 --- a/service/s3/api_op_ListObjects.go +++ b/service/s3/api_op_ListObjects.go @@ -259,10 +259,10 @@ func addListObjectsUpdateEndpoint(stack *middleware.Stack, options Options) erro return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ Accessor: s3cust.UpdateEndpointParameterAccessor{ GetBucketFromInput: getListObjectsBucketMember, - SupportsAccelerate: true, }, UsePathStyle: options.UsePathStyle, UseAccelerate: options.UseAccelerate, + SupportsAccelerate: true, EndpointResolver: options.EndpointResolver, EndpointResolverOptions: options.EndpointOptions, UseDualstack: options.UseDualstack, diff --git a/service/s3/api_op_ListObjectsV2.go b/service/s3/api_op_ListObjectsV2.go index 10181e16de6..2190e17811a 100644 --- a/service/s3/api_op_ListObjectsV2.go +++ b/service/s3/api_op_ListObjectsV2.go @@ -289,10 +289,10 @@ func addListObjectsV2UpdateEndpoint(stack *middleware.Stack, options Options) er return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ Accessor: s3cust.UpdateEndpointParameterAccessor{ GetBucketFromInput: getListObjectsV2BucketMember, - SupportsAccelerate: true, }, UsePathStyle: options.UsePathStyle, UseAccelerate: options.UseAccelerate, + SupportsAccelerate: true, EndpointResolver: options.EndpointResolver, EndpointResolverOptions: options.EndpointOptions, UseDualstack: options.UseDualstack, diff --git a/service/s3/api_op_ListParts.go b/service/s3/api_op_ListParts.go index 22d2883f554..a31ea974299 100644 --- a/service/s3/api_op_ListParts.go +++ b/service/s3/api_op_ListParts.go @@ -280,10 +280,10 @@ func addListPartsUpdateEndpoint(stack *middleware.Stack, options Options) error return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ Accessor: s3cust.UpdateEndpointParameterAccessor{ GetBucketFromInput: getListPartsBucketMember, - SupportsAccelerate: true, }, UsePathStyle: options.UsePathStyle, UseAccelerate: options.UseAccelerate, + SupportsAccelerate: true, EndpointResolver: options.EndpointResolver, EndpointResolverOptions: options.EndpointOptions, UseDualstack: options.UseDualstack, diff --git a/service/s3/api_op_PutBucketAccelerateConfiguration.go b/service/s3/api_op_PutBucketAccelerateConfiguration.go index 95f51b53e60..77a9e7018e9 100644 --- a/service/s3/api_op_PutBucketAccelerateConfiguration.go +++ b/service/s3/api_op_PutBucketAccelerateConfiguration.go @@ -178,10 +178,10 @@ func addPutBucketAccelerateConfigurationUpdateEndpoint(stack *middleware.Stack, return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ Accessor: s3cust.UpdateEndpointParameterAccessor{ GetBucketFromInput: getPutBucketAccelerateConfigurationBucketMember, - SupportsAccelerate: true, }, UsePathStyle: options.UsePathStyle, UseAccelerate: options.UseAccelerate, + SupportsAccelerate: true, EndpointResolver: options.EndpointResolver, EndpointResolverOptions: options.EndpointOptions, UseDualstack: options.UseDualstack, diff --git a/service/s3/api_op_PutBucketAcl.go b/service/s3/api_op_PutBucketAcl.go index 7c586e63374..1d4afd2250b 100644 --- a/service/s3/api_op_PutBucketAcl.go +++ b/service/s3/api_op_PutBucketAcl.go @@ -302,10 +302,10 @@ func addPutBucketAclUpdateEndpoint(stack *middleware.Stack, options Options) err return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ Accessor: s3cust.UpdateEndpointParameterAccessor{ GetBucketFromInput: getPutBucketAclBucketMember, - SupportsAccelerate: true, }, UsePathStyle: options.UsePathStyle, UseAccelerate: options.UseAccelerate, + SupportsAccelerate: true, EndpointResolver: options.EndpointResolver, EndpointResolverOptions: options.EndpointOptions, UseDualstack: options.UseDualstack, diff --git a/service/s3/api_op_PutBucketAnalyticsConfiguration.go b/service/s3/api_op_PutBucketAnalyticsConfiguration.go index cf77d568d2c..1c884d3099e 100644 --- a/service/s3/api_op_PutBucketAnalyticsConfiguration.go +++ b/service/s3/api_op_PutBucketAnalyticsConfiguration.go @@ -210,10 +210,10 @@ func addPutBucketAnalyticsConfigurationUpdateEndpoint(stack *middleware.Stack, o return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ Accessor: s3cust.UpdateEndpointParameterAccessor{ GetBucketFromInput: getPutBucketAnalyticsConfigurationBucketMember, - SupportsAccelerate: true, }, UsePathStyle: options.UsePathStyle, UseAccelerate: options.UseAccelerate, + SupportsAccelerate: true, EndpointResolver: options.EndpointResolver, EndpointResolverOptions: options.EndpointOptions, UseDualstack: options.UseDualstack, diff --git a/service/s3/api_op_PutBucketCors.go b/service/s3/api_op_PutBucketCors.go index 63f6f21b9f4..77afdeec677 100644 --- a/service/s3/api_op_PutBucketCors.go +++ b/service/s3/api_op_PutBucketCors.go @@ -195,10 +195,10 @@ func addPutBucketCorsUpdateEndpoint(stack *middleware.Stack, options Options) er return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ Accessor: s3cust.UpdateEndpointParameterAccessor{ GetBucketFromInput: getPutBucketCorsBucketMember, - SupportsAccelerate: true, }, UsePathStyle: options.UsePathStyle, UseAccelerate: options.UseAccelerate, + SupportsAccelerate: true, EndpointResolver: options.EndpointResolver, EndpointResolverOptions: options.EndpointOptions, UseDualstack: options.UseDualstack, diff --git a/service/s3/api_op_PutBucketEncryption.go b/service/s3/api_op_PutBucketEncryption.go index 5b43fe8ee0f..d94e5880272 100644 --- a/service/s3/api_op_PutBucketEncryption.go +++ b/service/s3/api_op_PutBucketEncryption.go @@ -179,10 +179,10 @@ func addPutBucketEncryptionUpdateEndpoint(stack *middleware.Stack, options Optio return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ Accessor: s3cust.UpdateEndpointParameterAccessor{ GetBucketFromInput: getPutBucketEncryptionBucketMember, - SupportsAccelerate: true, }, UsePathStyle: options.UsePathStyle, UseAccelerate: options.UseAccelerate, + SupportsAccelerate: true, EndpointResolver: options.EndpointResolver, EndpointResolverOptions: options.EndpointOptions, UseDualstack: options.UseDualstack, diff --git a/service/s3/api_op_PutBucketInventoryConfiguration.go b/service/s3/api_op_PutBucketInventoryConfiguration.go index cf1297edcc7..07b83fa49aa 100644 --- a/service/s3/api_op_PutBucketInventoryConfiguration.go +++ b/service/s3/api_op_PutBucketInventoryConfiguration.go @@ -210,10 +210,10 @@ func addPutBucketInventoryConfigurationUpdateEndpoint(stack *middleware.Stack, o return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ Accessor: s3cust.UpdateEndpointParameterAccessor{ GetBucketFromInput: getPutBucketInventoryConfigurationBucketMember, - SupportsAccelerate: true, }, UsePathStyle: options.UsePathStyle, UseAccelerate: options.UseAccelerate, + SupportsAccelerate: true, EndpointResolver: options.EndpointResolver, EndpointResolverOptions: options.EndpointOptions, UseDualstack: options.UseDualstack, diff --git a/service/s3/api_op_PutBucketLifecycleConfiguration.go b/service/s3/api_op_PutBucketLifecycleConfiguration.go index f886d3e2acd..0308b4dfa94 100644 --- a/service/s3/api_op_PutBucketLifecycleConfiguration.go +++ b/service/s3/api_op_PutBucketLifecycleConfiguration.go @@ -208,10 +208,10 @@ func addPutBucketLifecycleConfigurationUpdateEndpoint(stack *middleware.Stack, o return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ Accessor: s3cust.UpdateEndpointParameterAccessor{ GetBucketFromInput: getPutBucketLifecycleConfigurationBucketMember, - SupportsAccelerate: true, }, UsePathStyle: options.UsePathStyle, UseAccelerate: options.UseAccelerate, + SupportsAccelerate: true, EndpointResolver: options.EndpointResolver, EndpointResolverOptions: options.EndpointOptions, UseDualstack: options.UseDualstack, diff --git a/service/s3/api_op_PutBucketLogging.go b/service/s3/api_op_PutBucketLogging.go index 5547f86a1be..b1b89741063 100644 --- a/service/s3/api_op_PutBucketLogging.go +++ b/service/s3/api_op_PutBucketLogging.go @@ -193,10 +193,10 @@ func addPutBucketLoggingUpdateEndpoint(stack *middleware.Stack, options Options) return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ Accessor: s3cust.UpdateEndpointParameterAccessor{ GetBucketFromInput: getPutBucketLoggingBucketMember, - SupportsAccelerate: true, }, UsePathStyle: options.UsePathStyle, UseAccelerate: options.UseAccelerate, + SupportsAccelerate: true, EndpointResolver: options.EndpointResolver, EndpointResolverOptions: options.EndpointOptions, UseDualstack: options.UseDualstack, diff --git a/service/s3/api_op_PutBucketMetricsConfiguration.go b/service/s3/api_op_PutBucketMetricsConfiguration.go index 3d00005047c..6b2c16e476d 100644 --- a/service/s3/api_op_PutBucketMetricsConfiguration.go +++ b/service/s3/api_op_PutBucketMetricsConfiguration.go @@ -185,10 +185,10 @@ func addPutBucketMetricsConfigurationUpdateEndpoint(stack *middleware.Stack, opt return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ Accessor: s3cust.UpdateEndpointParameterAccessor{ GetBucketFromInput: getPutBucketMetricsConfigurationBucketMember, - SupportsAccelerate: true, }, UsePathStyle: options.UsePathStyle, UseAccelerate: options.UseAccelerate, + SupportsAccelerate: true, EndpointResolver: options.EndpointResolver, EndpointResolverOptions: options.EndpointOptions, UseDualstack: options.UseDualstack, diff --git a/service/s3/api_op_PutBucketNotificationConfiguration.go b/service/s3/api_op_PutBucketNotificationConfiguration.go index 3a7a09f3e23..586ea4ca3a5 100644 --- a/service/s3/api_op_PutBucketNotificationConfiguration.go +++ b/service/s3/api_op_PutBucketNotificationConfiguration.go @@ -177,10 +177,10 @@ func addPutBucketNotificationConfigurationUpdateEndpoint(stack *middleware.Stack return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ Accessor: s3cust.UpdateEndpointParameterAccessor{ GetBucketFromInput: getPutBucketNotificationConfigurationBucketMember, - SupportsAccelerate: true, }, UsePathStyle: options.UsePathStyle, UseAccelerate: options.UseAccelerate, + SupportsAccelerate: true, EndpointResolver: options.EndpointResolver, EndpointResolverOptions: options.EndpointOptions, UseDualstack: options.UseDualstack, diff --git a/service/s3/api_op_PutBucketOwnershipControls.go b/service/s3/api_op_PutBucketOwnershipControls.go index 668c336b715..bed33947c62 100644 --- a/service/s3/api_op_PutBucketOwnershipControls.go +++ b/service/s3/api_op_PutBucketOwnershipControls.go @@ -155,10 +155,10 @@ func addPutBucketOwnershipControlsUpdateEndpoint(stack *middleware.Stack, option return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ Accessor: s3cust.UpdateEndpointParameterAccessor{ GetBucketFromInput: getPutBucketOwnershipControlsBucketMember, - SupportsAccelerate: true, }, UsePathStyle: options.UsePathStyle, UseAccelerate: options.UseAccelerate, + SupportsAccelerate: true, EndpointResolver: options.EndpointResolver, EndpointResolverOptions: options.EndpointOptions, UseDualstack: options.UseDualstack, diff --git a/service/s3/api_op_PutBucketPolicy.go b/service/s3/api_op_PutBucketPolicy.go index 71fca403d92..057550fb5d5 100644 --- a/service/s3/api_op_PutBucketPolicy.go +++ b/service/s3/api_op_PutBucketPolicy.go @@ -170,10 +170,10 @@ func addPutBucketPolicyUpdateEndpoint(stack *middleware.Stack, options Options) return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ Accessor: s3cust.UpdateEndpointParameterAccessor{ GetBucketFromInput: getPutBucketPolicyBucketMember, - SupportsAccelerate: true, }, UsePathStyle: options.UsePathStyle, UseAccelerate: options.UseAccelerate, + SupportsAccelerate: true, EndpointResolver: options.EndpointResolver, EndpointResolverOptions: options.EndpointOptions, UseDualstack: options.UseDualstack, diff --git a/service/s3/api_op_PutBucketReplication.go b/service/s3/api_op_PutBucketReplication.go index afb21db02a7..086382f978e 100644 --- a/service/s3/api_op_PutBucketReplication.go +++ b/service/s3/api_op_PutBucketReplication.go @@ -208,10 +208,10 @@ func addPutBucketReplicationUpdateEndpoint(stack *middleware.Stack, options Opti return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ Accessor: s3cust.UpdateEndpointParameterAccessor{ GetBucketFromInput: getPutBucketReplicationBucketMember, - SupportsAccelerate: true, }, UsePathStyle: options.UsePathStyle, UseAccelerate: options.UseAccelerate, + SupportsAccelerate: true, EndpointResolver: options.EndpointResolver, EndpointResolverOptions: options.EndpointOptions, UseDualstack: options.UseDualstack, diff --git a/service/s3/api_op_PutBucketRequestPayment.go b/service/s3/api_op_PutBucketRequestPayment.go index bda9beab42b..a0c34462d76 100644 --- a/service/s3/api_op_PutBucketRequestPayment.go +++ b/service/s3/api_op_PutBucketRequestPayment.go @@ -163,10 +163,10 @@ func addPutBucketRequestPaymentUpdateEndpoint(stack *middleware.Stack, options O return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ Accessor: s3cust.UpdateEndpointParameterAccessor{ GetBucketFromInput: getPutBucketRequestPaymentBucketMember, - SupportsAccelerate: true, }, UsePathStyle: options.UsePathStyle, UseAccelerate: options.UseAccelerate, + SupportsAccelerate: true, EndpointResolver: options.EndpointResolver, EndpointResolverOptions: options.EndpointOptions, UseDualstack: options.UseDualstack, diff --git a/service/s3/api_op_PutBucketTagging.go b/service/s3/api_op_PutBucketTagging.go index 7cffc206a47..812a38c13e2 100644 --- a/service/s3/api_op_PutBucketTagging.go +++ b/service/s3/api_op_PutBucketTagging.go @@ -207,10 +207,10 @@ func addPutBucketTaggingUpdateEndpoint(stack *middleware.Stack, options Options) return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ Accessor: s3cust.UpdateEndpointParameterAccessor{ GetBucketFromInput: getPutBucketTaggingBucketMember, - SupportsAccelerate: true, }, UsePathStyle: options.UsePathStyle, UseAccelerate: options.UseAccelerate, + SupportsAccelerate: true, EndpointResolver: options.EndpointResolver, EndpointResolverOptions: options.EndpointOptions, UseDualstack: options.UseDualstack, diff --git a/service/s3/api_op_PutBucketVersioning.go b/service/s3/api_op_PutBucketVersioning.go index f8e43a623f2..c1a56abb2d8 100644 --- a/service/s3/api_op_PutBucketVersioning.go +++ b/service/s3/api_op_PutBucketVersioning.go @@ -185,10 +185,10 @@ func addPutBucketVersioningUpdateEndpoint(stack *middleware.Stack, options Optio return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ Accessor: s3cust.UpdateEndpointParameterAccessor{ GetBucketFromInput: getPutBucketVersioningBucketMember, - SupportsAccelerate: true, }, UsePathStyle: options.UsePathStyle, UseAccelerate: options.UseAccelerate, + SupportsAccelerate: true, EndpointResolver: options.EndpointResolver, EndpointResolverOptions: options.EndpointOptions, UseDualstack: options.UseDualstack, diff --git a/service/s3/api_op_PutBucketWebsite.go b/service/s3/api_op_PutBucketWebsite.go index ad9ee60b067..d33ed4c97c1 100644 --- a/service/s3/api_op_PutBucketWebsite.go +++ b/service/s3/api_op_PutBucketWebsite.go @@ -221,10 +221,10 @@ func addPutBucketWebsiteUpdateEndpoint(stack *middleware.Stack, options Options) return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ Accessor: s3cust.UpdateEndpointParameterAccessor{ GetBucketFromInput: getPutBucketWebsiteBucketMember, - SupportsAccelerate: true, }, UsePathStyle: options.UsePathStyle, UseAccelerate: options.UseAccelerate, + SupportsAccelerate: true, EndpointResolver: options.EndpointResolver, EndpointResolverOptions: options.EndpointOptions, UseDualstack: options.UseDualstack, diff --git a/service/s3/api_op_PutObject.go b/service/s3/api_op_PutObject.go index a47fc6f4b38..2d7593d946b 100644 --- a/service/s3/api_op_PutObject.go +++ b/service/s3/api_op_PutObject.go @@ -414,10 +414,10 @@ func addPutObjectUpdateEndpoint(stack *middleware.Stack, options Options) error return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ Accessor: s3cust.UpdateEndpointParameterAccessor{ GetBucketFromInput: getPutObjectBucketMember, - SupportsAccelerate: true, }, UsePathStyle: options.UsePathStyle, UseAccelerate: options.UseAccelerate, + SupportsAccelerate: true, EndpointResolver: options.EndpointResolver, EndpointResolverOptions: options.EndpointOptions, UseDualstack: options.UseDualstack, diff --git a/service/s3/api_op_PutObjectAcl.go b/service/s3/api_op_PutObjectAcl.go index 72d483644d5..df6ddff1414 100644 --- a/service/s3/api_op_PutObjectAcl.go +++ b/service/s3/api_op_PutObjectAcl.go @@ -344,10 +344,10 @@ func addPutObjectAclUpdateEndpoint(stack *middleware.Stack, options Options) err return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ Accessor: s3cust.UpdateEndpointParameterAccessor{ GetBucketFromInput: getPutObjectAclBucketMember, - SupportsAccelerate: true, }, UsePathStyle: options.UsePathStyle, UseAccelerate: options.UseAccelerate, + SupportsAccelerate: true, EndpointResolver: options.EndpointResolver, EndpointResolverOptions: options.EndpointOptions, UseDualstack: options.UseDualstack, diff --git a/service/s3/api_op_PutObjectLegalHold.go b/service/s3/api_op_PutObjectLegalHold.go index bf0fb174098..b890a35e320 100644 --- a/service/s3/api_op_PutObjectLegalHold.go +++ b/service/s3/api_op_PutObjectLegalHold.go @@ -180,10 +180,10 @@ func addPutObjectLegalHoldUpdateEndpoint(stack *middleware.Stack, options Option return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ Accessor: s3cust.UpdateEndpointParameterAccessor{ GetBucketFromInput: getPutObjectLegalHoldBucketMember, - SupportsAccelerate: true, }, UsePathStyle: options.UsePathStyle, UseAccelerate: options.UseAccelerate, + SupportsAccelerate: true, EndpointResolver: options.EndpointResolver, EndpointResolverOptions: options.EndpointOptions, UseDualstack: options.UseDualstack, diff --git a/service/s3/api_op_PutObjectLockConfiguration.go b/service/s3/api_op_PutObjectLockConfiguration.go index 90959085335..776243b798a 100644 --- a/service/s3/api_op_PutObjectLockConfiguration.go +++ b/service/s3/api_op_PutObjectLockConfiguration.go @@ -168,10 +168,10 @@ func addPutObjectLockConfigurationUpdateEndpoint(stack *middleware.Stack, option return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ Accessor: s3cust.UpdateEndpointParameterAccessor{ GetBucketFromInput: getPutObjectLockConfigurationBucketMember, - SupportsAccelerate: true, }, UsePathStyle: options.UsePathStyle, UseAccelerate: options.UseAccelerate, + SupportsAccelerate: true, EndpointResolver: options.EndpointResolver, EndpointResolverOptions: options.EndpointOptions, UseDualstack: options.UseDualstack, diff --git a/service/s3/api_op_PutObjectRetention.go b/service/s3/api_op_PutObjectRetention.go index 10b2e9446cb..e6eb1e6bf0e 100644 --- a/service/s3/api_op_PutObjectRetention.go +++ b/service/s3/api_op_PutObjectRetention.go @@ -184,10 +184,10 @@ func addPutObjectRetentionUpdateEndpoint(stack *middleware.Stack, options Option return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ Accessor: s3cust.UpdateEndpointParameterAccessor{ GetBucketFromInput: getPutObjectRetentionBucketMember, - SupportsAccelerate: true, }, UsePathStyle: options.UsePathStyle, UseAccelerate: options.UseAccelerate, + SupportsAccelerate: true, EndpointResolver: options.EndpointResolver, EndpointResolverOptions: options.EndpointOptions, UseDualstack: options.UseDualstack, diff --git a/service/s3/api_op_PutObjectTagging.go b/service/s3/api_op_PutObjectTagging.go index 208fc269179..46842aa8a05 100644 --- a/service/s3/api_op_PutObjectTagging.go +++ b/service/s3/api_op_PutObjectTagging.go @@ -220,10 +220,10 @@ func addPutObjectTaggingUpdateEndpoint(stack *middleware.Stack, options Options) return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ Accessor: s3cust.UpdateEndpointParameterAccessor{ GetBucketFromInput: getPutObjectTaggingBucketMember, - SupportsAccelerate: true, }, UsePathStyle: options.UsePathStyle, UseAccelerate: options.UseAccelerate, + SupportsAccelerate: true, EndpointResolver: options.EndpointResolver, EndpointResolverOptions: options.EndpointOptions, UseDualstack: options.UseDualstack, diff --git a/service/s3/api_op_PutPublicAccessBlock.go b/service/s3/api_op_PutPublicAccessBlock.go index 9146886303c..870e3fd7193 100644 --- a/service/s3/api_op_PutPublicAccessBlock.go +++ b/service/s3/api_op_PutPublicAccessBlock.go @@ -182,10 +182,10 @@ func addPutPublicAccessBlockUpdateEndpoint(stack *middleware.Stack, options Opti return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ Accessor: s3cust.UpdateEndpointParameterAccessor{ GetBucketFromInput: getPutPublicAccessBlockBucketMember, - SupportsAccelerate: true, }, UsePathStyle: options.UsePathStyle, UseAccelerate: options.UseAccelerate, + SupportsAccelerate: true, EndpointResolver: options.EndpointResolver, EndpointResolverOptions: options.EndpointOptions, UseDualstack: options.UseDualstack, diff --git a/service/s3/api_op_RestoreObject.go b/service/s3/api_op_RestoreObject.go index 58e72578b67..94e64fb8f88 100644 --- a/service/s3/api_op_RestoreObject.go +++ b/service/s3/api_op_RestoreObject.go @@ -397,10 +397,10 @@ func addRestoreObjectUpdateEndpoint(stack *middleware.Stack, options Options) er return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ Accessor: s3cust.UpdateEndpointParameterAccessor{ GetBucketFromInput: getRestoreObjectBucketMember, - SupportsAccelerate: true, }, UsePathStyle: options.UsePathStyle, UseAccelerate: options.UseAccelerate, + SupportsAccelerate: true, EndpointResolver: options.EndpointResolver, EndpointResolverOptions: options.EndpointOptions, UseDualstack: options.UseDualstack, diff --git a/service/s3/api_op_UploadPart.go b/service/s3/api_op_UploadPart.go index f781b40c9b0..39899da47bf 100644 --- a/service/s3/api_op_UploadPart.go +++ b/service/s3/api_op_UploadPart.go @@ -326,10 +326,10 @@ func addUploadPartUpdateEndpoint(stack *middleware.Stack, options Options) error return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ Accessor: s3cust.UpdateEndpointParameterAccessor{ GetBucketFromInput: getUploadPartBucketMember, - SupportsAccelerate: true, }, UsePathStyle: options.UsePathStyle, UseAccelerate: options.UseAccelerate, + SupportsAccelerate: true, EndpointResolver: options.EndpointResolver, EndpointResolverOptions: options.EndpointOptions, UseDualstack: options.UseDualstack, diff --git a/service/s3/api_op_UploadPartCopy.go b/service/s3/api_op_UploadPartCopy.go index 488b03c1b6e..6c25239889c 100644 --- a/service/s3/api_op_UploadPartCopy.go +++ b/service/s3/api_op_UploadPartCopy.go @@ -413,10 +413,10 @@ func addUploadPartCopyUpdateEndpoint(stack *middleware.Stack, options Options) e return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ Accessor: s3cust.UpdateEndpointParameterAccessor{ GetBucketFromInput: getUploadPartCopyBucketMember, - SupportsAccelerate: true, }, UsePathStyle: options.UsePathStyle, UseAccelerate: options.UseAccelerate, + SupportsAccelerate: true, EndpointResolver: options.EndpointResolver, EndpointResolverOptions: options.EndpointOptions, UseDualstack: options.UseDualstack,