Запуск задачи ECS из события S3 - PullRequest
0 голосов
/ 10 октября 2018

Я хочу запустить задачу ECS, когда файл попадает в корзину S3.Я пытался использовать правила Cloudwatch для события S3, но, похоже, для этого требуется либо определенный файл в определенном месте, либо триггеры по прибытии файла во всей корзине, без подстановочных знаков / префиксов / суффиксов для контроля чего-либо между этими двумя крайностями.

Я также пытался запустить тему SNS, но не могу понять, что синтаксис правильно работает с моей конкретной темой.Вот то, что я имею до сих пор:

{
 "source": [
   "aws.sns"
 ],
 "detail-type": [
   "AWS API Call via CloudTrail"
 ],
 "detail": {
   "eventSource": [
     "sns.amazonaws.com"
   ],
   "EventSubscriptionARN": [
     "arn:aws:sns:us-east-1:123456789123:WCIS_ECS_Test:xxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx"
   ],
   "TopicARN": [
     "arn:aws:sns:us-east-1:123456789123:My_Topic"
   ],
   "eventName": [
     "Publish"
   ]
 }

}

Если кто-то может помочь разобраться в синтаксисе этого, это было бы замечательно, или, в качестве альтернативы, если есть другой шаблон, на который я должен смотреть,это предложение было бы тоже замечательно.

Ответы [ 2 ]

0 голосов
/ 22 августа 2019

Вы можете попробовать учебное пособие по этой ссылке: https://aws.amazon.com/blogs/compute/better-together-amazon-ecs-and-aws-lambda/

По сути, это ответ на ваш вопрос, как обработать конкретный файл, который был загружен в вашу корзину S3, в вашу среду ECS, используя лямбду и очередь.

Учебное пособие может быть немного старым, поскольку оно было написано в 2015 году, но оно все еще остается в силе, и вы можете использовать некоторые оптимизации, такие как отказ от сценария оболочки и замена его, например, на Python SDK, и/ или использовать функции лямбда-шага для выполнения вызовов к службам SQS и ECS.Вы также можете использовать очередь FIFO SQS, чтобы не пропустить ни одного сообщения.

Надеюсь, это поможет!

0 голосов
/ 13 октября 2018

Вы можете попробовать опцию S3 Trigger (предпочтительно), SNS или SQS, чтобы выполнить лямбда-функцию.В своей лямбда-функции вы можете использовать AWS Python SDK - Boto3 для запуска задачи ECS на основе метаданных вашего файла S3.

Ссылки - https://docs.aws.amazon.com/lambda/latest/dg/with-s3.html https://docs.aws.amazon.com/sns/latest/dg/sns-lambda.html https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/ecs.html

Пример кода -

import boto3
client = boto3.client('ecs')
response = client.run_task(
    cluster='myCluster',
    taskDefinition='myECSService',
    count=1,
    launchType='EC2'
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...