全部產品
Search
文件中心

Elastic Compute Service:通過CLI建立並使用ECS執行個體

更新時間:Oct 25, 2024

阿里雲CLI(Command Line Interface)是一種命令列工具,允許使用者在終端或命令列介面調用阿里雲API,來建立、配置、管理阿里雲雲資源。本文主要介紹如何使用阿里雲CLI調用ECS API來建立和管理ECS執行個體的方法及其常用樣本。

說明

關於阿里雲CLI的詳細資料,請參見什麼是阿里雲CLI

準備工作

  1. 由於阿里雲帳號(主帳號)擁有資源的所有許可權,其AccessKey一旦泄露風險巨大,所以建議您使用滿足最小化許可權需求的RAM使用者的AccessKey。擷取方法請參見建立AccessKey

  2. 給RAM使用者授予操作Elastic Compute Service和Virtual Private Cloud相關資源的許可權。本文提供的範例程式碼需要建立執行個體、VPC、交換器等資源,建議授予以下許可權:

    雲產品

    授予許可權

    Virtual Private Cloud

    本樣本選擇系統策略:AliyunVPCFullAccess

    Elastic Compute Service

    本樣本選擇系統策略:AliyunECSFullAccess

  3. 安裝和配置CLI。調試使用阿里雲CLI前,您需要先安裝阿里雲CLI。阿里雲CLI提供了Windows、Linux和macOS三種作業系統下的安裝服務,請根據您使用裝置的作業系統選擇:

    1. 安裝CLI。

    2. 配置CLI。

      配置調用阿里雲資源所需的身份憑證資訊、服務要求地區等。具體配置,請參見配置身份憑證

    如果您只是用於臨時調試,不需要安裝阿里雲CLI,您可使用阿里雲提供的雲命令列Cloud Shell。更多資訊,請參見什麼是雲命令列?image

建立ECS執行個體

建立ECS執行個體時,有很多必填參數,包括交換器ID、安全性群組、鏡像等。您可以傳入已經準備好的資源ID,或者調用以下OpenAPI建立對應資源。

  1. 建立VPC。

    VPC是一種專有的雲上私人網路,允許使用者在公用雲上配置和管理一個邏輯隔離的網路地區。

    API

    參數

    樣本取值

    CreateVpc

    RegionId

    地區:cn-hangzhou

    CidrBlock

    VPC網段:192.168.0.0/16

  2. 建立交換器。

    交換器是一種在虛擬化環境中使用的網路交換裝置,它類比了物理交換器的功能,使虛擬機器(VMs)之間以及虛擬機器與物理網路之間可以進行通訊。

    API

    參數

    樣本取值

    RegionId

    地區:cn-hangzhou

    CreateVSwitch

    ZoneId

    可用性區域:cn-hangzhou-i

    VpcId

    VPC ID:vpc-bp1aag0sb9s4i92i3****

    CidrBlock

    交換器網段:192.168.0.0/24

  3. 建立安全性群組。

    安全性群組是一種虛擬防火牆,能夠控制ECS執行個體的出入方向流量。

    API

    參數

    樣本取值

    CreateSecurityGroup

    RegionId

    地區:cn-hangzhou

    VpcId

    VPC ID:vpc-bp1aag0sb9s4i92i3****

  4. 給安全性群組添加入防護規則。

    API

    參數

    樣本取值

    AuthorizeSecurityGroup

    RegionId

    地區:cn-hangzhou

    SecurityGroupId

    安全性群組ID:sg-bp1esyhwfbqeyudt****

    IpProtocol

    協議:tcp

    SourceCidrIp

    源CIDR:0.0.0.0/0

    PortRange

    連接埠範圍:

    • Linux執行個體:22/22

    • Windows執行個體:3389/3389

  5. 建立ECS執行個體。

    使用ECS,您可以快速部署和運行應用程式,靈活調整資源以應對業務變化,同時享受高效能、高安全性和低成本的計算能力,適用於網站託管、應用開發、資料處理等多種情境。

    API

    參數

    樣本取值

    RunInstances

    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指令碼,並運行,預期結果如下:

image

串連執行個體

通過SSH方式登入ECS執行個體,就可以進行部署業務、搭建應用等操作。

  1. 擷取執行個體的公網IP資訊。

    調用DescribeInstances,通過<執行個體ID>擷取執行個體的公網IP資訊。

    • 請求樣本

      aliyun ecs DescribeInstances \
      --RegionId cn-hangzhou \
      --InstanceIds '["<執行個體ID>"]'
    • 返回樣本

      參數PublicIpAddresses為執行個體的公網IP資訊。

      公網IP

  2. 串連ECS執行個體。

    ssh <使用者名稱>@<公網IP>

    image

釋放資源

當您不再需要所建立的資源時,可以調用以下OpenAPI介面以釋放該資源。

說明

根據您的實際需求,選擇相應的OpenAPI釋放資源 。本樣本釋放上述步驟建立的所有資源。

  1. 釋放ECS執行個體

    API

    參數

    樣本取值

    DeleteInstances

    RegionId

    地區:cn-hangzhou

    InstanceId

    執行個體 ID:i-bp17f3kzgtzzj91r****

  2. 刪除安全性群組

    API

    參數

    樣本取值

    DeleteSecurityGroup

    RegionId

    地區:cn-hangzhou

    SecurityGroupId

    安全性群組ID:sg-bp1esyhwfbqeyudt****

  3. 刪除交換器

    API

    參數

    樣本取值

    DeleteVSwitch

    RegionId

    地區:cn-hangzhou

    VSwitchId

    交換器ID:vsw-bp1nzprm8h7mmnl8t****

  4. 刪除VPC

    API

    參數

    樣本取值

    DeleteVpc

    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

  1. 登入Elastic Compute Service API調試列表

  2. 選擇您需要使用的API,並填寫參數。

  3. 單擊右側的CLI樣本頁簽即可產生攜帶參數的命令。

    2024-08-12_10-30-57.png