如何使用秘密管理器为 RDS 创建 DMS 目标端点

时间:2021-07-08 08:29:13

标签: amazon-web-services terraform amazon-rds aws-secrets-manager aws-dms

我们如何创建 DMS endpoint for RDS using Terraform by providing the Secret Manager ARN 来获取凭据?我查看了 documentation,但找不到任何东西。

1 个答案:

答案 0 :(得分:1)

目前有 an open feature request 供 DMS 使用本机使用机密管理器连接到您的 RDS 实例。这有 a linked pull request 最初现在增加了对 PostgreSQL 和 Oracle RDS 实例的支持,但目前尚未经过审核,因此很难知道何时可以发布该功能。

如果您不使用自动密钥轮换(或可以在轮换后重新运行 Terraform)并且不介意存储在状态文件中的密码但仍想使用存储在 AWS Secrets Manager 中的密钥,那么您可以拥有Terraform 在应用时从 Secrets Manager 检索密钥,并使用该密钥使用用户名和密码组合来配置 DMS 端点。

一个基本示例如下所示:

data "aws_secretsmanager_secret" "example" {
  name = "example"
}

data "aws_secretsmanager_secret_version" "example" {
  secret_id = data.aws_secretsmanager_secret.example.id
}

resource "aws_dms_endpoint" "example" {
  certificate_arn             = "arn:aws:acm:us-east-1:123456789012:certificate/12345678-1234-1234-1234-123456789012"
  database_name               = "test"
  endpoint_id                 = "test-dms-endpoint-tf"
  endpoint_type               = "source"
  engine_name                 = "aurora"
  extra_connection_attributes = ""
  kms_key_arn                 = "arn:aws:kms:us-east-1:123456789012:key/12345678-1234-1234-1234-123456789012"
  password                    = jsondecode(data.aws_secretsmanager_secret_version.example.secret_string)["password"]
  port                        = 3306
  server_name                 = "test"
  ssl_mode                    = "none"

  tags = {
    Name = "test"
  }

  username = "test"
}