如何为AWS Elastic Beanstalk实例添加文件并在自动扩缩容时保留?
Elastic Beanstalk自动扩缩容实例配置文件持久化方案
你手动在EC2实例上创建的文件会丢失,是因为Elastic Beanstalk自动扩缩容时始终基于官方标准平台镜像启动新实例,不会同步任何手动对运行中实例做的修改,所有实例自定义操作必须通过EB原生支持的配置流程实现,可选方案如下:
- 方案1:使用
.ebextensions配置(最推荐,轻量易维护)
在应用部署包的根目录下创建.ebextensions文件夹,新增后缀为.config的YAML格式配置文件,可直接定义需自动生成的文件路径、权限、所有者和内容,示例如下:
files: "/opt/webapp/config/custom.properties": mode: "000644" owner: webapp group: webapp content: | # 此处写入你的配置文件内容 service.timeout=3000 cache.enable=true thirdparty.api.key=your_key
配置完成后重新部署应用,后续所有新启动的扩缩容实例都会自动创建对应配置文件,每次修改配置只需要更新.config文件重新部署即可。
方案2:自定义EC2 AMI(适合复杂自定义场景)
如果你除了配置文件外还安装了大量自定义软件、依赖包,可以先在一个运行中的EB EC2实例上完成所有配置,接着基于该实例制作自定义AMI,之后在EB环境配置的「实例」板块中将AMI ID修改为你自制的AMI ID,后续新启动的实例都会基于该AMI创建,自带所有提前配置好的内容。
注意:自定义AMI需要和你当前使用的EB平台版本匹配,每次升级EB平台版本后都需要重新制作AMI,维护成本高于.ebextensions方案。补充方案:环境属性配置
如果你需要的是键值对格式的配置项,无需单独生成配置文件,可以直接在EB控制台环境详情页的「配置」-「软件」-「环境属性」中添加键值对,应用可直接读取系统环境变量获取对应值,无需维护配置文件。
内容的提问来源于stack exchange,提问作者Steve Green
相关产品推荐
相关产品推荐

