使用GitHub Action部署React至S3时遇区域配置错误求助
问题
使用GitHub Action部署React网站到S3桶时出现以下错误:
at generateRegionPrefix (/home/runner/.npm/_npx/55947e5ced8dc5f0/node_modules/aws-sdk/lib/region_config.js:6:22) at derivedKeys (/home/runner/.npm/_npx/55947e5ced8dc5f0/node_modules/aws-sdk/lib/region_config.js:13:22) at Object.configureEndpoint (/home/runner/.npm/_npx/55947e5ced8dc5f0/node_modules/aws-sdk/lib/region_config.js:38:14) at features.constructor.initialize (/home/runner/.npm/_npx/55947e5ced8dc5f0/node_modules/aws-sdk/lib/service.js:72:45) at features.constructor.Service [as constructor] (/home/runner/.npm/_npx/55947e5ced8dc5f0/node_modules/aws-sdk/lib/service.js:59:10) at features.constructor (/home/runner/.npm/_npx/55947e5ced8dc5f0/node_modules/aws-sdk/lib/util.js:637:24) at new features.constructor (/home/runner/.npm/_npx/55947e5ced8dc5f0/node_modules/aws-sdk/lib/util.js:637:24) at features.constructor.Service [as constructor] (/home/runner/.npm/_npx/55947e5ced8dc5f0/node_modules/aws-sdk/lib/service.js:50:17) at new features.constructor (/home/runner/.npm/_npx/55947e5ced8dc5f0/node_modules/aws-sdk/lib/util.js:637:24) at _callee3$ (/home/runner/.npm/_npx/55947e5ced8dc5f0/node_modules/s3-deploy/dist/deploy.js:406:22)
使用的workflow配置如下:
name: S3 Deploy Workflow on: push: branches: [ "master" ] pull_request: branches: [ "master" ] workflow_dispatch: jobs: run: runs-on: ubuntu-latest env: AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} steps: - uses: actions/checkout@v3 - name: Installs dependencies run: yarn - name: Build run: yarn build - name: Deploy uses: reggionick/s3-deploy@v3 with: folder: build bucket: ${{ secrets.S3_BUCKET }} bucket-region: ${{ secrets.S3_BUCKET_REGION }} dist-id: ${{ secrets.CLOUDFRONT_DISTRIBUTION_ID }} invalidation: / delete-removed: true no-cache: true private: true filesToInclude: ".*/*,*/*,**"
实际使用的区域为ap-southeast-2,求解决方法。
解决方法
- 检查GitHub Secrets配置:确认
S3_BUCKET_REGION这个Secret已正确创建,值确实为ap-southeast-2,无多余空格或拼写错误。 - 调整区域参数名:部分版本的
reggionick/s3-deployAction对参数名有要求,将bucket-region替换为region:- name: Deploy uses: reggionick/s3-deploy@v3 with: folder: build bucket: ${{ secrets.S3_BUCKET }} region: ${{ secrets.S3_BUCKET_REGION }} # 其余参数保持不变 - 添加全局区域环境变量:在Job的env中直接设置
AWS_REGION,强制覆盖Action的区域配置:jobs: run: runs-on: ubuntu-latest env: AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} AWS_REGION: ${{ secrets.S3_BUCKET_REGION }} # 后续步骤不变 - 升级Action版本:尝试使用
reggionick/s3-deploy的最新版本(如v4),旧版本可能存在AWS SDK区域解析的bug。 - 验证权限与区域一致性:确保AWS密钥对应的IAM用户拥有S3部署、CloudFront缓存失效的权限,且配置的区域与S3桶实际所在区域完全匹配。
内容的提问来源于stack exchange,提问作者jmckie
相关产品推荐
相关产品推荐

