app.synth()行在AWS应用程序中的用途是什么?例如,可以在第29行看到它:https://github.com/aws-samples/aws-cdk-examples/blob/master/typescript/ecs/fargate-application-load-balanced-service/index.ts
我看过CDK文档,但找不到该函数的实际用途。据我所知,这个应用程序是在cdk deploy或cdk synth上自动合成的。我还以上面链接的repo中的例子为例,注释掉了app.synth()行,部署了它,并且它看起来像预期的那样工作。因此,我想知道,当涉及到app.synth()的目的时,我是否遗漏了什么东西?
发布于 2021-07-19 03:49:06
发布于 2022-07-20 07:22:13
我知道有一段时间没有问这个问题了,但我很好奇,自己也研究过,所以我会和你们分享。
(我还认为当前被接受的答案是关于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“事件。
std/blob/113435ada1948b90188586f022d55745c6d2d19b/node/process.ts#L51-L52
根据这一经验,最好按照推荐的方式显式调用app.synth()。
https://stackoverflow.com/questions/68434528
复制相似问题