问题描述
我们如何创建 DMS endpoint for RDS using Terraform by providing the Secret Manager ARN 来获取凭据?我查看了 documentation,但找不到任何东西。
解决方法
目前有 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"
}