将参数传递给 AWS Lambda

将参数传递给 AWS Lambda

我正在尝试编写一个 CloudFormation 模板,将 Lambda 函数订阅到 CloudWatch Logs LogGroup。然后,此 Lambda 函数应解析日志并将其放入 Amazon ES 集群中。

订阅等都运行良好,但有一点我不太明白,那就是如何将 Amazon ES 集群终端节点传递给 Lambda 函数。当您浏览控制台时,AWS 提供的模板包含一行:

var endpoint = 'my-aws-es-endpoint.amazonaws.com';

显然,每次运行 CloudFormation 模板时,我都需要更新它,因为每次我都会得到一个具有不同端点的不同集群。我不想手动更新它,但希望能够使用 CloudFormation 函数(如“Fn::GetAtt”)来获取端点并将其传递给 Lambda。我就是不知道该怎么做。

答案1

您可以将 ES 集群端点作为环境变量。以下是此功能的 CloudFormation 模板片段:

"mylambda": {
  "Type": "AWS::Lambda::Function",
  "Properties": {
    "Handler": "index.handler",
    "Role": { "Fn::GetAtt" : ["LambdaExecutionRole", "Arn"] },
    "Code": {
      "S3Bucket": "my-lambda-functions-bucket",
      "S3Key": "mylambda.zip"
    },
    "Runtime": "nodejs4.3",
    "Timeout": "25",
    "Environment": {
       "Variables": {
         "ESENDPOINT": { "Fn::GetAtt": ["ESDOMAINRESOURCE", "DomainEndpoint"] }
       }
    }
  }
}

相关内容