一键创建包年包月ECS实例

在之前的博客中我们介绍了如何通过资源编排服务(ROS)创建 按量付费 的ECS, RDS等资源。今天这篇文章将介绍怎样通过资源编排服务(ROS)创建 包年包月 类型的资源。

目前我们开放了 ECS 和 RDS 两种资源的包年包月资源,详细的属性配置请参考 ALIYUN::ECS::PrepayInstanceALIYUN::RDS::PrepayDBInstance。更多的包年包月类型资源我们将陆续开放,敬请关注。

下面我们通过示例介绍一下,如何使用ROS的Python SDK来创建包年包月的 ECS 实例。

注: 示例中的命令行都使用Linux的shell,Windows/DOS用户需要根据情况修改。

环境准备

  1. 首先您需要安装Python SDK的依赖环境,同时您还需要了解如何通过Python SDK调用阿里云资源编排服务(ROS),详细攻略请参阅阿里云资源编排服务Python SDK使用入门
  2. 如果您之前已经安装了ROS SDK,那么请您更新到最新版本
sudo pip install upgrade aliyun-python-sdk-ros

ALIYUN::ECS::PrepayInstance 资源简介

相对于ALIYUN::ECS::Instance, ALIYUN::ECS::PrepayInstance 新增了几个参数:

  • PeriodType, 包年包月的计价单位,和 Period 属性配合起作用

    • Monthly,按月
    • Yearly, 按年
  • Period, 包年包月时长,不同的计价单位对应的时长可选值不同

    • 如果是按月,Period可选值1-9.
    • 如果是按年,Period可选值1-3

注: 按照官网的优惠策略,购买10-12个月的话,只需要支付10个月的费用. 您在下单的时候,直接选择1年({Period: 1,PeriodType: Yearly})即可, 请稍后在费用中心对支付金额进行确认。

  • AutoRenew, 当前订单到期后,是否自动续费。如果设置为True,那么

    • 如果PeriodType为Monthly, 则自动续费1个月
    • 如果PeriodType为Yearly,则自动续费1年

    ALIYUN::ECS::PrepayInstance 还提供了属性OrderId获取订单id. ECS创建成功后,您可以到费用中心控制台 查看您的订单详情,并完成支付。

模板

我们使用下面的模板来创建资源栈:

{
  "ROSTemplateFormatVersion" : "2015-09-01",
  "Resources" : {
    "WebServer": {
      "Type": "ALIYUN::ECS::PrepayInstance",
      "Properties": {
        "ImageId" : "ubuntu1404_64_40G_aliaegis_20160222.vhd",
        "InstanceType": "ecs.s3.large",
        "SecurityGroupId": {
            "Fn::GetAtt": [
                "mySecurityGroup",
                "SecurityGroupId"
            ]
        },
        "Password": "RTYU567*&%dkiss",
        "PeriodType": "Monthly",
        "Period": 1,
        "MaxAmount": 1
      }
    },
    "mySecurityGroup": {
        "Type": "ALIYUN::ECS::SecurityGroup",
        "Properties": {
            "SecurityGroupName": "mySecurityGroup"
        }
    }
  },
  "Outputs": {
    "InstanceId": {
         "Value" : {"Fn::GetAtt": ["WebServer","InstanceIds"]}
    },
    "OrderId": {
         "Value" : {"Fn::GetAtt": ["WebServer","OrderId"]}
    }
  }
}

模板中定义了包年包月的ECS实例,购买时长为1个月

下单

1 创建请求对象

req = CreateStacksRequest.CreateStacksRequest()

2 通过HTTP头设置资源栈所在的Region:

req.set_headers({'x-acs-region-id': 'cn-beijing'})

3 构造请求的消息体内容:

create_stack_body = '''
{
    "Name": "%s",
    "TimeoutMins": %d,
    "Template": %s
}
''' % ('create_ecs_prepay', 60, template)

req.set_content(create_stack_body)

4 提交请求,创建资源栈

status, headers, body = client.get_response(req)
    if status == 201:
        result = json.loads(body)
        print(result)
    else:
        print('Unexpected errors: status=%d, error=%s' % (status, body))

5 返回结果

当请求成功时,将会打印如下结果:

{u'Id': u'ac2411c8-9f16-4c8f-901b-4960c6f1d1ed', u'Name': u'create_ecs_prepay'}

创建资源栈的请求会同步返回,订单已提交。我们可以通过ROS的web控制台或者API来查询订单号。

支付

  • 费用中心, 您可以看到刚刚创建的订单,如下图:
    一键创建包年包月ECS实例

可以看到订单价格和我们询价一致!

  • 您可以查看订单详情,如下图:
    一键创建包年包月ECS实例

实例规格符合我们的配置。

  • 当您支付订单之后,就可以到ROS控制台查看资源的创建进度。

本文实例代码可在附件中下载。

上一篇:软件定义数据中心(SDDC)的网络安全


下一篇:lzg_ad:XPE网络功能组件