Один из способов справиться с этим - установить две цели в правиле наблюдения за облаком.
- Одна цель запустит задачу ECS
- Одна цель будет pu sh одно и то же событие to SQS
Таким образом, SQS будет содержать такую информацию, как
{
"version": "0",
"id": "89d1a02d-5ec7-412e-82f5-13505f849b41",
"detail-type": "Scheduled Event",
"source": "aws.events",
"account": "123456789012",
"time": "2016-12-30T18:44:49Z",
"region": "us-east-1",
"resources": [
"arn:aws:events:us-east-1:123456789012:rule/SampleRule"
],
"detail": {}
}
Итак, когда ECS TASK будет запущен, он сможет читать событие из SQS. введите описание изображения здесь
Например, в Docker точка входа
#!/bin/sh
echo "Starting container"
echo "Process SQS event"
node process_schdule_event.sj
#or if you need process at run time
schdule_event=$(aws sqs receive-message --queue-url https://sqs.us-west-2.amazonaws.com/123456789/demo --attribute-names All --message-attribute-names All --max-number-of-messages 1)
echo "Schdule Event: ${schdule_event}"
# one process done, start the main process of the container
exec "$@"