【发布时间】:2021-09-27 14:04:42
【问题描述】:
我正在编写一个在cdk deploy 之后利用 CloudFormation 输出的工具,然后使用基于这些输出的配置文件设置开发环境。
在每个核心基础架构组件(auth、db、webapp、存储等)的末尾,我有一个 CfnOutput 构造,如下所示:
cdk.CfnOutput(
self, 'UserPoolID',
value=self.user_pool.user_pool_id,
)
输出类似的东西
Stack.AuthUserPoolIDABC1234 = s1lvgk44ul23ahfd91p4rdngnf
我的目标是将该值 (s1lvgk44ul23ahfd91p4rdngnf) 连同来自其他 CloudFormation 输出的其他值一起放入配置文件 config.js。
所以我在CfnOutput 周围写了一个包装器,如下所示:
import os
def cfn_output(scope, prefix, name, value):
cdk.CfnOutput(
scope, name,
value=value,
)
# Save name and value to flat files so that we can read them in other processes
os.makedirs('.tmp', exist_ok=True)
with open(os.path.join('.tmp', f'{prefix}{name}.txt'), 'w') as f:
f.write(value)
所以我用它代替了CfnOutput,就像这样:
cfn_output(
scope=self,
prefix='Auth',
name='UserPoolID',
value=self.user_pool.user_pool_id
)
当我运行cdk synth时,生成的文件(.tmp/AuthUserPoolID.txt)有这样的内容:
${Token[TOKEN.249]}
这显然不是我预期的s1lvgk44ul23ahfd91p4rdngnf。
有任何解决方案或变通方法可以将该令牌解析为可用的东西,或者可能是完全不同的解决方案?
【问题讨论】:
标签: python amazon-web-services amazon-cloudformation aws-cdk