Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services AWS Cloudformation模板,带有来自当前CFT的变量_Amazon Web Services_Amazon S3_Amazon Cloudformation - Fatal编程技术网

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
)是