使用工作区从 aws secret manager 中检索 terraform 中的秘密
Retrieve a secret in terraform from aws secret manager using workspaces
我正在尝试使用以下代码行从 AWS Secret Manager 检索密钥:
"${terraform.workspace}.PROJECT_KEY" = "${jsondecode(data.aws_secretsmanager_secret_version.take-sm-store-version.secret_string)["${terraform.workspace}.PROJECT_KEY"]}"
当我 运行 terraform plan
我可以看到环境变量被正确翻译:
~ environment {
~ variables = {
"ENVIRONMENT" = "test"
+ "test.PROJECT_KEY" = "example_key_test"
然而,当我 运行 terraform apply
我遇到了以下错误:
Error: Error modifying Lambda Function Configuration example-function-test: ValidationException:
status code: 400, request id: ae52d9bc-819e-4a45-ba0d-a5b4e4de9516
还有其他方法可以解决这个问题吗?我有三个工作区 (dev/acc/prod),所以我希望通过这种方式我可以拥有一个资源(Lambda 函数),其中的环境变量是基于当前工作区设置的。
环境变量不能包含句点。您可以通过 运行 export foo.bar=baz
在 shell:
中进行本地测试
bash: export: `foo.bar=baz': not a valid identifier
Lambda API docs表示允许的字符是[a-zA-Z]([a-zA-Z0-9_])+
.
理想情况下,这将由 aws_lambda_function
资源本身验证,因此此错误会在计划或验证时显示,但不幸的是,它在架构的这一部分缺少 ValidateFunc
帮助程序。
我已提出 this pull request 添加对计划时间验证的支持。
我正在尝试使用以下代码行从 AWS Secret Manager 检索密钥:
"${terraform.workspace}.PROJECT_KEY" = "${jsondecode(data.aws_secretsmanager_secret_version.take-sm-store-version.secret_string)["${terraform.workspace}.PROJECT_KEY"]}"
当我 运行 terraform plan
我可以看到环境变量被正确翻译:
~ environment {
~ variables = {
"ENVIRONMENT" = "test"
+ "test.PROJECT_KEY" = "example_key_test"
然而,当我 运行 terraform apply
我遇到了以下错误:
Error: Error modifying Lambda Function Configuration example-function-test: ValidationException:
status code: 400, request id: ae52d9bc-819e-4a45-ba0d-a5b4e4de9516
还有其他方法可以解决这个问题吗?我有三个工作区 (dev/acc/prod),所以我希望通过这种方式我可以拥有一个资源(Lambda 函数),其中的环境变量是基于当前工作区设置的。
环境变量不能包含句点。您可以通过 运行 export foo.bar=baz
在 shell:
bash: export: `foo.bar=baz': not a valid identifier
Lambda API docs表示允许的字符是[a-zA-Z]([a-zA-Z0-9_])+
.
理想情况下,这将由 aws_lambda_function
资源本身验证,因此此错误会在计划或验证时显示,但不幸的是,它在架构的这一部分缺少 ValidateFunc
帮助程序。
我已提出 this pull request 添加对计划时间验证的支持。