我有一个 AWS Cdk 部署程序应用程序,它在 AWS 中部署了多个资源。该应用程序使用一个配置文件作为输入文件,并使用该文件在 Fargate 集群中部署多个 was ecs 任务,并将它们放置在应用程序负载均衡器后面。
有什么方法可以获取我运行时正在部署的所有组件/AWS 服务
cdk deploy --all
。我试图在不使用单独的 boto3 函数的情况下了解 cdk 是否提供了任何方法。
合成后,来自
cdk.out
CloudAssembly:
import aws_cdk.cx_api as cx_api
cloud_assembly = cx_api.CloudAssembly("cdk.out")
resources = [stack.template["Resources"] for stack in cloud_assembly.stacks]
部署后,使用 DescribeStackResources 或 ListStackResources API:
aws cloudformation describe-stack-resources --stack-name MyStack
两者都返回 CloudFormation 资源信息列表,但内容不同。
CloudAssembly
资源来自cdk synth
生成的本地模板。 从 boto3 或 CLI 返回的资源是已部署的具有解析名称的云资源。
第 1 步:获取
cdk deploy
将部署的所有 CloudFormation-TEMPLATES 的列表。示例:bash:
ls cdk.out/*.template.json
示例:bash(对于 CodePipeline 阶段):ls cdk.out/asset.*/*.template.json
第 2 步:使用 bash/gnu:
for f in $(ls cdk.out/*.template.json); do grep '"Type": ' "${f}"; done
如果您是优秀的 python 开发人员,则可以轻松地用 python 重写上述 bash 命令并以更好的方式进行格式化。