使用API查询云监控数据 print("data.items(), %s", str(data.items())) sorteddata sorted(data.items(), keylambda item: item[0]) print("sorteddata, %s", str(sorteddata)) strlist list(map(lambda xy: '%s%s' % (xy[0], xy[1]), sorteddata)) print("strlist, %s", str(strlist)) return '&'.join(strlist) def buildsign(queryparams, bodyparams, eopdate, requestuuid): """ 计算鉴权字段 :param queryparams: dict get请求中的参数 :param bodyparams: dict post请求中的参数 :param eopdate: str 请求时间,格式为:'%Y%m%dT%H%M%SZ' :return: str """ bodystr json.dumps(bodyparams) if bodyparams else '' bodydigest hashlib.sha256(bodystr.encode('utf8')).hexdigest() 请求头中必要的两个参数 headerstr 'ctyuneoprequestid:%sneopdate:%sn' % (requestuuid, eopdate) url中的参数,或get参数 querystr getsortedstr(queryparams) signaturestr '%sn%sn%s' % (headerstr, querystr, bodydigest) printlog(repr('signaturestr is: %s' % signaturestr)) signdate eopdate.split('T')[0] 计算鉴权密钥 ktime hmacsha256(SK, eopdate) kak hmacsha256(ktime, AK) kdate hmacsha256(kak, signdate) signaturebase64 base64ofhmac(hmacsha256(kdate, signaturestr)) 构建请求头的鉴权字段值 print("signaturebase64 %s" % (str(signaturebase64, encoding"utf8"))) signheader '%s Headersctyuneoprequestid;eopdate Signature%s' % ( AK, str(signaturebase64, encoding"utf8")) return signheader def getsignheaders(queryparams, body): """ 获取鉴权用的请求头参数 :param queryparams: dict get请求中的参数 :param body: dict post请求中的参数 :return: """ now datetime.datetime.now() eopdate datetime.datetime.strftime(now, '%Y%m%dT%H%M%SZ') requestuuid getrequestuuid() headers {