AWS CLI EC2
EC2 の利用できるリージョン取得
code:shell
$ aws ec2 describe-regions | jq .Regions[].RegionName
Name タグの Value のみ取得
code:shell
$ aws ec2 describe-instances | jq -r '.Reservations[].Instances[] | select (has("Tags")) | .Tags[] | select (.Key == "Name") | .Value'
タグ Name が test の public ip アドレスを取得
code:shell
$ aws ec2 describe-instances --filter "Name=tag:Name,Values=test" | jq '.Reservations[].Instances[].PublicIpAddress'
タグ Name が test のインスタンス ID を取得
code:shell
$ aws ec2 describe-instances --filter "Name=tag:Name,Values=test" | jq '.Reservations[].Instances[].InstanceId'
インスタンス起動
code:shell
$ aws ec2 start-instances --instance-ids <instance-id>
インスタンスの起動状態確認
code:shell
$ aws ec2 describe-instance-status --instance-ids <instance-id> | jq '.InstanceStatuses[] | {InstanceId, InstanceState: .InstanceState.Name, SystemStatus: .SystemStatus.Status, InstanceStatus: .InstanceStatus.Status}'
停止インスタンスに割り当てられている EIP の洗い出し(Name タグがあるもの)
code:shell
$ aws ec2 describe-addresses --query 'Addresses[].InstanceId' | jq .[] | xargs -I@@ aws ec2 describe-instances --filters "Name=instance-state-name,Values=stopped" "Name=instance-id,Values=@@" --query 'Reservations[].Instances[].{Tags:Tags[?Key==Name].Value|0}' --output text EIP のリリース
code:shell
$ aws ec2 release-address --allocation-id <AllocationId>
AMI の検索
パブリックイメージがすべて表示されるので通常は --filters を利用して対象を絞る
code:shell
$ aws ec2 describe-images
CentOS の AMI 番号とか取得
code:shell
$ aws ec2 describe-images \
--region ap-northeast-1 \
--owners aws-marketplace \
--filters Name=product-code,Values=aw0evgkw8e5c1q413zgy5pjce \
起動しているインスタンス数を取得
code:shell
$ aws ec2 describe-instances --filter "Name=instance-state-name,Values=running"| jq '.Reservations[].Instances[].InstanceId' | wc -l
AMI の取得
code:shell
$ aws ec2 create-image --instance-id i-xxxxx --name name --no-reboot
ゾーン ID の確認
code:shell
$ aws ec2 describe-availability-zones | jq .AvailabilityZones
[
{
"State": "available",
"Messages": [],
"RegionName": "ap-northeast-1",
"ZoneName": "ap-northeast-1a",
"ZoneId": "apne1-az4"
},
{
"State": "available",
"Messages": [],
"RegionName": "ap-northeast-1",
"ZoneName": "ap-northeast-1b",
"ZoneId": "apne1-az3"
},
{
"State": "available",
"Messages": [],
"RegionName": "ap-northeast-1",
"ZoneName": "ap-northeast-1c",
"ZoneId": "apne1-az1"
},
{
"State": "available",
"Messages": [],
"RegionName": "ap-northeast-1",
"ZoneName": "ap-northeast-1d",
"ZoneId": "apne1-az2"
}
]
クラシック環境の表示
code:shell
$ aws ec2 describe-instances | jq '.Reservations[].Instances[] | select(.VpcId == null)
セキュリティグループ
セキュリティグループ名と、グループ ID の取得
code:shell
$ aws ec2 describe-security-groups --query "SecurityGroups[].GroupName,GroupId" --output table グループ ID に属する情報の取得
code:shell
$ aws ec2 describe-security-groups --group-id sg-xxxxxx --output table