From f5f94a21e6887959bf876641cce7f777d7baeaf2 Mon Sep 17 00:00:00 2001 From: ysaito1001 Date: Tue, 26 Mar 2024 18:33:14 -0500 Subject: [PATCH] Split CDK app between `smithy-rs` and `aws-sdk-rust` (#3514) ## Motivation and Context A prerequisite for running canary in smithy-rs CI ## Description This PR is essentially refactoring so that `canary-stack.ts` library can be used by both `smithy-rs` and `aws-sdk-rust`. CDK apps are then split into `bin/smithy-rs` and `bin/aws-sdk-rust`; the former is used by our local development and the latter is used by our internal release pipeline. Merging this PR to the main branch will not affect anything. However, we will need to update our internal release pipeline to use `bin/aws-sdk-rust/*` instead when we release new SDKs: - `npm run build` -> `npx tsc && npx cdk --app "node build/bin/aws-sdk-rust/canary.js" synth` - `npx cdk bootstrap` -> `npx cdk bootstrap --app "ts-node --prefer-ts-exts bin/aws-sdk-rust/canary.ts"` - `npx cdk --app "node build/bin/canary-only.js" synth` -> `npx cdk --app "node build/bin/aws-sdk-rust/canary-only.js" synth` - `npx cdk --app "node build/bin/canary-only.js" deploy --outputs-file cdk-outputs.json` -> `npx cdk --app "node build/bin/aws-sdk-rust/canary-only.js" deploy --outputs-file cdk-outputs.json` Also, when this PR is merged, we're ready to deploy a new canary stack `smithy-rs-canary-stack` used by smithy-rs CI. ## Testing > we will need to update our internal release pipeline to use `bin/aws-sdk-rust/*` instead Verified internally that it passed the release pipeline. ---- _By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice._ --- tools/ci-cdk/README.md | 4 +- tools/ci-cdk/bin/aws-sdk-rust/canary-only.ts | 21 ++ tools/ci-cdk/bin/aws-sdk-rust/canary.ts | 34 +++ tools/ci-cdk/bin/ci-cdk.ts | 28 --- .../ci-cdk/bin/{ => smithy-rs}/canary-only.ts | 9 +- tools/ci-cdk/bin/smithy-rs/ci-cdk.ts | 43 ++++ tools/ci-cdk/cdk.json | 2 +- .../lib/{aws-sdk-rust => }/canary-stack.ts | 89 +++++--- tools/ci-cdk/package-lock.json | 208 ++++++------------ tools/ci-cdk/package.json | 7 +- 10 files changed, 235 insertions(+), 210 deletions(-) create mode 100644 tools/ci-cdk/bin/aws-sdk-rust/canary-only.ts create mode 100644 tools/ci-cdk/bin/aws-sdk-rust/canary.ts delete mode 100644 tools/ci-cdk/bin/ci-cdk.ts rename tools/ci-cdk/bin/{ => smithy-rs}/canary-only.ts (65%) create mode 100644 tools/ci-cdk/bin/smithy-rs/ci-cdk.ts rename tools/ci-cdk/lib/{aws-sdk-rust => }/canary-stack.ts (78%) diff --git a/tools/ci-cdk/README.md b/tools/ci-cdk/README.md index 34c78d6ea..684a06e55 100644 --- a/tools/ci-cdk/README.md +++ b/tools/ci-cdk/README.md @@ -13,8 +13,8 @@ on the `canary-runner` and `canary-lambda`. To do this, run the following: ```bash npm install npm run build -npx cdk --app "node build/bin/canary-only.js" synth -npx cdk --app "node build/bin/canary-only.js" deploy --outputs-file cdk-outputs.json +npx cdk --app "node build/bin/smithy-rs/canary-only.js" synth +npx cdk --app "node build/bin/smithy-rs/canary-only.js" deploy --outputs-file cdk-outputs.json ``` From there, you can just point the `canary-runner` to the `cdk-outputs.json` to run it: diff --git a/tools/ci-cdk/bin/aws-sdk-rust/canary-only.ts b/tools/ci-cdk/bin/aws-sdk-rust/canary-only.ts new file mode 100644 index 000000000..89365569d --- /dev/null +++ b/tools/ci-cdk/bin/aws-sdk-rust/canary-only.ts @@ -0,0 +1,21 @@ +#!/usr/bin/env node +/* + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0 + */ + +// This CDK app sets up the absolute minimum set of resources to successfully +// execute the canary with. However, this one is used by our internal CI only. +// Use canary-only.ts in the sibling smithy-rs directory instead. + +import "source-map-support/register"; +import { App } from "aws-cdk-lib"; +import { CanaryStack } from "../../lib/canary-stack"; + +const app = new App(); +const env = { region: "us-west-2" }; + +new CanaryStack(app, "aws-sdk-rust-canary-stack", { + lambdaExecutionRole: "aws-sdk-rust-canary-lambda-exec-role", + env, +}); diff --git a/tools/ci-cdk/bin/aws-sdk-rust/canary.ts b/tools/ci-cdk/bin/aws-sdk-rust/canary.ts new file mode 100644 index 000000000..fcede0ec8 --- /dev/null +++ b/tools/ci-cdk/bin/aws-sdk-rust/canary.ts @@ -0,0 +1,34 @@ +#!/usr/bin/env node +/* + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0 + */ + +// This CDK app, in addition to provisioning necessary resources for the canary, +// deploys a GihHub OIDC role to execute it from a CI in the `aws-sdk-rust` repository. + +import "source-map-support/register"; +import { App } from "aws-cdk-lib"; +import { CanaryStack, OidcProps } from "../../lib/canary-stack"; +import { OidcProviderStack } from "../../lib/oidc-provider-stack"; + +const app = new App(); +const env = { region: "us-west-2" }; + +const oidcProviderStack = new OidcProviderStack(app, "oidc-provider-stack", { + env, +}); + +const oidcProps: OidcProps = { + roleId: "aws-sdk-rust", + roleName: "aws-sdk-rust-canary", + roleGithubOrg: "awslabs", + roleGithubRepo: "aws-sdk-rust", + provider: oidcProviderStack.githubActionsOidcProvider, +}; + +new CanaryStack(app, "aws-sdk-rust-canary-stack", { + lambdaExecutionRole: "aws-sdk-rust-canary-lambda-exec-role", + oidcProps, + env, +}); diff --git a/tools/ci-cdk/bin/ci-cdk.ts b/tools/ci-cdk/bin/ci-cdk.ts deleted file mode 100644 index 3db652f10..000000000 --- a/tools/ci-cdk/bin/ci-cdk.ts +++ /dev/null @@ -1,28 +0,0 @@ -#!/usr/bin/env node -/* - * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. - * SPDX-License-Identifier: Apache-2.0 - */ - -import "source-map-support/register"; -import { App } from "aws-cdk-lib"; -import { PullRequestCdnStack } from "../lib/smithy-rs/pull-request-cdn-stack"; -import { CanaryStack } from "../lib/aws-sdk-rust/canary-stack"; -import { OidcProviderStack } from "../lib/oidc-provider-stack"; - -const app = new App({}); -const env = { region: "us-west-2" }; - -const oidcProviderStack = new OidcProviderStack(app, "oidc-provider-stack", { - env, -}); - -new PullRequestCdnStack(app, "smithy-rs-pull-request-cdn-stack", { - githubActionsOidcProvider: oidcProviderStack.githubActionsOidcProvider, - env, -}); - -new CanaryStack(app, "aws-sdk-rust-canary-stack", { - githubActionsOidcProvider: oidcProviderStack.githubActionsOidcProvider, - env, -}); diff --git a/tools/ci-cdk/bin/canary-only.ts b/tools/ci-cdk/bin/smithy-rs/canary-only.ts similarity index 65% rename from tools/ci-cdk/bin/canary-only.ts rename to tools/ci-cdk/bin/smithy-rs/canary-only.ts index d20fa053f..1f9c420b9 100644 --- a/tools/ci-cdk/bin/canary-only.ts +++ b/tools/ci-cdk/bin/smithy-rs/canary-only.ts @@ -4,14 +4,17 @@ * SPDX-License-Identifier: Apache-2.0 */ -// This CDK app sets up the absolute minimum set of resources to succesfully +// This CDK app sets up the absolute minimum set of resources to successfully // execute the canary with. import "source-map-support/register"; import { App } from "aws-cdk-lib"; -import { CanaryStack } from "../lib/aws-sdk-rust/canary-stack"; +import { CanaryStack } from "../../lib/canary-stack"; const app = new App(); const env = { region: "us-west-2" }; -new CanaryStack(app, "aws-sdk-rust-canary-stack", { env }); +new CanaryStack(app, "smithy-rs-canary-stack", { + lambdaExecutionRole: "smithy-rs-canary-lambda-exec-role", + env, +}); diff --git a/tools/ci-cdk/bin/smithy-rs/ci-cdk.ts b/tools/ci-cdk/bin/smithy-rs/ci-cdk.ts new file mode 100644 index 000000000..3f9a83f10 --- /dev/null +++ b/tools/ci-cdk/bin/smithy-rs/ci-cdk.ts @@ -0,0 +1,43 @@ +#!/usr/bin/env node +/* + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0 + */ + +// This CDK app, in addition to provisioning necessary resources for CI checks +// and the canary, deploys a GihHub OIDC role to execute the canary from a CI +// in the `smithy-rs` repository. + +import "source-map-support/register"; +import { App } from "aws-cdk-lib"; +import { PullRequestCdnStack } from "../../lib/smithy-rs/pull-request-cdn-stack"; +import { CanaryStack, OidcProps } from "../../lib/canary-stack"; +import { OidcProviderStack } from "../../lib/oidc-provider-stack"; + +const app = new App({}); +const env = { region: "us-west-2" }; + +const oidcProviderStack = new OidcProviderStack(app, "oidc-provider-stack", { + env, +}); + +const githubActionsOidcProvider = oidcProviderStack.githubActionsOidcProvider; + +const oidcProps: OidcProps = { + roleId: "smithy-rs", + roleName: "smithy-rs-canary", + roleGithubOrg: "smithy-lang", + roleGithubRepo: "smithy-rs", + provider: githubActionsOidcProvider, +}; + +new PullRequestCdnStack(app, "smithy-rs-pull-request-cdn-stack", { + githubActionsOidcProvider: githubActionsOidcProvider, + env, +}); + +new CanaryStack(app, "smithy-rs-canary-stack", { + lambdaExecutionRole: "smithy-rs-canary-lambda-exec-role", + oidcProps, + env, +}); diff --git a/tools/ci-cdk/cdk.json b/tools/ci-cdk/cdk.json index 259156608..9eeabf8d4 100644 --- a/tools/ci-cdk/cdk.json +++ b/tools/ci-cdk/cdk.json @@ -1,5 +1,5 @@ { - "app": "npx ts-node --prefer-ts-exts bin/ci-cdk.ts", + "app": "npx ts-node --prefer-ts-exts bin/smithy-rs/ci-cdk.ts", "watch": { "include": [ "**" diff --git a/tools/ci-cdk/lib/aws-sdk-rust/canary-stack.ts b/tools/ci-cdk/lib/canary-stack.ts similarity index 78% rename from tools/ci-cdk/lib/aws-sdk-rust/canary-stack.ts rename to tools/ci-cdk/lib/canary-stack.ts index 423771723..16862e4de 100644 --- a/tools/ci-cdk/lib/aws-sdk-rust/canary-stack.ts +++ b/tools/ci-cdk/lib/canary-stack.ts @@ -16,25 +16,32 @@ import { BucketEncryption, CfnMultiRegionAccessPoint, } from "aws-cdk-lib/aws-s3"; -import { aws_s3express as s3express } from 'aws-cdk-lib'; -import { - CfnDirectoryBucket -} from "aws-cdk-lib/aws-s3express"; +import { CfnDirectoryBucket } from "aws-cdk-lib/aws-s3express"; import { StackProps, Stack, Tags, RemovalPolicy, Duration, CfnOutput } from "aws-cdk-lib"; import { Construct } from "constructs"; -import { GitHubOidcRole } from "../constructs/github-oidc-role"; +import { GitHubOidcRole } from "./constructs/github-oidc-role"; + +export interface OidcProps { + roleId: string; + roleName: string; + roleGithubOrg: string; + roleGithubRepo: string; + provider: OpenIdConnectProvider; +} export interface Properties extends StackProps { - githubActionsOidcProvider?: OpenIdConnectProvider; + lambdaExecutionRole: string; + oidcProps?: OidcProps; } export class CanaryStack extends Stack { - public readonly awsSdkRustOidcRole?: GitHubOidcRole; + public readonly githubOidcRole?: GitHubOidcRole; public readonly lambdaExecutionRole: Role; public readonly canaryCodeBucket: Bucket; public readonly canaryTestBucket: Bucket; public readonly canaryTestMrap: CfnMultiRegionAccessPoint; public readonly canaryTestExpressBucket: CfnDirectoryBucket; + public readonly canaryCdkOutputsBucket: Bucket; public readonly lambdaExecutionRoleArn: CfnOutput; public readonly canaryCodeBucketName: CfnOutput; @@ -48,16 +55,16 @@ export class CanaryStack extends Stack { // Tag the resources created by this stack to make identifying resources easier Tags.of(this).add("stack", id); - if (props.githubActionsOidcProvider) { - this.awsSdkRustOidcRole = new GitHubOidcRole(this, "aws-sdk-rust", { - name: "aws-sdk-rust-canary", - githubOrg: "awslabs", - githubRepo: "aws-sdk-rust", - oidcProvider: props.githubActionsOidcProvider, + if (props.oidcProps) { + this.githubOidcRole = new GitHubOidcRole(this, props.oidcProps.roleId, { + name: props.oidcProps.roleName, + githubOrg: props.oidcProps.roleGithubOrg, + githubRepo: props.oidcProps.roleGithubRepo, + oidcProvider: props.oidcProps.provider, }); // Grant permission to create/invoke/delete a canary Lambda - this.awsSdkRustOidcRole.oidcRole.addToPolicy( + this.githubOidcRole.oidcRole.addToPolicy( new PolicyStatement({ actions: [ "lambda:CreateFunction", @@ -72,7 +79,7 @@ export class CanaryStack extends Stack { ); // Grant permission to put metric data to CloudWatch - this.awsSdkRustOidcRole.oidcRole.addToPolicy( + this.githubOidcRole.oidcRole.addToPolicy( new PolicyStatement({ actions: ["cloudwatch:PutMetricData"], effect: Effect.ALLOW, @@ -104,9 +111,21 @@ export class CanaryStack extends Stack { }); // Allow the OIDC role to GetObject and PutObject to the code bucket - if (this.awsSdkRustOidcRole) { - this.canaryCodeBucket.grantRead(this.awsSdkRustOidcRole.oidcRole); - this.canaryCodeBucket.grantWrite(this.awsSdkRustOidcRole.oidcRole); + if (this.githubOidcRole) { + this.canaryCodeBucket.grantRead(this.githubOidcRole.oidcRole); + this.canaryCodeBucket.grantWrite(this.githubOidcRole.oidcRole); + } + + this.canaryCdkOutputsBucket = new Bucket(this, "canary-cdk-outputs-bucket", { + blockPublicAccess: BlockPublicAccess.BLOCK_ALL, + encryption: BucketEncryption.S3_MANAGED, + versioned: false, + removalPolicy: RemovalPolicy.DESTROY, + }); + + // Allow the OIDC role to GetObject from the cdk outputs bucket + if (this.githubOidcRole) { + this.canaryCdkOutputsBucket.grantRead(this.githubOidcRole.oidcRole); } // Create S3 bucket for the canaries to talk to @@ -149,10 +168,10 @@ export class CanaryStack extends Stack { }); } - this.canaryTestExpressBucket = new CfnDirectoryBucket(this, 'canary-test-express-bucket', { - dataRedundancy: 'SingleAvailabilityZone', - locationName: "usw2-az1", - }); + this.canaryTestExpressBucket = new CfnDirectoryBucket(this, "canary-test-express-bucket", { + dataRedundancy: "SingleAvailabilityZone", + locationName: "usw2-az1", + }); // Output the bucket name to make it easier to invoke the canary runner this.canaryTestExpressBucketName = new CfnOutput(this, "canary-test-express-bucket-name", { @@ -163,7 +182,7 @@ export class CanaryStack extends Stack { // Create a role for the canary Lambdas to assume this.lambdaExecutionRole = new Role(this, "lambda-execution-role", { - roleName: "aws-sdk-rust-canary-lambda-exec-role", + roleName: props.lambdaExecutionRole, assumedBy: new ServicePrincipal("lambda.amazonaws.com"), }); @@ -186,11 +205,13 @@ export class CanaryStack extends Stack { // Allow canaries to talk to their test bucket this.canaryTestBucket.grantReadWrite(this.lambdaExecutionRole); - this.lambdaExecutionRole.addToPolicy(new PolicyStatement({ - actions: ['s3:GetObject', 's3:PutObject', 's3:DeleteObject'], - effect: Effect.ALLOW, - resources: [`${canaryTestMrapBucketArn}`, `${canaryTestMrapBucketArn}/object/*`], - })); + this.lambdaExecutionRole.addToPolicy( + new PolicyStatement({ + actions: ["s3:GetObject", "s3:PutObject", "s3:DeleteObject"], + effect: Effect.ALLOW, + resources: [`${canaryTestMrapBucketArn}`, `${canaryTestMrapBucketArn}/object/*`], + }), + ); // Allow canaries to perform operations on test express bucket // Unlike S3, no need to grant separate permissions for GetObject, PutObject, and so on because @@ -198,19 +219,19 @@ export class CanaryStack extends Stack { // https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-security-iam.html#s3-express-security-iam-actions this.lambdaExecutionRole.addToPolicy( new PolicyStatement({ - actions: ['s3express:CreateSession'], + actions: ["s3express:CreateSession"], effect: Effect.ALLOW, resources: [`${this.canaryTestExpressBucket.attrArn}`], - }) + }), ); // Allow canaries to list directory buckets this.lambdaExecutionRole.addToPolicy( new PolicyStatement({ - actions: ['s3express:ListAllMyDirectoryBuckets'], + actions: ["s3express:ListAllMyDirectoryBuckets"], effect: Effect.ALLOW, resources: ["*"], - }) + }), ); // Allow canaries to call Transcribe's StartStreamTranscription @@ -232,8 +253,8 @@ export class CanaryStack extends Stack { ); // Allow the OIDC role to pass the Lambda execution role to Lambda - if (this.awsSdkRustOidcRole) { - this.awsSdkRustOidcRole.oidcRole.addToPolicy( + if (this.githubOidcRole) { + this.githubOidcRole.oidcRole.addToPolicy( new PolicyStatement({ actions: ["iam:PassRole"], effect: Effect.ALLOW, diff --git a/tools/ci-cdk/package-lock.json b/tools/ci-cdk/package-lock.json index abcc2cd24..ecdc4a10d 100644 --- a/tools/ci-cdk/package-lock.json +++ b/tools/ci-cdk/package-lock.json @@ -69,113 +69,42 @@ "dev": true }, "node_modules/@babel/code-frame": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz", - "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==", + "version": "7.24.2", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.2.tgz", + "integrity": "sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ==", "dev": true, "dependencies": { - "@babel/highlight": "^7.23.4", - "chalk": "^2.4.2" + "@babel/highlight": "^7.24.2", + "picocolors": "^1.0.0" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/code-frame/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/code-frame/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/code-frame/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/@babel/code-frame/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true - }, - "node_modules/@babel/code-frame/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/@babel/code-frame/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/code-frame/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/@babel/compat-data": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.5.tgz", - "integrity": "sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.24.1.tgz", + "integrity": "sha512-Pc65opHDliVpRHuKfzI+gSA4zcgr65O4cl64fFJIWEEh8JoHIHh0Oez1Eo8Arz8zq/JhgKodQaxEwUPRtZylVA==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { - "version": "7.24.0", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.0.tgz", - "integrity": "sha512-fQfkg0Gjkza3nf0c7/w6Xf34BW4YvzNfACRLmmb7XRLa6XHdR+K9AlJlxneFfWYf6uhOzuzZVTjF/8KfndZANw==", + "version": "7.24.3", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.3.tgz", + "integrity": "sha512-5FcvN1JHw2sHJChotgx8Ek0lyuh4kCKelgMTTqhYJJtloNvUfpAFMeNQUtdlIaktwrSV9LtCdqwk48wL2wBacQ==", "dev": true, "dependencies": { "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.23.5", - "@babel/generator": "^7.23.6", + "@babel/code-frame": "^7.24.2", + "@babel/generator": "^7.24.1", "@babel/helper-compilation-targets": "^7.23.6", "@babel/helper-module-transforms": "^7.23.3", - "@babel/helpers": "^7.24.0", - "@babel/parser": "^7.24.0", + "@babel/helpers": "^7.24.1", + "@babel/parser": "^7.24.1", "@babel/template": "^7.24.0", - "@babel/traverse": "^7.24.0", + "@babel/traverse": "^7.24.1", "@babel/types": "^7.24.0", "convert-source-map": "^2.0.0", "debug": "^4.1.0", @@ -207,14 +136,14 @@ } }, "node_modules/@babel/generator": { - "version": "7.23.6", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.6.tgz", - "integrity": "sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.1.tgz", + "integrity": "sha512-DfCRfZsBcrPEHUfuBMgbJ1Ut01Y/itOs+hY2nFLgqsqXd52/iSiVq5TITtUasIUgm+IIKdY2/1I7auiQOEeC9A==", "dev": true, "dependencies": { - "@babel/types": "^7.23.6", - "@jridgewell/gen-mapping": "^0.3.2", - "@jridgewell/trace-mapping": "^0.3.17", + "@babel/types": "^7.24.0", + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25", "jsesc": "^2.5.1" }, "engines": { @@ -281,12 +210,12 @@ } }, "node_modules/@babel/helper-module-imports": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz", - "integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==", + "version": "7.24.3", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.3.tgz", + "integrity": "sha512-viKb0F9f2s0BCS22QSF308z/+1YWKV/76mwt61NBzS5izMzDPwdq1pTrzf+Li3npBWX9KdQbkeCt1jSAM7lZqg==", "dev": true, "dependencies": { - "@babel/types": "^7.22.15" + "@babel/types": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -345,9 +274,9 @@ } }, "node_modules/@babel/helper-string-parser": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz", - "integrity": "sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.1.tgz", + "integrity": "sha512-2ofRCjnnA9y+wk8b9IAREroeUP02KHp431N2mhKniy2yKIDKpbrHv9eXwm8cBeWQYcJmzv5qKCu65P47eCF7CQ==", "dev": true, "engines": { "node": ">=6.9.0" @@ -372,13 +301,13 @@ } }, "node_modules/@babel/helpers": { - "version": "7.24.0", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.0.tgz", - "integrity": "sha512-ulDZdc0Aj5uLc5nETsa7EPx2L7rM0YJM8r7ck7U73AXi7qOV44IHHRAYZHY6iU1rr3C5N4NtTmMRUJP6kwCWeA==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.1.tgz", + "integrity": "sha512-BpU09QqEe6ZCHuIHFphEFgvNSrubve1FtyMton26ekZ85gRGi6LrTF7zArARp2YvyFxloeiRmtSCq5sjh1WqIg==", "dev": true, "dependencies": { "@babel/template": "^7.24.0", - "@babel/traverse": "^7.24.0", + "@babel/traverse": "^7.24.1", "@babel/types": "^7.24.0" }, "engines": { @@ -386,14 +315,15 @@ } }, "node_modules/@babel/highlight": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz", - "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==", + "version": "7.24.2", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.2.tgz", + "integrity": "sha512-Yac1ao4flkTxTteCDZLEvdxg2fZfz1v8M4QpaGypq/WPDqg3ijHYbDfs+LG5hvzSoqaSZ9/Z9lKSP3CjZjv+pA==", "dev": true, "dependencies": { "@babel/helper-validator-identifier": "^7.22.20", "chalk": "^2.4.2", - "js-tokens": "^4.0.0" + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" }, "engines": { "node": ">=6.9.0" @@ -471,9 +401,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.24.0", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.0.tgz", - "integrity": "sha512-QuP/FxEAzMSjXygs8v4N9dvdXzEHN4W1oF3PxuWAtPo08UdM17u89RDMgjLn/mlc56iM0HlLmVkO/wgR+rDgHg==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.1.tgz", + "integrity": "sha512-Zo9c7N3xdOIQrNip7Lc9wvRPzlRtovHVE4lkz8WEDr7uYh/GMQhSiIgFxGIArRHYdJE5kxtZjAf8rT0xhdLCzg==", "dev": true, "bin": { "parser": "bin/babel-parser.js" @@ -630,12 +560,12 @@ } }, "node_modules/@babel/plugin-syntax-typescript": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.23.3.tgz", - "integrity": "sha512-9EiNjVJOMwCO+43TqoTrgQ8jMwcAd0sWyXi9RPfIsLTj4R2MADDDQXELhffaUx/uJv2AYcxBgPwH6j4TIA4ytQ==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.24.1.tgz", + "integrity": "sha512-Yhnmvy5HZEnHUty6i++gcfH1/l68AHnItFHnaCv6hn9dNh0hQvvQJsxpi4BMBFN5DLeHBuucT/0DgzXif/OyRw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -659,18 +589,18 @@ } }, "node_modules/@babel/traverse": { - "version": "7.24.0", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.0.tgz", - "integrity": "sha512-HfuJlI8qq3dEDmNU5ChzzpZRWq+oxCZQyMzIMEqLho+AQnhMnKQUzH6ydo3RBl/YjPCuk68Y6s0Gx0AeyULiWw==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.1.tgz", + "integrity": "sha512-xuU6o9m68KeqZbQuDt2TcKSxUw/mrsvavlEqQ1leZ/B+C9tk6E4sRWy97WaXgvq5E+nU3cXMxv3WKOCanVMCmQ==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.23.5", - "@babel/generator": "^7.23.6", + "@babel/code-frame": "^7.24.1", + "@babel/generator": "^7.24.1", "@babel/helper-environment-visitor": "^7.22.20", "@babel/helper-function-name": "^7.23.0", "@babel/helper-hoist-variables": "^7.22.5", "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/parser": "^7.24.0", + "@babel/parser": "^7.24.1", "@babel/types": "^7.24.0", "debug": "^4.3.1", "globals": "^11.1.0" @@ -1278,9 +1208,9 @@ } }, "node_modules/@tsconfig/node10": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", - "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==", + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.10.tgz", + "integrity": "sha512-PiaIWIoPvO6qm6t114ropMCagj6YAF24j9OkCA2mJDXFnlionEwhsBCJ8yek4aib575BI3OkART/90WsgHgLWw==", "dev": true }, "node_modules/@tsconfig/node12": { @@ -1803,9 +1733,9 @@ "dev": true }, "node_modules/aws-cdk": { - "version": "2.131.0", - "resolved": "https://registry.npmjs.org/aws-cdk/-/aws-cdk-2.131.0.tgz", - "integrity": "sha512-ji+MwGFGC88HE/EqV6/VARBp5mu3nXIDa/GYwtGycJqu6WqXhNZXWeDH0JsWaY6+BSUdpY6pr6KWpV+MDyVkDg==", + "version": "2.133.0", + "resolved": "https://registry.npmjs.org/aws-cdk/-/aws-cdk-2.133.0.tgz", + "integrity": "sha512-EwH8VgQQ8ODeMwjE3p+WhbcbWNkCbvuJJl+Py9IB5znGf7GwLcEmOu4YWBsBGPVu41SXbSAf36twMBrJytCFZA==", "dev": true, "bin": { "cdk": "bin/cdk" @@ -1818,9 +1748,9 @@ } }, "node_modules/aws-cdk-lib": { - "version": "2.131.0", - "resolved": "https://registry.npmjs.org/aws-cdk-lib/-/aws-cdk-lib-2.131.0.tgz", - "integrity": "sha512-9XLgiTgY+q0S3K93VPeJO0chIN8BZwZ3aSrILvF868Dz+0NTNrD2m5M0xGK5Rw0uoJS+N+DvGaz/2hLAiVqcBw==", + "version": "2.133.0", + "resolved": "https://registry.npmjs.org/aws-cdk-lib/-/aws-cdk-lib-2.133.0.tgz", + "integrity": "sha512-5/ezv8Ir2xyz3myeXQcODwrjVRN/cDD2OpBwU/ySFBe+uNac25OoHfTXwUPwE7oLj9qetSt6/i1QvY2iIs6yiQ==", "bundleDependencies": [ "@balena/dockerignore", "case", @@ -2419,9 +2349,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001593", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001593.tgz", - "integrity": "sha512-UWM1zlo3cZfkpBysd7AS+z+v007q9G1+fLTUU42rQnY6t2axoogPW/xol6T7juU5EUoOhML4WgBIdG+9yYqAjQ==", + "version": "1.0.30001600", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001600.tgz", + "integrity": "sha512-+2S9/2JFhYmYaDpZvo0lKkfvuKIglrx68MwOBqMGHhQsNkLjB5xtc/TGoEPs+MxjSyN/72qer2g97nzR641mOQ==", "dev": true, "funding": [ { @@ -2747,9 +2677,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.4.690", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.690.tgz", - "integrity": "sha512-+2OAGjUx68xElQhydpcbqH50hE8Vs2K6TkAeLhICYfndb67CVH0UsZaijmRUE3rHlIxU1u0jxwhgVe6fK3YANA==", + "version": "1.4.716", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.716.tgz", + "integrity": "sha512-t/MXMzFKQC3UfMDpw7V5wdB/UAB8dWx4hEsy+fpPYJWW3gqh3u5T1uXp6vR+H6dGCPBxkRo+YBcapBLvbGQHRw==", "dev": true }, "node_modules/emittery": { @@ -3379,9 +3309,9 @@ } }, "node_modules/hasown": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.1.tgz", - "integrity": "sha512-1/th4MHjnwncwXsIW6QMzlvYL9kG5e/CpVvLRZe4XPa8TOUNbCELqmvhDmnkNsAjwaG4+I8gJJL0JBvTTLO9qA==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", "dev": true, "dependencies": { "function-bind": "^1.1.2" diff --git a/tools/ci-cdk/package.json b/tools/ci-cdk/package.json index dd991ee41..1b498ebce 100644 --- a/tools/ci-cdk/package.json +++ b/tools/ci-cdk/package.json @@ -3,12 +3,13 @@ "version": "0.1.0", "private": true, "bin": { - "rust-sdk-ci-cdk": "bin/ci-cdk.js" + "smithy-rs-ci-cdk": "bin/smithy-rs/ci-cdk.js", + "aws-rust-sdk-canary": "bin/aws-sdk-rust/canary.js" }, "scripts": { - "build": "tsc && cdk --app \"node build/bin/ci-cdk.js\" synth", + "build": "tsc && cdk --app \"node build/bin/smithy-rs/ci-cdk.js\" synth", "cdk": "cdk", - "deploy": "cdk --app \"node build/bin/ci-cdk.js\" deploy --outputs-file cdk-outputs.json --all", + "deploy": "cdk --app \"node build/bin/smithy-rs/ci-cdk.js\" deploy --outputs-file cdk-outputs.json --all", "format": "prettier --write '**/*.ts'", "lint": "eslint --ext .ts lib", "test": "jest",