Amazon web services “云形成”;“创意政策”;属性不工作
我在AWS网站上找到了一篇精彩的文档,介绍了如何在第二个实例开始出现之前将一个实例完全设置好。在 文档使用CreationPolicy属性和cfn信号通知AWS Cloudformation Instance1已出现。我试过密码。它运行。但问题是Instance2首先出现,而不是等待Instance1出现。这是代码,我在实例出现时附上了屏幕截图Amazon web services “云形成”;“创意政策”;属性不工作,amazon-web-services,amazon-ec2,aws-lambda,amazon-cloudformation,Amazon Web Services,Amazon Ec2,Aws Lambda,Amazon Cloudformation,我在AWS网站上找到了一篇精彩的文档,介绍了如何在第二个实例开始出现之前将一个实例完全设置好。在 文档使用CreationPolicy属性和cfn信号通知AWS Cloudformation Instance1已出现。我试过密码。它运行。但问题是Instance2首先出现,而不是等待Instance1出现。这是代码,我在实例出现时附上了屏幕截图 { "AWSTemplateFormatVersion": "2010-09-09", "Description": "EC2 Head Node In
{
"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"}
]
}
}
}
{
“AWSTemplateFormatVersion”:“2010-09-09”,
“说明”:“EC2头节点实例”,
“资源”:{
“EC2安装1”:{
“类型”:“AWS::EC2::实例”,
“创意政策”:{
“资源信号”:{
“超时”:“PT10M”,
“计数”:“1”
}
},
“财产”:{
“ImageId”:“ami-3723c04f”,
“用户数据”:{
“Fn::Base64”:{
“Fn::Join”:[“”[
“\n”,
“cfn-signal.exe-e 0”,
--stack“,{“Ref”:“AWS::StackName”},
“--资源EC2安装1”,
--region“,{”Ref:“AWS::region”},“\n”,
“\n”
]
]
}
},
“标签”:[
{“键”:“名称”,“值”:“QRM头节点”}
]
}
},
“EC2Instance2”:{
“类型”:“AWS::EC2::实例”,
“财产”:{
“ImageId”:“ami-3723c04f”,
“标记”:[{“键”:“依赖项”,“值”:“EC2Instance1”}
]
}
}
}
}您必须指定属性
"EC2Instance2": {
"DependsOn": "EC2Instance1",
"Type": "AWS::EC2::Instance",
"Properties": {
"ImageId": "ami-3723c04f",
"Tags" : [{"Key" : "Dependency", "Value" : "EC2Instance1"}
]
}
}
上面的代码片段应该可以解决您的问题
编辑-1:cfn信号+DependsOn
创建一个cfn信号,以便在Ec2Instance1上的安装完成后发送信号。请参阅
现在,创建一个AWS::CloudFormation::WaitCondition
,并在Ec2Instance2中引用它。这是一个关于如何在模板中集成WaitConditions的文档。您必须指定属性
"EC2Instance2": {
"DependsOn": "EC2Instance1",
"Type": "AWS::EC2::Instance",
"Properties": {
"ImageId": "ami-3723c04f",
"Tags" : [{"Key" : "Dependency", "Value" : "EC2Instance1"}
]
}
}
上面的代码片段应该可以解决您的问题
编辑-1:cfn信号+DependsOn
创建一个cfn信号,以便在Ec2Instance1上的安装完成后发送信号。请参阅
现在,创建一个
AWS::CloudFormation::WaitCondition
,并在Ec2Instance2中引用它。这是一个关于如何在模板中集成WaitConditions的文档。如果我们使用“DependsOn”属性确保EC2Instance2仅在EC2Instance1之后出现,在userdata部分使用cfn信号来通知EC1已启动有什么用?使用DependsOn
将确保EC2安装2仅在“创建”EC2安装1后才会启动。另一方面,如果您想在EC2Instance1中进行一些设置,可以使用“cfn信号”,比如说安装所需的软件等,EC2Instance2只有在这些安装完成后才会出现。在这种情况下,可以使用“cfn信号”。基于您的问题,我认为“DependsOn”符合您的要求。让我告诉您,如果我错了,请纠正我。因此,如果我使用cfn信号在我的EC2Instance1上进行安装,我会告诉AWS cloudformation在EC2Instance1状态变为“已完成”之前等待所有步骤完成。对吗?现在转到“依赖”属性有助于EC2Instance1等待Ec2Instance2出现。我得到它的属性了吗?我将ans中的工作流程更新为编辑。让我知道这是否有帮助。如果我们通过使用“DependsOn”属性确保EC2Instance2仅在EC2Instance1之后出现,那么在userdata部分使用cfn信号来通知EC1已出现有什么用?使用DependsOn
将确保EC2Instance2仅在EC2Instance1“创建”之后出现。另一方面,如果您想在EC2Instance1中进行一些设置,可以使用“cfn信号”,比如说安装所需的软件等,EC2Instance2只有在这些安装完成后才会出现。在这种情况下,可以使用“cfn信号”。基于您的问题,我认为“DependsOn”符合您的要求。让我告诉您,如果我错了,请纠正我。因此,如果我使用cfn信号在我的EC2Instance1上进行安装,我会告诉AWS cloudformation在EC2Instance1状态变为“已完成”之前等待所有步骤完成。对吗?现在转到“依赖”属性有助于EC2Instance1等待Ec2Instance2出现。我得到它的属性了吗?我将ans中的工作流程更新为编辑。如果有帮助,请告诉我。