如何在 AWS AutoScaling 中添加 Laravel 环境文件

Posted

技术标签:

【中文标题】如何在 AWS AutoScaling 中添加 Laravel 环境文件【英文标题】:How to add Laravel env file in AWS AutoScaling 【发布时间】:2017-11-17 22:40:33 【问题描述】:

我正在开发一个托管在亚马逊 AWS 上的 laravel 项目。我们还使用 AWS AutoScaling 服务,因为可以动态添加/删除新实例,我也在使用 AWS CodeDeploy 所以每当创建一个新实例时,它都会从 github 中提取代码,因为我们在 git 上不包含环境变量文件,因此新实例将没有环境变量文件,因此应用程序将无法运行。我也不想在 git 上包含环境变量文件,因为不建议在 git 上包含该文件。如果我在这里忽略最佳实践并在 git 上添加 env 文件,那么仍然存在问题,因为我有不同的分支和不同的 env 文件,所以当我合并代码时,它也会替换 env 文件。那么这个案例的最佳实践或解决方案是什么?

仅供参考:我们没有使用 ElasticBeanstalk,因为我知道在弹性 beanstalk 上有一个选项可以在 EB 仪表板上添加环境变量和 env 文件的路径在创建新实例时创建,但我们没有使用 ElasticBeanstalk,我们使用的是 AutoScaling 服务,根据我的发现,AWS 没有为 AutoScaling提供此类功能> 服务。

【问题讨论】:

How to set environment variables for Laravel 5 on AWS EC2 with mysql的可能重复 实际上,如果我们使用弹性beantalk但我们不使用弹性beantalk,我们可以做类似的事情,我们正在使用自动缩放,根据我的发现,我们无法在aws的自动缩放中添加环境变量。 有没有人遇到过完成这项工作的最佳实践? 【参考方案1】:

有几个选项可以为应用程序配置环境变量。

    将 env 文件放在 S3 上并在启动时在该环境的用户数据/启动配置中自动缩放下拉该 env 的配置文件。还要将其锁定在某个环境的角色中,只允许访问该存储桶。

    将环境变量存储在 Dynamodb 中以用于环境,并在启动时在用户数据中查找这些内容并设置为环境变量。 (除非包含秘密/连接字符串等,否则无法将加密的秘密存储在 DDB 中。)

    使用领事https://www.consul.io/

KV 存储:应用程序可以将 Consul 的分层键/值存储用于任意数量的目的,包括动态配置、特征标记、协调、领导者选举等。简单的 HTTP API 使其易于使用。

【讨论】:

以上是关于如何在 AWS AutoScaling 中添加 Laravel 环境文件的主要内容,如果未能解决你的问题,请参考以下文章

在 CloudFormation 模板中为 Aurora 数据库集群定义 AutoScaling

使用 aws Autoscaling 组直接附加应用程序负载均衡器/网络负载均衡器

AWS Autoscaling 和 AWS Opsworks 有啥区别

查看AWS Autoscaling Group EC2指标的最佳方式

AWS 是不是支持 RDS 实例的 Autoscaling

将地图转换为terraform aws_autoscaling_group的列表