首页 > 解决方案 > 如何在 Docker 容器中运行 AWS Lambda 层?

问题描述

我想运行一个 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'.

.

标签: dockeraws-lambdaaws-lambda-layers

解决方案


只是一个快速的潜在答案(我没有阅读您提供的链接,因为我不在我的电脑上),因为您提到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 不存在。


推荐阅读