本文介紹使用阿里雲CLI時不同資料類型參數需要遵循的格式要求。
參數格式要求
阿里雲CLI支援在OpenAPI門戶中自動產生CLI樣本。具體操作,請參見產生並調用命令。
在OpenAPI門戶中自動產生的CLI樣本預設採用Linux適用參數格式,若您需要在其他環境下執行CLI命令,請根據實際情況修正參數格式。
對於OpenAPI中不同資料類型的欄位,阿里雲CLI遵循如下格式要求:
參數名大小寫
由於OpenAPI參數名嚴格區分大小寫,因此阿里雲CLI的參數名輸入同樣嚴格區分大小寫。
參數值大小寫
部分參數值不區分大小寫。但為確保書寫規範的一致性,建議您嚴格區分參數值的大小寫。
Integer類型
在OpenAPI文檔中標註為Integer
類型的參數,可以直接傳入。
aliyun ecs DescribeImages --ImageName Example_Image --Pagesize 10
String類型
在OpenAPI文檔中標註為String
類型的參數,如果參數值中沒有包含特殊字元(如$
、`
、\
、空格等),可直接傳入。否則需要用單引號''
或雙引號""
包含後再傳入。
通常情況
阿里雲CLI在接收字串作為參數時,通常需要將字串中的特殊字元轉換為一般字元。在Linux、macOS或Windows PowerShell中,需要使用單引號
''
包含參數,在Windows命令提示字元中,使用雙引號""
。無特殊字元:
aliyun ecs DescribeImages --ImageName Example_Image
有特殊字元:
Windows命令提示字元:
aliyun ecs DescribeImages --ImageName "Example Image"
Linux/macOS/Windows PowerShell:
aliyun ecs DescribeImages --ImageName 'Example Image'
特殊情況
調用ROA風格OpenAPI時,如需使用
--body
選項指定字串(字串中包含逸出字元)或變數作為請求主體,引號的使用方式與通常情況存在差異。在Linux、macOS或Windows命令提示字元中需要使用雙引號""
包含請求參數,在Windows PowerShell中,使用單引號''
。Windows命令提示字元/Linux/macOS:
aliyun cs PUT /clusters/<ClusterId>/nodepools/<NodepoolId> --body "{\"nodepool_info\":{\"name\":\"default-nodepool\",\"resource_group_id\":\"rg-acfmyvw****\"}}"
Windows PowerShell:
aliyun cs PUT /clusters/<ClusterId>/nodepools/<NodepoolId> --body '{\"nodepool_info\":{\"name\":\"default-nodepool\",\"resource_group_id\":\"rg-acfmyvw****\"}}'
String類型字串列表
在OpenAPI文檔中標註為String
類型的參數,如果支援傳入多個值的列表(如ImageId
列表),則參數格式如下所示。
Windows命令提示字元:
在Windows命令提示字元中,應將相應的參數值串用逗號
,
分隔後,再使用雙引號""
包含後傳入。aliyun ecs DescribeImages --ImageId "m-23e0o****,m-23wae****"
Linux/macOS/Windows PowerShell:
在Linux、macOS或Windows PowerShell中,應將相應的參數值串用逗號
,
分隔後,再使用單引號''
包含後傳入。aliyun ecs DescribeImages --ImageId 'm-23e0o****,m-23wae****'
String類型JSON數組
在OpenAPI文檔中標註為String
類型的參數,如果要求參數值是一個帶有格式的JSON數組,則參數格式如下所示。
Windows:
在Windows命令提示字元及Windows PowerShell中,應將所有值置於最外層的雙引號
""
內,雙引號內使用中括弧[]
包含、單引號''
引用,使用逗號,
進行分隔。aliyun ecs DescribeDisks --DiskIds "['d-23rss****','d-23vsi****','d-23sfq****']"
Linux/macOS:
在Linux或macOS中,應將所有值置於最外層的單引號
''
內,單引號內使用中括弧[]
包含、雙引號""
引用,使用逗號,
進行分隔。aliyun ecs DescribeDisks --DiskIds '["d-23rss****","d-23vsi****","d-23sfq****"]'
String類型JSON數組列表
在OpenAPI文檔中標註為String
類型的參數,如需將參數值設定為一個JSON數組,則參數格式如下所示。
Windows:
在Windows命令提示字元及Windows PowerShell中,應將所有值置於最外層的雙引號
""
內,雙引號內使用中括弧[]
包含。JSON數組中的各個值需用大括弧{}
包含,單引號''
引用,使用逗號,
進行分隔。JSON數組內的鍵與值之間使用冒號:
進行分隔。aliyun slb AddBackendServers --LoadBalancerId 15157b19f18-cn-hangzhou-dg**** --BackendServers "[{'ServerId':'i-23g8a****'},{'ServerId':'i-23bb0****'}]"
Linux/macOS:
在Linux及macOS中,應將所有值置於最外層的單引號
''
內,單引號內使用中括弧[]
包含。JSON數組中的各個值需用大括弧{}
包含,雙引號""
引用,使用逗號,
進行分隔。JSON數組內的鍵與值之間使用冒號:
進行分隔。aliyun slb AddBackendServers --LoadBalancerId 15157b19f18-cn-hangzhou-dg**** --BackendServers '[{"ServerId":"i-23g8a****"},{"ServerId":"i-23bb0****"}]'
String類型日期
OpenAPI文檔中標註為String
類型的參數,如果要求參數值是一個按照ISO8601標準表示的UTC時間,需要將時間按YYYY-MM-DDThh:mm:ssZ
格式傳入。
aliyun ecs DescribeInstanceMonitorData --InstanceId i-94ola4btx**** --StartTime 2015-11-28T15:00:00Z --EndTime 2015-11-28T18:00:00Z
特殊字元
若您輸入的參數值在使用引號包含之後,參數中的特殊字元在命令執行過程中仍出現解析錯誤。您可嘗試將參數格式調整為key=value
的格式,以確保命令正確執行。
樣本
在執行如下命令時,阿里雲CLI無法將-1/-1
識別為PortRange
對應參數。
aliyun ecs AuthorizeSecurityGroup --SecurityGroupId 'sg-bp67acfmxazb4p****' --Permissions.1.PortRange "-1/-1" --method POST --force
如下所示,將--PortRange -1/-1
修改為--PortRange=-1/-1
,命令可以正確執行。
aliyun ecs AuthorizeSecurityGroup --SecurityGroupId 'sg-bp67acfmxazb4p****' --Permissions.1.PortRange=-1/-1 --method POST --force