def old_ip(dns_record_id): request = CommonRequest() request.set_accept_format('json') # 设置返回格式 request.set_domain('alidns.aliyuncs.com') request.set_method('POST') # 设置记录值 request.set_protocol_type('https') request.set_version('2015-01-09') request.set_action_name('DescribeDomainRecordInfo') request.add_query_param('RecordId', dns_record_id) result = loads(clt.do_action(request)) # 接受返回数据 return result['Value'] # 返回记录数值
def GetFaceAttribute(imageUrl_1: "待检测图片URL"): request = CommonRequest() request.set_method("POST") request.set_domain("face.cn-shanghai.aliyuncs.com") request.set_action_name("GetFaceAttribute") request.set_version("2018-12-03") request.set_accept_format('json') # 设置返回的结果 request.add_body_params("ImageUrl", imageUrl_1) response = client.get_response(request) response_str = str(response[2], 'utf-8') # bytes 转 string print(response_str) # 打印输出结果
class MessageSender(object): _instance = None def __new__(cls, *args, **kwargs): """单例""" if not cls._instance: cls._instance = super().__new__(cls, *args, **kwargs) return cls._instance def __init__(self): self.client = AcsClient(settings.ALI_MESSAGE.get('access_key'), settings.ALI_MESSAGE.get('access_key_secret'), 'default') self.request = CommonRequest() self.request.set_accept_format('json') self.request.set_domain('dysmsapi.aliyuncs.com') self.request.set_method('POST') self.request.set_protocol_type('https') # https | http self.request.set_version('2017-05-25') self.request.set_action_name('SendSms') self.request.add_query_param('SignName', '库音COOLVOX') # 签名 def register_message(self, phone): """发送注册短信""" key = CONSTANTS.REGIST_KEY.format(phone) if 600 - redis.ttl(key) < 60: raise UserError(code=STATUS_CODE.RESEND_MESSAGE_LATER) self.request.add_query_param('TemplateCode', CONSTANTS.REGISTER_TEMPLATE) self.request.add_query_param('PhoneNumbers', phone) code = generate_code() # 生成验证码 self.request.add_query_param('TemplateParam', json.dumps({'code': code})) response = self.client.do_action_with_exception(self.request) response = json.loads(response) # 验证码发送成功,缓存到redis redis.setex(key, CONSTANTS.VERIFY_CODO_TIME_OUT, code) return response def order_success_message(self, phone, order_id): """发送购买成功提醒短信""" self.request.add_query_param('TemplateCode', CONSTANTS.ORDER_SUCCESS_TEMPLATE) self.request.add_query_param('PhoneNumbers', phone) self.request.add_query_param('TemplateParam', json.dumps({'code': order_id})) response = self.client.do_action_with_exception(self.request) response = json.loads(response) logging.info(f'message response ---> {response}') return response
def getvgattr(vgid): request = CommonRequest() request.set_accept_format('json') request.set_domain('slb.aliyuncs.com') request.set_method('POST') request.set_protocol_type('https') # https | http request.set_version('2014-05-15') request.set_action_name('DescribeVServerGroupAttribute') request.add_query_param('RegionId', 'cn-hangzhou') request.add_query_param('VServerGroupId', vgid) response = client.do_action_with_exception(request) jsonData = json.loads(response)
def getslblist(): request = CommonRequest() request.set_accept_format('json') request.set_domain('slb.aliyuncs.com') request.set_method('POST') request.set_protocol_type('https') # https | http request.set_version('2014-05-15') request.set_action_name('DescribeVServerGroups') request.add_query_param('RegionId', 'cn-hangzhou') request.add_query_param('LoadBalancerId', 'lb-bp14c9cltijb7fhq31bd4') response = client.do_action_with_exception(request) jsonData = json.loads(response)
def describe_instances(region, page_size=1, page_num=1): request = CommonRequest() request.set_accept_format('json') request.set_domain('ecs.aliyuncs.com') request.set_method('POST') request.set_version('2014-05-26') request.set_action_name('DescribeInstances') request.add_query_param('PageSize', page_size) request.add_query_param('PageNumber', page_num) request.add_query_param('RegionId', region) return request
def RecognizeFace(recognizeFaceImageUrl, groupName): request = CommonRequest() request.set_method("POST") request.set_domain("face.cn-shanghai.aliyuncs.com") request.set_version("2018-12-03") request.set_action_name("RecognizeFace") request.add_body_params("Group", groupName) request.add_body_params("ImageUrl", recognizeFaceImageUrl) request.set_accept_format('json') # 设置返回的结果 response = client.get_response(request) response_str = str(response[2], 'utf-8') # bytes 转 string print(response_str) # 打印输出结果
def VerifyFace(imageUrl_1: "待对比的图片URL_1", imageUrl_2: "待对比的图片URL_2"): request = CommonRequest() request.set_method("POST") request.set_domain("face.cn-shanghai.aliyuncs.com") request.set_action_name("VerifyFace") request.set_version("2018-12-03") request.set_accept_format('json') request.add_body_params("ImageUrl1", imageUrl_1) request.add_body_params("ImageUrl2", imageUrl_2) response = client.get_response(request) response_str = str(response[2], 'utf-8') # bytes 转 string print(response_str) # 打印输出结果
def describeSec(*key): def deserialize(param): param = json.loads(param) top = objectview(param) permissions_param = top.Permissions Permissions = objectview(permissions_param.copy()) if permissions_param.get('Permission') is not None: Permissions.Permission = [] for item in permissions_param.get('Permission'): item = objectview(item) Permissions.Permission.append(item) # apidebug(Permissions.Permission[0]) top.Permissions = Permissions return top # def util(): # Permission=[] # Permission.append(objectview(param)) # apidebug(key) client = AcsClient(key[0], key[1], 'cn-beijing') request = CommonRequest() request.set_accept_format('json') request.set_domain('ecs.aliyuncs.com') request.set_method('POST') request.set_version('2014-05-26') request.set_action_name('DescribeSecurityGroupAttribute') request.add_query_param('RegionId', 'cn-beijing') request.add_query_param('SecurityGroupId', 'sg-2zeiafyiu5nh8zsuy1u6') resp_jsonByte = client.do_action_with_exception(request) if os.environ.get("API_JSON_INFO") == "1": apiinfo("Json Response") print(str(resp_jsonByte, encoding='utf-8')) # resp_param=json.loads(resp_jsonByte.decode()) resp_json = deserialize(resp_jsonByte.decode()) # apiinfo(resp_json.Permissions.Permission[0].SourceCidrIp) # apidebug(resp_json.) return resp_json
def send_code_by_aliyun(self, service, user_phone): """ 利用阿里云短息平台进行发送验证码; 注意只能传递一个传递及验证码 :param service: :param user_phone: :return: """ client = AcsClient(service.app_id, service.app_key, 'default') com_request = CommonRequest() com_request.set_accept_format('json') com_request.set_domain("dysmsapi.aliyuncs.com") com_request.set_method('POST') com_request.set_protocol_type('https') com_request.set_version('2017-05-25') com_request.set_action_name('SendSms') template_id, sms_sign, timeout = self._get_config_template( service, 'login') if not template_id or not sms_sign or not timeout: return { "state": False, 'msg': "在(短信服务配置)中没有找到可用于(登录时发送验证码)的模板,请联系管理员设置!" } com_request.add_query_param('PhoneNumbers', user_phone) com_request.add_query_param('SignName', sms_sign) com_request.add_query_param('TemplateCode', template_id) param_data = { 'name': 'sms_sign', 'code': self.generate_random_numbers(service.code_length) } param_json = json.dumps(param_data) com_request.add_query_param('TemplateParam', param_json) try: cli_response = client.do_action_with_exception(com_request) cli_res = json.loads(str(cli_response, encoding='utf-8')) logging.info("ali-sms-result: {}".format(cli_res)) if cli_res['Code'] == 'OK': record = self.create_record(user_phone, service, cli_res['RequestId'], param_data['code'], timeout) return {"state": True} else: return { "state": False, 'msg': "发送验证码失败!,Error:{}".format(cli_res['Message']) } except Exception as e: return { "state": False, 'msg': "阿里云发送验证码失败,Error:{}".format(str(e)) }
def sendMessage(accessKeyId, accessSecret, phoneNumbers, signName, templateCode, templateParam=None): ''' 发送短信 -- @param accessKeyId: accessKeyId @param accessSecret: accessSecret @param phoneNumbers: 接收短信的手机号码。 格式: 国内短信:11位手机号码,例如15951955195。 国际/港澳台消息:国际区号+号码,例如85200000000。 支持对多个手机号码发送短信,手机号码之间以英文逗号(,)分隔。上限为1000个手机号码。批量调用相对于单条调用及时性稍有延迟。 验证码类型短信,建议使用单独发送的方式。 @param signName: 短信签名名称。请在控制台签名管理页面签名名称一列查看。 @param templateCode: 短信模板ID。请在控制台模板管理页面模板CODE一列查看。 @param templateParam: 短信模板变量对应的实际值,JSON格式。 类型: 1. 单个普通字符串,会默认以code封装 2. json格式的字符串。如:"{\"code\":\"abcd\"}" 3. 字典或列表 ''' tp = {} if isinstance(templateParam, str): if templateParam[0] == '{' and templateParam[-1] == '}': tp = templateParam else: tp = json.dumps({'code': templateParam}) elif isinstance(templateParam, dict): tp = json.dumps(templateParam) # else: # return None client = AcsClient(accessKeyId, accessSecret, 'cn-hangzhou') request = CommonRequest() request.set_accept_format('json') request.set_domain('dysmsapi.aliyuncs.com') request.set_method('POST') request.set_protocol_type('https') request.set_version('2017-05-25') request.set_action_name('SendSms') request.add_query_param('RegionId', "cn-hangzhou") request.add_query_param('PhoneNumbers', phoneNumbers) request.add_query_param('SignName', signName) request.add_query_param('TemplateCode', templateCode) if tp: request.add_query_param('TemplateParam', tp) response = client.do_action(request) return response
def json_to_js(server_name): print(server_name) instance_id = '' if 'saasapi' in server_name: instance_id = 'i-bp1cxjakqgruiklj6r42' if 'openapi' in server_name: instance_id = 'i-bp1hqj94tqd6rehk40wa' instance_str = {"instanceId": instance_id} end_time = time.time() + 15 start_time = end_time - 60 * 10 - 15 end_time = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(end_time)) start_time = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(start_time)) client = AcsClient("LTAIS2gayXtUpGes", "2dz2N0LVTKA8cvP38YhKJf44N77nq3", "cn-hangzhou") request = CommonRequest() request.set_accept_format('json') request.set_domain('metrics.aliyuncs.com') request.set_method('POST') request.set_version('2018-03-08') request.set_action_name('QueryMetricData') request.add_query_param('Metric', 'cpu_total') request.add_query_param('Project', 'acs_ecs_dashboard') request.add_query_param('StartTime', start_time) request.add_query_param('EndTime', end_time) request.add_query_param('Dimensions', str(instance_str)) time.sleep(30) response = client.do_action(request) cpu_data = json.loads(response.decode('utf-8')).get('Datapoints') cpu_data = json.loads(cpu_data) request.add_query_param('Metric', 'memory_usedutilization') response = client.do_action(request) memory_data = json.loads(response.decode('utf-8')).get('Datapoints') memory_data = json.loads(memory_data) times = [i.get('timestamp') for i in cpu_data] times = [ time.strftime('%H:%M:%S', time.localtime(i / 1000)) for i in times ] cpu_list = [i.get('Average') for i in cpu_data] memory_list = [i.get('Average') for i in memory_data] js_str = """ xAxis: { type: 'category', boundaryGap: false, data: %s}, yAxis: {type: 'value'}, series: [{name:'CPU使用率', type:'line', data:%s}, {name:'内存使用率', type:'line', data:%s}, """ % (times, cpu_list, memory_list) return js_str
def _generate_request(self, phone_num, code, templateCode): request = CommonRequest() request.set_accept_format('json') request.set_domain(const.DOMAIN) request.set_method('POST') request.set_protocol_type('https') # https | http request.set_version('2017-05-25') request.set_action_name('SendSms') request.add_query_param('PhoneNumbers', phone_num) request.add_query_param('SignName', self.signName) request.add_query_param('TemplateCode', templateCode) request.add_query_param('TemplateParam', '{"code": ' + code + '}') return request
def delete_domain_record(self, record_id): # https://help.aliyun.com/document_detail/29773.html?spm=a2c4g.11186623.6.648.4bc76e00EoOIru # https://api.aliyun.com/?spm=a2c1g.8271268.10000.1.751edf252XRbqs#product=Alidns&api=DeleteDomainRecord¶ms={}&tab=DEMO&lang=PYTHON request = CommonRequest() request.set_accept_format('json') request.set_domain('alidns.aliyuncs.com') request.set_method('POST') request.set_version('2015-01-09') request.set_action_name('DeleteDomainRecord') request.add_query_param('RecordId', record_id) response = client.do_action(request)
def DeleteFace(groupName: "添加人脸的分组", person: "添加人脸的姓名", image: "添加人脸的编号"): request = CommonRequest() request.set_method("POST") request.set_domain("face.cn-shanghai.aliyuncs.com") request.set_version("2018-12-03") request.set_action_name("DeleteFace") request.add_body_params("Group", groupName) request.add_body_params("Person", person) request.add_body_params("Image", image) request.set_accept_format('json') # 设置返回的结果 response = client.get_response(request) response_str = str(response[2], 'utf-8') # bytes 转 string print(response_str) # 打印输出结果
def __get_auto_scaling_group_with_instances(self): request = CommonRequest() request.set_accept_format('json') request.set_domain('ess.ap-southeast-5.aliyuncs.com') request.set_method('POST') request.set_version('2014-08-28') request.set_action_name('DescribeScalingInstances') request.add_query_param('RegionId', 'ap-southeast-5') response = client.do_action(request) response = json.loads(response) return response['ScalingInstances']['ScalingInstance']
def check_instance_running(instance_id): request = CommonRequest() request.set_accept_format('json') request.set_domain('rds.aliyuncs.com') request.set_method('POST') request.set_protocol_type('https') # https | http request.set_version('2014-08-15') request.set_action_name('DescribeDBInstanceAttribute') request.add_query_param('DBInstanceId', instance_id) response = client.do_action(request) response = json.loads(response) state = response["Items"]["DBInstanceAttribute"][0]["DBInstanceStatus"] return state
def fun_ali_switch_sdwan_route(currentNextHopID, newNextHopID): client = AcsClient(var_ALI_AccessKey, var_ALI_AccessSecret, var_ALI_Region) request1 = DeleteRouteEntryRequest() request1.set_accept_format('json') request1.set_RouteTableId(var_ALI_RouteTableID) request1.set_NextHopId(currentNextHopID) request1.set_DestinationCidrBlock(var_ALI_DestinationCidrBlock) try: response1 = client.do_action_with_exception(request1) print(str(response1, encoding='utf-8')) requestStatus = True except: requestStatus = False if requestStatus == True: """ request2 = CreateRouteTableRequest() request2.set_accept_format('json') request2.set_RouteTableId(var_ALI_RouteTableID) request2.set_DestinationCidrBlock(var_ALI_DestinationCidrBlock) request2.set_NextHopId(newNextHopID) request2.set_NextHopType('NetworkInterface') time.sleep(5) response2 = client.do_action_with_exception(request2) #print(str(response2, encoding='utf-8')) """ request2 = CommonRequest() request2.set_accept_format('json') request2.set_domain('vpc.aliyuncs.com') request2.set_method('POST') request2.set_protocol_type('https') # https | http request2.set_version('2016-04-28') request2.set_action_name('CreateRouteEntry') request2.add_query_param('RouteTableId', var_ALI_RouteTableID) request2.add_query_param('RouteEntryName', var_ALI_RouteEntryName) request2.add_query_param('DestinationCidrBlock', var_ALI_DestinationCidrBlock) request2.add_query_param('NextHopType', "NetworkInterface") request2.add_query_param('NextHopId', newNextHopID) time.sleep(6) response2 = client.do_action_with_exception(request2) print(str(response2, encoding='utf-8')) return True else: return False
def getEcsIdAndPort(client, slbid): request = CommonRequest() request.set_accept_format('json') request.set_domain('slb.aliyuncs.com') request.set_method('POST') request.set_protocol_type('https') # https | http request.set_version('2014-05-15') request.set_action_name('DescribeHealthStatus') request.add_query_param('RegionId', 'cn-hangzhou') request.add_query_param('LoadBalancerId', slbid) response = client.do_action(request) res = json.loads(str(response, encoding='utf-8')) return res['BackendServers']['BackendServer']
def send_sms_tool(phone, templateParam, **kwargs): client = AcsClient(kwargs['ACCESS_KEY_ID'], kwargs['ACCESS_KEY_SECRET'], 'default') request = CommonRequest() request.set_accept_format('json') request.set_domain('dysmsapi.aliyuncs.com') request.set_method('POST') request.set_protocol_type('https') # https | http request.set_version('2017-05-25') request.set_action_name('SendSms') request.add_query_param('PhoneNumbers', phone) request.add_query_param('SignName', kwargs['SignName']) request.add_query_param('TemplateCode', kwargs['TemplateCode']) request.add_query_param('TemplateParam', templateParam) client.do_action_with_exception(request)
def update_dns(dns_rr, dns_type, dns_value, dns_record_id, dns_ttl): request = CommonRequest() request.set_accept_format('json') # 设置返回格式 request.set_domain('alidns.aliyuncs.com') request.set_method('POST') request.set_protocol_type('https') request.set_version('2015-01-09') request.set_action_name('UpdateDomainRecord') request.add_query_param('RecordId', dns_record_id) # 设置记录值 request.add_query_param('RR', dns_rr) # 设置子域名信息 request.add_query_param('Type', dns_type) # 设置 DNS 类型 request.add_query_param('Value', dns_value) # 设置解析 IP response = loads(clt.do_action(request)) # 发送请求内容 return response
def getecsip(ecsid): request = CommonRequest() request.set_accept_format('json') request.set_domain('ecs.aliyuncs.com') request.set_method('POST') request.set_protocol_type('https') # https | http request.set_version('2014-05-26') request.set_action_name('DescribeInstances') request.add_query_param('RegionId', 'cn-hangzhou') request.add_query_param('InstanceIds', "['" + ecsid + "']") response = client.do_action_with_exception(request) jsonData = json.loads(response) return jsonData['Instances']['Instance'][0]['NetworkInterfaces'][ 'NetworkInterface'][0]['PrimaryIpAddress']
def send_msg(request): if not request.form.get('receiver') or not re.match( r"^1[35678]\d{9}$", request.form.get('receiver')): return jsonify({ 'status': 'fail', 'info': 'send msg fail, please check receiver.' }), 400 else: receiver = request.form.get('receiver') if not request.form.get('text') or not re.match(r"^\d{6}$", request.form.get('text')): return jsonify({ 'status': 'fail', 'info': 'send msg fail, please check text.' }), 400 else: text = request.form.get('text') if 'username' not in session and request.form.get( 'token') != config.Config.TOKEN: return jsonify({ 'status': 'fail', 'info': 'no certified operate.' }), 400 try: client = AcsClient(config.Config.ALI_ASSESS_KEY_ID, config.Config.ALI_ASSESS_KEY_SECRET, config.Config.ALI_REGION_ID) request = CommonRequest() request.set_accept_format('json') request.set_domain('dysmsapi.aliyuncs.com') request.set_method('POST') request.set_protocol_type('https') request.set_version('2017-05-25') request.set_action_name('SendSms') request.add_query_param('RegionId', config.Config.ALI_REGION_ID) request.add_query_param('PhoneNumbers', receiver) request.add_query_param('SignName', "KisPig网") request.add_query_param('TemplateCode', "SMS_184215625") request.add_query_param('TemplateParam', "{\"message\": \"" + text + "\"}") response = client.do_action_with_exception(request) return jsonify({'status': 'ok', 'info': 'send msg success.'}), 200 except Exception as e: return jsonify({ 'status': 'fail', 'info': 'send msg fail.', 'reason': str(e) }), 400
def update_domain_record(self, rid, rr, value, type='TXT'): request = CommonRequest() request.set_accept_format('json') request.set_domain('alidns.aliyuncs.com') request.set_method('POST') request.set_version('2015-01-09') request.set_action_name('UpdateDomainRecord') request.add_query_param('RecordId', rid) request.add_query_param('RR', rr) request.add_query_param('Type', type) request.add_query_param('Value', value) response = client.do_action(request)
def smsVerifySend(code,nowTime,baseDate): if not constant.smsSwitch: return if not timeBetween() and not constant.smsSwitch: print("时间不在范围内或者开关关闭,无需发短信") return phoneNumbers = constant.phoneNumbers; client = AcsClient(constant.accessKeyId, constant.accessKeySecret, 'cn-hangzhou') request = CommonRequest() request.set_accept_format('json') request.set_domain('dysmsapi.aliyuncs.com') request.set_method('POST') request.set_protocol_type('https') # request.set_version('2017-05-25') request.set_action_name('SendSms') request.add_query_param('RegionId', "cn-hangzhou") request.add_query_param('SignName', constant.signName) request.add_query_param('TemplateCode', constant.smsTemplateCode) request.add_query_param('TemplateParam', "{\"code\":\""+code+"\"}") cursor.execute("select * from hold_stock where stock_code='%s' and hold_flag=1" % (code)) fetchFlag = cursor.fetchone() if not fetchFlag: print("不在范围内") return if len(code)>6 and len(code)<20 : myNumberArray = constant.myNumber; #没三分钟发一次短信 if int(nowTime[14:16])%3 == 2: for number in myNumberArray.split(','): request.add_query_param('PhoneNumbers', number) response = client.do_action(request) print(response) return for number in phoneNumbers.split(','): request.add_query_param('PhoneNumbers', number) cursor.execute("SELECT * FROM sms_send_record where stock_code='%s' and phone_number='%s' and DATE(send_date)='%s'" % (code,number,baseDate)) flag = cursor.fetchone() #这里设置可以一直发 flag=False if flag: pass else: response = client.do_action(request) cursor.execute("select stock_name from all_stock where stock_code='%s' " % (code)) stockName = cursor.fetchone()[0] #stockName='weizhi' cursor.execute("INSERT INTO sms_send_record (stock_code,stock_name, phone_number, send_date) VALUES ('%s','%s', '%s', '%s')" % (code,stockName,number,nowTime)) db.commit() print(str(response, encoding = 'utf-8'))
def stopapp(appid): #print(appid) client = AcsClient(aukey, ausecret, areaname) request = CommonRequest() request.set_accept_format('json') request.set_method('POST') request.set_protocol_type('https') request.set_domain("edas.cn-hangzhou.aliyuncs.com") #request.set_domain(areadomain)报错 request.set_version('2017-08-01') request.add_query_param("RegionId", areaname) request.add_query_param('AppId', appid) request.set_uri_pattern('/pop/v5/changeorder/co_stop') response = client.do_action(request) print(str(response, encoding='utf-8'))
def addnewRULE(func): global clt request = CommonRequest() request.set_accept_format('json') request.set_domain('slb.aliyuncs.com') request.set_method('POST') request.set_version('2014-05-15') request.set_action_name('AddAccessControlListEntry') request.add_query_param('RegionId', 'cn-hangzhou') request.add_query_param('AclId', '这里是SLB访问名单的ID') request.add_query_param( 'AclEntrys', '[{"entry":"' + func() + '/32","comment":"国内运维IP地址"}]') response = client.do_action(request) print(str(response, encoding='utf-8'))
def getAliyunSlbIpPort(ids, account='', passkey='', endpoint=''): client = AcsClient(account, passkey, endpoint) for id in ids: request = CommonRequest() request.set_accept_format('json') request.set_domain('slb.aliyuncs.com') request.set_method('POST') request.set_protocol_type('https') # https | http request.set_version('2014-05-15') request.set_action_name('DescribeLoadBalancerAttribute') request.add_query_param('LoadBalancerId', id) response = client.do_action(request) res = json.loads(str(response, encoding='utf-8')) return res
def Regionsmain(accessKey, accessSecret, region): Regionslist = [] client = AcsClient(accessKey, accessSecret, region) request = CommonRequest() request.set_accept_format('json') request.set_domain('ecs.aliyuncs.com') request.set_method('POST') request.set_version('2014-05-26') request.set_action_name('DescribeRegions') response = client.do_action_with_exception(request) response = json.loads(response, encoding='utf-8') Regionslists = response.get('Regions').get('Region') for list in Regionslists: Regionslist.append(list['RegionId']) return Regionslist
def delete_domain_record(rr): request = CommonRequest() request.set_accept_format('json') request.set_domain('alidns.aliyuncs.com') request.set_method('POST') request.set_protocol_type('https') # https | http request.set_version('2015-01-09') request.set_action_name('DeleteSubDomainRecords') request.add_query_param('DomainName', domain_name) request.add_query_param('RR', rr) response = client.do_action_with_exception(request) # python2: print(response) print(str(response, encoding='utf-8'))