将 rds 端点设置为 terraform 中 Elastic Beanstalk 的环境变量

问题描述 投票:0回答:1

我有以下 terraform 脚本,它使用 rds 创建 Elastic Beanstalk:

resource "aws_elastic_beanstalk_application" "elb_app" {
  name = "my-app"

}


resource "aws_elastic_beanstalk_environment" "elb_env" {
  name                = "my-env"
  application         = aws_elastic_beanstalk_application.elb_app.name
  solution_stack_name = data.aws_elastic_beanstalk_solution_stack.net_latest.name
  
  setting {
    namespace = "aws:elasticbeanstalk:application:environment"
    name      = "RDS_HOSTNAME"
    value     = #  How can I set here the RDS endpoint ???
  }

  setting {
    namespace = "aws:rds:dbinstance"
    name      = "HasCoupledDatabase"
    value     = "true"
  }

  setting {
    namespace = "aws:rds:dbinstance"
    name      = "DBEngine"
    value     = var.db_engine
  }

  setting {
    namespace = "aws:rds:dbinstance"
    name      = "DBEngineVersion"
    value     = var.db_engine_version
  }

  setting {
    namespace = "aws:rds:dbinstance"
    name      = "DBInstanceClass"
    value     = var.db_instance_type
  }

  setting {
    namespace = "aws:rds:dbinstance"
    name      = "DBPassword"
    value     = var.db_password
  }

  setting {
    namespace = "aws:rds:dbinstance"
    name      = "DBUser"
    value     = var.db_user
  }
 }

问题是:如何设置

RDS_HOSTNAME

据我所知,可以从作为单独资源创建的 RDS 获取端点,但我没有找到任何文档如何从作为 Elastic Beanstalk 一部分创建的 RDS 获取端点。 我花了很多天没有找到任何例子,但这应该是开发人员的典型案例。

amazon-web-services terraform amazon-elastic-beanstalk amazon-rds terraform-provider-aws
1个回答
0
投票

我还没有尝试过,但根据文档,这些环境变量是由弹性豆茎自动注入的:

https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/create-deploy-nodejs.rds.html#nodejs-rds-connect

添加数据库实例大约需要10分钟。环境更新完成后,您的应用程序可通过以下环境属性使用数据库实例的主机名和其他连接信息:

enter image description here

要验证它,您可以使用 RDS 手动创建 env 环境,然后执行以下验证之一:

  1. 使用 UI,转到配置并检查这些变量是否存在

enter image description here

  1. 使用shell,进入ec2并执行
    env
  2. 从应用程序内部,在入口点打印环境变量
© www.soinside.com 2019 - 2024. All rights reserved.