Em *_* Ae 8 resources template amazon-cloudformation
我们有多个 CloudFormation 脚本来创建我们的堆栈。
现在,我们要编写(自动化)新脚本,这些脚本仅用于更新1 个特定资源(业务需求)。
我遇到的问题是如何在我的更新脚本中引用现有资源?我知道有REF函数,但我相信这只是用于在同一脚本中引用资源。AWS 是否提供了一些东西来引用现有资源?
我已经读到我们可以使用,parameters但还有其他选择吗?
我最近不得不为一些引用共享服务的分层部署执行此操作。除了参数之外,还有一些其他选项:
命名导出:如果您有一些由单独的 CloudFormation 堆栈创建的资源并且您只想引用它们,这是一个不错的选择(例如,基础架构管理员为应用程序团队设置了较低级别的部分,以便在其上进行部署) .
替换:在许多情况下,您可能只需要引用一个众所周知的名称,该名称是不变的,但 ARN 因 AWS 账户 ID 而异。您可以使用Fn::Sub扩展一些“伪参数”,例如帐户 ID 或区域:
"TaskRoleArn": {
"Fn::Sub": "arn:aws:iam::${AWS::AccountId}:role/YourSharedServiceTaskRole"
}
SSM 参数:您可以拥有检索 SSM 属性的动态引用。这对于完全从该值的来源中抽象出来很方便——它可以由 CloudFormation 创建,但实际上也可以是运行一次性命令行脚本的人,它支持密码和其他机密的安全存储,可以配置为防止由目标服务以外的任何人检索(例如 EC2 / ECS IAM 实例角色)——例如,我用它来存储 SES 凭证:
aws ssm put-parameter --type String --name "/project/mail/EmailHost" --value email-smtp.us-east-1.amazonaws.com
aws ssm put-parameter --type String --name "/project/mail/EmailUser" --value <SES_ACCESS_KEY>
aws ssm put-parameter --type SecureString --key-id alias/your-well-known-iam-kms-alias --name "/project/mail/EmailPassword" --value <SES PASSWORD>`
宏:这是最近宣布的一种非常强大的机制,您可以在其中使用 Lambda 函数返回任意 JSON 以包含在模板中。这几乎可以做任何事情,从配置 CloudFormation 堆栈创建者没有直接创建权限的额外资源到在数据库中查找值并返回配置有的模板,例如,从更大的预留池中分配 VPC CIDR由上级组织管理。
AWS 使用 ARN(AWS 资源名称)来引用资源。以下是一般格式:
arn:分区:服务:区域:帐户 ID:资源 arn:分区:服务:区域:帐户 ID:资源类型/资源 arn:分区:服务:区域:帐户 ID:资源类型:资源
您可以查找更多信息http://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html
您还可以在服务文档页面中查找要引用的资源所使用的特定 ARN
| 归档时间: |
|
| 查看次数: |
11263 次 |
| 最近记录: |