パスワードやキーを配置せずに、インフラストラクチャを適切にセットアップしようとしています。AWS RDS には、ユーザー (アプリケーション) が生成されたトークンで認証できるようにするオプションがあります。
ただし、ドキュメントでは、手順の 1つ (これ) では、Postgres データベースでクエリを実行してユーザーを作成し、特定の権限を付与する必要があります。
CREATE USER test_rds WITH LOGIN;
GRANT rds_iam TO test_rds;
Terraform でスタック全体をプロビジョニングしたい。次のいずれかを使用して、RDS のインスタンス化後にクエリ ( here )を実行するための「ハック」をいくつか調べました。
resource "null_resource" "db_setup" {
depends_on = ["aws_db_instance.your_database_instance", "aws_security_group.sg_allowing_external_access"]
provisioner "local-exec" {
// run shell commands to manually psql into the db
また:
resource "aws_instance" "web" {
provisioner "remote-exec" {
inline = [
// run shell commands to manually psql into the db
ただし、どちらもマスターパスワードを作成し、何らかの方法で「スクリプト」内に配信する必要があります。
ハードコーディングされたパスワードが渡されずに、Terraform できれいにそれを行うことは可能ですか?
データベースをプロビジョニングし、git リポジトリにパスワードを入力せずに、正しいアクセス許可を持つ特定の EC2/ECS インスタンスのみを有効にしたいと考えています。