如何在 Docker 容器中运行 AWS Lambda 层?

Posted

技术标签:

【中文标题】如何在 Docker 容器中运行 AWS Lambda 层?【英文标题】:How to run an AWS Lambda Layer in a Docker container? 【发布时间】:2019-10-22 07:58:45 【问题描述】:

我想运行一个 Docker 容器来查看公共 Lambda 层中的内容。

在aws sam layers docs 使用只有 pytorch 层的 sam 应用程序之后,我生成了 Docker 标签,然后我尝试拉取 Docker 映像,但由于拉取访问被拒绝/repo 可能需要身份验证而失败。

我确实尝试aws ecr get-login --no-include-email 进行正确身份验证,但仍然无法访问图像。

所以我认为问题可能是我无权拉取 lambda 层的图像或图像不存在。我不清楚

或者,最好下载公共 Lambda 层,然后我可以使用 https://github.com/lambci/docker-lambda 来检查它

更多关于我尝试的内容

所以我想研究的 Lambda 层是:

arn:aws:lambda:eu-west-1:934676248949:layer:pytorchv1-py36:1

我制作的 docker 标签是:

python3.6-0ffbca5374c4d95e8e10dbba8

然后我尝试使用以下方式拉取 Docker 映像:

docker run -it --entrypoint=/bin/bash samcli/lambda:python3.6-0ffbca5374c4d95e8e10dbba8 -i
docker run -it --entrypoint=/bin/bash <aws_account_id>.dkr.ecr.<region>.amazonaws.com/samcli/lambda:python3.6-0ffbca5374c4d95e8e10dbba8 -i

两者都因错误而失败:

docker: Error response from daemon: pull access denied for samcli/lambda, repository does not exist or may require 'docker login'.

.

【问题讨论】:

【参考方案1】:

只是一个快速的潜在答案(我没有阅读您提供的链接,因为我不在我的电脑上),因为您提到了 aws ecr get-login --no-include-email 我假设您正在尝试从 AWS 的 docker 存储库服务中提取 docker 映像。

使用默认配置的docker run -it --entrypoint=/bin/bash samcli/lambda:python3.6-0ffbca5374c4d95e8e10dbba8 -i 行将查看 docker hubs 存储库。如果您尝试在 AWS 中提取 docker 映像,我希望得到更像 docker run -it --entrypoint=/bin/bash aws_account_id.dkr.ecr.region.amazonaws.com/samcli/lambda:python3.6-0ffbca5374c4d95e8e10dbba8 -i 的东西(同样不是说 cammand 可以工作,而是与您的 aws repo 登录命令一起使用类似的东西)。

由于https://hub.docker.com/samcli/lambda 是 404,我怀疑这是错误消息完全正确的情况之一,因此 repo 不存在。

【讨论】:

我已经按照建议尝试了docker run -it --entrypoint=/bin/bash aws_account_id.dkr.ecr.region.amazonaws.com/samcli/lambda:python3.6-0ffbca5374c4d95e8e10dbba8 -i,遗憾的是仍然没有用 对不起,我没有说清楚该命令不起作用,域需要帐户ID和区域;这样会更好&lt;aws_account_id&gt;.dkr.ecr.&lt;region&gt;.amazonaws.com/samcli/lambda:python3.6-0ffbca5374c4d95e8e10dbba8 -i 感谢您的澄清,我确实使用了自己的帐户 ID 并指定了区域。

以上是关于如何在 Docker 容器中运行 AWS Lambda 层?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用非默认运行参数在 AWS Elastic Beanstalk 中运行 Docker 容器?

Docker 在 AWS ECS 中运行

AWS beanstalk 中 docker 容器中的 JVM 内存设置

如何在 AWS Windows Server 环境中运行 Docker?

AWS Elastic Beanstalk Docker 环境变量

在 AWS ELB 上运行 Docker 容器,连接到主机节点应用程序