使用CDK动态生成cloudformation资源

时间:2020-03-03 23:44:58

标签: amazon-cloudformation aws-cdk

我正在尝试根据映射中的内容在CDK中动态生成SNS订阅。最好的方法是在这里做什么?我有一些映射,它们实际上映射了我的队列要在每个区域/阶段中订阅的SNS主题ARN。映射看起来像这样:

    CryptoPP::CBC_Mode<CryptoPP::AES>::Decryption decryption( ( byte* )key.data(), key.size(), ( byte* )iv.data() );

我如何用CDK编写代码来为此处列表中的每个元素创建订阅?我无法使常规循环正常工作,因为在部署之前我们不知道列表的大小。在CDK合成之后,它只会给我诸如"Mappings": "SomeArnMap": "eu-west-1": "beta": - "arn:aws:sns:us-west-2:0123456789:topic1" "gamma": - "arn:aws:sns:us-west-2:0123456789:topic2" - "arn:aws:sns:us-west-2:0123456789:topic3" 之类的令牌作为我的主题ARN。

它甚至可以在CDK / CloudFormation中使用吗?谢谢。

1 个答案:

答案 0 :(得分:0)

由于在aws-cdk代码的运行期间无法解析令牌,因此通常可以使用cfn内在函数,该函数在模板中的令牌上声明某种排序操作。这些可以在@aws-cdk/core.fn中访问。但是,cfn没有用于循环值的内在函数,仅从列表/映射中选择值。

如果您的cdk在其输出模板中具有这些映射,并且您只想在构建另一个结构Fn.findInMap时提取一个值以供参考,

const importedTopic = Sns.Topic.fromTopicArn(this, "ImportedTopicId", Fn.findInMap("SomeArnMap", "eu-west-1", "beta"));
importedTopic.addSubscription(SomeSqsQueueOrSomething);