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

Séb*_*rre 1 amazon-s3 amazon-web-services aws-codepipeline aws-codebuild nuxt.js

我正在尝试在 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
Run Code Online (Sandbox Code Playgroud)

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

提前致谢,

Mou*_*ick 5

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

version: 0.2

phases:
  install:
    commands:
      - npm install
  build:
    commands:
      - npm run generate
artifacts:
  files:
    - '**/*'
  base-directory: 'dist'
Run Code Online (Sandbox Code Playgroud)

'**/*' 表示将上传基目录“dist”下的所有文件和文件夹。您需要在 aws 控制台(浏览器)中提及您的存储桶名称。 在此处输入图片说明 还要确保您的 codebuild IAM 角色具有足够的权限来访问您的存储桶。