如何在Terraform的aws_secretsmanager_secret_version中替换值为base64编码的JSON内容
实现方案
你可以直接通过Terraform内置的jsonencode函数构造合法的JSON结构,避免手动转义引号出错,将base64encode(file("./src/secret.json"))作为config字段的值传入即可,修改后的资源定义如下:
resource "aws_secretsmanager_secret_version" "testtools" { secret_id = aws_secretsmanager_secret.testtools.id secret_string = jsonencode({ config = base64encode(file("./src/secret.json")) }) }
注意事项
- 请确保
./src/secret.json文件在Terraform执行时的工作目录下存在,否则file函数会读取失败抛出错误 - 如果
secret.json包含敏感信息,建议将该文件加入.gitignore,避免敏感数据误提交到代码仓库 - 你可以通过
terraform console命令提前验证编码结果:直接在控制台输入base64encode(file("./src/secret.json"))即可输出编码后的字符串,快速排查路径或格式问题
补充:如果坚持要手动拼接JSON字符串也可以使用插值语法,但是该写法容易出现转义错误,不推荐使用:
resource "aws_secretsmanager_secret_version" "testtools" { secret_id = aws_secretsmanager_secret.testtools.id secret_string = "{\"config\":\"${base64encode(file("./src/secret.json"))}\"}" }
内容的提问来源于stack exchange,提问作者Kaliph
相关产品推荐
相关产品推荐

