Amazon web services 使用工作区从aws secret manager检索terraform中的机密

Amazon web services 使用工作区从aws secret manager检索terraform中的机密,amazon-web-services,aws-lambda,terraform,terraform-provider-aws,Amazon Web Services,Aws Lambda,Terraform,Terraform Provider Aws,我正在尝试使用以下代码行从AWS secret Manager检索一个秘密: "${terraform.workspace}.PROJECT_KEY" = "${jsondecode(data.aws_secretsmanager_secret_version.take-sm-store-version.secret_string)["${terraform.workspace}.PROJECT_KEY"]}" 当我运行terra

我正在尝试使用以下代码行从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"
然而,当我运行
terraformapply
时,我遇到以下错误:

Error: Error modifying Lambda Function Configuration example-function-test: ValidationException: 
        status code: 400, request id: ae52d9bc-819e-4a45-ba0d-a5b4e4de9516

我还有别的办法吗?我有三个工作区(dev/acc/prod),所以我希望通过这种方式,我可以有一个资源(Lambda函数),环境变量设置基于当前工作区。

环境变量不能包含句点。您可以通过在shell中运行
export foo.bar=baz
在本地进行测试:

bash: export: `foo.bar=baz': not a valid identifier
显示允许的字符为
[a-zA-Z]([a-zA-Z0-9))+

理想情况下,这将由
aws\u lambda\u函数
资源本身进行验证,因此此错误在计划或验证时显示,但不幸的是,在架构的这一部分缺少
ValidateFunc
帮助程序


我已提出添加对计划时间验证的支持。

环境变量不能包含句点。您可以通过在shell中运行
export foo.bar=baz
在本地进行测试:

bash: export: `foo.bar=baz': not a valid identifier
显示允许的字符为
[a-zA-Z]([a-zA-Z0-9))+

理想情况下,这将由
aws\u lambda\u函数
资源本身进行验证,因此此错误在计划或验证时显示,但不幸的是,在架构的这一部分缺少
ValidateFunc
帮助程序


我已提出添加对计划时间验证的支持。

Ahhh,非常感谢!这确实是问题所在。很高兴知道,不用担心。我还提出支持该参数的计划时间验证。啊,非常感谢!这确实是问题所在。很高兴知道,不用担心。我还提出了支持该参数的计划时间验证。