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

如何在Bitbucket Pipeline中复用已安装的AWSCLI工具

解决Bitbucket Pipeline步骤间复用AWSCLI的问题

Bitbucket Pipeline的每个步骤默认运行在独立的Docker容器中,容器环境相互隔离,这就是为什么&build-ecr步骤安装的AWSCLI无法在&update-ecs步骤直接使用的原因。以下是几种可行的解决方案:

方案1:使用预安装AWSCLI的自定义镜像(推荐)

最简洁高效的方式是直接使用已经预装AWSCLI的镜像作为管道基础镜像,所有步骤共享这个镜像环境,无需重复安装。

示例配置:

# 使用官方AWSCLI镜像作为基础镜像
image: amazon/aws-cli:latest

definitions:
  steps:
    - step: &build-ecr
        name: 构建并推送至ECR
        script:
          # 直接使用aws命令,无需额外安装
          - aws ecr get-login-password --region $AWS_REGION | docker login --username AWS --password-stdin $ECR_REPO_URI
          - docker build -t $IMAGE_NAME .
          - docker push $IMAGE_NAME:$TAG
        # 如果需要Docker,需启用Docker服务
        services:
          - docker
    - step: &update-ecs
        name: 更新ECS服务
        script:
          # 直接使用aws命令操作ECS
          - aws ecs update-service --cluster $ECS_CLUSTER --service $ECS_SERVICE --force-new-deployment

如果你的步骤还需要其他工具(比如Docker、Python),可以自己构建包含所有依赖的自定义镜像,推送到ECR或Docker Hub,再在image字段中引用。

方案2:通过工件(Artifacts)共享已安装的AWSCLI

如果无法使用自定义镜像,可以将&build-ecr步骤中安装的AWSCLI目录作为工件传递给&update-ecs步骤,再将其添加到系统PATH中。

示例配置:

definitions:
  steps:
    - step: &build-ecr
        name: 构建并推送至ECR
        script:
          # 将AWSCLI安装到本地可共享目录
          - mkdir -p ./aws-cli
          - curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
          - unzip awscliv2.zip
          - ./aws/install -i ./aws-cli -b ./aws-cli/bin
          # 验证安装
          - ./aws-cli/bin/aws --version
          # 后续Docker操作...
          - aws ecr get-login-password --region $AWS_REGION | docker login --username AWS --password-stdin $ECR_REPO_URI
          - docker build -t $IMAGE_NAME .
          - docker push $IMAGE_NAME:$TAG
        # 将安装好的AWSCLI目录标记为工件
        artifacts:
          - aws-cli/**
        services:
          - docker
    - step: &update-ecs
        name: 更新ECS服务
        script:
          # 将共享的AWSCLI目录添加到系统PATH
          - export PATH=$PATH:$BITBUCKET_CLONE_DIR/aws-cli/bin
          # 现在可以直接使用aws命令
          - aws ecs update-service --cluster $ECS_CLUSTER --service $ECS_SERVICE --force-new-deployment

方案3:全局前置脚本统一安装

如果上述两种方式都不适用,可以在管道的script字段中添加全局安装命令,让所有步骤执行前都安装一次AWSCLI(本质还是重复安装,但减少代码冗余):

示例配置:

image: atlassian/default-image:3

script:
  # 全局安装AWSCLI,所有步骤执行前都会运行这段脚本
  - curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
  - unzip awscliv2.zip
  - sudo ./aws/install

definitions:
  steps:
    - step: &build-ecr
        name: 构建并推送至ECR
        script:
          - aws ecr get-login-password --region $AWS_REGION | docker login --username AWS --password-stdin $ECR_REPO_URI
          - docker build -t $IMAGE_NAME .
          - docker push $IMAGE_NAME:$TAG
        services:
          - docker
    - step: &update-ecs
        name: 更新ECS服务
        script:
          - aws ecs update-service --cluster $ECS_CLUSTER --service $ECS_SERVICE --force-new-deployment

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 01:28:34