如何在 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和区域;这样会更好<aws_account_id>.dkr.ecr.<region>.amazonaws.com/samcli/lambda:python3.6-0ffbca5374c4d95e8e10dbba8 -i
感谢您的澄清,我确实使用了自己的帐户 ID 并指定了区域。以上是关于如何在 Docker 容器中运行 AWS Lambda 层?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用非默认运行参数在 AWS Elastic Beanstalk 中运行 Docker 容器?
AWS beanstalk 中 docker 容器中的 JVM 内存设置
如何在 AWS Windows Server 环境中运行 Docker?