mirror of https://github.com/smithy-lang/smithy-rs
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._
This commit is contained in:
parent
4fa38c404b
commit
f5f94a21e6
|
@ -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:
|
||||
|
|
|
@ -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,
|
||||
});
|
|
@ -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,
|
||||
});
|
|
@ -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,
|
||||
});
|
|
@ -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,
|
||||
});
|
|
@ -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,
|
||||
});
|
|
@ -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": [
|
||||
"**"
|
||||
|
|
|
@ -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,8 +168,8 @@ export class CanaryStack extends Stack {
|
|||
});
|
||||
}
|
||||
|
||||
this.canaryTestExpressBucket = new CfnDirectoryBucket(this, 'canary-test-express-bucket', {
|
||||
dataRedundancy: 'SingleAvailabilityZone',
|
||||
this.canaryTestExpressBucket = new CfnDirectoryBucket(this, "canary-test-express-bucket", {
|
||||
dataRedundancy: "SingleAvailabilityZone",
|
||||
locationName: "usw2-az1",
|
||||
});
|
||||
|
||||
|
@ -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'],
|
||||
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,
|
|
@ -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"
|
||||
|
|
|
@ -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",
|
||||
|
|
Loading…
Reference in New Issue