awsコマンドを使ってEC2インスタンス一覧を取得したり、インスタンスを起動したりして遊んでみました。
実行環境は、macOS Catalina 10.15.7です。
1. awsコマンドのインストール
Mac版 AWS CLI version.2を以下のリンクから、最新バージョンのpkgファイルをダウンロードします。
2. コマンド起動確認
$ which aws
/usr/local/bin/aws
$ aws --version
aws-cli/2.2.10 Python/3.8.8 Darwin/19.6.0 exe/x86_64 prompt/off
バージョン情報が表示されれば、インストール成功です。
3. config
以下のコマンドでコンフィギュレーションします。
$ cd
$ aws configure
任意のAccess Key ID、Secret Access Keyおよびリージョン名を指定します。output formatはJSONにしておきます。
Access Key ID=<YOUR ACCESS KEY ID>
Secret Access Key=<YOUR SECRET ACCESS KEY>
region name=<YOUR REGION; 例えば、ap-northeast-1>
output format=json
コンフィグファイルは以下のコマンドで確認できます。
$ less ~/.aws/config
$ less ~/.aws/credentials
4. EC2インスタンスの一覧表示
以下のコマンドで全件取得できます。
$ aws ec2 describe-instances
上記コマンドでは結果の全項目が取得できます。結果の項目をフィルタリングしたいときは、queryオプションを使います。
例えば、InstanceIdとStateだけを取得したい場合は、queryオプションで以下のように指定します。
$ aws ec2 describe-instances --query "Reservations[].Instances[].[InstanceId,State]"
[
[
"<INSTANCE ID1>",
{
"Code": 80,
"Name": "stopped"
}
],
[
"<INSTANCE ID2>",
{
"Code": 16,
"Name": "running"
}
]
]
参考:
https://docs.aws.amazon.com/ja_jp/cli/latest/userguide/cli-services-ec2-instances.html
5. EC2インスタンスの起動
以下のコマンドでインスタンスを起動できます。<INSTANCE ID>
のところは起動したいインスタンスIDを指定します。
$ aws ec2 start-instances --instance-id <INSTANCE ID>
{
"StartingInstances": [
{
"CurrentState": {
"Code": 0,
"Name": "pending"
},
"InstanceId": "<INSTANCE ID>",
"PreviousState": {
"Code": 80,
"Name": "stopped"
}
}
]
}
参考:
https://docs.aws.amazon.com/cli/latest/reference/ec2/start-instances.html
6. EC2インスタンスの停止
起動と同様に、以下のコマンドでインスタンスの停止もできます。<INSTANCE ID>
のところは停止したいインスタンスIDを指定します。
$ aws ec2 stop-instances --instance-id <INSTANCE ID>
{
"StoppingInstances": [
{
"CurrentState": {
"Code": 64,
"Name": "stopping"
},
"InstanceId": "<INSTANCE ID>",
"PreviousState": {
"Code": 16,
"Name": "running"
}
}
]
}
参考:
https://docs.aws.amazon.com/cli/latest/reference/ec2/stop-instances.html
7. EC2インスタンスの終了
以下のコマンドでインスタンスの終了もできます。<INSTANCE ID>
のところは終了したいインスタンスIDを指定します。
★終了すると再度起動はできなくなるので注意してください。
$ aws ec2 terminate-instances --instance-id <INSTANCE ID>
{
"TerminatingInstances": [
{
"CurrentState": {
"Code": 32,
"Name": "shutting-down"
},
"InstanceId": "<INSTANCE ID>",
"PreviousState": {
"Code": 16,
"Name": "running"
}
}
]
}
ちなみに、終了したインスタンスはAWSのダッシュボードからは時間が経つと自動的に消えるようです。
8. インスタンスのライフサイクル
インスタンスのライフサイクル(State遷移)は以下のページが参考になります。