我有一个 ECS 服务,它生成一些容器:
resource "aws_ecs_service" "rocketchat" {
name = "rocketchat-ecs-service"
cluster = "${aws_ecs_cluster.rocketchat.id}"
task_definition = "${aws_ecs_task_definition.rocketchat.arn}"
desired_count = 2
iam_role = "${aws_iam_role.ecs_service.name}"
...
但是它创建的 EC2 实例没有“名称”标签。我以为这name_prefix
就是我要找的,但它不起作用:
resource "aws_launch_configuration" "rocketchat" {
security_groups = ["${aws_security_group.instance_sg.id}"]
name_prefix = "${var.project_prefix}-rocketchat-"
key_name = "${aws_key_pair.circles_rocketchat.key_name}"
...
该容器的任务定义也有一个名称字段,它也不起作用:
[
{
"name": "rocketchat",
"cpu": 256,
"essential": true,
...
亚马逊文档在这里说“创建时标记”不支持“启动模板”,但我不确定这是否完全相关;尤其是当您在同一个集群上使用我的其他 ECS 服务时,该集群没有负载均衡器,因此没有启动配置。
编辑:
@B.Miller 下面的建议没有标记实际实例,但它确实显示在 EC2 > Auto Scaling Groups > Tags 下的控制台中
+-------------+---------------------+-------------------+ | Key | Value | Tag New Instances | +-------------+---------------------+-------------------+ | Environment | dev | Yes | +-------------+---------------------+-------------------+ | Name | rocketchat-instance | Yes | +-------------+---------------------+-------------------+
答案1
name_prefix
使用前缀为启动配置创建一个随机的唯一名称,而不是为其启动的内容添加前缀。name
任务定义中的是任务定义本身的名称。由于您使用的是启动配置,因此我假设您使用的是自动缩放组. 自动缩放组允许您设置标签然后传播这些标签。
例如你可以指定单独的标签并让它们传播:
resource "aws_autoscaling_group" "default" { ... tags = [ { key = "explicit1" value = "value1" propagate_at_launch = true }, { key = "explicit2" value = "value2" propagate_at_launch = true }, ] ... }
编辑:请注意,这适用于 ECS-Optimised Amazon AMI,但不适用于 CoreOS。