From fc4159eaffe15f155b08d6761a030e44be2d289d Mon Sep 17 00:00:00 2001 From: Isaiah Vita Date: Mon, 17 Oct 2022 16:24:25 +0000 Subject: [PATCH 1/2] [issues-1787] add AssumeRole op to presign generate list This resolves customer issue 1787 by adding the AssumeRole operation to the presign autogeneration list for codegen on the aws sdk side --- .../AwsHttpPresignURLClientGenerator.java | 4 +++- service/sts/api_op_AssumeRole.go | 24 +++++++++++++++++++ 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/codegen/smithy-aws-go-codegen/src/main/java/software/amazon/smithy/aws/go/codegen/AwsHttpPresignURLClientGenerator.java b/codegen/smithy-aws-go-codegen/src/main/java/software/amazon/smithy/aws/go/codegen/AwsHttpPresignURLClientGenerator.java index 2422a7410c7..7d13ae09467 100644 --- a/codegen/smithy-aws-go-codegen/src/main/java/software/amazon/smithy/aws/go/codegen/AwsHttpPresignURLClientGenerator.java +++ b/codegen/smithy-aws-go-codegen/src/main/java/software/amazon/smithy/aws/go/codegen/AwsHttpPresignURLClientGenerator.java @@ -100,7 +100,9 @@ public class AwsHttpPresignURLClientGenerator implements GoIntegration { ShapeId.from("com.amazonaws.s3#DeleteBucket") ), ShapeId.from("com.amazonaws.sts#AWSSecurityTokenServiceV20110615"), SetUtils.of( - ShapeId.from("com.amazonaws.sts#GetCallerIdentity")) + ShapeId.from("com.amazonaws.sts#GetCallerIdentity"), + ShapeId.from("com.amazonaws.sts#AssumeRole") + ) ); // map of service to list of operations for which presignedURL client and operation should diff --git a/service/sts/api_op_AssumeRole.go b/service/sts/api_op_AssumeRole.go index 7d00b6bd7fa..9ae61e72c3c 100644 --- a/service/sts/api_op_AssumeRole.go +++ b/service/sts/api_op_AssumeRole.go @@ -415,3 +415,27 @@ func newServiceMetadataMiddleware_opAssumeRole(region string) *awsmiddleware.Reg OperationName: "AssumeRole", } } + +// PresignAssumeRole is used to generate a presigned HTTP Request which contains +// presigned URL, signed headers and HTTP method used. +func (c *PresignClient) PresignAssumeRole(ctx context.Context, params *AssumeRoleInput, optFns ...func(*PresignOptions)) (*v4.PresignedHTTPRequest, error) { + if params == nil { + params = &AssumeRoleInput{} + } + options := c.options.copy() + for _, fn := range optFns { + fn(&options) + } + clientOptFns := append(options.ClientOptions, withNopHTTPClientAPIOption) + + result, _, err := c.client.invokeOperation(ctx, "AssumeRole", params, clientOptFns, + c.client.addOperationAssumeRoleMiddlewares, + presignConverter(options).convertToPresignMiddleware, + ) + if err != nil { + return nil, err + } + + out := result.(*v4.PresignedHTTPRequest) + return out, nil +} From 56eb993a7dfc0195e4ca3fca306d4985f6c7c99a Mon Sep 17 00:00:00 2001 From: Isaiah Vita Date: Thu, 20 Oct 2022 22:23:20 +0000 Subject: [PATCH 2/2] added changelog file --- .changelog/3d0e99b328234ac884bc58cfed344b21.json | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 .changelog/3d0e99b328234ac884bc58cfed344b21.json diff --git a/.changelog/3d0e99b328234ac884bc58cfed344b21.json b/.changelog/3d0e99b328234ac884bc58cfed344b21.json new file mode 100644 index 00000000000..ec79bc74eee --- /dev/null +++ b/.changelog/3d0e99b328234ac884bc58cfed344b21.json @@ -0,0 +1,8 @@ +{ + "id": "3d0e99b3-2823-4ac8-84bc-58cfed344b21", + "type": "feature", + "description": "Add presign functionality for sts:AssumeRole operation", + "modules": [ + "service/sts" + ] +} \ No newline at end of file