You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AWS Lambda稳定别名调用报错CodeArtifactUserFailedException求助

问题分析与解决方法

核心原因

你遇到的问题本质是Lambda发布版本与$LATEST在镜像引用逻辑上的本质差异:

  • 已发布的Lambda版本(即被stable别名指向的版本)会静态绑定ECR镜像的唯一摘要(digest),而非你设置的镜像标签(比如stable)。
  • 你的ECR仓库启用了保留最后5个镜像的生命周期策略,当旧的镜像摘要被策略自动清理后,Lambda的发布版本找不到对应的镜像文件,就会触发ImageAccessDenied错误,导致函数状态变为Inactive。
  • 而$LATEST版本是动态解析镜像标签,每次调用时都会去ECR拉取该标签当前指向的最新镜像摘要。只要你的stable标签仍指向一个未被清理的镜像,$LATEST就能正常工作。

对你假设的验证

  1. 假设1成立:确实是Lambda发布版本绑定的镜像摘要被ECR生命周期策略删除,导致无法访问。
  2. 疑问2的答案:$LATEST不绑定固定镜像摘要,而是每次解析标签对应的最新存在镜像,因此不受旧摘要被删除的影响。
  3. 假设3不成立:禁用warmer后问题依旧,说明和镜像损坏、warmer清理逻辑无关。

解决方法

1. 调整ECR生命周期策略,保护Lambda依赖的镜像

  • 给Lambda发布版本对应的ECR镜像添加专属保护标签,比如lambda-version-<你的Lambda版本号>(示例:lambda-version-3)。
  • 修改ECR生命周期策略,新增规则:跳过带有lambda-version-*标签的镜像,仅清理无此类标签的镜像。以此确保Lambda发布版本绑定的镜像不会被自动删除。

2. 优化Lambda发布流程

在部署Lambda版本时,同步给对应的ECR镜像打上保护标签,避免后续被生命周期策略清理。可通过AWS CLI执行:

aws ecr put-image-tag --repository-name <你的ECR仓库名> --image-digest <Lambda版本绑定的镜像摘要> --image-tag lambda-version-<Lambda版本号>

3. 调整ECR镜像保留规则

如果不需要严格限制仅保留5个镜像,可:

  • 增加保留数量(比如改为保留10个),确保旧Lambda版本依赖的镜像不会被快速清理。
  • 或者改为按创建时间保留(比如保留30天),给Lambda版本足够的生命周期缓冲。

4. 检查Lambda权限(可选)

虽然你已配置AmazonEC2ContainerRegistryReadOnly权限,但可确认该策略是否包含对目标ECR仓库的具体访问权限,避免出现权限范围不足的情况。

内容的提问来源于stack exchange,提问作者ccardone

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 14:54:56