Я пытаюсь экспортировать и затем импортировать AWS API шлюза, следуя инструкциям в https://aws.amazon.com/premiumsupport/knowledge-center/api-gateway-migrate-accounts-regions/.
Экспорт работает:
aws apigateway get-export --parameters extensions='apigateway' --rest-api-id MY_REST_API_ID --stage-name Prod --export-type swagger my-api-apigateway.json
Идентичные файлы для моего API создаются с --parameters extensions='apigateway'
и --parameters extensions='integrations'
.
Но когда я пытаюсь выполнить импорт из экспортированного файла:
aws apigateway import-rest-api --fail-on-warnings --body file://%cd%/my-api-gateway.json
, я всегда получаю " Неверный base64: «ошибка. Например:
Invalid base64: "{
"swagger" : "2.0",
"info" : {
"version" : "1.0",
"title" : "my-stack-name"
},
"host" : "MY_REST_API_ID.execute-api.eu-central-1.amazonaws.com",
"basePath" : "/Prod",
...
Нет документации и нет примеров в Google, утверждающих, что тело должно быть Base64.
Похоже, что то же самое JSON работает, когда я импортирую его через пользовательский интерфейс (Действия -> API импорта).
Я также пытался использовать файл --cli-input-json
:
my-api-apigateway-cli-json.json
(согласно aws apigateway import-rest-api --generate-cli-skeleton
):
{
"failOnWarnings": true,
"parameters": {
"endpointConfigurationTypes": "REGIONAL"
},
"body": {... JSON FROM EXPORT ...}
}
Команда импорта :
aws apigateway import-rest-api --cli-input-json file://./my-api-apigateway-cli-json.json
, но там написано
Parameter validation failed:
Invalid type for parameter body, value: {'swagger': '2.0', ...
Итак, вопросы:
- Должны ли мы кодировать json как base64?
- Почему эта ошибка и поведение не задокументированы (или если да, то где?)?
- Как успешно выполнить импорт из cli?
Полезные ссылки
Ни в одной из ссылок не сказано, что реакция тела должна быть Base64