如何使用 terraform 添加 lambda 环境变量?

Str*_*rry 11 aws-lambda terraform terraform-provider-aws

我希望我的 lambda 调用 API,这需要一个 API 令牌。我想将 API 令牌放入 lambda 环境变量中。我怎样才能让 terraform 做到这一点?还是我以错误的方式接近这个?

Jar*_*son 8

这里文档给出了一个很好的例子。基本上它是一个environmentvariables块的块。然后你想要的任何键值对。假设您使用的是 nodejs,则可以通过执行process.env.api_key. 这些值将以纯文本形式存储在您的 terraform 代码以及 terraform 状态文件中。 AWS 对环境变量进行加密,但您确实需要关心这些值是如何到达那里的。如果您对它们存储在 git 中以及用于状态文件的任何存储感到不舒服,那么您可以通过控制台手动添加它们。

resource "aws_lambda_function" "test_lambda" {
  filename         = "lambda_function_payload.zip"
  function_name    = "lambda_function_name"
  runtime          = "nodejs8.10"
  ...

  environment {
    variables = {
      api_key = "super_secret"
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

  • @JamesPMcGrath 查看文档,它似乎应该是 `environment {` 而不是 `environment = {` 我更新了代码示例,您可以验证它是否适合您吗? (2认同)

小智 7

您可以使用 aws Secret Manager 来存储您的数据。更多信息。要在您的 terraform 中使用它们,请按照以下步骤操作:

  1. 存储您的敏感数据,例如密码和 API 密钥。
  2. 将“aws_secretsmanager_secret”数据添加到您的 terraform,更多信息
  3. 根据上一步中的密钥添加“aws_secretsmanager_secret_version”。更多信息
  4. 假设您的秘密存储在键值结构中使用

${jsondecode(data.aws_secretsmanager_secret_version.secrets.secret_string)["YOUR_KEY"]}