Объект события пуст в вызове шлюза API к лямбде - PullRequest
0 голосов
/ 17 сентября 2018

Теперь у меня есть лямбда, просто повторяющая объект события:

def lambda_handler(event, context):
    pprint(event)

Я использовал объект события в коде, чтобы получить путь, подобный этому event['path']

Когда язапустите sam local, чтобы локально запустить шлюз api следующим образом: когда я нажимаю на локально работающий шлюз api, лямбда выводит объект события, как я и ожидал, и я могу прочитать из него путь:

sam local start-api

НоКогда я внедряю шаблон SAM в aws и тестирую его в консоли шлюза API, «событие» пусто.

Почему событие пусто в aws, а не локально?Нужно ли что-то делать, чтобы пройти полное мероприятие?Это мой шаблон:

AWSTemplateFormatVersion: '2010-09-09'
Transform: AWS::Serverless-2016-10-31
Description: >
    sam-app

    Sample SAM Template for sam-app

# More info about Globals: https://github.com/awslabs/serverless-application-model/blob/master/docs/globals.rst
Globals:
    Function:
        Timeout: 3

Resources:

    lambdafunction:
        Type: AWS::Serverless::Function # More info about Function Resource: https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#awsserverlessfunction
        Properties:
            CodeUri: hello_world/build/
            Handler: app.lambda_handler
            Runtime: python2.7

            Environment: # More info about Env Vars: https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#environment-object
                Variables:
                    PARAM1: VALUE

            Events:
                # More info about API Event Source: https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#api
                testMethod:
                    Type: Api
                    Properties:
                        RestApiId: !Ref ApiGatewayApi
                        Path: /testMethod
                        Method: GET

    ApiGatewayApi:
        Type: AWS::Serverless::Api
        Properties:
            StageName: Prod
            DefinitionBody:
                swagger: "2.0"
                info:
                    version: "2018-09-12T06:21:35Z"
                    title: mytest
                schemes:
                - "https"
                paths:
                    /testMethod:
                        x-amazon-apigateway-any-method:
                            produces:
                            - "application/json"
                            responses:
                                '200':
                                    description: "200 response"
                                    schema:
                                        $ref: "#/definitions/Empty"
                            security:
                            - sigv4: []
                            x-amazon-apigateway-integration:
                                uri:
                                  Fn::Sub: arn:aws:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/arn:aws:lambda:${AWS::Region}:${AWS::AccountId}:function:${lambdafunction}/invocations
                                responses:
                                    default:
                                        statusCode: "200"
                                passthroughBehavior: "when_no_match"
                                httpMethod: "POST"
                                contentHandling: "CONVERT_TO_TEXT"
                                type: "aws"
                securityDefinitions:
                    sigv4:
                        type: "apiKey"
                        name: "Authorization"
                        in: "header"
                        x-amazon-apigateway-authtype: "awsSigv4"
                definitions:
                    Empty:
                        type: "object"
                        title: "Empty Schema"
...