diff --git a/tools/ci-cdk/README.md b/tools/ci-cdk/README.md index 34c78d6ea2..684a06e550 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 0000000000..89365569d4 --- /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 0000000000..fcede0ec84 --- /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 3db652f100..0000000000 --- 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 d20fa053f9..1f9c420b90 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 0000000000..3f9a83f108 --- /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 259156608c..9eeabf8d4a 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 4237717233..16862e4dec 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 abcc2cd24b..ecdc4a10dd 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 dd991ee413..1b498ebce1 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",