amazon-web-services - 如何根据云形成模板中的阶段设置环境变量

标签 amazon-web-services aws-lambda aws-cloudformation aws-sam

必须根据阶段通过 lambda 处理程序设置 lambda 处理程序中的环境变量。不同阶段的 schema、endpoint 的值是不同的。如何通过 yml 模板来完成此操作?我对此很陌生,所以不知道如何完成。

Parameters:
   Stage: {Type: String, Default: ''}
Resources:
   LambdaHandler:
   Type: AWS::Serverless::Function
   Properties:
       Environment:
          Variables:
          ......
          ......

如何继续?

最佳答案

模板.yaml:

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

Resources:
  myLambda:
    Type: AWS::Lambda::Function
    Properties:
      Environment:
        Variables:
          stage: !Ref Environment

你的外壳:

$ aws cloudformation deploy --parameter-overrides Environment=dev

假设您想要一个以环境为条件的变量:

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

Mappings:
  Environments:
    dev:
      LogLevel: "DEBUG"
    prod:
      LogLevel: "ERROR"

Resources:
  myLambda:
    Type: AWS::Lambda::Function
    Properties:
      Environment:
        Variables:
          LOG_LEVEL: !FindInMap [Environments, !Ref Environment, LogLevel]

关于amazon-web-services - 如何根据云形成模板中的阶段设置环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65506398/

相关文章:

amazon-web-services - 使用 AWS CDK 进行跨账户监控

amazon-web-services - 如何在 AWS 市场上部署 EKS 集群应用程序

amazon-web-services - 将 aws lambda 函数作为服务目录产品调用是一个好习惯吗?

amazon-web-services - 如何在!Sub 中使用!FindInMap |用户数据部分

node.js - AWS Lambda 在向 SQS 发送消息之前完成

amazon-web-services - Terraform - 模板插值无效

amazon-web-services - IF 的条件设置标签在 cloudformation 模板中不起作用

python - 通过 virtualenv 在 AWS Lambda 上进行 Tesseract OCR

javascript - 如何在AWS lambda中使用nodejs进行sql查询?

Python lambda 函数在 elasticache 连接失败时超时