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

GitLab CI/CD测试阶段安装aws-cli失败,求替代解决方案

GitLab CI/CD安装aws-cli失败问题解决

问题背景

我们在GitLab CI/CD的测试阶段对AWS Serverless Lambda进行测试,此前运行正常,但一周前开始出现异常。测试阶段的CI配置如下:

"Test":
  image: docker:latest
  services:
    - name: amazon/dynamodb-local
      alias: dynamodb
    - name: localstack/localstack
      alias: localstack
  stage: test
  only:
    - merge_requests
    - main
  variables:
    <<: *test_variables
  coverage: /All files[^|]*\|[^|]*\s+([\d\.]+)/
  dependencies:
    - "Build"
  before_script:
    - apk --update add nodejs npm
    - apk add --no-cache aws-cli
  script:
    - node --version
    - npm --version
    - export AWS_REGION=$AWS_DEFAULT_REGION
    - export AWS_ACCESS_KEY_ID=X 
    - export AWS_SECRET_ACCESS_KEY=X
    - export DYNAMODB_LOCAL_ADDRESS=dynamodb
    - export S3_LOCAL_ADDRESS=localstack
    - npm install
    - npm run test-ci
  artifacts:
    when: always
    reports:
      junit:
        - serverless/junit/jest-junit.xml
      coverage_report:
        coverage_format: cobertura
        path: serverless/coverage/cobertura-coverage.xml

错误日志

流水线执行时触发以下错误:

$ apk add --no-cache aws-cli
fetch https://dl-cdn.alpinelinux.org/alpine/v3.20/main/x86_64/APKINDEX.tar.gz
fetch https://dl-cdn.alpinelinux.org/alpine/v3.20/community/x86_64/APKINDEX.tar.gz
ERROR: unable to select packages:
  aws-cli (no such package):
    required by: world[aws-cli]

解决方案

除了固定Alpine版本(比如使用docker:24.0.6-alpine3.19这类带具体Alpine版本的镜像),还有以下几种可行方案,无需等待Alpine推出新版本(aws-cli在Alpine v3.20中被移除是官方有意调整,后续大概率不会回归仓库):

  • 使用pip安装aws-cli
    Alpine v3.20仓库不再提供aws-cli二进制包,但可通过Python的pip安装:
    修改before_script中的安装命令:

    apk --update add nodejs npm python3 py3-pip
    pip install aws-cli
    

    此方式安装速度稍慢,但能获取最新版aws-cli。

  • 切换到预装aws-cli的基础镜像
    直接使用自带aws-cli的镜像,比如amazon/aws-cli,调整job的image配置:

    image: amazon/aws-cli:latest
    services:
      - name: amazon/dynamodb-local
        alias: dynamodb
      - name: localstack/localstack
        alias: localstack
    before_script:
      - apk --update add nodejs npm
      # 无需再安装aws-cli,镜像已预装
    

    若需同时使用docker功能,可在该镜像中额外安装docker-cli,或使用包含两者的自定义镜像。

  • 直接下载aws-cli二进制压缩包
    从AWS官方获取预编译的二进制包安装:
    在before_script中添加:

    apk --update add nodejs npm curl unzip
    curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
    unzip awscliv2.zip
    ./aws/install
    

    此方式不受Alpine仓库限制,可获取官方最新版本。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 14:26:15