gpt4 book ai didi

amazon-web-services - 具有当前 CFT 变量的 AWS Cloudformation 模板

转载 作者:行者123 更新时间:2023-12-03 07:32:37 25 4
gpt4 key购买 nike

我很难弄清楚在应用新的更改集模板时如何使用当前堆栈中的值。正如您可以想象的那样,堆栈的许多当前配置参数将需要重新应用一组新的参数。但是,我确实找不到有关如何执行此操作的明确文档。

到目前为止,我正在研究类似的东西。

  "DomainName": {
"Value": {"Ref": "AWS::S3::Bucket::DomainName"}
}

我希望更改集生成器将使用此 Ref 值来获取已配置的 S3 存储桶的当前域名。

也许这根本不是变更集的工作方式?我想配置会在运行时与先前的配置合并,因此您应该有权访问一些先前的实例变量?

谢谢。

最佳答案

您在 CloudFormation 模板中定义的内容称为 Resources 。资源示例有:

  • AWS::S3::存储桶
  • AWS::EC2::实例
  • AWS::EC2::VPC

每个资源都有Properties您在 CloudFormation 模板中声明它们时定义的。让我们以AWS::S3::Bucket为例以资源为例。

{
"Resources" : {

"MyBucket" : {
"Type" : "AWS::S3::Bucket",
"Properties" : {
"BucketName" : "my-bucket-name"
}
}

}
}

BucketName是“MyBucket”资源的属性。

资源通常还有 Return Values 。您可以在 CloudFormation 模板中使用返回值来构建资源之间的交叉引用逻辑和关系。每个资源通常都有一个“默认”返回值,当您使用 Ref 引用某个资源时,就会返回该值。模板内的内在功能。如果是AWS::S3::Bucket资源,这个“默认”返回值只是一个 BucketName 。这意味着如果您想使用 my-bucket-name在模板的其他地方,您可以使用 Ref MyBucket 上的内在函数资源。例如,我们可以创建 AWS::S3::BucketPolicy资源,BucketName (事实上​​ Bucket )是 AWS::S3::BucketPolicy 的属性之一。那么我们就这样做吧:

{
"Resources" : {

"MyBucket" : {
"Type" : "AWS::S3::Bucket",
"Properties" : {
"BucketName" : "my-bucket-name"
}
},

"MyBucketPolicy" : {
"Type" : "AWS::S3::BucketPolicy",
"Properties" : {
"Bucket" : { "Ref" : "MyBucket" },
"PolicyDocument" : JSON_STRUCTURE_SKIPPED_FOR_CLARITY
}
}

}
}

请注意,我没有写 "Bucket" : "my-bucket-name",MyBucketPolicy上面的资源,我其实想引用MyBucket那里。CloudFormation引擎将取代{ "Ref" : "MyBucket" }"my-bucket-name"当我部署模板时。

一些资源提供额外的Return Values (属性),这些值可以通过使用Fn::GetAtt来访问内在功能。 AWS::S3::Bucket额外的返回值/属性是:

  • 域名
  • DualStackDomainName
  • 网站网址

Fn::GetAtt 的语法内函数如下所示:

{ "Fn::GetAtt" : [ "logicalNameOfResource", "attributeName" ] }

为了得到DomainName来自"AWS::S3::Bucket资源,你会这样做:

{ "Fn::GetAtt" : [ "MyBucket", "DomainName" ] }

您可以使用DomainName例如在 CloudFormation 堆栈输出部分。完整示例如下:

{
"Resources" : {

"MyBucket" : {
"Type" : "AWS::S3::Bucket",
"Properties" : {
"BucketName" : "my-bucket-name"
}
},

"MyBucketPolicy" : {
"Type" : "AWS::S3::BucketPolicy",
"Properties" : {
"Bucket" : { "Ref" : "MyBucket" },
"PolicyDocument" : JSON_STRUCTURE_SKIPPED_FOR_CLARITY
}
}

},

"Outputs" : {

"MyBucketDomainName" : {
"Description" : "Domain name of my bucket",
"Value" : { "Fn::GetAtt" : [ "MyBucket", "DomainName" ] }
}
}
}

您将找到有关所有 Resources 的信息,他们的PropertiesReturn Values (这些可通过 Ref 以及 Fn::GetAtt 函数访问)在 AWS Resource Types Reference 中.

希望这有帮助!

关于amazon-web-services - 具有当前 CFT 变量的 AWS Cloudformation 模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43639423/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com