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

如何通过Bitbucket Pipelines为多AWS环境动态提供密钥部署同一分支?

我来帮你解决这个问题!要在Bitbucket Pipelines里用同一个develop分支部署到AWS的dev/uat/prod三个环境,核心思路是把每个环境的AWS凭证单独存在Bitbucket仓库的加密变量里,然后在Pipeline配置中为每个部署阶段调用对应的变量,这样就能动态切换密钥了。下面是具体的实现步骤和配置示例:

第一步:在Bitbucket仓库配置环境专属变量

进入你的Bitbucket仓库后台,依次点击「Settings」→「Pipelines」→「Repository variables」,为每个环境添加一组独立的AWS密钥对:

  • 开发环境:DEV_AWS_ACCESS_KEY_ID 和 DEV_AWS_SECRET_ACCESS_KEY
  • UAT环境:UAT_AWS_ACCESS_KEY_ID 和 UAT_AWS_SECRET_ACCESS_KEY
  • 生产环境:PROD_AWS_ACCESS_KEY_ID 和 PROD_AWS_SECRET_ACCESS_KEY

⚠️ 一定要勾选变量的「Secured」选项,这样Bitbucket会加密存储这些敏感信息,不会在日志或配置中泄露。

第二步:编写Pipeline配置文件(bitbucket-pipelines.yml)

根据你的部署需求,这里提供两种常见的配置方案:

方案一:串行部署(依次部署dev→uat→prod)

适合需要前一个环境部署验证通过后,再部署下一个环境的场景:

# 使用AWS官方CLI镜像,省去安装步骤
image: amazon/aws-cli:latest

pipelines:
  branches:
    develop:
      # 部署到开发环境
      - step:
          name: Deploy to Development
          deployment: development # 标记为开发部署环境
          script:
            # 动态设置当前阶段的AWS密钥
            - export AWS_ACCESS_KEY_ID=$DEV_AWS_ACCESS_KEY_ID
            - export AWS_SECRET_ACCESS_KEY=$DEV_AWS_SECRET_ACCESS_KEY
            # 替换成你的实际部署命令,比如同步静态文件到S3、部署ECS服务等
            - aws s3 sync ./dist s3://your-dev-bucket --delete
            - echo "✅ 成功部署到开发环境"
      
      # 部署到UAT环境
      - step:
          name: Deploy to UAT
          deployment: test # 标记为测试部署环境
          script:
            - export AWS_ACCESS_KEY_ID=$UAT_AWS_ACCESS_KEY_ID
            - export AWS_SECRET_ACCESS_KEY=$UAT_AWS_SECRET_ACCESS_KEY
            - aws s3 sync ./dist s3://your-uat-bucket --delete
            - echo "✅ 成功部署到UAT环境"
      
      # 部署到生产环境(建议手动触发)
      - step:
          name: Deploy to Production
          deployment: production # 标记为生产部署环境
          trigger: manual # 手动触发,避免误部署
          script:
            - export AWS_ACCESS_KEY_ID=$PROD_AWS_ACCESS_KEY_ID
            - export AWS_SECRET_ACCESS_KEY=$PROD_AWS_SECRET_ACCESS_KEY
            - aws s3 sync ./dist s3://your-prod-bucket --delete
            - echo "✅ 成功部署到生产环境"

方案二:并行部署(同时部署三个环境)

如果三个环境的部署互不依赖,想要提高效率可以用并行步骤:

image: amazon/aws-cli:latest

pipelines:
  branches:
    develop:
      - parallel:
          # 并行部署开发环境
          - step:
              name: Deploy to Development
              deployment: development
              script:
                - export AWS_ACCESS_KEY_ID=$DEV_AWS_ACCESS_KEY_ID
                - export AWS_SECRET_ACCESS_KEY=$DEV_AWS_SECRET_ACCESS_KEY
                - aws s3 sync ./dist s3://your-dev-bucket --delete
                - echo "✅ Dev部署完成"
          
          # 并行部署UAT环境
          - step:
              name: Deploy to UAT
              deployment: test
              script:
                - export AWS_ACCESS_KEY_ID=$UAT_AWS_ACCESS_KEY_ID
                - export AWS_SECRET_ACCESS_KEY=$UAT_AWS_SECRET_ACCESS_KEY
                - aws s3 sync ./dist s3://your-uat-bucket --delete
                - echo "✅ UAT部署完成"
          
          # 并行部署生产环境(手动触发)
          - step:
              name: Deploy to Production
              deployment: production
              trigger: manual
              script:
                - export AWS_ACCESS_KEY_ID=$PROD_AWS_ACCESS_KEY_ID
                - export AWS_SECRET_ACCESS_KEY=$PROD_AWS_SECRET_ACCESS_KEY
                - aws s3 sync ./dist s3://your-prod-bucket --delete
                - echo "✅ Prod部署完成"
额外建议
  • 权限最小化:每个环境的AWS IAM用户只赋予对应环境所需的最小权限(比如dev的用户只能操作dev相关的资源),降低泄露风险。
  • 部署审批:你可以在Bitbucket的「Deployments」页面给生产环境添加审批流程,需要指定人员确认后才能部署。
  • 日志验证:部署完成后,可以在Bitbucket Pipelines的日志中检查是否正确加载了对应环境的密钥(只会显示变量名,不会显示明文)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:34:10