[英]Using AWS ECS Placement Constraints with instance tags
是否可以根據實例標簽來約束ECS任務的放置? 我在 ECS 集群中有標記的 EC2 實例,想用它來確保某些任務在這些實例上運行? 我不知道如何做到。
https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-placement-constraints.html
這是 Terraform 配置的片段,用於說明如何實現此方法
data aws_ssm_parameter amazonLinux2 {
name = "/aws/service/ecs/optimized-ami/amazon-linux-2/recommended/image_id"
}
resource aws_instance elasticsearchInstance {
ami = data.aws_ssm_parameter.amazonLinux2.value
instance_type = "t2.medium"
availability_zone = data.aws_availability_zones.available.names[0]
subnet_id = aws_subnet.ecsPrivateSubnet.id
associate_public_ip_address = false
iam_instance_profile = aws_iam_instance_profile.ecs_agent.name
user_data = <<EOT
#!/bin/bash
echo 'ECS_CLUSTER=clusterName' >> /etc/ecs/ecs.config
echo 'ECS_INSTANCE_ATTRIBUTES={"type": "elasticsearch"}' >> /etc/ecs/ecs.config
EOT
}
resource "aws_ecs_task_definition" "elasticsearchTask" {
family = "elasticsearch"
network_mode = "awsvpc"
container_definitions = jsonencode([
{
name = "elasticsearch"
image = "docker.elastic.co/elasticsearch/elasticsearch:7.15.2"
cpu = 2048
memory = 3942
essential = true
portMappings = [
{
containerPort = 9200
}
]
}
])
placement_constraints {
type = "memberOf"
expression = "attribute:type == elasticsearch"
}
}
這不是一個完整的配置,但核心位正在設置user_data
以添加ECS_INSTANCE_ATTRIBUTES
在這種情況下type=elasticsearch
elasticsearch 然后將placement_constraints
添加到任務定義中以將任務強制到實例上。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.