Amazon web services “云形成”;“创意政策”;属性不工作

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

我在AWS网站上找到了一篇精彩的文档,介绍了如何在第二个实例开始出现之前将一个实例完全设置好。在

文档使用CreationPolicy属性和cfn信号通知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"}            
            ]

        }
    }


}
{
“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中的工作流程更新为编辑。如果有帮助,请告诉我。