阿里云API

# -*- coding: UTF-8 -*-
_author_ = 'zy'
_date_ = '2019/2/11 0011 21:01'
#阿里云查询月费用分摊服务api
url='https://business.aliyuncs.com/?Action=QueryInstanceGaapCost'
import time
import uuid
import urllib
import sys
import hashlib
import hmac
import base64
import requests

FORMAT_ISO_8601 = "%Y-%m-%dT%H:%M:%SZ"

# 获取请求时间戳
def get_Timestamp():
    return time.strftime(FORMAT_ISO_8601, time.gmtime())

# 获取唯一随机数,防止网络攻击
def get_SignatureNonce():
    return str(uuid.uuid4())

# 拼接参数字典
def get_all_parameters(accessKeyId, billingCycle, pageNumber, pageSize):
    parameters = {
        "Format": "JSON",
        "Version": "2014-05-15",#api版本
        "AccessKeyId": accessKeyId,#账号id
        "SignatureMethod": "HMAC-SHA1",#加密方法
        "Timestamp": get_Timestamp(),#时间戳
        "SignatureVersion": "1.0",
        "SignatureNonce": get_SignatureNonce(),#随机数
        "Action": "QueryInstanceGaapCost",
        "BillingCycle": billingCycle,#
        # "ProductType": "",
        "SubscriptionType": "Subscription",
        # "ProductCode": "",
        "PageNum": pageNumber,
        "PageSize": pageSize
    }
    return parameters

def __pop_standard_urlencode(query):
    ret = query.replace('+', '%20')
    ret = ret.replace('*', '%2A')
    ret = ret.replace('%7E', '~')
    return ret

def __compose_string_to_sign(method, queries):
    sorted_parameters = sorted(queries.items(), key=lambda queries: queries[0])
    sorted_query_string = __pop_standard_urlencode(urllib.parse.urlencode(sorted_parameters))
    canonicalized_query_string = __pop_standard_urlencode(urllib.request.pathname2url(sorted_query_string))
    string_to_sign = method + "&%2F&" + canonicalized_query_string
    return string_to_sign

# 获取签名字符串
def get_Signature(parameters, accessKeySecret):
    if 'Signature' in parameters:
        del parameters['Signature']
    string_to_sign = __compose_string_to_sign('GET', parameters)

   # accessKeySecret = str(accessKeySecret)

    accessKeySecret += '&'
    accessKeySecret=(accessKeySecret).encode(encoding='utf-8')
    string_to_sign=string_to_sign.encode(encoding='utf-8')
    # 计算签名HMAC值
    h = hmac.new(accessKeySecret, string_to_sign, hashlib.sha1)#key ,method,方法
   # print(h)
    #h.update(upwd.encode('utf-8'))
    #按照Base64 编码规则把上面的HMAC值编码成字符串
    signature = base64.encodestring(h.digest()).strip()#

    return signature

def test(accessKeyId,accessKeySecret,billingCycle):
    accessKeyId = accessKeyId # 登录阿里账号分配
    accessKeySecret = accessKeySecret # 登录阿里账号分配
    billingCycle = billingCycle
    pageNumber = 1
    pageSize = 10
    parameters = get_all_parameters(accessKeyId, billingCycle, pageNumber, pageSize)  # 账期YYYY-MM:billingCycle
    return (get_Signature(parameters, accessKeySecret))



 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值