我正在尝试编写一个将Lambda函数订阅到CloudWatch Logs LogGroup的CloudFormation模板。 此Lambda函数应parsing日志并将其放入Amazon ES群集。
订阅等工作都很好,但我无法理解的一点是如何将Amazon ES群集端点传递给Lambda函数。 AWS在您浏览控制台时提供的模板包含一行:
var endpoint = 'my-aws-es-endpoint.amazonaws.com';
每次运行CloudFormation模板时,显然都需要更新它,因为每次我将得到具有不同端点的不同集群。 我不想手动更新,但希望能够使用CloudFormation函数(如“Fn :: GetAtt”)来获取结束点并将其传递给Lambda。 我只是不知道如何。
您可以将ES群集端点作为环境variables传递给Lambda函数。 这里是这个函数的一个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"] } } } } }