更新aws apigateway binaryMediaTypes

时间:2017-03-28 19:06:33

标签: amazon-web-services aws-api-gateway

我尝试配置和更新AWS API网关的二进制支持选项。我可以通过Web UI执行此操作而不会出现问题,但我想编写此脚本。

使用CLI命令参考页面: http://docs.aws.amazon.com/cli/latest/reference/apigateway/get-rest-api.html http://docs.aws.amazon.com/cli/latest/reference/apigateway/update-rest-api.html

能够发出get-rest-api命令就好了:

C:\> aws apigateway get-rest-api --rest-api-id [ID]

{
  "id": "[ID]",
    "createdDate": 1490723884,
    "name": "testbinarymediatypes"
}

但是在尝试更新binaryMediaTypes时:

PS C:\> aws apigateway update-rest-api --rest-api-id [ID] --patch-operations op=add,path=binaryMediaTypes,value='image/jpg'
  

调用UpdateRestApi时发生错误(BadRequestException)   操作:无效的补丁路径binaryMediaTypes

可以这样做,还是我每次都在手动添加Web UI中的类型?

3 个答案:

答案 0 :(得分:2)

通过CLI添加这些内容的格式有点不直观。

aws apigateway update-rest-api --rest-api-id [ID] 
          --patch-operations "op=add,path=/binaryMediaTypes/image~1jpg"
aws apigateway update-rest-api --rest-api-id [ID]
          --patch-operations "op=replace,path=/binaryMediaTypes/image~1jpg,value='image/gif'"

答案 1 :(得分:0)

我将此放在此处,以寻找更新apigateway endpointConfiguration的类似解决方案。

aws apigateway update-rest-api --rest-api-id yourId --patch-operations "op=replace,path=/endpointConfiguration/types/EDGE,value='REGIONAL'"

答案 2 :(得分:0)

另一种自动化解决方案:部署swagger。

对于拉动,我使用以下命令:

aws apigateway get-export \
        --rest-api-id xxxxxxxxxx \
        --stage-name prod \
        --export-type swagger \
        --parameters '{"extensions": "integrations,authorizers"}' \
        --accepts application/yaml \
        swagger.yaml

swagger.yaml的结尾处,我看到:

x-amazon-apigateway-binary-media-types:
- "image/png"
- "image/jpeg"

您可以使用以下命令上传:

aws apigateway put-rest-api \
        --rest-api-id '5y7lkvtie6' \
        --body 'file://swagger.yaml'

在您将需要通过Web控制台或通过awscli再次部署舞台之后(从未尝试过,如果可能,请检查aws apigateway help)。