我有以下 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 获取端点。 我花了很多天没有找到任何例子,但这应该是开发人员的典型案例。
我还没有尝试过,但根据文档,这些环境变量是由弹性豆茎自动注入的:
添加数据库实例大约需要10分钟。环境更新完成后,您的应用程序可通过以下环境属性使用数据库实例的主机名和其他连接信息:
要验证它,您可以使用 RDS 手动创建 env 环境,然后执行以下验证之一:
env
。