漫游ECS API

ECS API已经于4月3日进行了一次重大更新。除了原有的基础管理功能如实例管理、安全组管理之外,此次又开放了如下的功能:

  1. 创建按量付费的云服务器实例
  2. 创建磁盘、快照和镜像等资源
  3. 接入了RAM资源授权服务,支持账号之间的资源授权

接下来,我们开始漫游体验ECS API的新功能,完成以下三个任务:

  1. 配置环境
  2. 创建一个实例
  3. 创建快照和自定义镜像

一、配置

我们使用一个简单的python脚本来体验ECS的功能,你不需要懂得如何编写python代码,只要完成四个简单的准备任务:

  1. 安装好python环境,需要python 2.7版本
  2. 下载ecs.py这个小脚本, 通过简单的命令行操作,来调用ECS的API
  3. 获取你的阿里云账号的accesskeyid/accesskeysecret密钥对
  4. 下载ECS API文档

第一步,请安装python 2.7版本。Windows/Linux/MacOS等操作系统中如何安装本文不再描述。

第二步,从这里的链接https://aliyunecs.oss.aliyuncs.com/tools/ecs.py 下载地址下载ecs.py脚本,在windows下打开终端命令行工具来执行命令,在linux和mac下使用终端来执行。接下来,我们以linux为例,在终端里执行

$ chmod +x ./ecs.py
加上执行权限后使用更加方便。

第三步,访问http://i.aliyun.com/access_key,点击“创建AccessKey”创建一个accesskeyid/accesskeysecret密钥对。请保存这个密钥对,这是非常重要敏感的信息,绝不能泄漏。

接下来,在终端中直接执行ecs.py这个脚本,可以看到它的帮助信息,我们首先需要将刚刚获取到的密钥对配置好。使用以下命令来进行配置:

$./ecs.py config --id=<access key id> --secret=<access key secret>
配置完成后,可以执行列出可用地域(Region)命令来验证是否配置成功:

$./ecs.py DescribeRegions

如果配置的密钥对没有问题,那么这个命令会输出一个json格式的结果,包含了杭州(cn-hangzhou)和青岛(cn-qingdao)两个地域的信息。

第四步,从http://help.aliyun.com/list/11113464.html下载ECS API文档,作为后续使用的参考。

二、创建实例

前置条件:要创建按量付费的云服务器,您的账户余额必须至少有100元的现金。接下来我们完成以下任务:

  1. 创建一个安全组
  2. 创建一个云服务器实例
  3. 分配公网IP地址
  4. 增加一块磁盘
  5. 启动新创建的实例

1. 创建安全组

ECS的每个实例至少要归属到一个安全组中,所谓的安全组,是由同一个地域内具有相同安全保护需求并相互信任的实例组成。加入到同一个安全组的实例彼此之间是互相信任的,安全组的防火墙规则对他们都生效。

$ ./ecs.py CreateSecurityGroup description="Test-API" regionid=cn-qingdao

如果没有报错,输出结果类似以下,就是执行成功了。

{

"RequestId": "7472C411-08E9-41C7-A20B-BA33E2AA5E7B",

"SecurityGroupId": "G69d5027e-85e4-45cb-a6a5-c1a4de77fab8"

}

2. 创建实例

创建实例前,有几个选择要做:1)创建到哪个地域?2)选择什么配置 3)使用哪个镜像?4)加入到哪个安全组? 5)是否需要公网带宽?使用固定带宽还是按流量付费?6)设置Root密码

本次的API只能用于创建按量付费的云服务器实例,对一些限制可以在http://help.aliyun.com/view/11108189_13545434.html看到具体的信息。

我们将在青岛地域创建一个ecs.s2.small(2CPU 2GB内存) 的云服务器实例,选择ubuntu12.04操作系统,加入到刚刚创建的安全组,选择按流量付费的方式,最大容许10Mbps的公网带宽。命令如下:

$./ecs.py CreateInstance RegionId=cn-qingdao

InstanceType=ecs.s2.small

ImageId=ubuntu1204_64_20G_security_v01.vhd

InternetChargeType=PayByTraffic

InternetMaxBandwidthOut=10

SecurityGroupId=刚刚创建的安全组ID

InstanceName=api-test

Password=your-password

命令执行后,如果没有报错,会有类似如下的json结果输出,代表执行成功:

{

"InstanceId": "AY140404124925248f45",

"RequestId": "024E0224-8B12-4099-897E-F717CF43332C",

}

此时,实例已经创建成功,想查看它的属性,执行

$./ecs.py DescribeInstanceAttribute InstanceId=刚创建成功的实例ID

可以看到它的Status是Stopped状态,我们还需要再进行一些配置才会启动实例。

3.分配公网IP地址

我们刚创建好的实例是不包含IP地址的,想要增加公网IP地址,请执行命令:

$./ecs.py AllocatePublicIpAddress InstanceId=刚创建成功的实例ID

输出如下则为成功

{

"IpAddress": "42.96.194.117",

"RequestId": "46C20C19-93E8-4CCE-853C-5F26241A7EDA"

}

4. 增加一块数据盘

刚刚创建的云服务器是没有数据盘的,我们调用AddDisk这个命令增加一块100GB的数据盘:

$./ecs.py AddDisk InstanceId=刚创建成功的实例ID Size=100

{

"DiskId": "6002-20107932",

"RequestId": "5E859722-D05A-4FE2-B7B1-F1F20FA10C12"

}

5. 启动实例

这个时候,我们可以启动实例,执行:

$./ecs.py StartInstance InstanceId=刚刚创建成功的实例ID

{

"RequestId": "09F57060-739C-409F-9907-78FECEC33E46"

}

没有消息就是好消息,这个时候,再调用DescribeInstanceAttribute就可以看到实例的Status是Starting,几分钟后,实例会启动好,可以SSH远程连接或者通过控制台的“连接管理终端”连接上去。

三、创建快照和自定义镜像

快照是一个磁盘上的数据在某一个时间点的拷贝。自定义镜像是实例可选择的运行环境模板,一般包括操作系统和预装的软件。只有系统盘的快照可以制作成自定义镜像。

首先使用DescribeInstnaceDisks这个API查看系统盘的ID:

$./ecs.py DescribeInstanceDisks InstanceId=刚创建成功的实例ID

如果你按照第二步中的步骤执行,那么输出结果中应当有两块磁盘,其中Type标识为System的就是系统盘。

用以下命令创建系统盘的快照:

$./ecs.py CreateSnapshot InstanceId=刚创建成功的实例ID DiskId=系统盘的ID SnapshotName=my-sys-snapshot

创建成功后会输出SnapshotID。快照的生成过程需要一些时间,你可以通过下面的命令查看快照的进度:

$./ecs.py DescribeSnapshotAttribute RegionId=cn-qingdao SnapshotId=刚刚创建的SnapshotId

{

"CreationTime": "2014-04-04T05:39Z",

"Progress": "73",

"RequestId": "783D64E0-5193-433A-9615-26390783DE68",

"SnapshotId": "6002-20107931-4969987",

"SnapshotName": "my-sys-snapshot"

}

其中的Progress即为进度的百分比。

当Progress达到100时,就可以使用这个快照来创建自定义镜像了。使用以下的命令来创建自定义镜像:

$./ecs.py CreateImage RegionId=cn-qingdao SnapshotId=创建成功的SnapshotId Description=my-image

{

"ImageId": "md5079e28-3b58-48eb-af0a-3da8dcbe56be.vhd",

"RequestId": "F7E07872-2859-4D50-A223-FEE748DBCFB4"

}

此时,这个新的ImageId,就可以用于创建新的实例了。

我们的漫游到此就结束了。你还可以更进一步,对照API文档,完成以下的任务:

  1. 查看所有可用的镜像:DescribeImages
  2. 列出安全组(DescribeSecurityGroups),并且为安全组加一个授权规则(AuthorizeSecurityGroups),只容许公网的22和80端口来访问实例
  3. 试试快照和磁盘的其他功能

如果你想自己去编写代码调用ECS API,那么这个链接里的内容,可以帮你简化签名加密的工作http://dev.aliyun.com/read.php?tid=42,可以找到Java/PHP/C#/Python的示例代码。

时间: 2024-11-03 21:01:15

漫游ECS API的相关文章

ECS API中Signature错误的排查方法

Signature的生成方法 将get中提交的参数(除了aks以外所有的参数)按照一定的组成规则拼成一个字符串,前面再加上GET&/&组成StringToSign,然后对StringToSign做 HMAC计算,以Access Key Secret+一个"&"号为HMAC计算的key,最终算出的字符串就是Signature. 排查思路 若碰到反馈Signature错误,可以排查以下几点: 1. 在构造"StringToSign"时是否对key

阿里云API 发生子账号访问主账号资源时的鉴权规则有哪些

ECS API 发生子账号访问主账号资源时的鉴权规则 当子账号通过 ECS Open API 对主账号的 ECS 资源进行访问时,ECS 后台向 RAM 进行权限检查,以确保资源拥有者的确将相关资源的相关权限授予了调用者. 每个不同的 ECS API 会根据涉及到的资源以及 API 的语义来确定需要检查哪些资源的权限.具体地,每个 API 的鉴权规则见下表 Action鉴权规则 AllocatePublicIpAddressacs:ecs: $regionid:$accountid:instan

阿里云如何借助 RAM 实现子账号对主账号的ECS资源访问

借助 RAM 实现子账号对主账号的 ECS 资源访问 用户创建的 ECS 实例,都是该用户自己拥有的资源.默认情况下,用户对自己的资源拥有完整的操作权限,可以使用本文档中列举的所有 API 对资源进行操作. 但在主子账号的场景下,子账号刚创建时是没有资格去操作主账号的资源的.需要通过 RAM 授权的方式,给予子账号操作主账号资源的权限. 在了解如何使用 RAM 来授权和访问 ECS 实例之前,请确保您已详细阅读了 RAM 产品文档 和 API 文档. 如果您不需要跨账户进行 ECS 实例资源的授

阿里云API请求结构是什么

请求结构 服务地址 ECS API 的服务接入地址为:ecs.aliyuncs.com 通信协议 支持通过 HTTP 或 HTTPS 通道进行请求通信.为了获得更高的安全性,推荐您使用 HTTPS 通道发送请求. 请求方法 支持 HTTP GET 方法发送请求,这种方式下请求参数需要包含在请求的 URL 中. 请求参数 每个请求都需要指定要执行的操作,即 Action 参数(例如 StartInstance),以及每个操作都需要包含的公共请求参数和指定操作所特有的请求参数. 字符编码 请求及返回

阿里云API调用方式有哪些

阿里云API调用方式 对 ECS API 接口调用是通过向 ECS API 的服务端地址发送 HTTP GET 请求,并按照接口说明在请求中加入相应请求参数来完成的;根据请求的处理情况,系统会返回处理结果. 请求结构 公共参数 返回结果 签名机制

阿里云ECS Docker Machine Driver入门指南

+++ title = "Aliyun Elastic Compute Service" description = "Aliyun driver for machine" keywords = ["machine, aliyun, driver, ecs"] [menu.main] parent="smn_machine_drivers" +++ Docker Machine Driver of Aliyun ECS Doc

API经济最主要是学会调用API

众所周知,阿里云提供了全方位.多层次的云计算产品体系.阿里巴巴技术委员会主席王坚博士说过,要让云计算像水电一样方便获得.为了开发者无缝衔接阿里云的众多服务,将它们集成到自己的应用系统,阿里云开放了API和用来访问API的工具SDK. 什么是阿里云SDK? 阿里云Java SDK让您不用复杂编程即可访问云服务器.CDN(内容分发网络).OSS(对象存储)等丰富又强大的云计算基础设施.它是面向开发者的编程库,能够直接应用在开发者的应用程序里,被应用逻辑调用.打个简单的比方,应用程序是家用电器,阿里云

拥抱API经济:教你三步使用SDK玩转阿里云API

众所周知,阿里云提供了全方位.多层次的云计算产品体系.阿里巴巴技术委员会主席王坚博士说过,要让云计算像水电一样方便获得.为了开发者无缝衔接阿里云的众多服务,将它们集成到自己的应用系统,阿里云开放了API和用来访问API的工具SDK. 什么是阿里云SDK? 阿里云Java SDK让您不用复杂编程即可访问云服务器.CDN(内容分发网络).OSS(对象存储)等丰富又强大的云计算基础设施.它是面向开发者的编程库,能够直接应用在开发者的应用程序里,被应用逻辑调用.打个简单的比方,应用程序是家用电器,阿里云

1月13日阿里云ECS、SLB和RDS升级公告

ECS升级公告: 尊敬的阿里云用户: 您好,为了更好的优化ECS服务,阿里云ECS服务将于1月13日23:00-06:00进行系统升级,升级期间影响如下: 1)阿里云官网停止售卖云服务器,无法在官网上购买和升级续费云服务器. 2)您无法在ECS控制台和通过ECS API对云服务器做任何操作,包括:创建.释放.启动.停止.重启.重新初始化磁盘,创建快照.回滚快照,重置,创建自定义镜像等,升级期间不影响云服务器正常运行.调用ECS API 以上受影响的操作,统一返回错误码: ServiceUnava