Oui et non.
Ce que vous ne pouvez pas faire est d'exécuter docker run
pour exécuter un conteneur dans le cadre de l'appel Lambda. Mais vous pouvez déclencher une tâche sur ECS à exécuter. Pour que cela fonctionne, vous devez avoir un cluster configuré sur ECS, ce qui signifie que vous devez payer au moins une instance EC2. Pour cette raison, il serait peut-être préférable de ne pas utiliser Docker, mais je connais trop peu votre application pour en juger.
Il y a beaucoup d'articles là-bas comment connecter S3, Lambda et ECS. Voici un joli article approfondi par Amazon que vous pourriez être intéressé par:
https://aws.amazon.com/blogs/compute/better-together-amazon-ecs-and-aws-lambda/
Si vous êtes à la recherche de code, ce référentiel met en œuvre ce qui est discuté dans l'article ci-dessus:
https://github.com/awslabs/lambda-ecs-worker-pattern
Voici un extrait que nous utilisons dans notre fonction Lambda (Python) pour exécuter un conteneur Docker de Lambda:
result = boto3.client('ecs').run_task(
cluster=cluster,
taskDefinition=task_definition,
overrides=overrides,
count=1,
startedBy='lambda'
)
Nous passons au nom du cluster
sur lequel nous voulons exécuter le conteneur, ainsi que la définition de la tâche qui définit quel conteneur à exécuter, les ressources dont il a besoin et ainsi de suite. overrides
est un dictionnaire/une carte avec des paramètres que vous souhaitez remplacer dans la définition de tâche, que nous utilisons pour spécifier la commande que nous voulons exécuter (c'est-à-dire l'argument docker run
). Cela nous permet d'utiliser la même fonction Lambda pour exécuter beaucoup de tâches différentes sur ECS.
Espérons que cela vous dirige dans la bonne direction.