Проблемы интеграции DynamoBD со шлюзом API

#javascript #node.js #typescript #aws-api-gateway #amazon-api-gateway

Вопрос:

Я пытаюсь использовать DynamoDB с API-шлюзом, но это не работает. Это то, что я пытаюсь сделать

 export async function handler(event: APIGatewayProxyEvent, context: Context): Promise<APIGatewayProxyResult> {
    switch (event.httpMethod) {
        case "GET":
            var params = {
                TableName: 'Users',
                Key: {
                    UserID: event.queryStringParameters.UserID
                }
            };

            dynamodb.get(params, function (err, data) {
                if (err){
                    return{
                        statusCode: 200,
                        body: JSON.stringify({
                            message: "Item not found"
                        })
                    }
                } else {
                    return {
                        statusCode: 200,
                        body: JSON.stringify({
                            message: data.Item,
                        })
                    };
                }
            })
            break;
    }
 

Каждый раз, когда я пытаюсь позвонить в свой шлюз, я получаю

 {
    "message": "Internal server error"
}
 

Это проблема с моей интеграцией ?

Еще одно сомнение: как я могу добавить другие маршруты к своему шлюзу ? Я использую шаблон CloudFloration, и это так:

 AWSTemplateFormatVersion: '2010-09-09'

Transform: AWS::Serverless-2016-10-31

Resources:
  UserAPI:
    Type: AWS::Serverless::Function
    Properties:
      Handler: build/userAPI.handler
      Runtime: nodejs14.x
      Events:
        Api:
          Type: Api
          Properties:
            Path: /users
            Method: ANY
 

Как я могу добавить маршрут, например /user (GET) или /users (POST) ?

Как и было запрошено, я получаю журналы, поэтому лямбда-код не вызывается, ошибка, которую я получаю, такова:

 2021-06-23T12:08:37.557Z    eb945ca9-a4b6-4f8e-add1-774276db2cb7    ERROR   Invoke Error    {
    "errorType": "TypeError",
    "errorMessage": "Cannot read property 'UserID' of null",
    "stack": [
        "TypeError: Cannot read property 'UserID' of null",
        "    at Runtime.handler (/var/task/build/userAPI.js:12:57)",
        "    at Runtime.handleOnce (/var/runtime/Runtime.js:66:25)"
    ]
}
 

Комментарии:

1. Создает ли лямбда какие-либо журналы, если да, то какие журналы? Добавьте ведение журнала. Если лямбда-код не вызывается: разрешено ли шлюзу api вызывать лямбду?

2. @luk2302 Я добавил журналы, посмотрим, все ли в порядке сейчас

3. По-видимому event.queryStringParameters , не установлен.