Aws лямбда-прокси Swagger шаблон интеграции - PullRequest
3 голосов
/ 08 мая 2019

Я пытаюсь настроить шаблон swagger для вызова my all в одной лямбде.

Допустим, под processlambda есть две "функции".Будет ли это правильный шаблон openapi 3.0, или мне нужно будет специально настраивать типы запросов и типы ответов

{
   "openapi": "3.0.0",
   "info": {
      "version": "2016-09-12T17:50:37Z",
      "title": "ProxyIntegrationWithLambda"
   },
   "paths": {
      "/GetItemById": {
         "x-amazon-apigateway-any-method": {
            "parameters": [
               {
                  "name": "proxy",
                  "in": "path",
                  "required": true,
                  "schema": {
                     "type": "string"
                  }
               }
            ],
            "responses": {},
            "x-amazon-apigateway-integration": {
               "responses": {
                  "default": {
                     "statusCode": "200"
                  }
               },
               "uri": "arn:aws:apigateway:us-east-1:lambda:path/2015-03-31/functions/arn:aws:lambda:us-east-1:123456789012:function:SimpleLambda4ProxyResource/invocations",
               "passthroughBehavior": "when_no_match",
               "httpMethod": "POST",
               "cacheNamespace": "roq9wj",
               "cacheKeyParameters": [
                  "method.request.path.proxy"
               ],
               "type": "aws_proxy"
            }
         }
      }
   },
      "/SaveItem": {
         "x-amazon-apigateway-any-method": {
            "parameters": [
               {
                  "name": "proxy",
                  "in": "path",
                  "required": true,
                  "schema": {
                     "type": "string"
                  }
               }
            ],
            "responses": {},
            "x-amazon-apigateway-integration": {
               "responses": {
                  "default": {
                     "statusCode": "200"
                  }
               },
               "uri": "arn:aws:apigateway:us-east-1:lambda:path/2015-03-31/functions/arn:aws:lambda:us-east-1:123456789012:function:SimpleLambda4ProxyResource/invocations",
               "passthroughBehavior": "when_no_match",
               "httpMethod": "POST",
               "cacheNamespace": "roq9wj",
               "cacheKeyParameters": [
                  "method.request.path.proxy"
               ],
               "type": "aws_proxy"
            }
         }
      }
   },
   "servers": [
      {
         "url": "https://gy415nuibc.execute-api.us-east-1.amazonaws.com/{basePath}",
         "variables": {
            "basePath": {
              "default": "/Process"
            }
         }
      }
   ]
}

еще не проверял это, но код функции C # использует объекты ответа / запроса APIGateway standart aws

1 Ответ

2 голосов
/ 08 мая 2019

В качестве альтернативы хороший путь, который вы можете использовать, - это настроить ваш API-шлюз (указывая на AWS Lambda), а затем сгенерировать ваши спецификации openapi из конфигурации API-шлюза и затем генерировать ваши клиенты c #.

После настройки API-шлюза вы можете выполнить следующие шаги:

Шаг 1 из 2) выполнить get-export , пример:

aws apoigateway get-export 
  --rest-api-id 'idfromapigateway-grab-inside-awsdashboard' 
  --stage-namem 'stage-grab-inside-awsdashboard' 
  --export-type 'swagger' outputfile-with-openapispec-generated-step1.json

Шаг 2 из 2) Создание клиента, пример:

nswag swagger2csclient /input:outputfile-with-openapispec-generated-step1.json
  /classname:SpecifyYourCSharpClassName
  /namespace:SpecifyYourCSharpNamespace
  /output:SpecifyYourCSharpFile

В результате шага 2 создаются классы c #, которые можно использовать в интеграционном тестировании.

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