Я пытаюсь предоставить архитектуру Terraform и обеспечить, чтобы приложения знали как можно меньше информации о том, что происходит вокруг них.
Моя цель - создать приложение, использующее Amazon SDK, чтобы узнать, какие экземпляры RDS доступны для него, а затем подключиться к одному из них. Таким образом, никакая внешняя информация (db-instance-identifier
или Tag
) не требуется.
Приложение будет просто описывать экземпляры RDS, и, поскольку EC2, на котором оно работает, Terraform предоставил бы разрешения только для конкретной RDS, он получил бы только один результат из describe-db-instances
. Затем, используя механизм аутентификации RDS IAM, приложение подключается к БД и выполняет свое предназначение.
Хотя из того, что я видел, например, в этом вопросе SO и документации AWS RDS describe-db-instances
- это команда типа "все или ничего". Политика IAM, предоставленная роли IAM в профиле экземпляра EC2, должна иметь Resource: "*"
. Но затем описание содержит все экземпляры RDS, а не только тот, к которому EC2 должен быть подключен. Приложение не может отличить, какой из n
результатов из списка экземпляров должен использоваться.
С другой стороны, когда вы ограничиваете describe-db-instances
конкретным ресурсом, единственный способ описать без ошибок - добавить db-instance-identifier
к запросу:
aws rds describe-db-instances --db-instance-identifier databasename
Но тогда приложению необходимо извлечь db-instance-identifier
извне, и это тоже не отвечает моим требованиям.
Возможно, я ошибаюсь в некоторых своих рассуждениях, но возможно ли это даже достичь?