Amazon web services 什么';CreationPolicy和DependsOn属性在CloudFormation中的区别是什么?
有人能用一个简单易懂的例子解释一下CloudFormation中CreationPolicy和DependsOn属性之间的区别吗?几乎没有。关键是:Amazon web services 什么';CreationPolicy和DependsOn属性在CloudFormation中的区别是什么?,amazon-web-services,amazon-cloudformation,Amazon Web Services,Amazon Cloudformation,有人能用一个简单易懂的例子解释一下CloudFormation中CreationPolicy和DependsOn属性之间的区别吗?几乎没有。关键是: 仅适用于三个资源(AutoScalingGroup、Instance和WaitCondition),而可用于任何资源 CreationPolicy的主要目的是等待实例发出的“信号”。使用CFN创建实例时,可以将引导脚本添加到用户数据中。例如,安装一些软件包,设置一些配置文件。CFN不检查引导脚本是否成功执行。这是有问题的,因为您的引导脚本可能会失
- 仅适用于三个资源(AutoScalingGroup、Instance和WaitCondition),而可用于任何资源
的主要目的是等待实例发出的“信号”。使用CFN创建实例时,可以将引导脚本添加到用户数据中。例如,安装一些软件包,设置一些配置文件。CFN不检查引导脚本是否成功执行。这是有问题的,因为您的引导脚本可能会失败,而您要等到太晚才知道这一点。要解决此问题,可以将CreationPolicy
添加到实例中,以便它等待来自实例的消息。这样,引导脚本就可以向CFN发出信号,表明脚本执行成功CreationPolicy
的主要目的是相对排序CFN中的资源创建。就其性质而言,CFN试图并行地创建资源。这可能会导致问题,例如,如果您的实例需要事先创建其他资源(例如RDS数据库)。在这种情况下,您可以告诉CFN只有在成功创建RDS数据库后才能创建实例DependsOn
- 仅适用于三个资源(AutoScalingGroup、Instance和WaitCondition),而可用于任何资源
的主要目的是等待实例发出的“信号”。使用CFN创建实例时,可以将引导脚本添加到用户数据中。例如,安装一些软件包,设置一些配置文件。CFN不检查引导脚本是否成功执行。这是有问题的,因为您的引导脚本可能会失败,而您要等到太晚才知道这一点。要解决此问题,可以将CreationPolicy
添加到实例中,以便它等待来自实例的消息。这样,引导脚本就可以向CFN发出信号,表明脚本执行成功CreationPolicy
的主要目的是相对排序CFN中的资源创建。就其性质而言,CFN试图并行地创建资源。这可能会导致问题,例如,如果您的实例需要事先创建其他资源(例如RDS数据库)。在这种情况下,您可以告诉CFN只有在成功创建RDS数据库后才能创建实例DependsOn
- 几乎没有。关键是:
AWS::AutoScaling::AutoScalingGroup
AWS::EC2::Instance
AWS::CloudFormation::WaitCondition.
例如,如果在EC2实例上安装和配置软件应用程序,则可能希望这些应用程序在继续之前运行。在这种情况下,您可以向实例添加CreationPolicy属性,然后在安装和配置应用程序后向实例发送成功信号
下面的示例在从cfn信号接收到3个信号之前不会创建资源自动缩放
"AutoScalingGroup": {
"Type": "AWS::AutoScaling::AutoScalingGroup",
"Properties": {
"AvailabilityZones": { "Fn::GetAZs": "" },
"LaunchConfigurationName": { "Ref": "LaunchConfig" },
"DesiredCapacity": "3",
"MinSize": "1",
"MaxSize": "4"
},
"CreationPolicy": {
"ResourceSignal": {
"Count": "3",
"Timeout": "PT15M"
}
}
}
},
"LaunchConfig": {
"Type": "AWS::AutoScaling::LaunchConfiguration",
"Properties": {
"ImageId": "ami-16d18a7e",
"InstanceType": "t2.micro",
"UserData": {
"Fn::Base64": {
"Fn::Join" : [ "", [
"#!/bin/bash -xe\n",
"yum install -y aws-cfn-bootstrap\n",
"/opt/aws/bin/cfn-signal -e 0 --stack ", { "Ref": "AWS::StackName" },
" --resource AutoScalingGroup ",
" --region ", { "Ref" : "AWS::Region" }, "\n"
] ]
}
}
}
}
取决于
使用DependsOn属性,可以指定特定资源的创建遵循另一个资源的创建。将DependsOn属性添加到资源时,仅在创建DependsOn属性中指定的资源后才创建该资源
这可用于:
AWS::AutoScaling::AutoScalingGroup
AWS::EC2::Instance
AWS::CloudFormation::WaitCondition.
例如,如果在EC2实例上安装和配置软件应用程序,则可能希望这些应用程序在继续之前运行。在这种情况下,您可以向实例添加CreationPolicy属性,然后在安装和配置应用程序后向实例发送成功信号
下面的示例在从cfn信号接收到3个信号之前不会创建资源自动缩放
"AutoScalingGroup": {
"Type": "AWS::AutoScaling::AutoScalingGroup",
"Properties": {
"AvailabilityZones": { "Fn::GetAZs": "" },
"LaunchConfigurationName": { "Ref": "LaunchConfig" },
"DesiredCapacity": "3",
"MinSize": "1",
"MaxSize": "4"
},
"CreationPolicy": {
"ResourceSignal": {
"Count": "3",
"Timeout": "PT15M"
}
}
}
},
"LaunchConfig": {
"Type": "AWS::AutoScaling::LaunchConfiguration",
"Properties": {
"ImageId": "ami-16d18a7e",
"InstanceType": "t2.micro",
"UserData": {
"Fn::Base64": {
"Fn::Join" : [ "", [
"#!/bin/bash -xe\n",
"yum install -y aws-cfn-bootstrap\n",
"/opt/aws/bin/cfn-signal -e 0 --stack ", { "Ref": "AWS::StackName" },
" --resource AutoScalingGroup ",
" --region ", { "Ref" : "AWS::Region" }, "\n"
] ]
}
}
}
}
取决于
使用DependsOn属性,可以指定特定资源的创建遵循另一个资源的创建。将DependsOn属性添加到资源时,仅在创建DependsOn属性中指定的资源后才创建该资源
这可用于: