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

如何通过AWS Copilot CLI实现多环境自动部署?

AWS Copilot Pipeline 静态站点部署问题排查

我是AWS新手,现有一个基于HTML/CSS/JS/PNG的静态站点项目,已通过webpack将代码编译到/dist目录,手动执行npm run build和copilot svc deploy可成功部署到development、stage、prod三个环境的S3桶中。

为实现BitBucket主分支提交后自动部署,配置了AWS Copilot Pipeline,但遇到两个问题:

  1. 流水线未遵循requires_approval: true配置,直接完成所有部署阶段;
  2. S3桶中的内容完全没有更新。

以下是针对两个问题的排查方向:


问题1:流水线不触发审批流程

检查Pipeline Manifest配置层级

requires_approval必须嵌套在对应阶段的deploy块下,放在stage根层级不会被Copilot识别。正确配置示例:

stages:
  - name: test
    test_commands: ["npm test"]
  - name: staging
    deploy:
      requires_approval: true
      app: my-app
      env: staging
  - name: production
    deploy:
      requires_approval: true
      app: my-app
      env: production

如果之前配置层级错误,执行copilot pipeline update更新配置后重新部署流水线。

验证Copilot版本

旧版本Copilot可能存在审批逻辑的bug,执行copilot --version确认版本,建议升级到最新稳定版:

npm install -g @aws-cdk/core aws-cdk
npm install -g aws-copilot-cli

检查CodePipeline控制台

登录AWS CodePipeline控制台,查看生成的流水线结构,确认是否包含审批阶段。如果没有,说明manifest配置未被正确解析,需重新生成流水线。


问题2:S3桶内容未更新

核对buildspec.yml编译与产物配置

确保buildspec正确执行编译并指定产物目录:

phases:
  install:
    commands:
      - npm install
  build:
    commands:
      - npm run build
artifacts:
  files:
    - '**/*'
  base-directory: 'dist' # 必须指向webpack编译后的目录

如果base-directory未设置或路径错误,Copilot会打包根目录文件而非编译产物,导致部署无效内容。

检查服务Manifest的静态资源配置

静态站点服务的manifest.yml需正确指定静态资源目录:

name: my-static-site
type: Static Site

static_assets:
  directory: dist # 需与buildspec的产物目录一致

目录不匹配会导致Copilot找不到要部署的文件。

分析CodeBuild日志

重点查看以下日志片段:

  • Build阶段:确认npm run build是否执行成功,有无编译报错;检查artifacts上传日志,确认是否包含dist目录下的所有文件。
  • Deploy阶段:查看copilot svc deploy的输出,是否有S3文件上传记录;排查是否存在权限错误(如CodeBuild角色无S3读写权限)。

验证流水线部署命令

确认流水线的部署步骤是否正确调用copilot svc deploy并指定了目标环境,避免因环境参数错误导致部署到了其他未关注的S3桶。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 03:04:51