2017-01-03 2 views
1

Я тестирую свою процедуру резервного копирования для API в моем API Gateway.API Gateway не импортирует экспортированное определение

Итак, я экспортирую свой API из API Console в свою учетную запись AWS, затем перехожу в API Gateway и создаю новый API - «import from swagger».

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

Из моего чтения - похоже, это известная проблема/боль.

Я подозреваю, что причиной ошибки является то, что я использую специальный авторизатор;

"security" : [ { 
     "TestAuthorizer" : [ ] 
    }, { 
     "api_key" : [ ] 
    } ] 

Я использую это для каждого метода, следовательно, я получаю много ошибок.

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

Любые идеи относительно того, как я могу исправить эти ошибки (желательно в пределах моего шлюза API, чтобы я мог экспортировать/импортировать без проблем).

Пример одного из моих методов GET с использованием этого Authorizer является:

"/api/example" : { 
    "get" : { 
    "produces" : [ "application/json" ], 
    "parameters" : [ { 
     "name" : "Authorization", 
     "in" : "header", 
     "required" : true, 
     "type" : "string" 
    } ], 
    "responses" : { 
     "200" : { 
     "description" : "200 response", 
     "schema" : { 
      "$ref" : "#/definitions/exampleModel" 
     }, 
     "headers" : { 
      "Access-Control-Allow-Origin" : { 
      "type" : "string" 
      } 
     } 
     } 
    }, 
    "security" : [ { 
     "TestAuthorizer" : [ ] 
    }, { 
     "api_key" : [ ] 
    } ] 
    } 

Заранее спасибо

UPDATE

Ошибка (s), что я получаю при импорте определения Я только что экспортировал: Your API was not imported due to errors in the Swagger file. Unable to put method 'GET' on resource at path '/api/v1/MethodName': Invalid authorizer ID specified. Setting the authorization type to CUSTOM or COGNITO_USER_POOLS requires a valid authorizer.

Получаю сообщение f или каждый метод в моем API - так много.

дополнительности, прямо в конце сообщения, я получаю это: Additionally, these warnings were found: Unable to create authorizer from security definition: 'TestAuthorizer'. Extension x-amazon-apigateway-authorizer is required. Any methods with security: 'TestAuthorizer' will not be created. If this security definition is not a configured authorizer, remove the x-amazon-apigateway-authtype extension and it will be ignored.

Я попытался с игнорированием ошибок, тот же результат.

+0

Привет, я проверил с моим собственным API, который имеет собственный Authorizer и экспортированы/импортированы успешно, так что я думаю, что это может быть что-то другое. Можете ли вы опубликовать точные сообщения об ошибках, которые вы видите при импорте? Кроме того, вы пытались отключить опцию «Сбой при предупреждении» при импорте? –

+0

@LorenzodeLara Спасибо за отзыв, я обновил свой оригинальный вопрос с необходимой информацией, дайте мне знать, если вам нужно что-нибудь еще. – Hexie

ответ

1

Для всех, кто может столкнуться с этой проблемой.

После завершения поиска неисправностей и, в конечном счете, с использованием AWS Support Team, это было разрешено и определено как ошибка клиента AWS CLI (подтверждено от AWS Support Team);

Окончательный ответ.

Благодарим за предоставленную информацию. Пройдя через версию CLI AWS и сведения об ошибках, я могу подтвердить, что ошибка вызвана известной проблемой с PowerShell AWS CLI. Приносим извинения за неудобства, вызванные ошибкой. Чтобы обойти эту ошибку, я рекомендую идти через следующие шаги

  1. Создайте файл с именем data.json в текущей директории, где команда PowerShell должна быть выполнена

  2. Сохранить следующее содержимое в файл { «расширение»: «authorizers, интеграции»}

  3. В Powershell консоли, обеспечивающее текущий рабочий каталог является таким же, как место, где data.json присутствует

  4. Выполните следующую команду: aws apigateway get-export --parameters file: //data.json --rest-api-id APIID --stage-name dev -export-type swagger C: \ temp \ export.json

Использование этого, наконец, разрешило мою проблему - я с нетерпением жду исправления в одной из будущих версий.

PS - это в настоящее время на последней версии:

aws --version

aws-cli/1.11.44 Python/2.7.9 Windows/8 botocore/1.5.7

0

Убедитесь, что вы экспортируете свой swagger с расширениями и расширениями авторизаторов.

Попробуйте экспортировать чванство с помощью AWS CLI:

aws apigateway get-export \ 
    --parameters '{"extensions":"integrations,authorizers"}' \ 
    --rest-api-id {api_id} \ 
    --stage-name {stage_name} \ 
    --export-type swagger swagger.json 

Выход будет отправлен swagger.json файла.

Для получения дополнительной информации о пользовательских расширениях swagger см. this.

+0

Используя вашу ссылку и пример, я смог понять большую часть этого, определенно указал мне в правильном направлении. Мне нужно только одно: добавить несколько расширений к моему скрипту CLI, вот что я получил: 'aws apigateway get-export --параметры extensions = 'authorizers' --rest-api-id APIID - stage-name dev -export-type swagger C: \ temp \ export.json', я предполагаю, что мне нужно также добавить расширение интеграции? – Hexie

+0

@Hexie Да, это так. Если вы хотите воссоздать свой API, импортировав спецификацию swagger, вам также понадобится расширение интеграции. Попробуйте использовать JSON-нотацию для параметров: 'aws apigateway get-export --parameters '{" extensions ":" integrations, authorizers "}' --rest-api-id APIID --stage-name dev --export- тип swagger C: \ temp \ export.json' – vnasc

+0

По-прежнему не повезло, я попытался изменить параметры в нотации JSON, но тогда получим: 'Параметр анализа ошибок '--параметры: Ожидаемые:' = ', полученные:' '' для ввода: '{расширения: авторизаторы, интеграция}' 'любые другие предложения? Теперь команда выглядит следующим образом: 'aws apigateway get-export --parameters '{" extensions ":" authorizers, integrations "}' --rest-api-id APIID --stage-name dev -export-type swagger C: \ temp \ export.json' – Hexie