是否可以从AWS lambda直接调用docker run

use*_*195 3 amazon-web-services amazon-ecs docker aws-lambda

我有一个Java独立的应用程序,我已经dockerized.每次将对象放入S3存储时,我想运行此docker.在途中是通过AWS批处理,我试图避免.

有没有直接和简单的方法来调用从lambda运行的docker?

jdn*_*dno 8

是的,不是.

你不能做的是执行docker run在Lambda调用的上下文中运行容器.但是您可以触发ECS上的任务执行.为此,您需要在ECS上设置集群,这意味着您需要为至少一个EC2实例付费.因此,不使用Docker可能会更好,但我对你的应用程序判断太少了.

有很多文章如何连接S3,Lambda和ECS.以下是亚马逊的一篇非常深入的文章,您可能对以下内容感兴趣:

https://aws.amazon.com/blogs/compute/better-together-amazon-ecs-and-aws-lambda/

如果您正在寻找代码,此存储库将实现上面文章中讨论的内容:

https://github.com/awslabs/lambda-ecs-worker-pattern

这是我们在Lambda函数(Python)中使用的代码片段,用于从Lambda运行Docker容器:

result = boto3.client('ecs').run_task(
    cluster=cluster,
    taskDefinition=task_definition,
    overrides=overrides,
    count=1,
    startedBy='lambda'
)
Run Code Online (Sandbox Code Playgroud)

我们传入了cluster我们想要运行容器的名称,以及定义要运行哪个容器的任务定义,它需要的资源等等.overrides是一个字典/地图,其中包含您要在任务定义中覆盖的设置,我们用它来指定我们要运行的命令(即参数docker run).这使我们能够使用相同的Lambda函数在ECS上运行许多不同的作业.

希望指出你正确的方向.