AWS Правило события Cloudwatch - вызывать лямбду - с параметром - PullRequest
0 голосов
/ 15 апреля 2020

Я использую AWS Правило события Clouwatch для вызова python лямбда-функции на основе Cron Schedule, которая работает нормально. Теперь я могу передать параметр в эту лямбда-функцию из правила даже в облачном хранилище, используя AWS Cloudformation? Не могли бы вы, пожалуйста, руководство? Пожалуйста, смотрите ниже мой шаблон CFN:

Step1 : parameter.Schedule=cron(0 21 ? * * *)

Step 2: "Schedule": {
            "Description": "Schedule for the Lambda function (cron or rate)",
            "Type": "String"
          },


Step 3:  "funcInvokeRule": {
            "Type": "AWS::Events::Rule",
            "Properties": {
                "ScheduleExpression": {"Ref": "Schedule"},
                "Targets": [{
                    "Id": "funcScheduler",
                    "Arn": {"Fn::GetAtt": ["Function","Arn"]}
                }]
            }
        },

Ответы [ 2 ]

0 голосов
/ 15 апреля 2020

После AWS документов ваш ресурс облачной информации может быть простым:

Resources:  
  EventRule:
    Type: AWS::Events::Rule
    Properties:
      Name: {EVENTNAME}
      Description: "ScheduledRule"
      ScheduleExpression: cron(0 21 ? * * *)
      State: "ENABLED"
      RoleArn: {ROLE}

Замена Имя и RoleArn со своими собственными ценностями.

Примечание. Имя не является обязательным параметром, но помогает идентифицировать ваши ресурсы. Однако, согласно документации, если вы замените ресурс в своем шаблоне облачной информации, вы зададите новое имя.

Если вы также собираетесь использовать облачную информацию для своей лямбды, используя severless лично я бы тогда прикрепил правило к лямбде с помощью разрешений, чтобы вы могли прикрепить до 5 триггеров к правилу без изменения целей правила каждый раз. например,

  Lambda:
    Type: AWS::Serverless::Function
    Properties:
      FunctionName:{LAMBDANAME}
      Description: {Description}
      Role: {Role}
      Handler: {FileName}.lambda_handler
      Runtime: {x}
      CodeUri: {ObjectPath}
      MemorySize: {x}
      Timeout: {x}
  Lambdatrigger:
    Type: AWS::Lambda::Permission
    Properties:
      FunctionName: !Ref Lambda
      Action: lambda:InvokeFunction
      Principal: events.amazonaws.com
      SourceArn: !Ref EventRule
0 голосов
/ 15 апреля 2020

Тип Target свойства AWS::Events::Rule имеет Входной параметр :

Допустимый JSON текст, переданный цели. Если вы используете это свойство, ничего из самого текста события не передается цели.

Существует также InputTransformer , который можно использовать для преобразования существующего ввода, например, путем добавления к нему дополнительных значений.

Настройки для включения Вы должны предоставить пользовательский ввод для цели на основе определенных данных события. Вы можете извлечь одну или несколько пар ключ-значение из события, а затем использовать эти данные для отправки настроенного ввода в цель.

...