Атрибут Cloudformation "CreationPolicy" не работает
На сайте AWS я обнаружил замечательную документацию о том, как полностью создать и подготовить один экземпляр, прежде чем начнет работать второй. Это по адресу https://aws.amazon.com/blogs/devops/tag/cloudformation/page/2/
Документация использует атрибут CreationPolicy и cfn-signal для уведомления AWS Cloudformation о появлении Instance1. Я попробовал код. Это работает. Но проблема в том, что Instance2 появляется первым, а не ждет, пока появится Instance1. Это код, и я прикрепил снимок экрана, когда появляются экземпляры.
{
"AWSTemplateFormatVersion": "2010-09-09",
"Description": "EC2 Head Node Instance ",
"Resources": {
"EC2Instance1": {
"Type": "AWS::EC2::Instance",
"CreationPolicy" : {
"ResourceSignal" : {
"Timeout": "PT10M",
"Count" : "1"
}
},
"Properties": {
"ImageId": "ami-3723c04f",
"UserData":{
"Fn::Base64":{
"Fn::Join": ["", [
"<script>\n",
"cfn-signal.exe -e 0 ",
" --stack ", {"Ref" : "AWS::StackName"},
" --resource EC2Instance1",
" --region ", {"Ref" : "AWS::Region"}, "\n" ,
"</script>\n"
]
]
}
},
"Tags" : [
{"Key" : "Name", "Value" : "QRM Head Node"}
]
}
},
"EC2Instance2": {
"Type": "AWS::EC2::Instance",
"Properties": {
"ImageId": "ami-3723c04f",
"Tags" : [{"Key" : "Dependency", "Value" : "EC2Instance1"}
]
}
}
}
1 ответ
Вы должны указать DependsOn атрибут.
"EC2Instance2": {
"DependsOn": "EC2Instance1",
"Type": "AWS::EC2::Instance",
"Properties": {
"ImageId": "ami-3723c04f",
"Tags" : [{"Key" : "Dependency", "Value" : "EC2Instance1"}
]
}
}
Выше фрагмент кода должен решить проблему.
Edit-1: CFN-сигнал + DependsOn
Создайте сигнал cfn для отправки сигналов после завершения установки на Ec2Instance1. Пожалуйста, обратитесь к документации cfn-signal.
Теперь создайте AWS::CloudFormation::WaitCondition
и передать его в Ec2Instance2. Вот документ о том, как интегрировать WaitConditions в ваш шаблон cfn-wait-condition.