AWS Cloudformation - WaitCondition
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了AWS Cloudformation - WaitCondition相关的知识,希望对你有一定的参考价值。
前面简单的学习了一下 Help scripts,他主要使用场景在于EC2和Auto Scaling里面安装配置各种服务和程序,然后我们通过creationpolicy 来获取cfn-signal脚本发送的信号。类似的,如果我们需要控制其他资源之间的优先顺序,我们一般使用dependson 和 waitcondition 来实现。 dependson本身可以实现创建的顺序,但是他并不管成功与否。waitcondition的使用可以暂时停止整个stack的创建,直到获取了成功的信号才会继续他的官方文档在这里
https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-waitcondition.html
那么如何使用呢?下面是一个总结:
- wait condition本身就是一个resource,而不是像creationpolicy 只是一个resource的属性。
- 我们可以通过timeout来设置超时时间,最长可以是12个小时
- 我们通过dependson 属性来指定依赖关系,比如我可以指定在成功创建RDS之后,才能创建EC2来访问数据库
- Wait Handler 会创建一个 presigned URL,这个URL用来接收信号。因为他本身就是resource,我们可以通过内置函数获取到这个URL,甚至手动通过http 的POST 的方法发送信号
- wait condition的结果无非三种,获取所有的成功信号;超时;获取到失败的信号
下面直接通过一个例子来说明
AWSTemplateFormatVersion: ‘2010-09-09‘
Mappings:
RegionMap:
us-east-1:
AMI: ami-0ff8a91507f77f867
us-west-1:
AMI: ami-0bdb828fd58c52235
eu-west-1:
AMI: ami-047bb4163c506cd98
ap-northeast-1:
AMI: ami-06cd52961ce9f0d85
ap-southeast-1:
AMI: ami-08569b978cc4dfa10
Resources:
Ec2Instance:
Type: AWS::EC2::Instance
Properties:
UserData:
Fn::Base64: !Ref myWaitHandle
ImageId:
Fn::FindInMap:
- RegionMap
- Ref: AWS::Region
- AMI
myWaitHandle:
Type: AWS::CloudFormation::WaitConditionHandle
Properties: {}
myWaitCondition:
Type: AWS::CloudFormation::WaitCondition
DependsOn: Ec2Instance
Properties:
Handle: !Ref myWaitHandle
Timeout: ‘4500‘
Outputs:
ApplicationData:
Value: !GetAtt myWaitCondition.Data
Description: The data passed back as part of signalling the WaitCondition.
执行效果
以上是关于AWS Cloudformation - WaitCondition的主要内容,如果未能解决你的问题,请参考以下文章
将现有 AWS 资源整合到 CloudFormation 堆栈中
CloudFormation - 将标签应用于其他 AWS 资源
AWS CloudFormation:Cognito LambdaTrigger CustomEmailSender - 属性“AWS CloudFormation 目前不支持。”和 CDK 的使用