目前,我的应用程序使用boto3来访问AWS资源。但是,我希望使用API网关来使用所使用的AWS服务,以便通过API网关而不是直接通过服务提供所有内容。
我有API网关工作,但我怎么能告诉boto3使用这个新端点,因为API网关端点是基于每个操作设置的。即,有一个用于ListQueues,另一个用于CreateQueue。
将boto3与endpoint-url参数一起使用会给我这个错误:
botocore.parsers.ResponseParserError:无法解析响应(格式不正确(无效标记):第1行,第0列),收到的XML无效: {" message":" Credential的范围应该是正确的服务:' execute-api'。 "}
答案 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
如果有人知道我不知道的事情,请告诉我。