如何使用 CodeBuild 将生成的文件夹内容上传到 S3?

How to upload a generated folder content into S3 using CodeBuild?

我正在尝试在 AWS 上配置一个 CodePipeline,它将我的 Nuxt 网站放在 Github、运行 命令 npm run generate 上以生成静态网站,然后上传 dist S3 存储桶上的文件夹。

这是我的 buildspec.yml 样子:

version: 0.2

phases:
  install:
    commands:
      - npm install
  build:
    commands:
      - npm run generate
  post_build:
    commands:
      - aws s3 sync dist $S3_BUCKET

我得到的错误是:The user-provided path dist does not exist.有人知道如何更正这个吗?我读了很多关于人工制品的文章,但我以前从未使用过它们……

提前致谢,

您可以使用工件将 dist 文件夹上传到 s3。我建议不要使用 post 构建命令来实现此目的,因为 post 构建命令即使在构建失败时也会运行,这是 codebuild 的已知限制。只需将您的构建规范替换为以下内容即可。

version: 0.2

phases:
  install:
    commands:
      - npm install
  build:
    commands:
      - npm run generate
artifacts:
  files:
    - '**/*'
  base-directory: 'dist'

'**/*'表示将上传基目录"dist"下的所有文件和文件夹。您需要在 aws 控制台(浏览器)中提及您的存储桶名称。 还要确保您的代码构建 IAM 角色具有足够的权限来访问您的存储桶。