我正在尝试使用 CloudFormation 在 AWS 上部署 ECS 集群,但我不知道如何为集群设置自定义名称。
集群已创建,但以某种方式生成的名称,格式如stackname-ECSCluster-randomstring
.
有没有办法为集群设置自定义名称?
AWS::ECS::Cluster不接受任何参数或标签,也不接受AWS ::ECS:Service。
这是一种装饰性的东西,但有一个有意义的名字会很好。
我正在尝试使用 CloudFormation 在 AWS 上部署 ECS 集群,但我不知道如何为集群设置自定义名称。
集群已创建,但以某种方式生成的名称,格式如stackname-ECSCluster-randomstring
.
有没有办法为集群设置自定义名称?
AWS::ECS::Cluster不接受任何参数或标签,也不接受AWS ::ECS:Service。
这是一种装饰性的东西,但有一个有意义的名字会很好。
CloudFormation 目前不允许您设置自定义名称。如果要使用特定名称,可以在 CloudFormation 外部创建集群,然后在模板中引用它。
直接从我的 CloudFormation 脚本中剪辑。如果要传入,可以作为参数传入。指定名称可能是在您撰写帖子后添加的内容。不管怎样,这对我有用。
Resources:
MyCluster:
Type: AWS::ECS::Cluster
Properties:
ClusterName: TheNameOfTheCluster
如果要修改集群的名称,可以使用Fn::Join连接两个(或更多)字符串。以下将产生一个名为“MyClusterNamePrefix-MyClusterNameSuffix”的集群
Resources:
MyCluster:
Type: AWS::ECS::Cluster
Properties:
ClusterName: !Join
- "-" # The delimiter String
- - MyClusterNamePrefix
- MyClusterNameSuffix
如果您需要恢复名称,您可以在其他地方引用,它们并不容易。我知道这并不完全是您所要求的,但您可能需要在其他地方引用该名称(例如UserData)。
Outputs:
MyClusterName:
Description: The Name of My Cluster
Value:
Fn::Select:
- 1
- Fn::Split:
- "/"
- Fn::GetAtt:
- MyCluster
这是因为(在撰写本文时)Fn::GetAtt只能返回集群的 ARN(向下滚动到支持的属性表)。ECS 集群 ARN 规范如下:
arn:aws:ecs:region:account-id:cluster/cluster-name
所以,把它们放在一起:
根据需要移植到 JSON。这是一种丑陋的方法,但它有效。我会密切关注亚马逊是否/何时可以将其作为属性公开并更新您的代码。