使用API​​ Gateway为boto3创建端点URL

时间:2017-09-11 02:19:22

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

目前,我的应用程序使用boto3来访问AWS资源。但是,我希望使用API​​网关来使用所使用的AWS服务,以便通过API网关而不是直接通过服务提供所有内容。

我有API网关工作,但我怎么能告诉boto3使用这个新端点,因为API网关端点是基于每个操作设置的。即,有一个用于ListQueues,另一个用于CreateQueue。

将boto3与endpoint-url参数一起使用会给我这个错误:

  

botocore.parsers.ResponseParserError:无法解析响应(格式不正确(无效标记):第1行,第0列),收到的XML无效:   {" message":" Credential的范围应该是正确的服务:' execute-api'。 "}

2 个答案:

答案 0 :(得分:1)

创建客户端时,您可以传递关键字参数endpoint_url,这样您就可以覆盖为目标服务构建的默认URL botocore

import boto3

client = boto3.client('sqs', endpoint_url="https://your.api.gateway.url.here")

这里需要一些管理,因为它听起来像你有只读的API网关端点,然后是一些具有写入功能的端点。

答案 1 :(得分:0)

在做了一些更多的研究后,真正的答案是这实际上是不可能的,因为boto3库不支持API Gateway作为它提供的服务之一。

见这里: https://github.com/boto/botocore/issues/1140

目前有一个开放的功能请求,允许boto3调用API网关资源: https://github.com/boto/boto3/issues/1246

如果有人知道我不知道的事情,请告诉我。