如何将CDK生成的资源名称传递给应用代码?最佳实践咨询
同一代码仓库中跨应用获取CDK自动生成S3桶名的最佳实践
假设你有一个CDK应用,部署了一个名称自动生成的S3存储桶,同一代码仓库内的另一个应用需要获取这个桶的名称,以下是几种可行方案及当前实践:
考虑的方案
方案1:硬编码cdk synth输出值
需要通过逻辑ID拼接资源的物理ID,属于取巧手段,而且对导入到堆栈中、只能在AWS控制台查看物理ID的资源无效。方案2:定义堆栈输出并通过CLI获取值
起初考虑硬编码cdk deploy给出的值,但后来发现用aws cloudformation describe-stacks是更优选择,目前正在实施这个方案:通过以下命令将输出导出为JSON文件,存入代码仓库供其他应用导入使用:aws cloudformation describe-stacks --stack-name CommonStack | jq '.Stacks[0].Outputs | map({ (.OutputKey): .OutputValue }) | add'输出示例:
{ "MyBucketName": "my-bucket-name" }方案3:通过SSM参数存储资源ID
在CDK堆栈中定义SSM参数,将存储桶名称注入这些参数里,但需要在应用代码发布的部署阶段从远程服务获取值,而我并不依赖远程服务做配置。
补充说明
亚马逊官方文档不建议硬编码配置,目的是方便在其他AWS账户或区域部署应用实例,但对小型企业来说这种设计有些冗余,我并不反对硬编码非机密类配置。
内容的提问来源于stack exchange,提问作者Alexei Boronine
相关产品推荐
相关产品推荐

