如何在ElasticBeanstalk中获取AWS CodeBuild的输出zip?

时间:2017-04-19 22:38:07

标签: amazon-web-services amazon-s3 elastic-beanstalk aws-codepipeline aws-codebuild

我正在尝试使用S3源代码,CodeBuild和Elastic Beanstalk(nodejs环境)来使用AWS CodePipeline

我的问题出在CodeBuild和Beanstalk之间。

我让CodeBuild通过工件输出最终nodeJS应用程序的zip文件。这是我的CodeBuild buildspec.yml

version: 0.1

phases:
  install:
    commands:
      - echo Installing Node Modules...
      - npm install -g mocha
      - npm install
  post_build:
    commands:
      - echo Performing Test
      - npm test
      - zip -r app-api.zip .
artifacts:
  files:
    - app-api.zip

当我手动运行CodeBuild时,它成功地将zip放入S3。当我运行CodePipeline时,它将zip放在/ var / app / current中的每个Elastic Beanstalk实例上作为app-api.zip

我想要的是将app-api.zip解压缩为/ var / app / current。就像通过Elastic Beanstalk控制台界面进行手动部署一样。

1 个答案:

答案 0 :(得分:4)

首先,快速解释一下。 CodePipeline将您指定为工件的任何文件发送到Elastic Beanstalk。在您的情况下,您要发送app-api.zip

您可能希望做的事情是发送所有文件,但不要将它们换成ZIP。

让我们将您的buildspec.yml更改为不创建app-api.zip,而是将原始文件发送到CodePipeline。

version: 0.1

phases:
  install:
    commands:
      - echo Installing Node Modules...
      - npm install -g mocha
      - npm install
  post_build:
    commands:
      - echo Performing Test
      - npm test
#     - zip -r app-api.zip . **<< Remove this line**
artifacts:
  files:
    - '**/*'
# Replace artifacts/files with the value shown above