-
Notifications
You must be signed in to change notification settings - Fork 3.9k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
chore(cdk): add sdkv3 support to sdk.ts #31501
base: main
Are you sure you want to change the base?
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The pull request linter has failed. See the aws-cdk-automation comment below for failure reasons. If you believe this pull request should receive an exemption, please comment and provide a justification.
A comment requesting an exemption should contain the text Exemption Request
. Additionally, if clarification is needed add Clarification Request
to a comment.
lambda(): Lambda; | ||
cloudFormation(): CloudFormation; | ||
ec2(): EC2; | ||
iam(): IAM; | ||
ssm(): SSM; | ||
s3(): S3; | ||
route53(): Route53; | ||
ecr(): ECR; | ||
ecs(): ECS; | ||
elbv2(): ElasticLoadBalancingV2; | ||
secretsManager(): SecretsManager; | ||
kms(): KMS; | ||
stepFunctions(): SFN; | ||
codeBuild(): CodeBuild; | ||
cloudWatchLogs(): CloudWatchLogs; | ||
appsync(): AppSync; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Let's not change any of these methods for now. Create new ones, that return the corresponding service client (e.g., S3Client
) and incrementally switch to these new methods. Once no one is using the old methods anymore, we delete them.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Donezo
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
actually I realized I took a different approach to the one you described. I just created a completely updated SDKv3
class with all of the services upgraded to v3 and then left the original SDK
class unchanged.
My thought was that when migrating something which depends on SDK
we'd swap it to SDKv3
and then when everything is swapped over we delete the original and rename SDKv3
to SDK
Let me know if you think this approach isn't as effective and if you'd just rather see me keep the same class and then we swap out services out one at a time every time we update a file.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes, a brand new class and interface also works. My only suggestion now is to include in this PR a change in some other file that uses the ISDK
interface, just to smoke test the change. There's a lot of fiddling about with error handling and whatnot here. Let's make sure they still work in v3.
@@ -73,6 +73,7 @@ Flags come in three types: | |||
| [@aws-cdk/custom-resources:logApiResponseDataPropertyTrueDefault](#aws-cdkcustom-resourceslogapiresponsedatapropertytruedefault) | When enabled, the custom resource used for `AwsCustomResource` will configure the `logApiResponseData` property as true by default | 2.145.0 | (fix) | | |||
| [@aws-cdk/aws-s3:keepNotificationInImportedBucket](#aws-cdkaws-s3keepnotificationinimportedbucket) | When enabled, Adding notifications to a bucket in the current stack will not remove notification from imported stack. | 2.155.0 | (fix) | | |||
| [@aws-cdk/aws-stepfunctions-tasks:useNewS3UriParametersForBedrockInvokeModelTask](#aws-cdkaws-stepfunctions-tasksusenews3uriparametersforbedrockinvokemodeltask) | When enabled, use new props for S3 URI field in task definition of state machine for bedrock invoke model. | 2.156.0 | (fix) | | |||
| [@aws-cdk/aws-ecs:reduceEc2FargateCloudWatchPermissions](#aws-cdkaws-ecsreduceec2fargatecloudwatchpermissions) | When enabled, we will only grant the necessary permissions when users specify cloudwatch log group through logConfiguration | 2.159.0 | (fix) | |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Is this supposed to be here?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
yeah I didn't manually update this, this ame along with some build or something. Merged from main and got rid of this
lambda(): Lambda; | ||
cloudFormation(): CloudFormation; | ||
ec2(): EC2; | ||
iam(): IAM; | ||
ssm(): SSM; | ||
s3(): S3; | ||
route53(): Route53; | ||
ecr(): ECR; | ||
ecs(): ECS; | ||
elbv2(): ElasticLoadBalancingV2; | ||
secretsManager(): SecretsManager; | ||
kms(): KMS; | ||
stepFunctions(): SFN; | ||
codeBuild(): CodeBuild; | ||
cloudWatchLogs(): CloudWatchLogs; | ||
appsync(): AppSync; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes, a brand new class and interface also works. My only suggestion now is to include in this PR a change in some other file that uses the ISDK
interface, just to smoke test the change. There's a lot of fiddling about with error handling and whatnot here. Let's make sure they still work in v3.
f239220
to
47bb682
Compare
✅ Updated pull request passes all PRLinter validations. Dismissing previous PRLinter review.
➡️ PR build request submitted to A maintainer must now check the pipeline and add the |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The pull request linter has failed. See the aws-cdk-automation comment below for failure reasons. If you believe this pull request should receive an exemption, please comment and provide a justification.
A comment requesting an exemption should contain the text Exemption Request
. Additionally, if clarification is needed add Clarification Request
to a comment.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The pull request linter has failed. See the aws-cdk-automation comment below for failure reasons. If you believe this pull request should receive an exemption, please comment and provide a justification.
A comment requesting an exemption should contain the text Exemption Request
. Additionally, if clarification is needed add Clarification Request
to a comment.
/** | ||
* Replace the {ACCOUNT} and {REGION} placeholders in all strings found in a complex object. | ||
*/ | ||
export async function replaceEnvPlaceholdersv3<A extends { }>(object: A, env: cxapi.Environment, sdkProvider: SdkProviderv3): Promise<A> { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Instead of duplicating this function, another way of doing this is:
- Create a new interface that only has the
baseCredentialsPartition
method. - Both
SdkProvider
andSdkProviderv3
implement it. - Change the last parameter of this method to be of the new interface.
This doesn't change any behavior and we get to write less code. No need for isSdkProviderV3
and its usage, for example.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Like the suggestion, but I think I need to change this code anyway, I'll figure that out today, TBD on this suggestion until I figure out what I'm doing with provideContextValues
/** | ||
* Iterate over the list of missing context values and invoke the appropriate providers from the map to retrieve them | ||
*/ | ||
export async function provideContextValuesv3( |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Where is this used?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
it was used previously, I don't know if I still need it yet lol. I'll be sure to get rid of it before I pull it out of draft. I'm just keeping it around for safe keeping for now
@@ -118,9 +121,9 @@ test('looks up the requested (symmetric) VPC', async () => { | |||
}); | |||
|
|||
test('throws when no such VPC is found', async () => { | |||
AWS.mock('EC2', 'describeVpcs', (params: aws.EC2.DescribeVpcsRequest, cb: AwsCallback<aws.EC2.DescribeVpcsResult>) => { | |||
ec2Mock.on(DescribeVpcsCommand).callsFake(params => { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We can leave it like this or we can use the slightly more readable pattern:
ec2Mock
.on(DescribeVpcsCommand, {
Filters: [{ Name: 'foo', Values: ['bar'] }]
})
.resolves({});
The pull request linter fails with the following errors:
PRs must pass status checks before we can provide a meaningful review. If you would like to request an exemption from the status checks or clarification on feedback, please leave a comment on this PR containing ✅ A exemption request has been requested. Please wait for a maintainer's review. |
The pull request linter fails with the following errors:
PRs must pass status checks before we can provide a meaningful review. If you would like to request an exemption from the status checks or clarification on feedback, please leave a comment on this PR containing ✅ A exemption request has been requested. Please wait for a maintainer's review. |
we're not pushing this last commit I made dd9aff8 This is purely for a discussion I'm having with Otavio. |
AWS CodeBuild CI Report
Powered by github-codebuild-logs, available on the AWS Serverless Application Repository |
Reason for this change
Adding support for the SDKv2 to v3 migration in the cdk
Description of changes
Created copies of the SDK and ISDK classes with v3 support. Future migration efforts involving this class should use SDKv3. Once everything is migrated we will delete the original implementation and rename v3 to just
SDK
Checklist
By submitting this pull request, I confirm that my contribution is made under the terms of the Apache-2.0 license