当前位置: 首页 > 知识库问答 >
问题:

如何在弹性豆茎中设置来自平台钩子的环境变量?

云长恨
2023-03-14

我试图使用弹性豆茎部署一个django应用程序。应用程序使用环境变量连接到数据库。

DATABASES = {
  'default': {
    'ENGINE': 'django.db.backends.mysql',
    'NAME': os.environ['RDS_DB_NAME'],
    'USER': os.environ['RDS_USERNAME'],
    'PASSWORD': os.environ['RDS_PASSWORD'],
    'HOST': os.environ['RDS_HOSTNAME'],
    'PORT': os.environ['RDS_PORT'],
  }
}

django_app/.platform/hooks/prebuild/set_db_credentials.sh

#!/bin/sh

# fetch secrets from secrets manager and store in db_credentials.json
aws secretsmanager get-secret-value --secret-id="$RDS_SECRETS_ID" --region="$RDS_SECRETS_REGION" --query=SecretString --output text > db_credentials.json

# export as environment variables
export RDS_HOSTNAME="$(jq -r '.host' db_credentials.json)"
export RDS_PORT="$(jq -r '.port' db_credentials.json)"
export RDS_USERNAME="$(jq -r '.username' db_credentials.json)"
export RDS_PASSWORD="$(jq -r '.password' db_credentials.json)"
export RDS_DB_NAME="$(jq -r '.dbname' db_credentials.json)"

rm db_credentials.json

钩子运行良好,但环境变量对应用程序不可用。有人知道怎么做吗?

共有1个答案

姬俊驰
2023-03-14

您可能可以使用EB钩子动态创建aws:ellasticBeanstalk:application:environment.ebextensions配置文件。

因此,我们的想法是在EB读取并执行.ebextensions文件之前,使用一个EB钩子为env变量创建适当的.ebextensions文件。

 类似资料:
  • 我正在尝试通过亚马逊弹性豆子(使用本教程)部署我的django应用程序,但收到以下错误。 错误:Elastic Beanstalk找不到任何平台。确保您拥有访问Elastic Beanstalk所需的权限。 我该如何解决这个问题? 谢谢

  • 问题内容: 对于Windows,我的Node脚本应如下所示: 但是在Linux上没有,所以会像这样: 有没有办法以一致且跨平台的方式声明环境变量? 问题答案: 我最近遇到了跨环境项目。这很简单 这会将环境变量设置为,而不管操作系统是什么。

  • 有人知道是否有可能将现有的AWS弹性豆茎环境更改为应用程序负载平衡器(而不是经典的负载平衡器)。 据我所知,只有应用程序ELB可以被AWS WAF和DDOS“屏蔽”保护,所以任何现有的EB应用程序都不能利用这些特性,因为他们有经典的ELB。

  • 我在尝试将我的Godaddy域与AWS Elastic Beanstalk实例链接时遇到了这个问题。我发现了很多关于如何将EC2实例与Godaddy上的域链接的文档,但对于Elastic Beanstalk实例却没有。所以我最终得到了这个网址:

  • 我在elastic beanstalk上使用django进行开发,我想对apache配置做两个更改: 1.将www.domain.com重定向到domain.com 2.将http://domain.com重定向到https://domain.com 有人知道如何在弹性豆茎中添加重写吗?