更新我的堆栈后运行 cdk deploy:
export function createTaskXXXX (stackScope: Construct, workflowContext: WorkflowContext) {
const lambdaXXXX = new lambda.Function(stackScope, 'XXXXFunction', {
runtime: Globals.LAMBDA_RUNTIME,
memorySize: Globals.LAMBDA_MEMORY_MAX,
code: lambda.Code.fromAsset(CDK_MODULE_ASSETS_PATH),
handler: 'xxxx-handler.handler',
timeout: Duration.minutes(Globals.LAMBDA_DURATION_2MIN),
environment: {
YYYY_ENV: (workflowContext.production) ? 'prod' : 'test',
YYYY_A_LOCATION: `s3://${workflowContext.S3ImportDataBucket}/adata-workflow/split-input/`,
YYYY_B_LOCATION: `s3://${workflowContext.S3ImportDataBucket}/bdata-workflow/split-input/` <--- added
}
})
lambdaXXXX.addToRolePolicy(new iam.PolicyStatement({
effect: Effect.ALLOW,
actions: ['s3:PutObject'],
resources: [
`arn:aws:s3:::${workflowContext.S3ImportDataBucket}/adata-workflow/split-input/*`,
`arn:aws:s3:::${workflowContext.S3ImportDataBucket}/bdata-workflow/split-input/*` <---- added
]
}))
Run Code Online (Sandbox Code Playgroud)
我意识到这些更改不会在 stack.template.json 中更新:
...
"Runtime": "nodejs12.x",
"Environment": {
"Variables": {
"YYYY_ENV": "test",
"YYYY_A_LOCATION": "s3://.../adata-workflow/split-input/"
}
},
"MemorySize": 3008,
"Timeout": 120
}
...
Run Code Online (Sandbox Code Playgroud)
我已经清理了 cdk.out 并尝试了部署 --force,但从未看到任何更新。
是删除堆栈并重新部署唯一的最终替代方案,还是我遗漏了什么?我认为至少在合成器应该产生不同的结果。
(我还在本地系统中更改为 cdk 1.65.0 以匹配 package.json)谢谢。
编辑:我 git 克隆了该项目,并再次安装了 npm 和 cdk 合成器,终于看到了更改,我不想每次都这样做,有什么可能阻止正确的合成器生成吗?
编辑2:在对合成器工作的坏旧项目和来自git的新项目进行比较之后,我意识到我的一些具有.ts的项目文件(例如cdk.ts我的应用程序定义)也具有带有.js和.js的副本。 d.ts.,例如 cdk.js 和 cdk.d.ts。我是否错误地运行了一些编译 Typescript 的命令,我将继续调查,感谢所有答案。
由于 CDK 使用 Cloudformation,因此它会执行操作来确定 ChangeSet。这就是说,如果它认为没有任何改变,它就不会改变该资源。
当然,这可能非常烦人,因为有时它认为它是相同的,并且在实际发生更改时不会更新 - 我发现这最常见于图层并使用某种形式的 make 文件来生成图层的 zip 。即使它创建了一个“新”zip,无论它使用什么来确定 zip 是否已更新,都会将其召回为相同的,因为......无论使用什么压缩/哈希/等更改。
您可以通过使用日期时间更新描述来解决此问题。它分配在合成器(这是 cdk 部署的一部分),因此如果您执行日期时间的当前 now()
您还可以使用它cdk diff来查看它认为的更改是什么。
最后...始终记住在部署之前保存文件,因为根据您的 IDE,它可能无法在命令行中使用;)
| 归档时间: |
|
| 查看次数: |
10716 次 |
| 最近记录: |