我正在尝试根据映射中的内容在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中使用吗?谢谢。
答案 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);