Как проверить вызовы GET и POST изнутри Lambda - PullRequest
1 голос
/ 10 марта 2020

Я изучаю Lambda, создал метрику Cloud Watch, которая запускает Lambda каждую минуту. В настоящее время моя лямбда-функция выполняется правильно. Но я хочу сделать поддельный вызов GET и POST изнутри Lambda. Пример примерно так:

var https = require('https');
       exports.handler = (event, context, callback) => {
       var params = {
                    host: "example.com",
                    path: "/api/v1/yourmethod"

                    };

  var req = https.request(params, function(res) {
    let data = '';
    console.log('STATUS: ' + res.statusCode);
    res.setEncoding('utf8');
    res.on('data', function(chunk) {
        data += chunk;
    });
    res.on('end', function() {
        console.log("DONE");
        console.log(JSON.parse(data));
    });
  });
   req.end();
 };

Вопрос - Поскольку у меня нет конечной точки GET и POST / кода, размещенного в AWS, есть ли способ проверить, является ли мой вызов GET а POST звонок изнутри лямбды работает нормально? Есть ли способ в AWS собрать фальшивую конечную точку или что-то в AWS и сделать вызов REST для этого в целях тестирования?

Ответы [ 2 ]

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

Вы можете использовать API-интерфейсы JSONPlaceholder для тестирования вызовов внешних API,
Они выпустили Fake Online REST API для тестирования и создания прототипов
Вы можете протестировать вызов различных вызовов методов http, таких как GET, PUT, POST, DELETE

https://jsonplaceholder.typicode.com/

0 голосов
/ 10 марта 2020

Если вы используете интеграцию с Lambda Proxy, в событии будет содержаться много дополнительной информации о запросе: https://docs.aws.amazon.com/apigateway/latest/developerguide/set-up-lambda-proxy-integrations.html

{
  "message": "Hello me!",
  "input": {
    "resource": "/{proxy+}",
    "path": "/hello/world",
    "httpMethod": "POST",
    "headers": {
      "Accept": "*/*",
      "Accept-Encoding": "gzip, deflate",
      "cache-control": "no-cache",
      "CloudFront-Forwarded-Proto": "https",
      "CloudFront-Is-Desktop-Viewer": "true",
      "CloudFront-Is-Mobile-Viewer": "false",
      "CloudFront-Is-SmartTV-Viewer": "false",
      "CloudFront-Is-Tablet-Viewer": "false",
      "CloudFront-Viewer-Country": "US",
      "Content-Type": "application/json",
      "headerName": "headerValue",
      "Host": "gy415nuibc.execute-api.us-east-1.amazonaws.com",
      "Postman-Token": "9f583ef0-ed83-4a38-aef3-eb9ce3f7a57f",
      "User-Agent": "PostmanRuntime/2.4.5",
      "Via": "1.1 d98420743a69852491bbdea73f7680bd.cloudfront.net (CloudFront)",
      "X-Amz-Cf-Id": "pn-PWIJc6thYnZm5P0NMgOUglL1DYtl0gdeJky8tqsg8iS_sgsKD1A==",
      "X-Forwarded-For": "54.240.196.186, 54.182.214.83",
      "X-Forwarded-Port": "443",
      "X-Forwarded-Proto": "https"
    },
    "multiValueHeaders":{
      'Accept':[
        "*/*"
      ],
      'Accept-Encoding':[
        "gzip, deflate"
      ],
      'cache-control':[
        "no-cache"
      ],
      'CloudFront-Forwarded-Proto':[
        "https"
      ],
      'CloudFront-Is-Desktop-Viewer':[
        "true"
      ],
      'CloudFront-Is-Mobile-Viewer':[
        "false"
      ],
      'CloudFront-Is-SmartTV-Viewer':[
        "false"
      ],
      'CloudFront-Is-Tablet-Viewer':[
        "false"
      ],
      'CloudFront-Viewer-Country':[
        "US"
      ],
      '':[
        ""
      ],
      'Content-Type':[
        "application/json"
      ],
      'headerName':[
        "headerValue"
      ],
      'Host':[
        "gy415nuibc.execute-api.us-east-1.amazonaws.com"
      ],
      'Postman-Token':[
        "9f583ef0-ed83-4a38-aef3-eb9ce3f7a57f"
      ],
      'User-Agent':[
        "PostmanRuntime/2.4.5"
      ],
      'Via':[
        "1.1 d98420743a69852491bbdea73f7680bd.cloudfront.net (CloudFront)"
      ],
      'X-Amz-Cf-Id':[
        "pn-PWIJc6thYnZm5P0NMgOUglL1DYtl0gdeJky8tqsg8iS_sgsKD1A=="
      ],
      'X-Forwarded-For':[
        "54.240.196.186, 54.182.214.83"
      ],
      'X-Forwarded-Port':[
        "443"
      ],
      'X-Forwarded-Proto':[
        "https"
      ]
    },
    "queryStringParameters": {
      "name": "me",
      "multivalueName": "me"
    },
    "multiValueQueryStringParameters":{
      "name":[
        "me"
      ],
      "multivalueName":[
        "you",
        "me"
      ]
    },
    "pathParameters": {
      "proxy": "hello/world"
    },
    "stageVariables": {
      "stageVariableName": "stageVariableValue"
    },
    "requestContext": {
      "accountId": "12345678912",
      "resourceId": "roq9wj",
      "stage": "testStage",
      "requestId": "deef4878-7910-11e6-8f14-25afc3e9ae33",
      "identity": {
        "cognitoIdentityPoolId": null,
        "accountId": null,
        "cognitoIdentityId": null,
        "caller": null,
        "apiKey": null,
        "sourceIp": "192.168.196.186",
        "cognitoAuthenticationType": null,
        "cognitoAuthenticationProvider": null,
        "userArn": null,
        "userAgent": "PostmanRuntime/2.4.5",
        "user": null
      },
      "resourcePath": "/{proxy+}",
      "httpMethod": "POST",
      "apiId": "gy415nuibc"
    },
    "body": "{\r\n\t\"a\": 1\r\n}",
    "isBase64Encoded": false
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...