【发布时间】:2021-06-02 05:36:32
【问题描述】:
我正在尝试按照中的说明导出和导入 AWS Gateway 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
,我总是收到“Invalid 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 上没有文档和示例说 body 应该是 Base64。
当我通过 UI(操作 -> 导入 API)导入相同的 JSON 时,它似乎可以工作。
我也尝试过使用--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
-
https://docs.aws.amazon.com/apigateway/api-reference/link-relation/restapi-import/ -- 这里
body明确记录为// raw byte array representing the api definition
【问题讨论】:
标签: amazon-web-services base64 aws-api-gateway aws-cli