Alibaba Cloud コマンドラインインターフェイス (CLI) は、OpenAPI を呼び出すことで、ターミナルから Alibaba Cloud リソースを管理するためのツールです。このトピックでは、Alibaba Cloud CLI を使用して Elastic Compute Service (ECS) インスタンスを作成および管理する例を示します。
Alibaba Cloud CLI の詳細については、「Alibaba Cloud CLI とは」をご参照ください。
事前準備
-
Alibaba Cloud アカウントはすべてのリソースに対する完全な権限を持っているため、アカウントの AccessKey が漏洩すると高いセキュリティリスクが生じます。必要最低限の権限のみが付与された RAM ユーザーの AccessKey を使用することを推奨します。詳細については、「AccessKey の作成」をご参照ください。
-
ECS および VPC リソースを管理するために必要な権限を RAM ユーザーに付与してください。このトピックのサンプルコードでは、インスタンス、VPC、vSwitch などのリソースを作成します。以下の権限を付与することを推奨します。
クラウドサービス
権限
VPC
システムポリシーのアタッチ: AliyunVPCFullAccess
ECS
システムポリシーのアタッチ: AliyunECSFullAccess
-
CLI のインストールと設定。 Alibaba Cloud CLI は、Windows、Linux、macOS で利用できます。お使いのオペレーティングシステムに適したインストール方法を選択してください。
-
CLI のインストール。
-
CLI の設定。
Alibaba Cloud リソースを呼び出すために必要な認証情報とサービスリクエストリージョンを設定してください。詳細については、「認証情報の設定」をご参照ください。
一時的に何かをデバッグする必要があるだけで、Alibaba Cloud CLI をインストールしたくない場合は、Cloud Shell を使用できます。詳細については、「Cloud Shell とは」をご参照ください。Cloud Shell を起動するには、Alibaba Cloud コンソールにログインし、上部メニューにある [チケット] の右側にある Cloud Shell アイコン (ターミナルアイコン) をクリックしてください。
-
ECS インスタンスの作成
ECS インスタンスの作成には、vSwitch ID、セキュリティグループ ID、イメージ ID などのパラメーターが必要です。既存のリソース ID を使用するか、次の手順で API を呼び出して新しいリソース ID を作成できます。
-
VPC の作成。
VPC は、クラウドリソース用の論理的に分離されたプライベートネットワークです。
API
パラメーター
値
RegionId
リージョン: cn-hangzhou
CidrBlock
VPC CIDR ブロック: 192.168.0.0/16
-
vSwitch の作成。
vSwitch は VPC 内の基本的なネットワークデバイスであり、さまざまなクラウドリソースを接続します。
API
パラメーター
値
RegionId
リージョン: cn-hangzhou
ZoneId
ゾーン: cn-hangzhou-i
VpcId
VPC ID: vpc-bp1aag0sb9s4i92i3****
CidrBlock
vSwitch CIDR ブロック: 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 インスタンスの作成。
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
vSwitch ID: vsw-bp1nzprm8h7mmnl8t****
InstanceName
インスタンス名: ecs_cli_demo
InstanceChargeType
PostPaid に設定すると、従量課金インスタンスが作成されます。
説明アカウントに十分な残高があることを確認してください。
Password
ログオンパスワード: ******
InternetMaxBandwidthOut
この値が 0 より大きい場合、パブリック IP アドレスがインスタンスに自動的に割り当てられます。
SystemDisk.Category
システムディスクカテゴリ: cloud_essd
SystemDisk.Size
システムディスクサイズ: 40 GB
以下は、完全なサンプルスクリプトです。
このサンプルスクリプトを複数回実行すると、リソースが重複して作成され、不要なコストが発生する可能性があります。実行する前に、特定のニーズに合わせてスクリプトを確認し、調整してください。
#!/bin/bash
# 本番環境では、環境変数または設定ファイルを使用して、AccessKey ID と AccessKey シークレットを安全に設定してください。
# 1. 変数の設定
INSTANCE_NAME="ecs_cli_demo"
# 2. 依存ツール jq のインストール
echo "Installing the jq dependency tool..."
yum install -y jq
sleep 3
# 3. VPC、vSwitch、およびセキュリティグループの作成
echo "Creating a 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 "Creating a vSwitch..."
VSwitchId=$(aliyun vpc CreateVSwitch --CidrBlock 192.168.0.0/24 --VpcId ${VpcId} --ZoneId=cn-hangzhou-i | jq -r .VSwitchId)
echo "Creating a security group..."
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 "Enter your password:" PASSWORD
echo
echo "PASSWORD OK."
# 4. ECS インスタンスを作成するコマンドの実行
echo "Creating the ECS instance..."
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. 後で利用するためにインスタンス ID を抽出
INSTANCE_ID=$(echo "$INSTANCE_ID_RAW" | jq -r '.InstanceIdSets.InstanceIdSet[]')
# 6. ECS インスタンスが作成されるまで 20 秒待機
echo "Waiting for the ECS instance to be created..."
sleep 20
# 7. ECS インスタンスのステータスのクエリ
echo "Querying the ECS instance status..."
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[]
シェルスクリプトを作成して実行してください。期待される出力は次のとおりです。
[root@i-xxxxx Z ~]# bash ecs-cli.sh
Installing the jq dependency tool...
Last metadata expiration check: 0:24:56 ago on Tue 22 Oct 2024 09:24:50 AM CST.
Package jq-1.6-15.al8.x86_64 is already installed.
Dependencies resolved.
Nothing to do.
Complete!
Creating a VPC...
Creating a vSwitch...
Creating a security group...
Enter your password:
PASSWORD OK.
Creating the ECS instance...
Waiting for the ECS instance to be created...
Querying the ECS instance status...
InstanceId | InstanceName | InstanceType | ImageId | Status
---------- | ------------ | ------------ | ------- | -------
i-bpxxxxxxxxxxxz4 | ecs_cli_demo | ecs.e-c1m1.large | aliyun_3_x64_20G_alibase_20240819.vhd | Running
インスタンスへの接続
SSH でインスタンスに接続した後、サービスとアプリケーションをデプロイできます。
-
インスタンスのパブリック IP アドレスの取得。
<InstanceID>を指定して DescribeInstances API を呼び出し、インスタンスのパブリック IP アドレスを取得してください。-
リクエスト例
aliyun ecs DescribeInstances \ --RegionId cn-hangzhou \ --InstanceIds '["<instance-id>"]' -
レスポンス例
PublicIpAddress パラメーターは、インスタンスのパブリック IP アドレスを示します。
"PublicIpAddress": { "IpAddress": [ "115.29.xxx.xxx" ] }
-
-
ECS インスタンスへの接続。
ssh <username>@<public_ip_address>[root@i-xxx bfZ ~ ]# ssh root@1xx.xx.xx.xx The authenticity of host '1xx.xx.xx.xx (1xx.xx.xx.xx)' can't be established. ECDSA key fingerprint is SHA256:PVyhCaxxx4mecykrU. Are you sure you want to continue connecting (yes/no/[fingerprint])? yes Warning: Permanently added '1xx.xx.xx.xx' (ECDSA) to the list of known hosts. root@1xx.xx.xx.xx's password: Welcome to Alibaba Cloud Elastic Compute Service ! Last login: Thu Oct 10 13:31:58 2024 from xxx.67 [root@iZ xxx ugZ ~]#
リソースのクリーンアップ
リソースが不要になったら、追加料金が発生しないようにリソースをリリースしてください。
リソースをリリースするには、適切な OpenAPI を選択してください。この例では、前の手順で作成したすべてのリソースをリリースします。
-
ECS インスタンスの削除。
API
パラメーター
値
RegionId
リージョン: cn-hangzhou
InstanceId
インスタンス ID: i-bp17f3kzgtzzj91r****
-
セキュリティグループの削除。
API
パラメーター
値
RegionId
リージョン: cn-hangzhou
SecurityGroupId
セキュリティグループ ID: sg-bp1esyhwfbqeyudt****
-
vSwitch の削除。
API
パラメーター
値
RegionId
リージョン: cn-hangzhou
VSwitchId
vSwitch ID: vsw-bp1nzprm8h7mmnl8t****
-
VPC の削除。
API
パラメーター
値
RegionId
リージョン: cn-hangzhou
VpcId
VPC ID: vpc-bp1aag0sb9s4i92i3****
以下は、サンプルスクリプトです。
#!/bin/bash
# プレースホルダーの値を、リリースするリソースの実際の ID に置き換えてください。
INSTANCE_ID='i-bpxxxxxxxxxxxz4'
SECURITY_GROUP_ID='sg-bp1esyhwfbqeyudt****'
VSWITCH_ID='vsw-bp1nzprm8h7mmnl8t****'
VPC_ID='vpc-bp1aag0sb9s4i92i3****'
REGION='cn-hangzhou'
echo "Releasing resources..."
# インスタンスの削除
aliyun ecs DeleteInstance \
--region ${REGION} \
--InstanceId ${INSTANCE_ID}
# セキュリティグループを削除する前に、インスタンスが削除されるのを待ちます。
# 本番スクリプトでは、ここに待機ロジックを追加してください。
# セキュリティグループの削除
aliyun ecs DeleteSecurityGroup \
--region ${REGION} \
--SecurityGroupId ${SECURITY_GROUP_ID}
# vSwitch の削除
aliyun vpc DeleteVSwitch \
--region ${REGION} \
--VSwitchId ${VSWITCH_ID}
# VPC の削除
aliyun vpc DeleteVpc \
--region ${REGION} \
--VpcId ${VPC_ID}
echo "Cleanup complete."
関連ドキュメント
次のコマンドを実行すると、ECS でサポートされている CLI コマンドのリストを表示できます。
aliyun ecs --help
ECS API を呼び出すには、次の構文を使用します。詳細なパラメーターについては、各 API のドキュメントをご参照ください。
aliyun ecs <APIName> --<parameter1 value1> --<parameter2 value2> ...