#amazon-cloudwatch #amazon-ecs #terraform-provider-aws
#amazon-cloudwatch #amazon-ecs #terraform-поставщик-aws
Вопрос:
Я создаю запланированную задачу ECS в Terraform. Когда я пытаюсь переопределить определение контейнера для entryPoint
, результирующая задача не использует переопределенное entryPoint
. Однако, если я попытаюсь переопределить command
, он работает нормально (добавляет новую команду в дополнение к существующей точке входа). Я не могу найти в документах ничего, что наводит меня на мысль, что entryPoint
переопределение не поддерживается, но это может быть так?
Ниже приведен код для цели события Cloudwatch в terraform
resource "aws_cloudwatch_event_target" "ecs_task" {
target_id = "run-${var.task_name}-scheduled"
arn = "${var.cluster_arn}"
rule = "${aws_cloudwatch_event_rule.ecs_task_event_rule.name}"
role_arn = "${aws_iam_role.ecs_event.arn}"
ecs_target = {
launch_type = "${var.launch_type}"
network_configuration = {
subnets = ["${var.subnet_ids}"]
security_groups = ["${var.security_group_ids}"]
}
task_count = 1
task_definition_arn = "${var.task_arn}"
}
input = <<DOC
{
"containerOverrides": [
{
"name": "${var.task_name}",
"entryPoint": ${jsonencode(var.command_overrides)}
}
]
}
DOC
}
Это создает новую запланированную задачу на консоли AWS, где поле ввода выглядит следующим образом:
{
"containerOverrides": [
{
"name": "my-container-name",
"entryPoint": [
"sh",
"/my_script.sh"
]
}
]
}
Однако задачи, запускаемые этим правилом, не имеют переопределения точки входа и используют точку входа, определенную в исходном определении задачи.
TLDR: Как я могу переопределить точку входа для запланированной задачи?
Ответ №1:
На сегодняшний день только определенное количество полей может быть переопределено, поскольку запланированная задача в конечном итоге использует run-task
API. Эти поля следующие:
command
environment
taskRoleArn
cpu
memory
memoryReservation
resourceRequirements
Определения контейнеров для других полей, таких как entryPoint
, portMappings
, и, не поддерживаются logConfiguration
.
Решение заключается в использовании command
вместо entryPoint
в исходном определении задачи, поскольку command
его можно переопределить, но entryPoint
нельзя.