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

如何更新CodePipeline的AWS CLI版本或适配Lambda更新命令兼容1.18

解决AWS CodePipeline中旧CLI版本无法通过镜像更新Lambda的问题

问题原因

你使用的AWS CLI版本(1.18.49)过于老旧,aws lambda update-function-code命令在该版本中尚未支持--image-uri参数——该参数是AWS为Lambda容器镜像部署功能新增的,需要较新的CLI版本才能识别。

解决方案一:在构建阶段升级AWS CLI

直接在CodePipeline的构建步骤中升级AWS CLI到支持容器镜像参数的版本(推荐使用AWS CLI v2,兼容性更好),修改后的构建YAML如下:

build:
  commands:
    - echo Entered the post_build phase...
    - echo Build completed on `date`
    - docker build -t $imageName .
    - docker tag $imageName $ecr:latest
    - aws ecr get-login-password --region $region | docker login --username AWS --password-stdin $account.dkr.ecr.$region.amazonaws.com
    - docker push $ecr
    - echo going to update lambda 
    # 升级AWS CLI到v2版本
    - curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
    - unzip -q awscliv2.zip
    - sudo ./aws/install --update
    - aws --version  # 验证升级后的版本
    - echo $lambdaFunctionName
    - echo $ecr
    - aws lambda update-function-code --function-name $function_name --image-uri $ecr:latest

说明

  • 上述命令会下载并安装AWS CLI v2,覆盖旧版本。
  • --update参数确保直接升级现有CLI,无需卸载旧版本。
  • 升级后执行aws --version应该会显示类似aws-cli/2.x.x的版本,此时--image-uri参数即可正常使用。

解决方案二:改用S3部署(备选)

如果暂时无法升级CLI,可将代码打包为zip文件上传到S3,再使用旧版本CLI支持的参数更新Lambda:

aws lambda update-function-code --function-name $function_name --s3-bucket your-bucket-name --s3-key path/to/your/code.zip

但此方法不适用于容器镜像部署场景,仅作为传统代码包部署的备选方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 04:05:23