阿里雲雲產品的API分為RPC和RESTful兩種類型,大部分產品使用的是RPC風格。當您使用阿里雲CLI調用介面時,不同風格的API,調用方式不同。
判斷API風格
調用產品介面時,首先需要判斷API類型,選擇標準的命令結構發起調用。您可以通過以下特點判斷API類型。
在產品後使用
--help
選項擷取產品可用API列表,RPC風格API顯示簡述,RESTful風格API顯示訪問路徑PathPattern
。在
APIName
後使用--help
選項擷取API參數詳情,RESTful風格API會顯示API的請求方式Method
和訪問路徑PathPattern
。一般情況下,每個產品內所有API的調用風格是統一的。每個API僅支援特定的一種風格,傳入錯誤的標識,可能會調用到其他API,或收到
ApiNotFound
的錯誤資訊。
調用RPC API
命令結構
在阿里雲CLI中,調用RPC API時,基本命令結構如下。
aliyun <product> <APIName> [--parameter1 value1 --parameter2 value2 ...]
product
:需要調用的雲產品code。例如Elastic Compute Service的產品code為ecs
。APIName
:需要調用的API。例如使用Elastic Compute Service的DescribeRegions
介面。--parameter
:需要傳入的請求參數。可在產品API文檔查看請求參數詳情。可使用
--help
選項擷取關於以上參數的協助資訊。詳情請參見擷取協助資訊。
命令樣本
以Elastic Compute Service的API
DescribeRegions
為例。有關此API的更多資訊,請參見DescribeRegions - 查詢可以使用的阿里雲地區。aliyun ecs DescribeRegions
以Elastic Compute Service API
DescribeInstanceAttribute
為例。有關此API的更多資訊,請參見DescribeInstanceAttribute - 查詢執行個體所有屬性資訊。aliyun rds DescribeInstanceAttribute --InstanceId 'i-uf6f5trc95ug8t33****'
調用RESTful API
命令結構
在阿里雲CLI中,調用RESTful API時,基本命令結構如下。
aliyun <product> <Method> <PathPattern> --body <RequestBody>
product
:需要調用的雲產品code。例如Container ServiceKubernetes版的產品code為cs
。Method
:請求方式,常用請求方式有GET
、PUT
、POST
、DELETE
。根據API文檔選擇合適的請求方式。PathPattern
:請求路徑。根據產品API文檔選擇正確的請求路徑。RequestBody
:請求主體。根據產品API文檔編輯JSON字串,或引用JSON格式檔案。可使用
--help
選項擷取關於以上參數的協助資訊。詳情請參見擷取協助資訊。
命令樣本
GET請求
以Container Service for KubernetesAPIDescribeClusterDetail
為例。有關此API的更多資訊,請參見DescribeClusterDetail - 查詢指定叢集的資訊。
aliyun cs GET /clusters/{cluster_id}
PUT請求
以Container Service for KubernetesAPIModifyCluster
為例。有關此API的更多資訊,請參見ModifyCluster - 修改叢集配置。
aliyun cs PUT /api/v2/clusters/{ClusterId} --header "Content-Type=application/json" --body "$(cat input.json)"
POST請求
以Container Service for KubernetesAPICreateCluster
為例。有關此API的更多資訊,請參見CreateCluster - 建立叢集。
aliyun cs POST /clusters --header "Content-Type=application/json" --body "$(cat create.json)"
DELETE請求
以Container Service for KubernetesAPIDeleteClusterNodepool
為例。有關此API的更多資訊,請參見DeleteClusterNodepool - 刪除節點池。
aliyun cs DELETE /clusters/{ClusterId}/nodepools/{NodepoolId}