javascript - AWS CDK 中 app.synth() 的用途是什么?

标签 javascript typescript amazon-web-services aws-cloudformation aws-cdk

AWS CDK 应用程序中 app.synth() 行的用途是什么?例如,可以在第 29 行看到: https://github.com/aws-samples/aws-cdk-examples/blob/master/typescript/ecs/fargate-application-load-balanced-service/index.ts

我查看了 CDK 文档,但找不到该函数的实际用途。据我了解,该应用程序是在cdk部署cdk Synth上自动合成的。我还采用了上面链接的存储库中显示的示例,注释掉了 app.synth() 行,部署了它,它似乎按预期工作。因此,我想知道在谈到 app.synth() 的目的时我是否遗漏了一些东西

最佳答案

我知道这个问题已经有一段时间了,但我很好奇并且自己研究过,所以我会与您分享。
(我还认为当前接受的答案是关于 CDK CLI 而不是关于 CDK 应用程序代码。)

App 类有一个名为 autoSynth 的选项,默认情况下设置为 true,因此即使您省略 app.在您的代码中使用synth(),它将自动执行。
https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.AppProps.html#autosynth

正如文档中提到的,此功能可能无法在某些语言中使用,因此许多示例代码中似乎都明确指定了该功能。

根据文档,多次运行 app.synth() 是可以的。
https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.App.html#synthoptions

autoSynth 在 Node.js 上运行良好。 它是在 Node.js 中使用 process.once("beforeExit", Listener) 实现的。
https://github.com/aws/aws-cdk/blob/v2.51.1/packages/@aws-cdk/core/lib/app.ts#L166-L170

我开始这项调查是因为当我在 Deno 中运行 CDK 时,我必须显式运行 app.synth() 来生成 CDK 程序集。经过调查,我发现这是因为 Deno 中的 Node 兼容层当前不支持“beforeExit”事件。
https://github.com/denoland/deno_std/blob/113435ada1948b90188586f022d55745c6d2d19b/node/process.ts#L51-L52

根据此经验,最好按照建议显式调用 app.synth()

关于javascript - AWS CDK 中 app.synth() 的用途是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68434528/

相关文章:

javascript - 如何使用 AWS 设置 AngularJS 应用程序?

amazon-web-services - 通过 cloudformation 对 AWS Lambda 的容器镜像支持

javascript - 在 Google Apps 脚本中返回空值

typescript - 如何在 TypeScript 中指定类型化对象文字?

javascript - 不同的元素正在接收点击,即使 Xpath 是正确且唯一的(Protractor)

typescript - 我应该排除模块化 Typescript 项目的依赖项吗?

amazon-web-services - Cloudformation 自动获取默认实例配置文件

javascript - 平衡性能繁重的程序与实时鼠标输入

javascript - 检索最后 5 条未读消息

javascript - 没有重复链接的响应式导航?