Amazon web services AWS Cloudformation模板,带有来自当前CFT的变量
在应用新的变更集模板时,我很难弄清楚如何使用当前堆栈中的值。可以想象,重新应用一个新的集合需要堆栈的许多当前配置参数。然而,我真的找不到关于如何做到这一点的权威文档 到目前为止,我正在看这样的东西Amazon web services AWS Cloudformation模板,带有来自当前CFT的变量,amazon-web-services,amazon-s3,amazon-cloudformation,Amazon Web Services,Amazon S3,Amazon Cloudformation,在应用新的变更集模板时,我很难弄清楚如何使用当前堆栈中的值。可以想象,重新应用一个新的集合需要堆栈的许多当前配置参数。然而,我真的找不到关于如何做到这一点的权威文档 到目前为止,我正在看这样的东西 "DomainName": { "Value": {"Ref": "AWS::S3::Bucket::DomainName"} } 我希望变更集生成器使用这个Ref值来获取配置的S3 bucket的当前域名 也许这根本不是变更集的工作方式?我可以想象配置在运行时与以前的配置合并,所以
"DomainName": {
"Value": {"Ref": "AWS::S3::Bucket::DomainName"}
}
我希望变更集生成器使用这个Ref值来获取配置的S3 bucket的当前域名
也许这根本不是变更集的工作方式?我可以想象配置在运行时与以前的配置合并,所以您应该可以访问以前的一些实例变量
谢谢。您在CloudFormation模板中定义的内容称为
资源。
资源的例子有:
- AWS::S3::Bucket
- AWS::EC2::实例
- AWS::EC2::VPC
每个资源都有属性
,您可以在CloudFormation模板中声明它们时定义这些属性。让我们以AWS::S3::Bucket
资源为例
{
“资源”:{
“我的桶”:{
“类型”:“AWS::S3::Bucket”,
“财产”:{
“BucketName”:“我的bucket名称”
}
}
}
}
BucketName
是“MyBucket”资源的属性
资源通常也有返回值
。返回值是可以在CloudFormation模板中使用的东西,用于构建资源之间的交叉引用逻辑和关系。每个资源通常都有一个“默认”返回值,当您使用模板中的Ref
内在函数引用某个资源时,会返回该值。对于AWS::S3::Bucket
资源,此“默认”返回值只是BucketName
。这意味着,如果您想在模板中的其他地方使用MyBucket name
,您将在MyBucket
资源上使用Ref
固有函数。例如,我们可以创建AWS::S3::BucketPolicy
资源,BucketName
(实际上Bucket
)是AWS::S3::BucketPolicy
的属性之一。那我们就开始吧:
{
“资源”:{
“我的桶”:{
“类型”:“AWS::S3::Bucket”,
“财产”:{
“BucketName”:“我的bucket名称”
}
},
“MyBucketPolicy”:{
“类型”:“AWS::S3::BucketPolicy”,
“财产”:{
“Bucket”:{“Ref”:“MyBucket”},
“PolicyDocument”:为了清晰起见,JSON结构被跳过
}
}
}
}
请注意,我没有在上面的MyBucketPolicy
资源中编写“Bucket”:“我的Bucket名称”
,实际上我想在那里引用MyBucket
。
部署模板时,CloudFormation引擎将用“我的bucket name”
替换{“Ref”:“MyBucket”}
值
一些资源提供额外的返回值
(属性),这些值可以使用Fn::GetAtt
内在函数访问。额外的返回值/属性包括:
- 域名
- 双堆栈域名
- 网站网址
Fn::GetAtt
固有函数的语法如下所示:
{“Fn::GetAtt”:[“logicalNameOfResource”,“attributeName”]}
为了从AWS::S3::Bucket
资源中获取DomainName
,您可以这样做:
{“Fn::GetAtt”:[“MyBucket”,“DomainName”]}
您可以在CloudFormation堆栈输出部分中使用DomainName
作为示例。完整示例如下:
{
“资源”:{
“我的桶”:{
“类型”:“AWS::S3::Bucket”,
“财产”:{
“BucketName”:“我的bucket名称”
}
},
“MyBucketPolicy”:{
“类型”:“AWS::S3::BucketPolicy”,
“财产”:{
“Bucket”:{“Ref”:“MyBucket”},
“PolicyDocument”:为了清晰起见,JSON结构被跳过
}
}
},
“产出”:{
“MyBucketDomainName”:{
“Description”:“我的bucket域名”,
“Value”:{“Fn::GetAtt”:[“MyBucket”,“DomainName”]}
}
}
}
您将在中找到有关所有资源
、它们的属性
和返回值
(这些可通过Ref
以及Fn::GetAtt
函数访问)的信息
希望这有帮助!您在CloudFormation模板中定义的内容就是所谓的
资源。
资源的例子有:
- AWS::S3::Bucket
- AWS::EC2::实例
- AWS::EC2::VPC
每个资源都有属性
,您可以在CloudFormation模板中声明它们时定义这些属性
{
“资源”:{
“我的桶”:{
“类型”:“AWS::S3::Bucket”,
“财产”:{
“BucketName”:“我的bucket名称”
}
}
}
}
BucketName
是“MyBucket”资源的属性
资源通常也有返回值
。返回值可以在CloudFormation模板中用于构建资源之间的交叉引用逻辑和关系。每个资源通常有一个“默认值”“返回值,当您使用模板内的Ref
固有函数引用某个资源时,将返回此值。”。对于AWS::S3::Bucket
资源,此“默认”返回值只是BucketName
。这意味着,如果您想在模板中的其他地方使用MyBucket name
,您将在MyBucket
资源上使用Ref
固有函数。例如,我们可以创建AWS::S3::BucketPolicy
资源,BucketName
(实际上Bucket
)是