阿里云CLI(Command Line Interface)是一種命令行工具,允許用戶在終端或命令行界面調用阿里云API,來創建、配置、管理阿里云云資源。本文主要介紹如何使用阿里云CLI調用ECS API來創建和管理ECS實例的方法及其常用示例。
關于阿里云CLI的詳細信息,請參見什么是阿里云CLI。
準備工作
由于阿里云賬號(主賬號)擁有資源的所有權限,其AccessKey一旦泄露風險巨大,所以建議您使用滿足最小化權限需求的RAM用戶的AccessKey。獲取方法請參見創建AccessKey。
給RAM用戶授予操作云服務器ECS和專有網絡VPC相關資源的權限。本文提供的示例代碼需要創建實例、VPC、交換機等資源,建議授予以下權限:
云產品
授予權限
專有網絡VPC
本示例選擇系統策略:AliyunVPCFullAccess
云服務器ECS
本示例選擇系統策略:AliyunECSFullAccess
安裝和配置CLI。調試使用阿里云CLI前,您需要先安裝阿里云CLI。阿里云CLI提供了Windows、Linux和macOS三種操作系統下的安裝服務,請根據您使用設備的操作系統選擇:
安裝CLI。
配置CLI。
配置調用阿里云資源所需的身份憑證信息、服務請求地域等。具體配置,請參見配置身份憑證。
如果您只是用于臨時調試,不需要安裝阿里云CLI,您可使用阿里云提供的云命令行Cloud Shell。更多信息,請參見什么是云命令行?。
創建ECS實例
創建ECS實例時,有很多必填參數,包括交換機ID、安全組、鏡像等。您可以傳入已經準備好的資源ID,或者調用以下OpenAPI創建對應資源。
創建VPC。
VPC是一種專有的云上私有網絡,允許用戶在公共云上配置和管理一個邏輯隔離的網絡區域。
API
參數
示例取值
RegionId
地域:cn-hangzhou
CidrBlock
VPC網段:192.168.0.0/16
創建交換機。
交換機是一種在虛擬化環境中使用的網絡交換設備,它模擬了物理交換機的功能,使虛擬機(VMs)之間以及虛擬機與物理網絡之間可以進行通信。
API
參數
示例取值
RegionId
地域:cn-hangzhou
ZoneId
可用區:cn-hangzhou-i
VpcId
VPC ID:vpc-bp1aag0sb9s4i92i3****
CidrBlock
交換機網段:192.168.0.0/24
創建安全組。
安全組是一種虛擬防火墻,能夠控制ECS實例的出入方向流量。
API
參數
示例取值
RegionId
地域:cn-hangzhou
VpcId
VPC ID:vpc-bp1aag0sb9s4i92i3****
給安全組添加入防護規則。
API
參數
示例取值
RegionId
地域:cn-hangzhou
SecurityGroupId
安全組ID:sg-bp1esyhwfbqeyudt****
IpProtocol
協議:tcp
SourceCidrIp
源CIDR:0.0.0.0/0
PortRange
端口范圍:
Linux實例:22/22
Windows實例:3389/3389
創建ECS實例。
使用ECS,您可以快速部署和運行應用程序,靈活調整資源以應對業務變化,同時享受高性能、高安全性和低成本的計算能力,適用于網站托管、應用開發、數據處理等多種場景。
API
參數
示例取值
RegionId
地域:cn-hangzhou
ImageId
鏡像:使用Alibaba Cloud Linux鏡像aliyun_3_x64_20G_alibase_20240819.vhd
InstanceType
實例規格: ecs.e-c1m1.large
SecurityGroupId
安全組ID:sg-bp1esyhwfbqeyudt****
VSwitchId
交換機ID:vsw-bp1nzprm8h7mmnl8t****
InstanceName
實例名稱:ecs_cli_demo
InstanceChargeType
付費方式:實例按照按量付費的方式PostPaid
說明您需要確保賬號余額能夠完成支付。
PASSWORD
登錄密碼:******
InternetMaxBandwidthOut
公網出帶寬最大值。若大于 0,則自動為實例分配公網 IP。
SystemDisk.Category
系統盤的云盤種類:cloud_essd
SystemDisk.Size
系統盤的大?。?0 GiB
完整的示例代碼如下:
示例代碼主要展示了CLI的使用方式。反復執行該腳本會導致VPC、交換機和安全組等資源的重復創建,從而可能引發資源浪費。因此,請務必仔細審閱并結合業務邏輯優化代碼。
#!/bin/bash
# 配置阿里云CLI使用的AccessKey和SecretKey
# 注意:實際使用時,請確保已通過環境變量或配置文件安全地設置了AccessKey和SecretKey
# 1. 設置變量
INSTANCE_NAME="ecs_cli_demo"
#2. 安裝jq工具
echo "正在安裝依賴工具jq..."
yum install jq
sleep 3
# 3. 創建VPC、VSwitch、SecurityGtoup
echo "正在創建VPC..."
VpcId=$(aliyun vpc CreateVpc --RegionId cn-hangzhou --CidrBlock 192.168.0.0/16 | jq -r .VpcId)
aliyun vpc DescribeVpcAttribute --RegionId cn-hangzhou --VpcId ${VpcId} --waiter expr='Status' to=Available > /dev/null 2>&1
echo "正在創建VSwitch..."
VSwitchId=$(aliyun vpc CreateVSwitch --CidrBlock 192.168.0.0/24 --VpcId ${VpcId} --ZoneId=cn-hangzhou-i | jq -r .VSwitchId)
echo "正在創建SecurityGtoup..."
SecurityGroupId=$(aliyun ecs CreateSecurityGroup --RegionId cn-hangzhou --VpcId ${VpcId} | jq -r .SecurityGroupId)
aliyun ecs AuthorizeSecurityGroup --RegionId cn-hangzhou --SecurityGroupId ${SecurityGroupId} --IpProtocol tcp --SourceCidrIp 0.0.0.0/0 --PortRange 22/22 > /dev/null 2>&1
read -s -P "Input Your Password:" PASSWORD
echo
echo "PASSWORD OK."
# 4. 執行創建ECS實例的命令
echo "正在創建ECS實例..."
INSTANCE_ID_RAW=$(aliyun ecs RunInstances \
--RegionId cn-hangzhou \
--ImageId aliyun_3_x64_20G_alibase_20240819.vhd \
--InstanceType ecs.e-c1m1.large \
--SecurityGroupId ${SecurityGroupId} \
--VSwitchId ${VSwitchId} \
--InstanceName $INSTANCE_NAME \
--InstanceChargeType PostPaid \
--InternetMaxBandwidthOut 1 \
--Password $PASSWORD \
--SystemDisk.Category cloud_essd \
--SystemDisk.Size 40)
# 5. 提取InstanceId,用于后續打印狀態
INSTANCE_ID=$(echo "$INSTANCE_ID_RAW" | jq -r '.InstanceIdSets.InstanceIdSet[]')
# 6. 休息20秒,等待ECS創建中...
echo "等待ECS創建中..."
sleep 20
# 7. 查詢ECS狀態
echo "查詢ECS狀態..."
INSTANCE_ID_QUOTED=$(printf '"%s"' "$INSTANCE_ID")
aliyun ecs DescribeInstances \
--RegionId cn-hangzhou \
--InstanceIds "[${INSTANCE_ID_QUOTED}]" \
--output cols=InstanceId,InstanceName,InstanceType,ImageId,Status rows=Instances.Instance[]
創建Shell腳本,并運行,預期結果如下:
連接實例
通過SSH方式登錄ECS實例,就可以進行部署業務、搭建應用等操作。
獲取實例的公網IP信息。
調用DescribeInstances,通過
<實例ID>
獲取實例的公網IP信息。請求示例
aliyun ecs DescribeInstances \ --RegionId cn-hangzhou \ --InstanceIds '["<實例ID>"]'
返回示例
參數PublicIpAddresses為實例的公網IP信息。
連接ECS實例。
ssh <用戶名>@<公網IP>
釋放資源
當您不再需要所創建的資源時,可以調用以下OpenAPI接口以釋放該資源。
根據您的實際需求,選擇相應的OpenAPI釋放資源 。本示例釋放上述步驟創建的所有資源。
釋放ECS實例
API
參數
示例取值
RegionId
地域:cn-hangzhou
InstanceId
實例 ID:i-bp17f3kzgtzzj91r****
刪除安全組
API
參數
示例取值
RegionId
地域:cn-hangzhou
SecurityGroupId
安全組ID:sg-bp1esyhwfbqeyudt****
刪除交換機
API
參數
示例取值
RegionId
地域:cn-hangzhou
VSwitchId
交換機ID:vsw-bp1nzprm8h7mmnl8t****
刪除VPC
API
參數
示例取值
RegionId
地域:cn-hangzhou
VpcId
VPC ID:vpc-bp1aag0sb9s4i92i3****
示例代碼如下:
#!/bin/bash
# 定義要釋放的資源信息
INSTANCE_ID='ecs_cli_demo' # ECS實例ID
SECURITY_GROUP_ID='sg-bp1esyhwfbqeyudt****' # 安全組ID
VSWITCH_ID='vsw-bp1nzprm8h7mmnl8t****' # VSwitchID
VPC_ID='vpc-bp1aag0sb9s4i92i3****' # VPC ID
REGION='cn-hangzhou' # 區域
echo "正在釋放資源..."
# 刪除實例
aliyun ecs DeleteInstance \
--region ${REGION} \
--InstanceId ${INSTANCE_ID}
# 刪除安全組
aliyun ecs DeleteSecurityGroup \
--region ${REGION} \
--RegionId ${REGION} \
--SecurityGroupId ${SECURITY_GROUP_ID}
# 刪除 VSwitch
aliyun vpc DeleteVSwitch \
--region ${REGION} \
--RegionId ${REGION} \
--VSwitchId ${VSWITCH_ID}
# 刪除 VPC
aliyun vpc DeleteVpc \
--region ${REGION} \
--RegionId ${REGION} \
--VpcId ${VPC_ID}
echo "釋放完成"
相關文檔
您可以在命令行執行以下命令,查詢支持的CLI命令列表。
aliyun ecs --help
您可以在命令行按照以下命令結構,調用ECS API。詳細輸入參數,可以參考各API文檔。
aliyun ecs <API Name> --<參數1 取值1> --<參數2 取值2> ...
生成CLI命令
為了能夠讓開發者快速高效地學習和使用云產品OpenAPI,阿里云為用戶提供OpenAPI網站。它是一款集OpenAPI智能搜索、文檔、在線調試、SDK獲取、CodeSample、調用出錯診斷、調用統計為一體的產品。您可以通過OpenAPI自動生成API對應的CLI代碼。更多信息,請參見什么是OpenAPI。
選擇您需要使用的API,并填寫參數。
單擊右側的CLI示例頁簽即可生成攜帶參數的命令。