我正在使用 CodePipeline 将 git 主分支上的任何内容部署到 Elastic Beanstalk 中。
我按照本教程扩展了默认的nginx配置(特别是最大正文大小(: https://medium.com/swlh/using-ebextensions-to-extend-nginx-default-configuration-in-aws-elastic-beanstalk-189b844ab6ad
但是,由于我没有使用标准的 eb deploy 命令,我认为 CodePipeline 流不会进入 .ebextension 目录并执行它应该做的事情。
有没有办法使用代码管道(这样我就可以从主节点获得 CI/CD(以及利用 .ebextension 的好处?
如果您直接使用 eb deploy 命令,这是否有效?如果是,那么我会尝试使用管道执行历史记录来查找最近的工件,以使用 eb deploy 命令下载和测试。
如果 CodePipeline 的 Elastic BeanstalkJob Worker 不能很好地处理 ebextensions,我认为部署到 Elastic Beanstalk 是完全没用的。
我相信扩展本身存在一些问题。您可以调查这些日志文件中的执行情况,以查看部署期间是否出现问题:
/- var/log/eb-activity.log /
- var/log/eb-commandprocessor.log /
- var/log/eb-version-deployment.log
在 Elastic Beanstalk 上部署时,.ebextension 下的所有配置文件都将按照优先级顺序执行。因此,无论您使用的是代码管道还是 eb 部署,都将执行 ebextension 目录中的所有文件。因此,您不必担心。
请注意您使用的平台,因为"64 位 Amazon Linux 2 v5.0.2"而不是.ebextension
您必须使用.platform
。
-
创建
.platform
目录而不是.ebextension
-
创建子文件夹和 proxy.conf 文件,如以下路径
.platform/nginx/conf.d/proxy.conf
-
在
proxy.conf
写下你需要的东西,如果要求身体大小只是client_max_body_size 20M;
我解决了这个问题。您需要在部署中包含 .ebextension 文件夹。 我只复制 dist 文件,然后我也需要包含: - .ebextensions/**/*
例:
## Required mapping. Represents the buildspec version. We recommend that you use 0.2.
version: 0.2
phases:
## install: install dependencies you may need for your build
install:
runtime-versions:
nodejs: 12
commands:
- echo Installing Nest...
- npm install -g @nestjs/cli
## pre_build: final commands to execute before build
pre_build:
commands:
- echo Installing source NPM dependencies...
- npm install
## build: actual build commands
build:
commands:
# Build your app
- echo Build started on `date`
- echo Compiling the Node.js code
- npm run build
## Clean up node_modules to keep only production dependencies
# - npm prune --production
## post_build: finishing touches
post_build:
commands:
- echo Build completed on `date`
# Include only the files required for your application to run.
artifacts:
files:
- dist/**/*
- package.json
- node_modules/**/*
- .ebextensions/**/*
Ande 配置文件/.ebextensions/.node-settings.config:
option_settings:
aws:elasticbeanstalk:container:nodejs:
NodeCommand: "npm run start:prod"