【问题标题】:How to pass environment variables from SAM cli to Lambda function code如何将环境变量从 SAM cli 传递到 Lambda 函数代码
【发布时间】:2019-03-03 10:42:12
【问题描述】:

是否可以在 SAM 中指定 env 变量,以便它在 Lambda 函数代码 (python) 中可用?我需要为阶段部署的变量设置不同的值。我可以在模板文件(yml)中设置环境变量,但不确定如何为不同的环境(开发、产品)定义它。

【问题讨论】:

  • 你是如何部署到你的开发和生产环境的?
  • 我正在使用 AWS SAM 部署 Lambda。我有定义了 Lambda 函数的 template.yml 文件。它允许在 Environment > Variables 标签下设置环境变量。但是我想设置的变量对于不同的环境是不同的。 AWS Lambda 控制台允许我在部署后更改环境变量。但我想在部署过程中保持自动化。

标签: python aws-lambda environment-variables


【解决方案1】:

可以通过模板参数设置环境变量:


AWSTemplateFormatVersion: '2010-09-09'
Transform: AWS::Serverless-2016-10-31

Parameters:
  Stage:
    Type: String
    AllowedValues:
      - dev
      - prod

Globals:
  Function:
    Environment:
      Variables:
        STAGE: !Ref Stage

然后在您的部署过程中,在从 SAM 模板创建/更新堆栈时传入 Stage 参数。例如,如果您通过CLI 执行此操作,请使用--parameters ParameterKey=Stage,ParameterValue=prod

【讨论】:

  • 我们如何使用CLI传递多个参数?
  • 嗨@Milan,感谢您提供上述解决方案。我有一个类似的设置,我使用 CodeCommit 和 Codepipeline,使用 AWS SAM 来部署我的 lambda 函数。我的问题是:我们将如何使用为代码管道中的不同环境定义的参数变量?
猜你喜欢
  • 2022-08-18
  • 2021-04-15
  • 2019-03-04
  • 2017-05-16
  • 2018-12-15
  • 2019-09-13
  • 1970-01-01
  • 2023-03-17
  • 2021-11-16
相关资源
最近更新 更多