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

xriantvc  于 2022-11-26  发布在  TypeScript
关注(0)|答案(2)|浏览(136)

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 deploycdk synth上自动合成的。我还采用了上面链接的repo中所示的示例,注解掉了app.synth()行,部署了它,并且它看起来像预期的那样工作。因此,我想知道,当谈到app.synth()的用途时,我是否遗漏了一些东西。

rjee0c15

rjee0c151#

cdk synth只构建您的CloudFormation模板。它不会将其部署(创建实际资源)到AWS。您可以使用构建的模板,在CFN控制台中手动部署,编辑或检查。
cdk deploy将构建模板并将其部署到AWS
人们将synthdeploy一起使用,因为这是一个很好的做法
在部署之前进行合成是可选的(尽管是一个很好的做法)。AWS CDK在每次部署之前合成您的堆栈。

e5nqia27

e5nqia272#

我知道这个问题已经有一段时间没有被问到了,但是我很好奇,我自己也研究了一下,所以我会和你分享。
(我还认为,目前公认的答案是关于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中的节点兼容层目前不支持“beforeExit”事件。
https://github.com/denoland/deno_std/blob/113435ada1948b90188586f022d55745c6d2d19b/node/process.ts#L51-L52
根据这一经验,最好按照建议显式调用app.synth()

相关问题