すべてのプロダクト
Search
ドキュメントセンター

Enterprise Distributed Application Service:Alibaba Cloud CLI を使用した ECS クラスターへのアプリケーションのデプロイ

最終更新日:Mar 11, 2026

CI/CD パイプラインやプロビジョニングスクリプトなどから Enterprise Distributed Application Service (EDAS) へのアプリケーションデプロイメントを自動化する必要がある場合、Alibaba Cloud CLI を使用すると、ターミナルを離れることなく、名前空間、クラスター、アプリケーションの作成、そして WAR または JAR パッケージのデプロイが可能です。

EDAS は、SDK と API を通じて、Spring Cloud、Dubbo、および High-speed Service Framework (HSF) アプリケーションをサポートしています。

ワークフローの概要

Elastic Compute Service (ECS) クラスターにアプリケーションをデプロイするには、主に次の API オペレーションが必要です。

ステップAPI目的
1InsertOrUpdateRegionマイクロサービス名前空間 (サービスを論理的に隔離する境界) を作成します
2InsertClusterECS クラスター (アプリケーションをホストするリソースグループ) を作成します
3TransformClusterMember既存の ECS インスタンスをクラスターにインポートします
4InsertApplicationEDAS にアプリケーションを登録します
5DeployApplicationWAR または JAR パッケージを Object Storage Service (OSS) にアップロードし、デプロイメントをトリガーします

以下のセクションでは、各ステップについて説明します。

前提条件

開始する前に、以下を確認してください。

  • 実行中の ECS インスタンス。詳細については、「ECS インスタンスの作成」をご参照ください。

  • ご利用のオペレーティングシステムに Alibaba Cloud CLI がインストールされていること。

  • デプロイメントパッケージを OSS にアップロードするための ossutil がインストールされていること。

Alibaba Cloud CLI の設定

aliyun configure を実行して、AccessKey ペア、デフォルトリージョン、出力フォーマットを設定します。

説明 AccessKey ペアは、ユーザー管理コンソールの セキュリティ管理 ページで作成または表示できます。AccessKey ペアをお持ちでない場合は、管理者に連絡してください。
aliyun configure
Configuring profile 'default' ...
Aliyun Access Key ID [None]: <your-access-key-id>
Aliyun Access Key Secret [None]: <your-access-key-secret>
Default Region Id [None]: cn-hangzhou
Default output format [json]: json
Default Language [zh]: zh
プレースホルダー説明
<your-access-key-id>ご利用の AccessKey ID
<your-access-key-secret>ご利用の AccessKey Secret

設定が完了すると、CLI に Configure Done!!! というバナーが表示されます。

ECS クラスターでのアプリケーションの作成

以下の手順では、ワークフローの概要で説明した最初の 4 つの API 呼び出し (名前空間の作成、クラスターの作成、ECS インスタンスのインポート、アプリケーションの登録) を実行します。

コマンドを実行する前に、プレースホルダー変数を実際の値に置き換えてください。

変数説明
REGIONアプリケーションがデプロイされるリージョンcn-beijing
ECS_IDインポートする ECS インスタンスの IDi-2z************b6
VPC_IDECS インスタンスが属する Virtual Private Cloud (VPC) の IDvpc-t**********c
NAMESPACEマイクロサービス名前空間の名前 (存在しない場合は自動的に作成されます)myNamespace
CLUSTER_NAMEECS クラスターの名前 (存在しない場合は自動的に作成されます)myCluster
APP_NAMEアプリケーションの名前myApp

変数の設定

REGION="cn-beijing"
ECS_ID="i-2z************b6"
VPC_ID="vpc-t**********c"
NAMESPACE="myNamespace"
CLUSTER_NAME="myCluster"
APP_NAME="myApp"

ステップ 1:マイクロサービス名前空間の作成

タグ <region>:<namespace> を使用して名前空間を作成します。

aliyun edas InsertOrUpdateRegion \
  --RegionTag "$REGION:$NAMESPACE" \
  --RegionName "$NAMESPACE" \
  --region "$REGION" \
  --endpoint "edas.cn-beijing.aliyuncs.com" >> /dev/null

ステップ 2:ECS クラスターの作成

VPC モードの ECS クラスター (ClusterType 2NetworkMode 2) を作成し、クラスター ID を取得します。

CLUSTER_ID=$(aliyun edas InsertCluster \
  --ClusterName "$CLUSTER_NAME" \
  --ClusterType 2 \
  --NetworkMode 2 \
  --VpcId "$VPC_ID" \
  --logicalRegionId "$REGION:$NAMESPACE" \
  --region "$REGION" \
  --endpoint "edas.cn-beijing.aliyuncs.com" \
  | sed -E 's/.*"ClusterId":"([a-z0-9-]*)".*/\1/g')

echo "Cluster ID: $CLUSTER_ID"

ステップ 3:ECS インスタンスのインポート

ECS インスタンスをクラスターにインポートします。このスクリプトは、インスタンスが ECU ID をレポートするまで、最大 300 秒間 ListClusterMembers をポーリングします。

aliyun edas TransformClusterMember \
  --InstanceIds "$ECS_ID" \
  --TargetClusterId "$CLUSTER_ID" \
  --Password Hello1234 >> /dev/null

for i in $(seq 300); do
  OUT=$(aliyun edas ListClusterMembers --ClusterId "$CLUSTER_ID" | grep EcuId) && break
  sleep 1
done
ECU_ID=$(echo "$OUT" | sed -E 's/.*"EcuId":"([a-z0-9-]*)".*/\1/g')

echo "ECU ID: $ECU_ID"
説明 インポートプロセスには数分かかる場合があります。ループは 1 秒に 1 回、最大 5 分間チェックします。

ステップ 4:アプリケーションの作成

BuildPackId 51 とステップ 3 で取得した ECU を使用してアプリケーションを登録します。

APP_ID=$(aliyun edas InsertApplication \
  --ApplicationName "$APP_NAME" \
  --BuildPackId 51 \
  --EcuInfo "$ECU_ID" \
  --ClusterId "$CLUSTER_ID" \
  --logicalRegionId "$REGION:$NAMESPACE" \
  | sed -E 's/.*"AppId":"([a-z0-9-]*)".*/\1/g')

echo "Application created. App ID: $APP_ID"

デプロイメントステップのために APP_ID の値を保存します。

アプリケーションのデプロイ

アプリケーションが作成されたら、WAR または JAR パッケージをデプロイします。以下の手順では、パッケージを OSS バケットにアップロードし、非同期デプロイメントリクエストを送信し、デプロイメントが完了するまでポーリングします。

変数

以下の変数を実際の値に置き換えてください。

変数説明
APP_ID前のセクションで取得したアプリケーション ID、または EDAS コンソールから取得したアプリケーション ID87a6*********************4d1
GROUP_IDアプリケーションのグループ ID54b*********************f27
OSS_BUCKETデプロイメントパッケージ用のパブリック読み取り可能な OSS バケットeda*****mo
PACKAGEWAR または JAR ファイルへのローカルパスhello-edas.war
APP_ID="87a6*********************4d1"
GROUP_ID="54b*********************f27"
OSS_BUCKET="eda*****mo"
PACKAGE="hello-edas.war"
VERSION=$(date +%s)    # Timestamp-based version

ステップ 1:デプロイメントパッケージの OSS へのアップロード

ossutil cp -f "$PACKAGE" "oss://$OSS_BUCKET/$PACKAGE" >> /dev/null
PKG_URL=$(ossutil sign "oss://$OSS_BUCKET/$PACKAGE" | head -1)

echo "Package URL: $PKG_URL"

ステップ 2:デプロイメントのトリガー

CO_ID=$(aliyun edas DeployApplication \
  --AppId "$APP_ID" \
  --PackageVersion "$VERSION" \
  --DeployType url \
  --WarUrl "$PKG_URL" \
  --GroupId "$GROUP_ID" \
  | grep '.*"ChangeOrderId":' \
  | sed -E 's/.*"ChangeOrderId":\s"([a-z0-9-]*)".*/\1/g')

echo "Change order ID: $CO_ID"

ステップ 3:デプロイメント完了の待機

スクリプトは最大 300 秒間 GetChangeOrderInfo をポーリングします。PipelineStatus の値が 2 の場合は成功を示します。

for i in $(seq 300); do
  STATUS=$(aliyun edas GetChangeOrderInfo --ChangeOrderId "$CO_ID" \
    | grep '.*"PipelineStatus":' \
    | sed -E 's/.*"PipelineStatus":\s(.).*/\1/g')
  [[ 2 = ${STATUS} ]] && break
  sleep 1
done

echo "Deployment complete. Change order ID: $CO_ID"

コンソールでの APP_ID と GROUP_ID の確認

作成ステップでこれらの値を取得していない場合は、EDAS コンソールから取得します。

  1. EDAS コンソールにログインします。

  2. 左側のナビゲーションウィンドウで、 [アプリケーション管理] > [アプリケーション] を選択し、アプリケーション名をクリックします。

  3. [基本情報] タブの右上隅にある [デプロイ] をクリックします。

  4. [デプロイモードの選択] ページで、 [通常リリース (単一バッチ/複数バッチ)] の横にある [デプロイの開始] をクリックします。

  5. [Maven プラグイン設定の生成] をクリックして、パラメーターの値を表示します。

Generate Maven Plug-in Configuration

デプロイメントの確認

デプロイメントスクリプトの完了後、アプリケーションが実行中であることを確認します。

  1. EDAS コンソールにログインします。

  2. 左側のナビゲーションウィンドウで、[アプリケーション管理] > [アプリケーション] を選択します。

  3. デプロイされたアプリケーションの名前をクリックし、[基本情報] の横にある [インスタンス情報] タブをクリックします。

デプロイメントは、インスタンスステータスが 正常 を示すときに成功します。

説明 デプロイメントが失敗した場合は、トラブルシューティングのために、「変更プロセスで返される可能性のあるエラーコード」をご参照ください。

関連ドキュメント

EDAS 開発者ツールコミュニティ

EDAS の開発者ツールの使用に関してご質問やご提案がある場合は、DingTalk で ID 34556175 を検索して DingTalk グループにご参加ください。