AWS лямбда - как узнать формат события из AWS сервисов - PullRequest
0 голосов
/ 19 марта 2020

Вопрос

Как узнать формат события, прибывающего в Lambda из AWS сервисов?

Ответы [ 3 ]

2 голосов
/ 19 марта 2020

Создание образцов полезных данных события

$ sam local generate-event --help
Usage: sam local generate-event [OPTIONS] COMMAND [ARGS]...

  You can use this command to generate sample payloads from different event
  sources such as S3, API Gateway, and SNS. These payloads contain the
  information that the event sources send to your Lambda functions.

Commands:
  alexa-skills-kit
  alexa-smart-home
  apigateway
  batch
  cloudformation
  cloudfront
  cloudwatch
  codecommit
  codepipeline
  cognito
  config
  connect
  dynamodb
  kinesis
  lex
  rekognition
  s3
  sagemaker
  ses
  sns
  sqs
  stepfunctions

S3 put

$ sam local generate-event s3 put
{
  "Records": [
    {
      "eventVersion": "2.0",
      "eventSource": "aws:s3",
      "awsRegion": "us-east-1",
      "eventTime": "1970-01-01T00:00:00.000Z",
      "eventName": "ObjectCreated:Put",
      "userIdentity": {
        "principalId": "EXAMPLE"
      },
      "requestParameters": {
        "sourceIPAddress": "127.0.0.1"
      },
      "responseElements": {
        "x-amz-request-id": "EXAMPLE123456789",
        "x-amz-id-2": "EXAMPLE123/5678abcdefghijklambdaisawesome/mnopqrstuvwxyzABCDEFGH"
      },
      "s3": {
        "s3SchemaVersion": "1.0",
        "configurationId": "testConfigRule",
        "bucket": {
          "name": "example-bucket",
          "ownerIdentity": {
            "principalId": "EXAMPLE"
          },
          "arn": "arn:aws:s3:::example-bucket"
        },
        "object": {
          "key": "test/key",
          "size": 1024,
          "eTag": "0123456789abcdef0123456789abcdef",
          "sequencer": "0A1B2C3D4E5F678901"
        }
      }
    }
  ]
}

Firehose

$ sam local generate-event kinesis kinesis-firehose
{
  "invocationId": "invocationIdExample",
  "deliveryStreamArn": "arn:aws:kinesis:EXAMPLE",
  "region": "us-east-1",
  "records": [
    {
      "recordId": "49546986683135544286507457936321625675700192471156785154",
      "approximateArrivalTimestamp": 1495072949453,
      "data": "SGVsbG8sIHRoaXMgaXMgYSB0ZXN0IDEyMy4="
    }
  ]
}

Обновление

Согласно комментарию @John Rotenstein, консоль Lambda может генерировать гораздо больше примеров событий.

enter image description here

Для Go lang, aws -lambda-go / events / , предоставляет список примеров кодов, показывающих, как обрабатывать события из разных источников, и примеры тестовых данных . Хороший ресурс, чтобы посмотреть.

2 голосов
/ 19 марта 2020

Лямбда-консоль AWS включает функцию Test , которая может предоставить пример события для большинства событий, генерируемых AWS.

. Вы можете измените эти примеры событий, включив в них указанные вами c данные.

Например, пример события Amazon S3 Put имитирует добавление нового объекта в корзину Amazon S3. Вы можете изменить событие на , включая ваши собственные имена Bucket и Object , а затем использовать его для тестирования функции без фактического использования Amazon S3.

1 голос
/ 19 марта 2020

Просто распечатайте его, когда вы начнете разработку. Для python команда выглядит так:

print(json.dumps(event))

Вывод должен быть доступен в группе журналов CloudWatch для вашей лямбды. Это должно быть полезно для отладки и тестирования реальных событий.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...