use*_*195 3 amazon-web-services amazon-ecs docker aws-lambda
我有一个Java独立的应用程序,我已经dockerized.每次将对象放入S3存储时,我想运行此docker.在途中是通过AWS批处理,我试图避免.
有没有直接和简单的方法来调用从lambda运行的docker?
是的,不是.
你不能做的是执行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上运行许多不同的作业.
希望指出你正确的方向.
归档时间: |
|
查看次数: |
3078 次 |
最近记录: |