Amazon web services 可以直接从AWS lambda调用docker run吗
我有一个Java独立应用程序,我已经将其停靠。每次将对象放入S3存储时,我都要运行这个docker。方法是通过AWS批处理来实现,我正在努力避免 有没有一种简单直接的方法可以从lambda调用docker run?是和否 您不能执行Amazon web services 可以直接从AWS lambda调用docker run吗,amazon-web-services,docker,aws-lambda,amazon-ecs,Amazon Web Services,Docker,Aws Lambda,Amazon Ecs,我有一个Java独立应用程序,我已经将其停靠。每次将对象放入S3存储时,我都要运行这个docker。方法是通过AWS批处理来实现,我正在努力避免 有没有一种简单直接的方法可以从lambda调用docker run?是和否 您不能执行docker run在Lambda调用的上下文中运行容器。但您可以在ECS上触发一个要执行的任务。要使其正常工作,您需要在ECS上设置集群,这意味着您需要至少支付一个EC2实例的费用。因此,最好不要使用Docker,但我对您的应用程序了解太少,无法判断这一点 有很多关
docker run
在Lambda调用的上下文中运行容器。但您可以在ECS上触发一个要执行的任务。要使其正常工作,您需要在ECS上设置集群,这意味着您需要至少支付一个EC2实例的费用。因此,最好不要使用Docker,但我对您的应用程序了解太少,无法判断这一点
有很多关于如何连接S3、Lambda和ECS的文章。下面是亚马逊的一篇非常深入的文章,您可能会感兴趣:
如果您正在寻找代码,则此存储库将实现上述文章中讨论的内容:
下面是一个片段,我们在Lambda函数(Python)中使用它从Lambda运行Docker容器:
result = boto3.client('ecs').run_task(
cluster=cluster,
taskDefinition=task_definition,
overrides=overrides,
count=1,
startedBy='lambda'
)
我们传入要在其上运行容器的集群的名称,以及定义要运行哪个容器、它需要的资源等的任务定义<代码>覆盖
是一个字典/映射,其中包含要在任务定义中覆盖的设置,我们使用它指定要运行的命令(即docker run
的参数)。这使我们能够使用相同的Lambda函数在ECS上运行许多不同的作业
希望这能给你指明正确的方向。是的,试试看
Udocker是一个用Python编写的简单工具,它有一组最小的依赖项,因此可以在广泛的Linux系统中执行
udocker不使用docker,也不需要安装它
udocker通过在提取的容器上提供类似chroot的环境来“执行”容器。当前的实现使用PRoot来模拟chroot,而不需要特权
例子
从docker hub中提取并列出提取的图像
udocker pull fedora
从拉取的图像创建容器并运行它
udocker create --name=myfed fedora
udocker run myfed cat /etc/redhat-release
而且检查也很好
因为:
在Lambda中,唯一允许您编写的地方是/tmp。但是默认情况下,udocker将尝试写入homedir。还有其他的东西 是的。可以使用以下命令运行存储在AWS Lambda内Docker Hub中的Docker图像中的容器 例如,您可以在Docker Hub中创建一个Lambda函数来执行ubuntu:16.04图像中的容器,如下所示:
scar init ubuntu:16.04
然后,每次调用函数时,您都可以在该容器中运行命令或shell脚本:
scar run scar-ubuntu-16-04 whoami
SCAR: Request Id: ed5e9f09-ce0c-11e7-8375-6fc6859242f0
Log group name: /aws/lambda/scar-ubuntu-16-04
Log stream name: 2017/11/20/[$LATEST]7e53ed01e54a451494832e21ea933fca
---------------------------------------------------------------------------
sbx_user1059
您可以使用存储在Docker Hub中的自己的Docker图像。有些限制适用,但可以有效地用于在AWS Lambda上运行通用应用程序。它还具有一个用于文件处理事件驱动应用程序的编程模型。它在引擎盖下使用