gpt4 book ai didi

aws-lambda - CDK本地测试,无服务器

转载 作者:行者123 更新时间:2023-12-03 07:13:10 24 4
gpt4 key购买 nike

我理想地希望有一种在部署之前测试 lambda 等的方法,以实现快速迭代开发。

曾尝试使用https://aws.amazon.com/blogs/compute/better-together-aws-sam-and-aws-cdk/但似乎这还不适用于 CDK 管道,因为 sam local 无法看到管道生成的嵌套 CDK。

有什么好的技巧或工具可以解决这个问题吗?

我是不是找错树了?我是否应该考虑直接在 AWS/cloud9 中开发 lambda

最佳答案

TLDR; 是的,您可以缩短 cdk 开发周期。保留产品部署的管道。对于开发,请使用 cdk-cli 将应用程序的副本部署到“沙盒”帐户。此沙箱非管道应用程序可以更快地部署到云并与 local lambda sam testing you mention 配合使用。

部署 #1:产品部署管道 正如您所看到的,我们通过 CDK 管道设置部署到我们的生产帐户。该管道在测试帐户中运行。

管道的 cdk.Stage 调用 makeAppStacks 函数,该函数封装了我们的堆栈定义。当我们定义非管道沙箱应用程序时,该函数在下面的 Deploy #2 中第二次出现。我们编写一次堆栈代码,但将其部署为管道和独立应用程序。

// DeployStage.ts
// The stage gets added to the pipeline for deploys to test, prod etc.

export class DeployStage extends cdk.Stage {
constructor(scope: cdk.Construct, id: string, props: DeployStageProps) {
super(scope, id, props);

// actually adds the stack constructs to the app
makeAppStacks(
this,
props.appName,
props.env.account,
props.env.region,
);
}
}

部署#2:cdk部署到沙盒帐户进行迭代开发。正如您所说,管道部署对于迭代开发来说太慢了 - 您不希望等待 15 分钟,让 CodePipeline 从存储库中提取、构建并部署功能分支中的每个细微更改。

因此,为了更快地开发,我们通过 CLI 将相同的堆栈部署到沙盒帐户,这样部署到云端的速度更快,并且可以使用本地 sam 调试。

# deploy the app to a sandbox account for fast(er) iterations
# app.ts uses the AWS_ACCOUNT env var to dynamically deploy
AWS_ACCOUNT=123456789000 npx cdk deploy '*' -a 'node ./bin/app' --profile my-sandbox
// bin/app.ts
// called from the cli, deploys to the sandbox account

const app = new App();

const account = process.env.AWS_ACCOUNT;

// reused stack definitions!
makeAppStacks(app, 'UnicornApp', account, 'us-east-1');

关于aws-lambda - CDK本地测试,无服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69827317/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com