阿里雲CLI(Command Line Interface)是一種命令列工具,允許使用者在終端或命令列介面調用阿里雲API,來建立、配置、管理阿里雲雲資源。本文主要介紹如何使用阿里雲CLI調用ECS API來建立和管理ECS執行個體的方法及其常用樣本。
關於阿里雲CLI的詳細資料,請參見什麼是阿里雲CLI。
準備工作
由於阿里雲帳號(主帳號)擁有資源的所有許可權,其AccessKey一旦泄露風險巨大,所以建議您使用滿足最小化許可權需求的RAM使用者的AccessKey。擷取方法請參見建立AccessKey。
給RAM使用者授予操作Elastic Compute Service和Virtual Private Cloud相關資源的許可權。本文提供的範例程式碼需要建立執行個體、VPC、交換器等資源,建議授予以下許可權:
雲產品
授予許可權
Virtual Private Cloud
本樣本選擇系統策略:AliyunVPCFullAccess
Elastic Compute Service
本樣本選擇系統策略: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
系統硬碟的大小:40 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> ...