python调用阿里云ECS接口

这里以获取域名api为例:

官方文档地址

公共请求参数如下:

1、构建参数

import uuid

AccessKey=""
access_secret_id=""

params = {
    "AccessKeyId": AccessKey,
    "Action": "DescribeRegions",
    "Format": "json",
    "SignatureMethod": "HMAC-SHA1",
    "SignatureNonce": str(uuid.uuid4()),
    "SignatureVersion": "1.0",
    "Timestamp": utc_time,
    "Version": "2014-05-26",
}

参数含义如下
在这里插入图片描述
其中AccessKey是阿里云账户中AccessKey
在这里插入图片描述
2、获取Timestamp值

时间戳,符合IOS8601标准

import datetime
format_time = "%Y-%m-%dT%H:%M:%SZ"
now_time = datetime.datetime.now()
utc_time = now_time - datetime.timedelta(hours=8)  
# 获取时间戳
utc_time = utc_time.strftime(format_time)

3、构建请求字符串

import urllib.request as urllib2

# 使用urllib对参数进行url编码
def percentEncode(strs):
    res = urllib2.quote(strs.encode('utf8'), '')
    res = res.replace('+', '%20')
    res = res.replace('*', '%2A')
    res = res.replace('%7E', '~')
    return res

canstring = ""
# 对请求参数进行按键排序
sortedD = sorted(params.items(), key=lambda x: x[0])
for k, v in sortedD:
    canstring += '&' + percentEncode(k) + '=' + percentEncode(v)
# 拼接请求字符串
StringToSign = 'GET&%2F&' + percentEncode(canstring[1:])

4、构建签名

import hmac
import base64
from hashlib import sha1
# access_secret_id是AccessKey的密钥,在个人中心查看

hmac_code = hmac.new(access_secret_id.encode(), StringToSign.encode(), sha1).digest()
Signature = base64.b64encode(hmac_code)
# 将签名添加到请求参数中
params['Signature']=Signature.decode()

5、访问:

import requests
url = "https://ecs.aliyuncs.com/"

res = requests.get(url=url, params=params)
print(res.text)

返回值如下:
在这里插入图片描述
6、调用阿里云区域可用镜像api
阿里云获取区域可用镜像api
在这里插入图片描述

# 需要把参数中的action换成DescribeImages
# 添加额外参数RegionId(以cn-hangzhou为例)
# 其他步骤和获取区域的步骤一样
params = {
    "AccessKeyId": AccessKey,
    "Action": "DescribeImages",
    "Format": "json",
    "SignatureMethod": "HMAC-SHA1",
    "SignatureNonce": str(uuid.uuid4()),
    "SignatureVersion": "1.0",
    "Timestamp": utc_time,
    "Version": "2014-05-26",
    "RegionId": "cn-hangzhou"
}
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值