Является ли AWS лямбда может выставить только один весенний загрузочный API - PullRequest
0 голосов
/ 06 сентября 2018

Я разработал 4 API, используя пружинный ботинок. Теперь я пытаюсь включить AWS лямбда для без сервера. Можно ли выставить 4 API с одной лямбда.

1 Ответ

0 голосов
/ 06 сентября 2018

Можно ли выставить 4 api с одной лямбда?

AWS лямбда - FaaS - функционирует как сервис, одна функция на лямбду.

Однако вы, вероятно, можете достичь намеченной функциональности с помощью функции оболочки / прокси в качестве точки входа и при необходимости направить запрос к вышестоящим методам / функциям

Здесь описано aws api gateway & lambda: несколько конечных точек / функций против одной конечной точки

enter image description here

Посмотрите следующую документацию по созданию интеграции шлюза API => Lambda: http://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-set-up-simple-proxy.html

Ниже приведено лишь перефразированное объяснение того, что здесь дано aws api gateway & lambda: несколько конечных точек / функций против одной конечной точки .

Пример AWS имеет хорошее объяснение; Лямбда-запрос, подобный следующему:

POST /testStage/hello/world?name=me HTTP/1.1
Host: gy415nuibc.execute-api.us-east-1.amazonaws.com
Content-Type: application/json
headerName: headerValue

{
    "a": 1
}

В конечном итоге отправит следующие данные о событии в вашу функцию AWS Lambda:

{
  "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"
    },
    "queryStringParameters": {
      "name": "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
  }
}

Теперь у вас есть доступ ко всем заголовкам, параметрам URL, телу и т. Д. Таким образом, вы можете использовать это для различной обработки запросов в вашей функции Lambda-оболочки / прокси и маршрутизации к вышестоящим функциям в соответствии с вашими потребностями маршрутизации.

Многие люди сегодня используют эту методологию, в отличие от создания лямбда-функции для каждого метода и ресурса шлюза API.

Есть плюсы и минусы в этом подходе

  • Развертывание : если каждая лямбда-функция является дискретной, вы можете развернуть их независимо, что может снизить риск изменения кода (стратегия микросервисов). И наоборот, вы можете обнаружить, что необходимость развертывания функций по отдельности увеличивает сложность и обременительна.
  • Само описание : Интерфейс API Gateway делает чрезвычайно интуитивно понятным просмотр макета ваших конечных точек RESTful - все существительные и глаголы видны с первого взгляда. Реализация собственной маршрутизации может происходить за счет этой наглядности.
  • Лямбда-размеры и ограничения : Если вы проксируете все - тогда вам придется выбрать размер экземпляра, время ожидания и т. Д., Которые будут соответствовать всем вашим конечным точкам RESTful. Если вы создаете отдельные функции, вы можете более тщательно выбирать объем памяти, время ожидания, поведение тупика и т. Д., Которые наилучшим образом соответствуют потребностям конкретного вызова.

Подробнее о Monolithic lambda против Micro Lambda здесь: https://hackernoon.com/aws-lambda-should-you-have-few-monolithic-functions-or-many-single-purposed-functions-8c3872d4338f

...