Назад | Перейти на главную страницу

Передача параметров в AWS Lambda

Я пытаюсь написать шаблон CloudFormation, который подписывает функцию Lambda на группу LogGroup CloudWatch Logs. Эта функция Lambda должна затем проанализировать журналы и поместить их в кластер Amazon ES.

Подписка и т. Д. Все работает нормально, но я не могу разобраться в одном вопросе, как передать конечную точку кластера Amazon ES в функцию Lambda. Шаблон, который AWS предоставляет при просмотре консоли, включает строку:

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

Очевидно, мне придется обновлять это каждый раз при запуске шаблона CloudFormation, поскольку каждый раз я получаю другой кластер с другой конечной точкой. Я не хочу обновлять это вручную, но хочу иметь возможность использовать функции CloudFormation, такие как 'Fn :: GetAtt', чтобы получить конечную точку и передать ее в Lambda. Я просто не могу понять как.

Вы можете передать конечную точку кластера ES в функцию 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"] }
       }
    }
  }
}