调用阿里云API 的demo示例(java/python)
Java 示例
// 创建DefaultAcsClient实例并初始化
DefaultProfile profile = DefaultProfile.getProfile(vo.getAliRegionId(),AliAccessKeyId,AliAccessKeySecret);
IAcsClient client = new DefaultAcsClient(profile); // 创建API请求并设置参数
DescribeVirtualBorderRoutersRequest request = new DescribeVirtualBorderRoutersRequest(); //组装filter数据
List<DescribeVirtualBorderRoutersRequest.Filter> list = new ArrayList<DescribeVirtualBorderRoutersRequest.Filter>();
DescribeVirtualBorderRoutersRequest.Filter filter = new DescribeVirtualBorderRoutersRequest.Filter();
filter.setKey(AliEdgeRouterConstant.FILTER_KEY);
List list1 = new ArrayList();
list1.add(vo.getVbrUuid());
filter.setValues(list1);
list.add(filter); request.setFilters(list); DescribeVirtualBorderRoutersResponse response ;
try{
response = client.getAcsResponse(request); DescribeVirtualBorderRoutersResponse.VirtualBorderRouterType virtualBorderRouterType = new DescribeVirtualBorderRoutersResponse.VirtualBorderRouterType();
virtualBorderRouterType = response.getVirtualBorderRouterSet().get(0); routerInventory.setName(virtualBorderRouterType.getName());
routerInventory.setVbrUuid(virtualBorderRouterType.getVbrId());
routerInventory.setDescription(virtualBorderRouterType.getDescription());
routerInventory.setCreateDate(vo.getCreateDate());
routerInventory.setVlan(vo.getVlan());
routerInventory.setAliAccountUuid(vo.getAliAccountUuid());
routerInventory.setAliRegionId(vo.getAliRegionId()); inventory.setAccessPoint(virtualBorderRouterType.getAccessPointId());
inventory.setStatus(virtualBorderRouterType.getStatus());
inventory.setPhysicalLineOwerUuid(virtualBorderRouterType.getPhysicalConnectionOwnerUid());
inventory.setLocalGatewayIp(virtualBorderRouterType.getLocalGatewayIp());
inventory.setPeerGatewayIp(virtualBorderRouterType.getPeerGatewayIp());
inventory.setPeeringSubnetMask(virtualBorderRouterType.getPeeringSubnetMask()); }catch (ClientException e){
e.printStackTrace();
if(e.getErrCode().equals("InvalidAccessKeyId.NotFound")){
flag = false;
}else{
throw new ApiMessageInterceptionException(argerr(e.getMessage()));
} }
Python示例
sdk:
def ModifyVirtualBorderRouterAttribute(key, value, RegionId, VBRId, LocalGatewayIp, PeerGatewayIp, PeeringSubnetMask, Name, Description):
from aliyunsdkvpc.request.v20160428 import ModifyVirtualBorderRouterAttributeRequest
request = ModifyVirtualBorderRouterAttributeRequest.ModifyVirtualBorderRouterAttributeRequest()
request.set_accept_format('json')
request.set_VbrId(VBRId)
request.set_LocalGatewayIp(LocalGatewayIp)
request.set_PeerGatewayIp(PeerGatewayIp)
request.set_PeeringSubnetMask(PeeringSubnetMask)
request.set_Name(Name)
request.set_Description(Description)
client.set_access_key(key)
client.set_access_secret(value)
client.set_region_id(RegionId)
reponse = client.do_action_with_exception(request)
return reponse
API:
import os, sys
import hashlib
import hmac
import base64
import urllib
import time
import uuid
import requests def get_iso8601_time():
'''返回iso8601格式的时间'''
TIME_ZONE = "GMT"
FORMAT_ISO8601 = "%Y-%m-%dT%H:%M:%SZ"
return time.strftime(FORMAT_ISO8601, time.gmtime()) def get_uuid():
'''返回uuid'''
return str(uuid.uuid4()) def get_parameters(user_param, Action, AccessKeyId, Version):
'''
拼接参数字典
user_param: {"RegionId":"cn-beijing", "LoadBalancerName":"test-node1", "AddressType":"intranet", "VSwitchId":"vsw-2zevjlczuvp2mkhhch12x"}
Action操作例如:CreateLoadBalancer
AccessKeyId:access key ID
Version: 接口的版本
'''
parameters = {}
parameters['HTTPMethod'] = 'GET'
parameters['AccessKeyId'] = AccessKeyId
parameters['Format'] = 'json'
parameters['Version'] = Version
parameters['SignatureMethod'] = 'HMAC-SHA1'
parameters['Timestamp'] = get_iso8601_time()
parameters['SignatureVersion'] = '1.0'
parameters['SignatureNonce'] = get_uuid()
parameters['Action'] = Action
for (k, v) in sorted(user_param.items()):
parameters[k] = v
return parameters def get_param(parameters):
'''把公共参数拼接成字符串'''
param_str = ''
for (k, v) in sorted(parameters.items()):
param_str += "&" + urllib.quote(k, safe='') + "=" + urllib.quote(v, safe='')
param_str = param_str[1:]
return param_str def get_StringToSign(parameters, param_str):
'''拼接生成签名的字符串'''
StringToSign = parameters['HTTPMethod'] + "&%2F&" + urllib.quote(param_str, safe='')
return StringToSign def get_signature(StringToSign, AccessKeySecret):
'''构建签名'''
h = hmac.new(AccessKeySecret, StringToSign, hashlib.sha1)
signature = base64.encodestring(h.digest()).strip()
return signature def build_request(server_url, param_str, signature, AccessKeySecret):
'''拼接url并进行请求'''
Signature = "Signature=" + urllib.quote(signature)
param = param_str + "&" + Signature
request_url = server_url + param
s = requests.get(request_url)
print s.content
print s
return s def get_regions(server_url, Action, user_param, AccessKeySecret, AccessKeyId, Version):
'''对请求进行模块
server_url: slb.aliyun.com
Action = 'DescribeRegions'
AccessKeySecret, AccessKeyId:也就是ak
user_param = {'LoadBalancerId': 'lb-2zekxu2elibyexxoo9hlw'}
Version:例如slb的版本是2014-05-15,每个服务都不相同
'''
server_url = 'https://' + server_url + '/?'
AccessKeySecret = AccessKeySecret
AccessKeyId = AccessKeyId
parameters = get_parameters(user_param, Action, AccessKeyId, Version)
param_str = get_param(parameters)
StringToSign = get_StringToSign(parameters, param_str)
signature = get_signature(StringToSign, AccessKeySecret + '&')
Message = build_request(server_url, param_str, signature, AccessKeySecret)
return Message create slb
Action = 'DescribeRegions'
user_param = {}
server_url = 'vpc.aliyuncs.com'
Version = '2016-04-28'
AccessKeySecret='EzuF6gOmgMgaagzvKOXeMRP6m92zB9'
AccessKeyId='LTAI0iQLAL16wPTF'
message = get_regions(server_url, Action, user_param, AccessKeySecret, AccessKeyId, Version)
print "======================%s" %message
print "********************%s" %message.content
调用阿里云API 的demo示例(java/python)的更多相关文章
- Python 调用阿里云 API 收集 ECS 数据
#!/usr/bin/env python # coding: utf-8 # author: Wang XiaoQiang ''' 功能介绍: 1.调用阿里云API,收集所有区域 ECS 信息 2. ...
- 【阿里云API】 阿里云API调用的若干说明
阿里云API 为了监控我们使用的一些阿里云产品,需要些一些脚本,定时调用这些脚本来获得相关阿里云产品的信息. ■ 概述 调用阿里云API大约分成两类方法,一个是直接从HTTP协议开始,自己根据阿里云的 ...
- 阿里云 API 签名机制的 Python 实现
在调用阿里云 API 的时候,最让人头疼的就是 API 的签名(Signature)机制,阿里云在通用文档中也有专项说明,但是仅仅有基于 Java 的实现代码示例.所以这里基于 Python 来分析下 ...
- C#调用阿里云CDN API刷新缓存
使用CDN必须要解决CDN缓存的问题,要么在每次更新文件时生成不同的URL,要么在每次更新文件时刷新CDN缓存.我们在一个实际应用场景中用到了后者,所以需要调用阿里云CDN的API进行缓存刷新的操作. ...
- 阿里云api调用做简单的cmdb
阿里云api调用做简单的cmdb 1 步骤 事实上就是调用阿里api.获取可用区,比方cn-hangzhou啊等等.然后在每一个区调用api 取ecs的状态信息,最好写到一个excel里面去.方便排序 ...
- 阿里云API网关(9)常见问题
网关指南: https://help.aliyun.com/document_detail/29487.html?spm=5176.doc48835.6.550.23Oqbl 网关控制台: https ...
- 利用用阿里云API实现DDNS
前言 之前动态域名解析是用的是腾达路由器上集成的第三方动态解析服务花生壳,解析费用一年40元.后来觉得域名前缀不好,想换掉,花生壳需要重新购买新的域名解析费用,增加1条或者2条动态解析无所谓,万一以后 ...
- 浅析阿里云API网关的产品架构和常见应用场景
自上世纪60年代计算机网络发展开始,API(Application Programming Interface )随之诞生,API即应用程序接口,是实现系统间衔接的桥梁.时至今日,API市场已经形成了 ...
- 使用Node.js调用阿里云短信的发送以及接收
为了使用Node.js调用阿里云短信服务,我自己写了个npm包, 目前实现了: 使用Node.js调用阿里云短信服务,发送短信: 使用Node.js调用阿里云短信服务以及MNS服务,接收用户上行短信 ...
随机推荐
- python的接口
写法一: class Payment: def pay(self, money): raise NotImplementedError class Alipay(Payment): def pay(s ...
- Git----分支管理01
分支就是科幻电影里面的平行宇宙,当你正在电脑前努力学习Git的时候,另一个你正在另一个平行宇宙里努力学习SVN. 如果两个平行宇宙互不干扰,那对现在的你也没有啥影响,不过,在某个时间点,两个平行宇宙合 ...
- LevelDb日知录之五:MemTable详解
[LevelDb日知录之五:MemTable详解] LevelDb日知录前述小节大致讲述了磁盘文件相关的重要静态结构,本小节讲述内存中的数据结构Memtable,Memtable在整个体系中的重要地位 ...
- PolyCluster: Minimum Fragment Disagreement Clustering for Polyploid Phasing 多聚类:用于多倍体的最小碎片不一致聚类
摘要 分型是计算生物学的一个新兴领域,在临床决策和生物医学科学中有着重要的应用. 虽然机器学习技术在许多生物医学应用中显示出巨大的潜力,但它们在分型中的用途尚未完全理解. 在本文中,我们研究了基于聚类 ...
- 硬盘smart信息读取
https://blog.csdn.net/cracker_zhou/article/details/73348966
- Java程序设计11——异常处理
1 概述 异常机制已经成为判断一门编程语言是否成熟的标准,除了传统的像C语言没有提供异常机制之外,目前主流的编程语言如Java.Ruby.Python都提供了成熟的异常机制.异常机制可以使程序中异常处 ...
- Button或者ImageButton的背景设为透明或者半透明
Button或者ImageButton的背景设为透明或者半透明 半透明<Button android:background="#e0000000" ... /> 透明& ...
- dns记录类型(转)
NS:(Domain Name System,域名系统),因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串.通过主机名,最终 ...
- event.preventDefault() vs. return false
使用jquery方式的话,以下是等效的 return false === event.stopPropagation + event.preventDefault() //1. event.preve ...
- deploy: [mkdir] Created dir: C:\Program Files\Java\apache-cxf-2.4.2\samples\java_first_pojo\build [loadfile] Do not set property srcbuild.classpath as its length is 0.
使用CXF的错误,错误是说我的路径有错误,因为路径错误所以无法运行程序 (1)原因,我将其放入了Program Files文件夹下,所以,其不好使 分析原因: 目录路径错误,目录中不能有空格,否则其解 ...