巧用 chrome 浏览器的开发者工具解决sdk问题-阿里云开发者社区

开发者社区> 开发与运维> 正文

巧用 chrome 浏览器的开发者工具解决sdk问题

简介: 阿里云的API和SDK给用户的自主操作带来了极大的方便. 前两天遇到一个用户,反馈在使用mongodb 的sdk 获取新加坡的集群实例时,总是结果为空. 但请示返回的状态码却是200, 即成功. 但自己确实是有新加坡的集群实例的,并且用的还是购买实例的主账号的 AccessID/Secret.

阿里云的API和SDK给用户的自主操作带来了极大的方便. 前两天遇到一个用户,反馈在使用mongodb 的sdk 获取新加坡的集群实例时,总是结果为空. 但请示返回的状态码却是200, 即成功. 但自己确实是有新加坡的集群实例的,并且用的还是购买实例的主账号的 AccessID/Secret. 我们来看下这个问题.

  1. 客户的代码是来自于 Api.aliyun.com 复制过来,然后修改了签名键值对,代码片段如下:
#!/usr/bin/env python
#coding=utf-8
from aliyunsdkcore.client import AcsClient
from aliyunsdkcore.request import CommonRequest
client = AcsClient('<accessKeyId>', '<accessSecret>', 'cn-shanghai')
request = CommonRequest()
request.set_accept_format('json')
request.set_domain('mongodb.aliyuncs.com')
request.set_method('POST')
request.set_version('2015-12-01')
request.set_action_name('DescribeDBInstances')
request.add_query_param('RegionId', 'ap-southeast-1')
response = client.do_action(request)
# python2:  print(response) 
print(str(response, encoding = 'utf-8'))

到底是哪里的问题呢?正好我们手头上有一台新加坡的 mongodb 集群实例,我们是否可以从浏览器的返回结果中查看到蛛丝马迹呢?我们尝试一下

  1. 在 chrome 浏览器,先打开新加坡的mongodb 控制台,然后选择开发者工具.如图:
    image

3.选择分片集群实例.
4.这时我们查看开发者工具, 会发现有一个调用 DescribeDBInstances 的页面, 在页面中找到 Query String Parameters 中 action 为 DescribeDBInstances, 找到其 Form data, 这时赫然发现里有一项参数:
DBInstanceType:sharding,如图:
image
看来就是这个参数作的怪, 好了我们修改代码,添加如下行:

request.add_query_param('DBInstanceType','sharding')

果然得到了正确的结果. 可惜文档中没有写明白, 后来又过该方法,发现这个参数的默认值是 replicate, 如果不指定,就只会显示复制集的实例.

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
开发与运维
使用钉钉扫一扫加入圈子
+ 订阅

集结各类场景实战经验,助你开发运维畅行无忧

其他文章