如何将Laravel环境文件添加到AWS AutoScaling

10 浏览
0 Comments

如何将Laravel环境文件添加到AWS AutoScaling

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

FYI:我们没有使用ElasticBeanstalk,因为我了解到在弹性Beanstalk上有一个选项可以在EB仪表板上添加环境变量和新实例创建时创建env文件的路径,但我们没有使用ElasticBeanstalk,我们使用的是AutoScaling服务,根据我的调查,AWS不提供AutoScaling服务的这种功能。

0
0 Comments

在AWS AutoScaling中添加Laravel env文件的原因是为了配置应用程序的环境变量。有几种选项可以实现这一目的。

第一种方法是将env文件放置在S3上,并在启动时使用用户数据/启动配置来拉取该环境的配置文件。此外,为了在特定环境的角色中限制对该存储桶的访问权限。

第二种方法是将env变量存储在Dynamodb中,并在启动时在用户数据中查找并设置为env变量。注意:除非包含密钥/连接字符串等机密信息,否则无法将加密密钥存储在DynamoDB中。

第三种方法是使用Consul。Consul提供了一个层次化的键/值存储,应用程序可以利用它进行动态配置、功能标志、协调、领导者选举等等。它提供了简单的HTTP API,非常易于使用。

以上是如何在AWS AutoScaling中添加Laravel env文件的几种方法。您可以根据具体的需求选择适合您的方法来配置环境变量。

# 示例代码
# 在启动配置中拉取S3上的env文件并设置为环境变量
aws s3 cp s3://bucket-name/path/to/env-file .env
# 从Dynamodb中查找env变量并设置为环境变量
export ENV_VAR=$(aws dynamodb get-item --table-name env-vars-table --key '{"env": {"S": "dev"}}' --query 'Item.value.S' --output text)
export ANOTHER_VAR=$(aws dynamodb get-item --table-name env-vars-table --key '{"env": {"S": "dev"}}' --query 'Item.another_var.S' --output text)

参考链接:

- [AWS Auto Scaling](https://aws.amazon.com/autoscaling/)

- [Consul](https://www.consul.io/)

0