一、华为云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不存在,这个需要后续确认原因。
当把multiattach结构体部分去掉后,对应创建的虚拟机信息如下:
PS:AZ参数问题核查
通过另外一个接口查询发现,在web界面上看到的AZ1、AZ2,在后台数据提交时,不是这个名称,后来又看了查询AZ的接口,通过调用发现,在测试用的智利圣地亚哥region,AZ1对应的名称是la-south-2a,AZ2对应的名称是la-south-2b,显然ECS创建页面的文档给的有误导性,也不太完善,应该附上获取AZ的链接页面。AZ链接查询的结果信息如下:
用上面获取的AZ值替换json体中的AZ值即可。