Я работаю над дизайном сообщения электронной почты, которое должно использовать AWS входной преобразователь.
https://docs.aws.amazon.com/eventbridge/latest/APIReference/API_InputTransformer.html
В сообщении я хотел бы включить детали .container.exitCode value.
Во входном преобразователе используется json точечная нотация для получения значений объектов, что-то вроде следующего вопроса: Как я могу получить доступ и обрабатывать вложенные объекты, массивы или JSON?
однако я не могу заставить его работать.
Мой шаблон входного преобразователя: a)
{"stopCode":"$.detail.stopCode","service":"$.detail.group",
"stoppedReason":"$.detail.stoppedReason",
"exitCode":"$.detail.containers[1].exitCode",
"clusterID":"$.detail.clusterArn",
"desiredStatus":"$.detail.desiredStatus",
"lastStatus":"$.detail.lastStatus",
"taskDef":"$.detail.taskDefinitionArn"}
b) шаблон электронной почты
"<service>: REQUEST=<desiredStatus>:
LASTKNOWN=<lastStatus>:
REASON=<stoppedReason>:
CODE=<stopCode>: ID=<taskDef>:
EXITCODE=<exitCode>"
Точнее, я заинтересован в этой части:
"exitCode":"$.detail.containers[1].exitCode"
Я могу получить доступ ко всем полям подробно, кроме секции контейнеров.
JSON структура сообщения (я удалил некоторые дополнительные поля):
"detail":{ "attachments":[],
"availabilityZone":"us-west-1a",
"clusterArn":"arn:aws:ecs:us-west-1:575192902611:cluster/prod-batch",
"containers":[ { "containerArn":"arn:aws:ecs:us-west-1:575192902611:container/9f66314e-8d15-439e-8bc3-774119aa483c",
"exitCode":0,
"lastStatus":"STOPPED"
}
],
"cpu":"0"
}
],
"createdAt":"2020-02-24T16:22:46.518Z",
"launchType":"FARGATE",
"cpu":"256",
"memory":"512",
"stoppedReason":"Essential container in task exited",
"version":5,
"platformVersion":"1.3.0"
}
Буду очень признателен, если вы сможете посоветовать, как получить значение exitCode.
detail -> Containers-> exitCode
Я нашел разрешение. Правильная конструкция:
detail.containers[0].exitCode
Проблема была связана с тем фактом, что я пытался выбрать значение из 1-го узла (должен был использовать 0 для его адреса, а я использовал 1)
Подход, который я использовал для разработки этого выражение:
1. Получите неизмененный JSON вывод вашего уведомления SNS
Вставьте его в JSON средство проверки выражений
https://jsonpath.curiousconcept.com
Напишите ваше выражение и протестируйте его
Пример вывода, EXITCODE содержит правильное значение "семейство: backup-repo-to-s3-secrets-tsk: REQUEST = STOPPED: LASTKNOWN = STOPPED : REASON = Необходимый контейнер в задаче завершен: CODE = EssentialContainerExited: ID = arn: aws: ecs: us-west-1: 575192902611: определение задачи / резервное копирование, репозиторий-s3-secrets-tsk: 4: EXITCODE = 0"