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

如何在Bitbucket Pipeline中结合OIDC使用AWS Amplify及解决部署错误

解决Bitbucket Pipeline部署AWS Amplify的错误及实现测试+手动部署流程

错误原因解析

当前报错“项目级配置已将useProfile设为false,但缺少访问密钥或区域”,核心问题:

  • Amplify CLI未获取到有效的AWS认证凭证(虽配置了OIDC,但未完成临时凭证的获取流程)
  • 未明确指定AWS区域参数

完整解决方案

1. 调整Pipeline配置,添加测试步骤+修复认证流程

更新bitbucket-pipelines.yml,先执行测试,再完成AWS OIDC凭证获取,最后设置手动触发部署:

pipelines:
  default:
    - step:
        name: Run React Tests
        image: node:18
        caches:
          - node
        script:
          - npm install
          - npm test  # 测试通过才进入后续流程
    - step:
        name: Build and Deploy to Amplify
        image: node:18
        oidc: true
        caches:
          - node
        script:
          # 安装jq工具用于解析AWS凭证
          - apt-get update && apt-get install -y jq
          # 配置OIDC相关变量
          - export AWS_ROLE_ARN=arn:aws:iam::816202482289:role/BitbucketPipelines
          - export AWS_WEB_IDENTITY_TOKEN_FILE=$(pwd)/web-identity-token
          - echo $BITBUCKET_STEP_OIDC_TOKEN > $AWS_WEB_IDENTITY_TOKEN_FILE
          - export AWS_REGION=us-east-1  # 替换为你的实际AWS区域
          
          # 通过OIDC获取临时AWS凭证
          - aws sts assume-role-with-web-identity --role-arn $AWS_ROLE_ARN --role-session-name bitbucket-pipeline --web-identity-token file://$AWS_WEB_IDENTITY_TOKEN_FILE --query "Credentials" > credentials.json
          - export AWS_ACCESS_KEY_ID=$(jq -r '.AccessKeyId' credentials.json)
          - export AWS_SECRET_ACCESS_KEY=$(jq -r '.SecretAccessKey' credentials.json)
          - export AWS_SESSION_TOKEN=$(jq -r '.SessionToken' credentials.json)
          
          # 安装依赖、构建项目
          - npm install
          - npm install -g @aws-amplify/cli
          - npm run build
          
          # 执行Amplify部署脚本
          - node setup_amplify_script.js
        # 设置为手动触发,需人工确认后执行
        trigger: manual

2. 修正Amplify部署脚本(setup_amplify_script.js)

确保脚本中配置Amplify时,明确传入区域和临时凭证参数:

const amplify = require('@aws-amplify/cli');

async function setupAmplify() {
  try {
    await amplify.configure({
      projectConfig: {
        useProfile: false,
        region: process.env.AWS_REGION,
        accessKeyId: process.env.AWS_ACCESS_KEY_ID,
        secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY,
        sessionToken: process.env.AWS_SESSION_TOKEN
      }
    });
    
    // 此处添加你的Amplify应用创建/部署逻辑
    // 示例:await amplify.addHosting({ platform: 'WEB', framework: 'REACT' });
    // 示例:await amplify.publish({});
  } catch (err) {
    console.error('Amplify部署失败:', err);
    process.exit(1);
  }
}

setupAmplify();

3. 关键注意事项

  • 确保Bitbucket Pipelines对应的IAM角色(BitbucketPipelines)拥有创建、管理AWS Amplify应用的权限
  • 替换AWS_REGION为你实际使用的AWS区域(如ap-southeast-1)
  • 确认React项目的package.json中已配置有效的test脚本

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 21:35:26