如何解决部署 CFN 模板时资源之间的竞争条件?
我有一个模板,它设置了一个包含一些 Kinesis 流的堆栈、几个用于从 CloudWatch 订阅和处理事件的 Lambda,等等。
使用 this documentation 作为参考,我将目的地的定义添加到我的模板中:
LogDestination:
Properties:
DestinationName:
Ref: DestinationName
DestinationPolicy:
Fn::Sub:
- |-
{
"Version": "2012-10-17","Statement": [
{
"Effect": "Allow","Principal": {
"AWS": ["${AWS::AccountId}"]
},"Action": "logs:PutSubscriptionFilter","Resource": "arn:aws:logs:${AWS::Region}:${AWS::AccountId}:destination:${DestinationName}"
}
]
}
- DestinationName:
Ref: DestinationName
RoleArn:
Fn::GetAtt:
- KinesisRole
- Arn
TargetArn:
Fn::GetAtt:
- LogStream
- Arn
Type: AWS::Logs::Destination
现在,我的问题是: 当我尝试从头开始部署整个模板时,由于目标无效/不存在,它失败并显示状态 400(“无效参数”)。
然而;如果我在没有 LogDestination
的情况下部署堆栈,然后将 LogDestination
作为第二个更改集部署,它会起作用。
那么在 CloudFormation 中是否有可能存在“竞争条件”?如果是这样;我该如何解决?
解决方法
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。