使用华为云API创建相应的云服务

一、华为云IAM认证鉴权及服务API调用

《定时开关华为公有云虚拟机方法总结》篇幅中有提过,通过apiexplorer可以很方便的进行应用创建调用。不过有些云服务还没有上线apiexplorer,这时候就需要通过原始的API进行调用了。
比如在香港站点Functiongraph开通LTS日志,就可以通过API进行调用开通,具体shell指令如下:

token=`curl -X POST -H 'Content-Type:application/json' -d '{"auth":{"identity":{"methods":["password"],"password":{"user":{"name":"IAM用户名","password":"帐户密码","domain":{"name":"主帐号名称"}}}},"scope":{"project":{"name":"ap-southeast-1"}}}}' -i https://iam.ap-southeast-1.myhuaweicloud.com/v3/auth/tokens -k -s |grep X-Subject-Token | awk -F ': ' '{print $2}'`
curl -X POST -H "X-Auth-Token:$token" -H "Content-Type:application/json;charset=utf-8" -i https://functiongraph.ap-southeast-1.myhuaweicloud.com/v2/0de61da60f00f3952f87c003fd9cd8f0/fgs/functions/enable-lts-logs

第一条命令是通过IAM服务获取token信息,第二条命令是使用token信息在functiongraph的endpoint节点上调用LTS日志开通功能。
由于在云帐号中存在IAM帐号和主帐号的概念,如果在公司里是分开创建的,这里的用户名会不一样,如果只有一个帐号,没有创建IAM帐号,这里的两个用户名称是一致的。

认证鉴权可以参考页面:https://support.huaweicloud.com/intl/zh-cn/api-functiongraph/functiongraph_06_0230.html
Endpoint信息可以参考:https://developer.huaweicloud.com/endpoint

二、通过API创建虚拟机

创建ECS云服务器的参考页面为:https://support.huaweicloud.com/intl/zh-cn/api-ecs/ecs_02_0101.html
ECS服务器数据结构页面为:https://support.huaweicloud.com/intl/zh-cn/eu-west-0-api-ecs/zh-cn_topic_0167957246.html

由于token值的获取方法在第一部分已做了介绍,这里直接上ECS的请求体:

{
    "server": {
        "availability_zone":"az1", //可用区名称,该项有问题
        "adminPass": "P@ssw0rd123",
        "name": "newserver",
        "imageRef": "6f1ca74e-95b6-419d-95db-f649cca82379",
        "root_volume": {
            "volumetype": "SSD"
        },
        "data_volumes": [
            {
                "volumetype": "SSD",
                "size": 100
            },
            {
                "volumetype": "SSD",
                "size": 100,
                "multiattach": true,
                "hw:passthrough": true
            }
        ],
        "flavorRef": "s6.medium.2",
        "vpcid": "25728479-c5ad-470b-8d38-a1954ac24daa",
        "security_groups": [
            {
                "id": "5af58fa9-fe9b-4453-8013-c6e4b3b1413f"
            }
        ],
        "nics": [
            {
                "subnet_id": "e674b889-8731-48e4-9586-a030e624ac18"
            }
        ],
        "key_name": "",
        "count": 1,
        "metadata": {},
        "extendparam": {
            "chargingMode": "postPaid",
            "enterprise_project_id": "0"
        }
    }
}

上面的请求体创建ECS时有个问题:上面的请求体执行时需要去掉availability_zone部分,该部分加上会提示对应的AZ不存在,这个需要后续确认原因。

huaweicloud API create ecs
当把multiattach结构体部分去掉后,对应创建的虚拟机信息如下:
ecs create volume

PS:AZ参数问题核查
通过另外一个接口查询发现,在web界面上看到的AZ1、AZ2,在后台数据提交时,不是这个名称,后来又看了查询AZ的接口,通过调用发现,在测试用的智利圣地亚哥region,AZ1对应的名称是la-south-2a,AZ2对应的名称是la-south-2b,显然ECS创建页面的文档给的有误导性,也不太完善,应该附上获取AZ的链接页面。AZ链接查询的结果信息如下:
os availability zone

用上面获取的AZ值替换json体中的AZ值即可。

发表评论

您的电子邮箱地址不会被公开。