You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Terraform中为AWS Glue连接器使用AWS Secrets Manager的问题

问题分析与解决

你当前的问题是只声明了AWS Secrets Manager密钥的元数据数据源,但没有获取密钥的实际内容,也未在Glue连接配置中正确引用密钥里的用户名和密码。

解决步骤

1. 补充获取密钥实际内容的数据源

aws_secretmanager_secret仅能获取密钥的基本信息(比如ARN、名称),要拿到密钥里的具体值,需要用aws_secretmanager_secret_version数据源:

data "aws_secretmanager_secret" "example" {
  name = "example-secret"
}

# 获取密钥的最新版本内容
data "aws_secretmanager_secret_version" "example" {
  secret_id = data.aws_secretmanager_secret.example.id
}

2. 解析密钥中的用户名和密码

假设你的Secrets Manager密钥是JSON格式(比如{"username":"myusername", "password":"mypassword"}),用jsondecode函数解析出对应字段:

locals {
  db_credentials = jsondecode(data.aws_secretmanager_secret_version.example.secret_string)
}

3. 在Glue连接中引用解析后的凭证

把硬编码的用户名和密码替换为本地变量引用:

resource "aws_glue_connection" "my_connection" {
  name = "my_connection"

  connection_properties = {
    JDBC_CONNECTION_URL = "jdbc:datadirect:googlebigquery:AuthenticationMethod=serviceaccount;Project=myproject;Dataset=mydataset;ServiceAccountEmail=myemail@myproject-12345.iam.gserviceaccount.com;ServiceAccountPrivateKey=/path-to/json-or-p12-file"
    PASSWORD            = local.db_credentials.password
    USERNAME            = local.db_credentials.username
  }
}

额外注意事项

  • 确保你的Terraform执行角色有secretsmanager:GetSecretValue权限,否则会报错权限不足。
  • 如果你的密钥不是JSON格式(比如纯文本),直接使用data.aws_secretmanager_secret_version.example.secret_string即可,无需jsondecode。

内容的提问来源于stack exchange,提问作者Alexis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 17:24:55