【问题标题】:Retrieve a secret in terraform from aws secret manager using workspaces使用工作区从 aws 秘密管理器中检索 terraform 中的秘密
【发布时间】:2020-10-13 03:24:53
【问题描述】:

我正在尝试使用以下代码行从 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 函数),其环境变量是基于当前工作区设置的。

【问题讨论】:

    标签: amazon-web-services aws-lambda terraform terraform-provider-aws


    【解决方案1】:

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

    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 以增加对计划时间验证的支持。

    【讨论】:

    猜你喜欢
    • 2020-10-01
    • 2020-12-04
    • 2021-10-07
    • 2022-08-16
    • 2019-12-03
    • 2021-03-15
    • 2022-11-02
    • 2021-01-19
    • 2021-10-26
    相关资源
    最近更新 更多