如何查看并编辑以容器镜像部署的AWS Lambda函数代码
查看并编辑容器镜像部署的AWS Lambda函数代码的方法
你收到的提示说明该Lambda采用容器镜像方式部署,代码和运行环境整体打包在AWS ECR存储的容器镜像内,不会直接在控制台/Cloud9中展示,可按以下步骤操作:
No code preview available
Your function code is deployed as a container image. The AWS Cloud9 IDE cannot display your code.
步骤1:拉取对应ECR容器镜像
- 进入Lambda控制台对应函数详情页,在代码选项卡下找到镜像关联的ECR仓库完整地址,格式为
[AWS账号ID].dkr.ecr.[部署区域].amazonaws.com/[仓库名]:[镜像标签] - 本地提前安装好Docker和AWS CLI,首先执行命令登录ECR:
aws ecr get-login-password --region [你的部署区域] | docker login --username AWS --password-stdin [你的AWS账号ID].dkr.ecr.[你的部署区域].amazonaws.com
- 拉取镜像到本地:
docker pull [刚才复制的ECR镜像完整地址]
步骤2:提取镜像内的函数代码
- 运行临时容器,覆盖默认Lambda入口进入bash交互环境:
docker run -it --entrypoint /bin/bash --name temp-lambda [本地拉取的镜像地址]
- Lambda容器默认将函数代码存放在
/var/task/路径下,进入容器后即可直接查看代码内容 - 也可以不进入容器,直接将代码批量拷贝到本地目录:
docker cp temp-lambda:/var/task/ ./local-lambda-code
- 代码提取完成后删除临时容器:
docker rm -f temp-lambda
步骤3:编辑代码后重新发布
- 修改本地提取的代码后,参考镜像原Dockerfile(如果没有留存可根据运行环境重新编写,需符合Lambda容器镜像规范,内置Lambda运行时接口客户端)重新构建新镜像
- 给新镜像打ECR标签:
docker tag [本地构建的镜像名]:[版本号] [ECR仓库地址]:[新镜像标签]
- 推送新镜像到ECR仓库:
docker push [ECR仓库地址]:[新镜像标签]
- 回到Lambda函数控制台,在代码选项卡选择新推送的镜像版本重新部署即可生效。
补充说明
- 如果能联系到原开发人员,优先获取原始代码仓库,反解镜像得到的代码可能缺少构建配置、注释等内容
- 如果镜像内的代码是编译后的二进制文件(Go、Rust等编译型语言开发的Lambda),无法直接编辑修改,必须获取原始源码才能调整逻辑
内容的提问来源于stack exchange,提问作者Aniiya0978
相关产品推荐
相关产品推荐

