У меня есть следующий скрипт terraform, который создает Elastic Beanstalk с помощью rds:
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, созданного как отдельный ресурс, но я не нашел документации, как получить это из RDS, созданного как часть Elastic Beanstalk. Я потратил много дней и не нашел ни одного примера, однако это должен быть типичный случай для разработчиков.
@JRichardsz, это не ясно из сценария?
Я не понимаю, зачем вам имя хоста, если оно будет создано и введено автоматически.





Я не пробовал, но, согласно документации, эти переменные env автоматически вводятся стеблем эластичного компонента:
Добавление экземпляра БД занимает около 10 минут. После завершения обновления среды имя хоста экземпляра БД и другая информация о соединении станут доступны вашему приложению через следующие свойства среды:
Чтобы проверить это, вы можете вручную создать среду env с помощью RDS, а затем выполнить одну из этих проверок:
env.Спасибо, это именно то, что я искал. В следующий раз буду читать документацию внимательнее.
Похоже, у вас уже есть RDS. Вы можете попробовать создать параметр SSM с именем, например rds_host, и сохранить значение хоста в этом параметре. Затем вы можете использовать его во время создания стека Cloudformation следующим образом.
'{{resolve:ssm:parameter-name:version}}'
Ссылка: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/dynamic-references.html
Вы хотите, чтобы этот бобовый стебель создал RDS, или у вас уже есть существующий RDS?