Alibaba Cloud CLIは、端末またはコマンドラインインターフェイスでAlibaba Cloud API操作を呼び出して、Alibaba Cloudリソースを作成、設定、および管理できるコマンドラインツールです。 このトピックでは、Alibaba Cloud CLIを使用してElastic Compute Service (ECS) APIを呼び出してECSインスタンスを作成および管理する方法と例について説明します。
Alibaba Cloud CLIの詳細については、Alibaba Cloud CLIとは
準備
Resource Access Management (RAM) ユーザーのAccessKeyペアを作成します。 Alibaba Cloudアカウントには、リソースに対するすべての権限があります。 Alibaba CloudアカウントのAccessKeyペアが漏洩した場合、リソースは大きなリスクにさらされます。 RAM ユーザーの AccessKey ペアを使用することを推奨します。 AccessKeyペアの作成方法については、「AccessKeyペアの作成」をご参照ください。
使用するRAMユーザーに、ECSおよびVirtual Private Cloud (VPC) リソースに必要な権限を付与します。 このトピックで提供されるサンプルコードは、ECSインスタンス、VPC、vSwitchなどのリソースを作成します。 サンプルコードの実行に必要な権限を付与するには、次の表に示すポリシーをRAMユーザーにアタッチすることを推奨します。
クラウドサービス
ポリシー
VPC
AliyunVPCFullAccess
ECS
AliyunECSFullAccess
Alibaba Cloud CLIをインストールおよび設定します。 Alibaba Cloud CLIを使用する前に、Alibaba Cloud CLIをインストールする必要があります。 Alibaba Cloud CLIは、Windows、Linux、およびmacOSにインストールできます。 コンピューターで実行されるオペレーティングシステムに適したインストールパッケージをダウンロードします。
Alibaba Cloud CLI のインストール。 さまざまなオペレーティングシステムにAlibaba Cloud CLIをインストールする方法については、以下のトピックを参照してください。
Alibaba Cloud CLI の設定
Alibaba Cloudリソースを使用するために必要な、資格情報やリージョンなどのパラメーターを設定します。 資格情報の設定方法については、「プロファイルの設定」トピックの [資格情報の種類] セクションの [AK] タブに移動します。
一時的なデバッグ操作のみを実行する必要がある場合は、Alibaba Cloud CLIをインストールする必要はありません。 Alibaba Cloudが提供するCloud Shellを使用して、デバッグ操作を実行できます。 詳細については、「」をご参照ください。Cloud Shellとは
ECS インスタンスの作成
ECSインスタンスを作成するには、vSwitch ID、セキュリティグループID、イメージIDなどの複数のパラメーターが必要です。 既存のリソースのIDを渡すか、API操作を呼び出して新しいリソースを作成できます。
VPC を作成します。
VPCは、クラウド内の専用プライベートネットワークです。 VPCをパブリッククラウドで論理的に分離されたネットワークとして設定および管理できます。
API 操作
パラメーター
説明と例
RegionId
VPCを作成するリージョンのID。 例: ap-northeast-1
CidrBlock
VPC の CIDR ブロックです。 例: 192.168.0.0/16
VSwitch を作成します。
vSwitchは、物理スイッチの機能をサポートするVPC内のネットワークスイッチングデバイスです。 仮想マシン (VM) 間、およびVMと物理ネットワーク間の通信を可能にします。
API 操作
パラメーター
説明と例
RegionId
vSwitchを作成するリージョンのID。 例: ap-northeast-1
ZoneId
vSwitchを作成するゾーンのID。 例: ap-northeast-1a
VpcId
vSwitchを作成するVPCのID。 例: vpc-bp1aag0sb9s4i92i3 ****
CidrBlock
VSwitch の CIDR ブロックです。 例: 192.168.0.0/24
セキュリティグループを作成します。
セキュリティグループは、ECSインスタンスのインバウンドトラフィックとアウトバウンドトラフィックを制御する仮想ファイアウォールとして機能します。
API 操作
パラメーター
説明と例
RegionId
セキュリティグループを作成するリージョンのID。 例: ap-northeast-1
VpcId
セキュリティグループを作成するVPCのID。 例: vpc-bp1aag0sb9s4i92i3 ****
セキュリティグループにインバウンドルールを作成します。
API 操作
パラメーター
説明と例
RegionId
セキュリティグループのリージョン ID です。 例: ap-northeast-1
SecurityGroupId
セキュリティグループの ID です。 例: sg-bp1esyhwfbqeyudt ****
IpProtocol
プロトコル。 例: tcp
SourceCidrIp
ソース CIDR ブロックです。 例: 0.0.0.0/0
PortRange
ポート範囲。 例:
Linuxインスタンス: 22/22
Windowsインスタンス: 3389/3389
ECSインスタンスを作成します。
ECSは、高性能で安全で低コストのコンピューティング容量を提供し、Webサイトホスティング、アプリケーション開発、データ処理などのさまざまなシナリオに適しています。 ECSを使用すると、アプリケーションを迅速にデプロイして実行し、ビジネスの変化に応じてリソースを柔軟に調整できます。
API 操作
パラメーター
説明と例
RegionId
ECSインスタンスを作成するリージョンのID。 例: ap-northeast-1
ImageId
ECSインスタンスを作成するイメージのID。 IDがaliyun_3_x64_20G_alibase_20240819.vhdのAlibaba Cloud Linuxイメージを選択することを推奨します。
InstanceType
ECSインスタンスのインスタンスタイプ。 例: ecs.e-c1m1.large
SecurityGroupId
ECSインスタンスを作成するセキュリティグループのID。 例: sg-bp1esyhwfbqeyudt ****
VSwitchId
ECSインスタンスを接続するvSwitchのID。 例: vsw-bp1nzprm8h7mmnl8t ****
InstanceName
ECSインスタンスの名前。 例: ecs_cli_demo 。
InstanceChargeType
ECSインスタンスの課金方法。 従量課金インスタンスを作成するには、このパラメーターをPostPaidに設定します。
説明アカウントの残高が十分であることをご確認ください。
パスワード
ログインパスワード。 例: ****** 。
InternetMaxBandwidthOut
最大アウトバウンドパブリック帯域幅です。 このパラメーターの値が0より大きい場合、パブリックIPアドレスがインスタンスに自動的に割り当てられます。
SystemDisk.Category
システムディスクのディスクカテゴリ。 例: cloud_essd
SystemDisk.Size
システムディスクのサイズ。 例: 40 GiB。
次のサンプルコードは、ECSインスタンスの作成方法の完全な例を示しています。
Alibaba Cloud CLIを使用してサンプルコードを実行します。 コードを繰り返し実行すると、VPC、vSwitch、セキュリティグループなどのリソースが繰り返し作成されます。 これは、リソースの浪費を引き起こし得る。 コードを注意深く確認し、ビジネスロジックに基づいてコードを最適化するようにしてください。
#!/bin/bash
# Configure the AccessKey ID and AccessKey secret used by Alibaba Cloud CLI.
# Note: Make sure that the AccessKey ID and AccessKey secret are securely configured by configuring environment variables or by using a configuration file.
# 1. Configure variables.
INSTANCE_NAME="ecs_cli_demo"
#2. Install the jq tool.
echo "Installing the jq dependency tool..."
yum install jq
sleep 3
#3. Create a VPC, a vSwitch, and a security group.
echo "Creating a VPC..."
VpcId=$(aliyun vpc CreateVpc --RegionId ap-northeast-1 --CidrBlock 192.168.0.0/16 | jq -r .VpcId)
aliyun vpc DescribeVpcAttribute --RegionId ap-northeast-1 --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=ap-northeast-1a | jq -r .VSwitchId)
echo "Creating a security group..."
SecurityGroupId=$(aliyun ecs CreateSecurityGroup --RegionId ap-northeast-1 --VpcId ${VpcId} | jq -r .SecurityGroupId)
aliyun ecs AuthorizeSecurityGroup --RegionId ap-northeast-1 --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. Run the command used to create an ECS instance.
echo "Creating an ECS instance..."
INSTANCE_ID_RAW=$(aliyun ecs RunInstances \
--RegionId ap-northeast-1 \
--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. Obtain the InstanceId parameter for subsequently returned information.
INSTANCE_ID=$(echo "$INSTANCE_ID_RAW" | jq -r '.InstanceIdSets.InstanceIdSet[]')
# 6. Wait for 20 seconds for the ECS instance to be created.
echo "Waiting for the ECS instance to be created..."
sleep 20
# 7. Query the status of the ECS instance.
echo "Querying the status of the ECS instance..."
INSTANCE_ID_QUOTED=$(printf '"%s"' "$INSTANCE_ID")
aliyun ecs DescribeInstances \
--RegionId ap-northeast-1 \
--InstanceIds "[${INSTANCE_ID_QUOTED}]" \
--output cols=InstanceId,InstanceName,InstanceType,ImageId,Status rows=Instances.Instance[]
シェルスクリプトを作成して実行します。 コマンドの出力を次の図に示します。
ECS インスタンスへの接続
SSHを使用してECSインスタンスにログインし、ECSインスタンスにサービスをデプロイしてアプリケーションを構築できます。
ECSインスタンスのパブリックIPアドレスを取得します。
DescribeInstances操作を呼び出し、
<Instance ID>
を指定して、インスタンスのパブリックIPアドレスを照会します。リクエストの例
aliyun ecs DescribeInstances \ --RegionId ap-northeast-1 \ -- InstanceIds '["<Instance ID>"]'
レスポンスの例
PublicIpAddressesパラメーターは、ECSインスタンスのパブリックIPアドレスを示します。
ECS インスタンスに接続します。
ssh <Username>@<Public IP address>
リソースのリリース
作成したリソースが不要になった場合は、次のAPIを呼び出してリソースをリリースできます。
ビジネス要件に基づいてリソースをリリースするAPI操作を選択します。 次の例では、前のセクションで作成されたすべてのリソースがリリースされます。
ECSインスタンスをリリースします。
API 操作
パラメーター
説明と例
RegionId
リージョン ID です。 例: ap-northeast-1
InstanceId
インスタンス ID 。 例: i-bp17f3kzgtzzj91r ****
セキュリティグループを削除します。
API 操作
パラメーター
説明と例
RegionId
セキュリティグループのリージョン ID です。 例: ap-northeast-1
SecurityGroupId
セキュリティグループ ID です。 例: sg-bp1esyhwfbqeyudt ****
vSwitchを削除します。
API 操作
パラメーター
説明と例
RegionId
リージョン ID です。 例: ap-northeast-1
VSwitchId
vSwitch ID。 例: vsw-bp1nzprm8h7mmnl8t ****
VPC を削除します。
API 操作
パラメーター
説明と例
RegionId
リージョン ID です。 例: ap-northeast-1
VpcId
VPC ID 例: vpc-bp1aag0sb9s4i92i3 ****
サンプルコード:
#!/bin/bash
# Configure the parameters of the resources that you want to release or delete.
INSTANCE_ID='ecs_cli_demo' # Specify the ID of the ECS instance that you want to release.
SECURITY_GROUP_ID='sg-bp1esyhwfbqeyudt****' # Specify the ID of the security group that you want to delete.
VSWITCH_ID='vsw-bp1nzprm8h7mmnl8t****' # Specify the ID of the vSwitch that you want to delete.
VPC_ID='vpc-bp1aag0sb9s4i92i3****' # Specify the ID of the VPC that you want to delete.
REGION='ap-northeast-1' # Specify the region ID.
echo "Releasing or deleting resources..."
# Release the ECS instance.
aliyun ecs DeleteInstance \
--region ${REGION} \
--InstanceId ${INSTANCE_ID}
# Delete the security group.
aliyun ecs DeleteSecurityGroup \
--region ${REGION} \
--RegionId ${REGION} \
--SecurityGroupId ${SECURITY_GROUP_ID}
# Delete the vSwitch.
aliyun vpc DeleteVSwitch \
--region ${REGION} \
--RegionId ${REGION} \
--VSwitchId ${VSWITCH_ID}
# Delete the VPC.
aliyun vpc DeleteVpc \
--region ${REGION} \
--RegionId ${REGION} \
--VpcId ${VPC_ID}
echo "Release completed"
関連ドキュメント
次のコマンドを実行して、サポートされているコマンドを照会できます。
aliyun ecs --help
次の構文を使用してコマンドを実行し、ECS API操作を呼び出すことができます。 リクエストパラメーターの詳細については、各API操作のドキュメントを参照してください。
aliyun ecs <API operation name> --<Parameter 1 Value 1> --<Parameter 2 Value 2> ...