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

Github Actions报错:'awscli'无安装候选,切换Ubuntu版本仍未解决

问题排查与解决方案

核心原因

  1. 依赖的第三方Action版本过旧:你用的chrislennon/action-aws-cli@v1.1是2019年的老版本,内部通过apt安装AWS CLI v1,但这个逻辑在Ubuntu 22.04上可能因为源更新不及时、依赖缺失等问题失效。
  2. 配置语法错误:你的AWS_STACK_NAME和AWS_REGION用了{{secrets.XXX}}的嵌套写法,这不符合GitHub Actions的语法规范,正确写法是${{ secrets.XXX }}——虽然这不是直接导致awscli安装失败的原因,但会引发后续部署步骤的问题。
  3. 老旧SAM Action的潜在依赖问题:r0zar/sam-deploy-action@v1.4同样是缺乏维护的版本,可能也会尝试安装AWS CLI,进一步加剧冲突。

可行解决方案

方案1:改用AWS官方Action(推荐)

官方Action维护及时,兼容性更好,直接替换掉老旧的第三方工具:

deploy:
  runs-on: ubuntu-22.04
  needs: [build-and-push]
  steps:
  - uses: actions/checkout@v4  # 升级到最新版checkout,避免兼容性问题
  - name: 配置AWS凭证
    uses: aws-actions/configure-aws-credentials@v4
    with:
      aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
      aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
      aws-region: ${{ secrets.AWS_REGION }}
  - name: 安装AWS CLI v2
    uses: aws-actions/aws-cli@v2
  - run: aws s3 ls
  - name: SAM部署
    uses: aws-actions/aws-sam-cli@v2
    with:
      command: deploy
      template-file: template.yml
      stack-name: ${{ secrets.AWS_STACK_NAME }}
      s3-bucket: terraform-bucket
      region: ${{ secrets.AWS_REGION }}

方案2:修复旧Action的安装逻辑(临时过渡用)

如果必须保留原有Action,先强制更新apt源再执行安装:

deploy:
  runs-on: ubuntu-22.04
  needs: [build-and-push]
  steps:
  - uses: actions/checkout@v1
  - name: 更新apt源并安装依赖
    run: sudo apt update && sudo apt install -y apt-transport-https ca-certificates
  - uses: chrislennon/action-aws-cli@v1.1
  - run: aws s3 ls
    env:
      AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
      AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
  - uses: r0zar/sam-deploy-action@v1.4
    env:
      TEMPLATE: 'template.yml'
      AWS_STACK_NAME: ${{ secrets.AWS_STACK_NAME }}  # 修正语法错误
      AWS_REGION: ${{ secrets.AWS_REGION }}          # 修正语法错误
      AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
      AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
      AWS_DEPLOY_BUCKET: 'terraform-bucket'

方案3:手动安装AWS CLI v2

完全绕开第三方Action,手动安装最新版AWS CLI:

deploy:
  runs-on: ubuntu-22.04
  needs: [build-and-push]
  steps:
  - uses: actions/checkout@v4
  - name: 手动安装AWS CLI v2
    run: |
      curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
      unzip awscliv2.zip
      sudo ./aws/install
  - run: aws s3 ls
    env:
      AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
      AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
      AWS_DEFAULT_REGION: ${{ secrets.AWS_REGION }}
  - uses: r0zar/sam-deploy-action@v1.4
    env:
      TEMPLATE: 'template.yml'
      AWS_STACK_NAME: ${{ secrets.AWS_STACK_NAME }}
      AWS_REGION: ${{ secrets.AWS_REGION }}
      AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
      AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
      AWS_DEPLOY_BUCKET: 'terraform-bucket'

重要提醒

  • 尽量避免使用停止维护的第三方Action,官方工具在兼容性和安全性上更有保障。
  • 所有GitHub Secrets的引用必须严格遵循${{ secrets.KEY_NAME }}的语法,错误写法会导致变量无法正常解析。
  • AWS CLI v2相比v1支持更多功能,且是官方主推版本,建议优先选用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 18:44:53