全部產品
Search
文件中心

Alibaba Cloud CLI:使用阿里雲CLI跨地區遷移ECS執行個體

更新時間:Jul 19, 2025

本文提供一個基於阿里雲CLI的操作樣本,為您示範如何通過阿里雲CLI建立和複製自訂鏡像,實現ECS執行個體的跨地區遷移。該樣本僅供參考使用,實際業務情境中可能需要結合多個API靈活組合,具體方案請根據實際需求設計。

方案概覽

使用阿里雲CLI通過自訂鏡像跨地區遷移ECS執行個體資料,大致可分為以下五個步驟:

  1. 建立鏡像:為源ECS執行個體建立自訂鏡像,使用該鏡像建立的新執行個體,會包含您已配置的自訂項,省去您重複自訂執行個體的時間。

  2. 複製鏡像:複製鏡像後,您可以在目標地區獲得不同ID的新鏡像,其標籤、資源群組、加密屬性等配置以複製鏡像時的輸入參數為準。

  3. 建立執行個體:使用自訂鏡像在目標地區中建立目標ECS執行個體。

  4. 檢查執行個體:檢查新建立的目標ECS執行個體的相關資料情況,確保執行個體資料移轉後,業務功能仍可流暢運行。

  5. 釋放資源:遷移完成後,結合自身的實際需求,可以選擇釋放或刪除源ECS執行個體的相關資源,避免資源持續產生費用。

注意事項

資料移轉前,請您仔細閱讀以下注意事項。

  1. 在建立自訂鏡像期間,系統會對ECS執行個體的各個雲端硬碟自動建立快照,快照將產生一定的費用。有關快照費用的詳細資料,請參見快照計費

  2. 部分包含本地碟的執行個體無法建立快照,此類執行個體不支援通過本文的操作完成執行個體的資料移轉。

  3. 源ECS執行個體的網路類型可以是傳統網路或Virtual Private Cloud。

  4. 建立目標ECS執行個體時,僅支援建立VPC網路類型的ECS執行個體。

  5. 建立目標ECS執行個體時,僅支援選擇當前可用性區域下有庫存的執行個體規格。建議您提前自行做好資源所屬地區和可用性區域的規劃工作。

  6. 由於是通過自訂鏡像完成的執行個體資料移轉操作,因此資料移轉後,新建立的目標ECS執行個體中雲端硬碟資料與源ECS執行個體中的雲端硬碟資料保持一致,但新建立的目標ECS執行個體的執行個體中繼資料會重建,與源ECS執行個體中的執行個體中繼資料相比較會發生變化。關於執行個體中繼資料的更多資訊,請參見執行個體中繼資料

    由於執行個體中繼資料會發生變化,在執行個體資料移轉之前,建議您手動排查資源關聯關係,並在資料移轉後及時更新資源的關聯關係。例如:

    • 叢集內部通過私網IP地址互聯互連,在進行執行個體資料移轉後,您需要替換為最新的私網IP地址。

    • 某些應用的許可證(License)與ECS執行個體的MAC地址綁定,在進行執行個體資料移轉後,這些許可證將因為ECS執行個體的MAC地址改變而失效,您需要重新綁定最新的MAC地址。

  7. 如果您要保持公網IP地址不變,且源ECS執行個體使用的是固定公網IP,可以先將公網IP轉換為Elastic IP Address(EIP)以保留該公網IP,然後解除綁定EIP,最後綁定到遷移後的ECS執行個體上。具體操作,請參見固定公網IP轉為Elastic IP AddressElastic IP Address

    說明

    如果源ECS執行個體使用的是Elastic IP Address(EIP),遷移後,源ECS執行個體先解除綁定EIP,然後綁定到遷移後的ECS執行個體上。具體操作,請參見Elastic IP Address

  8. 本地SSD型執行個體規格不支援建立包含系統硬碟和資料盤的鏡像。更多資訊,請參見本地SSD型執行個體規格類型系列介紹

操作步驟

步驟一:為源ECS執行個體建立自訂鏡像

通過執行個體建立自訂鏡像前,您需要瞭解相關注意事項。更多資訊,請參見使用執行個體建立自訂鏡像

說明

為保證資料完整性,建議您停止執行個體後再進行建立鏡像的操作。

  1. 執行以下命令,調用CreateImage介面建立源ECS執行個體的自訂鏡像。

    aliyun ecs CreateImage \
      --RegionId 'cn-hangzhou' \
      --ImageName Created_from_hangzhouECS \
      --InstanceId 'i-bp1g6zv0ce8oghu7****' \
  2. 系統返回類似如下結果樣本。

    {
      "ImageId": "m-bp146shijn7hujku****",
      "RequestId": "C8B26B44-0189-443E-9816-*******"
    }
  3. 執行以下命令,調用DescribeImages介面查詢自訂鏡像建立狀態。確認鏡像狀態變更為Available後執行下一步驟。

    aliyun ecs DescribeImages \
      --RegionId 'cn-hangzhou' \
      --ImageId 'm-bp146shijn7hujku****' \
      --Status 'Creating,Available' \
      --output cols='ImageId,Status' rows='Images.Image[]' \
      --waiter expr='Images.Image[0].Status' to='Available'

步驟二:跨地區複製鏡像

將源ECS執行個體的資料跨地區遷移至新建立的目標ECS執行個體,需要先通過複製鏡像功能將自訂鏡像複製到其他地區。

  1. 執行以下命令,調用CopyImage介面從cn-hangzhou複製源ECS執行個體的自訂鏡像到cn-beijing

    aliyun ecs CopyImage \
      --RegionId 'cn-hangzhou' \
      --DestinationImageName Copy_from_hangzhouImage \
      --ImageId 'm-bp146shijn7hujku****' \
      --DestinationRegionId 'cn-beijing' \
  2. 返回結果樣本。

    {
      "ImageId": "m-bp1h46wfpjsjastd****",
      "RequestId": "473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E"
    }
  3. 執行以下命令,調用DescribeImages介面查詢複製鏡像建立狀態。確認鏡像狀態變更為Available後執行下一步驟。

    aliyun ecs DescribeImages \
      --RegionId 'cn-beijing' \
      --ImageId 'm-bp1h46wfpjsjastd****' \
      --Status 'Creating,Available' \
      --output cols='ImageId,Status' rows='Images.Image[]' \
      --waiter expr='Images.Image[0].Status' to='Available'

步驟三:使用自訂鏡像建立目標ECS執行個體

  1. 執行以下命令,調用RunInstances介面根據自訂鏡像在目標地區建立ECS執行個體。

    說明
    • 樣本命令中PasswordInherit選項設定為true,執行命令建立執行個體時將使用鏡像預設的密碼。使用鏡像預設密碼後,新建立的目標ECS執行個體登入密碼與源ECS執行個體的登入密碼一致。

    • 您可根據需求自行選擇符合的執行個體規格,更多參數資訊,請參見自訂購買執行個體

    aliyun ecs RunInstances \
      --RegionId 'cn-beijing' \
      --SecurityGroupId 'sg-2zea9dbddva****' \
      --VSwitchId 'vsw-2zep7vc25mjc1****' \
      --ImageId 'm-bp1h46wfpjsjastd****' \
      --InstanceType 'ecs.e-c1m1.large' \
      --InstanceName Copy_from_hangzhouECS \
      --PasswordInherit true \
      --InternetChargeType PayByTraffic \
      --SystemDisk.Size 40 \
      --SystemDisk.Category cloud_essd \
      --InstanceChargeType PostPaid \
      --InternetMaxBandwidthOut 10
  2. 返回結果樣本:

    {
      "RequestId": "473469C7-AA6F-4DC5-B3DB-A3DC0DE3****",
      "InstanceIdSets": {
        "InstanceIdSet": [
          "i-bp67acfmxazb4pd2****"
        ]
      }
    }

步驟四:檢查目標ECS執行個體內資料

目標ECS執行個體建立後,您需要檢查執行個體內部相關資料情況,以確保執行個體資料移轉後,業務功能仍可流暢運行。例如:

  • 檢查雲端硬碟資料:遠端連線新建立的目標ECS執行個體,檢查系統硬碟資料是否與源ECS執行個體一致,例如比較檔案和目錄結構是否一致。如果源ECS執行個體存在資料盤並在目標ECS執行個體上掛載了相應的雲端硬碟,您可以檢查資料盤上的資料是否與源ECS執行個體一致。

  • 運行應用程式或服務:如果您的源ECS執行個體上運行了特定的應用程式或服務,您可以嘗試在目標ECS執行個體上運行相同的應用程式或服務,並驗證其功能和資料操作是否與源ECS執行個體一致。

  • 對比資源資訊變化:

    • 您可以執行以下命令,調用DescribeInstances,對比源ECS執行個體與新建立的目標ECS執行個體相關的資源資訊變化,例如鏡像資訊、網路設定等。

      aliyun ecs DescribeInstances --RegionId 'cn-beijing' --InstanceIds '["i-bp67acfmxazb4pd2****"]'
  • 更新資源的關聯關係:新建立的目標ECS執行個體的執行個體中繼資料會重建,與源ECS執行個體中的執行個體中繼資料相比會發生變化。您需要在資料移轉後及時更新資源的關聯關係。更多資訊,請參見執行個體中繼資料

步驟五:釋放或刪除源ECS執行個體及相關資源

在您仔細檢查新建立的目標ECS執行個體與源ECS執行個體資料沒有差異,且完成了資源關聯關係的更新,確保新建立的目標ECS執行個體內業務可以流暢運行後,結合自身的實際需求,可以選擇釋放或刪除源ECS執行個體的相關資源,避免資源持續產生費用。相關操作說明如下:

警告

釋放執行個體、刪除鏡像以及刪除快照的操作為單向操作,一旦操作完成,資源內的資料不可恢複。請確保您已完成所有業務資料的遷移再執行釋放或刪除資源的操作。

  • 您可執行以下命令,調用DeleteInstance介面釋放源ECS執行個體。更多資訊,請參見釋放執行個體

    aliyun ecs DeleteInstance --InstanceId i-bp67acfmxazb4pd2****
  • 您可執行以下命令,調用DeleteImage介面刪除建立的自訂鏡像。更多資訊,請參見刪除自訂鏡像

    重要

    刪除自訂鏡像後,使用該鏡像建立的ECS執行個體將無法初始化系統硬碟。如果您的自訂鏡像為免費鏡像,且您需要保留該鏡像以供後續使用,建議無需刪除該自訂鏡像。有關鏡像計費的詳細資料,請參見鏡像計費

    aliyun ecs DeleteImage --RegionId 'cn-hangzhou' --ImageId 'm-bp146shijn7hujku****'
  • 您可執行以下命令,調用DeleteInstance介面刪除指定的快照。更多資訊,請參見刪除快照

    aliyun ecs DeleteSnapshot --SnapshotId 's-bp1c0doj0taqyzzl****'

指令碼樣本

阿里雲CLI可在命令列指令碼中使用,以下簡單樣本供您參考,您可以在此基礎上自行實現異常處理、資源清理等進階功能。

說明

運行Bash指令碼樣本需自行安裝jq工具。

樣本

#!/usr/bin/env bash

# 源執行個體ID
SRC_INSTANCE_ID="i-bp1g6zv0ce8oghu7****"
# 源執行個體所屬地區ID
SRC_REGION_ID="cn-hangzhou"
# 遷移目標地區ID
DST_REGION_ID="cn-beijing"
# 目標執行個體所屬可用性區域ID
DST_ZONE_ID="cn-beijing-h"
# 源執行個體規格
SRC_INSTANCE_TYPE="ecs.e-c1m1.large"
# 源執行個體系統硬碟類型
SRC_SYSTEM_DISK_CATEGORY="cloud_auto"
# 源執行個體系統硬碟大小
SRC_SYSTEM_DISK_SIZE=40

# 輸出日誌
function log {
  local level="$1"
  local message="$2"
  echo "$(date +'%Y-%m-%d %H:%M:%S') [$level] $message"
}

# 封裝阿里雲CLI
function invoke_aliyun_command() {
  local service="$1"
  local action="$2"
  shift 2
  local -a params=("$@")
  response=$(aliyun "$service" "$action" "${params[@]}")
  exit_code=$?
  if [ $exit_code -eq 0 ]; then return 0; fi
  log "ERROR" "Failed to invoke aliyun command: aliyun $service $action ${params[*]}"
  exit 1
}

# 等待資源可用
function wait_resource_available() {
  local service="$1"
  local action="$2"
  local region_id="$3"
  local resource_type="$4"
  local resource_id="$5"

  local -a params=(
    "--region" "$region_id"
    "--RegionId" "$region_id"
    "--${resource_type}Id" "$resource_id"
  )

  if [ "$resource_type" == "Image" ]; then
    params+=("--Status" "Creating,Waiting,Available")
  fi

  local current_status
  local current_progress

  local timeout=1200
  local interval=20
  local end_time=$(( $(date +%s) + timeout ))

  while (( $(date +%s) < end_time )); do
    invoke_aliyun_command "$service" "$action" "${params[@]}"
    current_status=$(echo "$response" | jq -r '.. | .Status? // empty' | head -n1)
    current_progress=$(echo "$response" | jq -r '.. | .Progress? // empty' | head -n1)

    log "INFO" "${resource_type} status: $current_status"
    if [[ -n "$current_progress" ]]; then
        log "INFO" "Creation progress: $current_progress"
    fi
    if [[ "$current_status" == "Available" ]]; then return 0; fi
    sleep "$interval"
  done
}

# 建立鏡像
log "INFO" "Creating source image from instance '$SRC_INSTANCE_ID'"
src_img_params=(
  "--region" "$SRC_REGION_ID"
  "--RegionId" "$SRC_REGION_ID"
  "--InstanceId" "$SRC_INSTANCE_ID"
  "--ImageName" "cli-src-img"
)
invoke_aliyun_command ecs CreateImage "${src_img_params[@]}"
src_img_id=$(echo "$response" | jq -r .ImageId)
wait_resource_available ecs DescribeImages "$SRC_REGION_ID" "Image" "$src_img_id"
log "INFO" "Source image created: '$src_img_id'"

# 複製鏡像到目的地區域
log "INFO" "Copying image to region: '$DST_REGION_ID'"
dst_img_params=(
  "--region" "$SRC_REGION_ID"
  "--RegionId" "$SRC_REGION_ID"
  "--DestinationRegionId" "$DST_REGION_ID"
  "--ImageId" "$src_img_id"
  "--DestinationImageName" "cli-dst-img"
)
invoke_aliyun_command ecs CopyImage "${dst_img_params[@]}"
dst_img_id=$(echo "$response" | jq -r .ImageId)
wait_resource_available ecs DescribeImages "$DST_REGION_ID" "Image" "$dst_img_id"
log "INFO" "Destination image copied: '$dst_img_id'"

# 建立 VPC
log "INFO" "Creating VPC"
dst_vpc_params=(
  "--region" "$DST_REGION_ID"
  "--RegionId" "$DST_REGION_ID"
  "--CidrBlock" "10.0.0.0/8"
  "--VpcName" "cli-dst-vpc"
)
invoke_aliyun_command ecs CreateVpc "${dst_vpc_params[@]}"
dst_vpc_id=$(echo "$response" | jq -r .VpcId)
wait_resource_available "Vpc" "DescribeVpcAttribute" "$DST_REGION_ID" "Vpc" "$dst_vpc_id"
log "INFO" "VPC created: '$dst_vpc_id'"

# 建立交換器
log "INFO" "Creating VSwitch"
dst_vsw_params=(
  "--region" "$DST_REGION_ID"
  "--RegionId" "$DST_REGION_ID"
  "--ZoneId" "$DST_ZONE_ID"
  "--VpcId" "$dst_vpc_id"
  "--CidrBlock" "10.1.1.0/24"
)
invoke_aliyun_command vpc CreateVSwitch "${dst_vsw_params[@]}"
dst_vsw_id=$(echo "$response" | jq -r .VSwitchId)
wait_resource_available "vpc" "DescribeVSwitchAttributes" "$DST_REGION_ID" "VSwitch" "$dst_vsw_id"
log "INFO" "VSwitch created: '$dst_vsw_id'"

# 建立安全性群組
log "INFO" "Creating security group"
dst_sg_params=(
  "--region" "$DST_REGION_ID"
  "--RegionId" "$DST_REGION_ID"
  "--SecurityGroupName" "cli-dst-sg"
  "--VpcId" "$dst_vpc_id"
  "--SecurityGroupType" "normal"
)
invoke_aliyun_command ecs CreateSecurityGroup "${dst_sg_params[@]}"
dst_sg_id=$(echo "$response" | jq -r .SecurityGroupId)
log "INFO" "Security group created: '$dst_sg_id'"

# 在目標地區建立一個隨用隨付ECS執行個體
log "INFO" "Creating ECS instance in zone: '$DST_ZONE_ID'"
dst_instance_params=(
  "--region" "$DST_REGION_ID"
  "--RegionId" "$DST_REGION_ID"
  "--ImageId" "$dst_img_id"
  "--SecurityGroupId" "$dst_sg_id"
  "--VSwitchId" "$dst_vsw_id"
  "--InstanceType" "$SRC_INSTANCE_TYPE"
  "--InstanceName" "cli-dst-ecs"
  "--PasswordInherit" "true"
  "--SystemDisk.Category" "$SRC_SYSTEM_DISK_CATEGORY"
  "--SystemDisk.Size" "$SRC_SYSTEM_DISK_SIZE"
  "--InstanceChargeType" "PostPaid"
)
invoke_aliyun_command ecs RunInstances "${dst_instance_params[@]}"
dst_instance_id=$(echo "$response" | jq -r '.InstanceIdSets.InstanceIdSet[0]')
log "INFO" "ECS instance created: '$dst_instance_id'"
# 設定錯誤退出策略
$ErrorActionPreference = "Stop"

# 設定字元編碼
chcp 65001 | Out-Null
[System.Console]::OutputEncoding = [System.Text.Encoding]::UTF8

# 源執行個體ID
$SRC_INSTANCE_ID = "i-bp1g6zv0ce8oghu7****"
# 源執行個體所屬地區ID
$SRC_REGION_ID = "cn-hangzhou"
# 遷移目標地區ID
$DST_REGION_ID = "cn-beijing"
# 目標執行個體所屬可用性區域ID
$DST_ZONE_ID = "cn-beijing-h"
# 源執行個體規格
$SRC_INSTANCE_TYPE = "ecs.e-c1m1.large"
# 源執行個體系統硬碟類型
$SRC_SYSTEM_DISK_CATEGORY = "cloud_auto"
# 源執行個體系統硬碟大小
$SRC_SYSTEM_DISK_SIZE = 40

# 輸出日誌
function Log {
    param ([string]$Level, [string]$Message)
    Write-Host "$(Get-Date -Format 'yyyy-MM-dd HH:mm:ss') [$Level] $Message"
}

# 封裝阿里雲CLI
function Invoke-AliyunCommand {
    param ([string]$Service, [string]$Action, [array]$Params)
    $response = aliyun $Service $Action $Params
    if ($LASTEXITCODE -eq 0) { return $response | ConvertFrom-Json }
    Log "ERROR" "Failed to call aliyun command: aliyun $Service $Action $Params"
    exit 1
}

# 擷取嵌套屬性值
function Get-NestedPropertyValue {
    param (
        [object]$Object,
        [string]$PropertyPath
    )
    $parts = $PropertyPath -split '\.'
    $value = $Object

    foreach ($part in $parts) {
        $value = $value.$part
    }
    return $value
}

# 等待資源可用
function Wait-ResourceAvailable {
    param (
        [string]$Service,
        [string]$Action,
        [object]$Params,
        [string]$StatusPath,
        [string]$ProgressPath
    )
    $timeout = 1200
    $interval = 20
    $endTime = (Get-Date).AddSeconds($timeout)
    while ((Get-Date) -lt $endTime) {
        $response = Invoke-AliyunCommand $Service $Action $Params
        $currentStatus = Get-NestedPropertyValue $response $StatusPath
        Log "INFO" "Resource status: $currentStatus"
        if ($ProgressPath) {
            $currentProgress = Get-NestedPropertyValue $response $ProgressPath
            Log "INFO" "Creation progress: $currentProgress"
        }
        if ("Available" -eq $currentStatus) { return }
        Start-Sleep -Seconds $interval
    }
}

# 建立鏡像
Log "INFO" "Creating source image from instance '$SRC_INSTANCE_ID'"
$srcImgId = (Invoke-AliyunCommand -Service "ecs" -Action "CreateImage" -Params @(
    "--region", $SRC_REGION_ID,
    "--RegionId", $SRC_REGION_ID,
    "--InstanceId", $SRC_INSTANCE_ID,
    "--ImageName", "cli-src-img"
)).ImageId
Wait-ResourceAvailable -Service "ecs" -Action "DescribeImages" -Params @(
    "--region", $SRC_REGION_ID,
    "--RegionId", $SRC_REGION_ID,
    "--ImageId", $srcImgId,
    "--Status", "Creating,Waiting,Available"
) -StatusPath "Images.Image.Status" -ProgressPath "Images.Image.Progress"
Log "INFO" "Source image created: '$srcImgId'"

# 複製鏡像到目的地區域
Log "INFO" "Copying image to region: '$DST_REGION_ID'"
$dstImgId = (Invoke-AliyunCommand -Service "ecs" -Action "CopyImage" -Params @(
    "--region", $SRC_REGION_ID,
    "--RegionId", $SRC_REGION_ID,
    "--DestinationRegionId", $DST_REGION_ID,
    "--ImageId", $srcImgId,
    "--DestinationImageName", "cli-dst-img"
)).ImageId
Wait-ResourceAvailable -Service "ecs" -Action "DescribeImages" -Params @(
    "--region", $DST_REGION_ID,
    "--RegionId", $DST_REGION_ID,
    "--ImageId", $dstImgId,
    "--Status", "Creating,Waiting,Available"
) -StatusPath "Images.Image.Status" -ProgressPath "Images.Image.Progress"
Log "INFO" "Destination image copied: '$dstImgId'"

# 建立 VPC
Log "INFO" "Creating VPC"
$dstVpcId = (Invoke-AliyunCommand -Service "vpc" -Action "CreateVpc" -Params @(
    "--region", $DST_REGION_ID,
    "--RegionId", $DST_REGION_ID,
    "--CidrBlock", "10.0.0.0/8",
    "--VpcName", "cli-dst-vpc"
)).VpcId
Wait-ResourceAvailable -Service "Vpc" -Action "DescribeVpcAttribute" -Params @(
    "--region", $DST_REGION_ID,
    "--RegionId", $DST_REGION_ID,
    "--VpcId", $dstVpcId
) -StatusPath "Status"
Log "INFO" "VPC created: '$dstVpcId'"

# 建立交換器
Log "INFO" "Creating VSwitch"
$dstVSwitchId = (Invoke-AliyunCommand vpc CreateVSwitch @(
    "--region", $DST_REGION_ID,
    "--RegionId", $DST_REGION_ID,
    "--ZoneId", $DST_ZONE_ID,
    "--VpcId", $dstVpcId,
    "--CidrBlock", "10.1.1.0/24"
)).VSwitchId
Wait-ResourceAvailable -Service "Vpc" -Action "DescribeVSwitchAttributes" -Parameters @(
    "--region", $DST_REGION_ID,
    "--RegionId", $DST_REGION_ID,
    "--VSwitch", $dstVSwitchId
) -StatusPath "Status"
Log "INFO" "VSwitch created: '$dstVSwitchId'"

# 建立安全性群組
Log "INFO" "Creating security group"
$dstSecurityGroupId = (Invoke-AliyunCommand ecs CreateSecurityGroup @(
    "--region", $DST_REGION_ID,
    "--RegionId", $DST_REGION_ID,
    "--SecurityGroupName", "cli-dst-sg",
    "--VpcId", $dstVpcId,
    "--SecurityGroupType", "normal"
)).SecurityGroupId
Log "INFO" "Security group created: '$dstSecurityGroupId'"

# 在目標地區建立一個隨用隨付ECS執行個體
Log "INFO" "Creating ECS instance in zone: '$DST_ZONE_ID'"
$dstInstanceId = (Invoke-AliyunCommand ecs RunInstances @(
    "--region", $DST_REGION_ID,
    "--RegionId", $DST_REGION_ID,
    "--ImageId", $dstImgId,
    "--SecurityGroupId", $dstSecurityGroupId,
    "--VSwitchId", $dstVSwitchId,
    "--InstanceType", $SRC_INSTANCE_TYPE,
    "--InstanceName", "cli-dst-ecs",
    "--PasswordInherit", "true",
    "--SystemDisk.Category", $SRC_SYSTEM_DISK_CATEGORY,
    "--SystemDisk.Size", $SRC_SYSTEM_DISK_SIZE,
    "--InstanceChargeType", "PostPaid"
)).InstanceIdSets.InstanceIdSet[0]
Log "INFO" "ECS instance created: '$dstInstanceId'"
Log "INFO" "Script execution completed successfully."

相關文檔

您可在控制台中實現同地區或者跨地區下的ECS執行個體間的遷移。具體操作,請參見通過自訂鏡像跨地區複製ECS執行個體