#amazon-web-services #terraform #devops #amazon-cloudwatch
#amazon-веб-сервисы #terraform #devops #amazon-cloudwatch
Вопрос:
Я пытаюсь создать правило событий AWS Cloudwatch для отправки уведомлений по электронной почте SNS, когда контейнер, в котором выполняется определенная задача, успешно завершает выполнение. Я просмотрел документацию Terraform, но не могу найти хороший способ динамического внедрения в taskArn
:
resource "aws_cloudwatch_event_rule" "important-task-complete-rule" {
name = "reporting-task-completed"
description = "Notification for when an important task finishes running successfully."
event_pattern = <<PATTERN
{
"source": [
"aws.ecs"
],
"detail-type": [
"ECS Task State Change"
],
"detail": {
"lastStatus": [
"STOPPED"
],
"stoppedReason" : [
"Essential container in task exited"
],
"containers": {
"exitCode": [
0
],
"taskArn": "arn:aws:ecs:us-east-1:MY_ACCOUNT:task/MY_TASK_ID_THAT_I_WANT_TO_INJECT"
}
}
}
PATTERN
}
Например, в приведенных здесь примерах документации приведен тот же жестко запрограммированный <<PATTERN
пример, который я использую выше.
Есть ли способ динамической вставки файла шаблона в мои ARN без их жесткого кодирования?
Комментарии:
1. Вы можете использовать переменные в этом встроенном JSON.
Ответ №1:
Как сказал @matt Schuchard, вы справились с этим с помощью атрибутов ресурсов terraform? (Кстати, оно не вызывается variables
).
resource "aws_ecs_task_definition" "service" {
...
}
resource "aws_cloudwatch_event_rule" "important-task-complete-rule" {
name = "reporting-task-completed"
description = "Notification for when an important task finishes running successfully."
event_pattern = <<PATTERN
{
"source": [
"aws.ecs"
],
"detail-type": [
"ECS Task State Change"
],
"detail": {
"lastStatus": [
"STOPPED"
],
"stoppedReason" : [
"Essential container in task exited"
],
"containers": {
"exitCode": [
0
],
"taskArn": "${aws_ecs_task_definition.service.arn}"
}
}
}
PATTERN
}
Комментарии:
1. Да, это сработало так, как ожидалось. Я использовал встроенный шаблон JSON.