Skip to content

Instantly share code, notes, and snippets.

@wifecooky
Last active May 15, 2019 12:51
Show Gist options
  • Save wifecooky/485adbc1f12e3de0aba8ce5e0834c2c0 to your computer and use it in GitHub Desktop.
Save wifecooky/485adbc1f12e3de0aba8ce5e0834c2c0 to your computer and use it in GitHub Desktop.
AWS コマンドラインインターフェイス(AWS CLI)関連

AWS CLIコマンドの実行オプション

--output {json|text|table}
--region {<region>}
--filter
--query
--profile   別プロファイルでの実行(ユーザー、表示形式、region等のセット)

--region {}

コマンド実行の対象となるRegionを指定。 指定しない場合はデフォルトのRegion($HOME/.aws/configで指定)が使われる。 以下のRegionが指定できる。

$ aws ec2 describe-regions --output table
----------------------------------------------------------
|                     DescribeRegions                    |
+--------------------------------------------------------+
||                        Regions                       ||
|+-----------------------------------+------------------+|
||             Endpoint              |   RegionName     ||
|+-----------------------------------+------------------+|
||  ec2.eu-central-1.amazonaws.com   |  eu-central-1    ||
||  ec2.sa-east-1.amazonaws.com      |  sa-east-1       ||
||  ec2.ap-northeast-1.amazonaws.com |  ap-northeast-1  ||
||  ec2.eu-west-1.amazonaws.com      |  eu-west-1       ||
||  ec2.us-east-1.amazonaws.com      |  us-east-1       ||
||  ec2.us-west-1.amazonaws.com      |  us-west-1       ||
||  ec2.us-west-2.amazonaws.com      |  us-west-2       ||
||  ec2.ap-southeast-2.amazonaws.com |  ap-southeast-2  ||
||  ec2.ap-southeast-1.amazonaws.com |  ap-southeast-1  ||
|+-----------------------------------+------------------+|

--output {json|text|table}

コマンド実行結果の出力形式を指定。 指定しない場合は、$HOME/.aws/configに定義されたフォーマットで出力される。

JSON、TEXT、Table形式で出力できるが、個人的にはJSON形式が一番見やすいし、jqコマンドと組み合わせれば必要な情報だけに絞って取得するのも簡単なのでおすすめ。

Text形式

$ aws ec2 describe-vpcs --output text
VPCS    172.31.0.0/16   dopt-c5a7bca7   default True    available   vpc-9f1fc8fa
VPCS    10.0.0.0/16     dopt-c5a7bca7   default False   available   vpc-2ce93449
TAGS    Name    aws_book_vpc

Table形式

$ aws ec2 describe-vpcs --output table
---------------------------------------------------------------------------------------------------
|                                          DescribeVpcs                                           |
+-------------------------------------------------------------------------------------------------+
||                                             Vpcs                                              ||
|+---------------+----------------+------------------+------------+-------------+----------------+|
||   CidrBlock   | DhcpOptionsId  | InstanceTenancy  | IsDefault  |    State    |     VpcId      ||
|+---------------+----------------+------------------+------------+-------------+----------------+|
||  172.31.0.0/16|  dopt-c5a7bca7 |  default         |  True      |  available  |  vpc-9f1fc8fa  ||
|+---------------+----------------+------------------+------------+-------------+----------------+|
||                                             Vpcs                                              ||
|+-------------+----------------+-------------------+-------------+-------------+----------------+|
||  CidrBlock  | DhcpOptionsId  |  InstanceTenancy  |  IsDefault  |    State    |     VpcId      ||
|+-------------+----------------+-------------------+-------------+-------------+----------------+|
||  10.0.0.0/16|  dopt-c5a7bca7 |  default          |  False      |  available  |  vpc-2ce93449  ||
|+-------------+----------------+-------------------+-------------+-------------+----------------+|
|||                                            Tags                                             |||
||+------------------------------+--------------------------------------------------------------+||
|||              Key             |                            Value                             |||
||+------------------------------+--------------------------------------------------------------+||
|||  Name                        |  aws_book_vpc                                                |||
||+------------------------------+--------------------------------------------------------------+||

JSON形式

$ aws ec2 describe-vpcs --output json
{
    "Vpcs": [
        {
            "VpcId": "vpc-9f1fc8fa",
            "InstanceTenancy": "default",
            "State": "available",
            "DhcpOptionsId": "dopt-c5a7bca7",
            "CidrBlock": "172.31.0.0/16",
            "IsDefault": true
        },
        {
            "VpcId": "vpc-2ce93449",
            "InstanceTenancy": "default",
            "Tags": [
                {
                    "Value": "aws_book_vpc",
                    "Key": "Name"
                }
            ],
            "State": "available",
            "DhcpOptionsId": "dopt-c5a7bca7",
            "CidrBlock": "10.0.0.0/16",
            "IsDefault": false
        }
    ]
}

jqコマンドにパイプして使うと便利。 値の検索が簡単

$ aws ec2 describe-vpcs --output json | jq '.Vpcs[].VpcId'
"vpc-9f1fc8fa"
"vpc-2ce93449"

--filters

検索条件を指定して検索。 ある項目が特定の値であるという条件に合致する、サービスやリソースの情報を取得することができる。

定義できるFilterの条件は、Referenceの--filtersの項を参照。 例えば aws ec2 describe-vpcs で指定できるFilterは、以下に記載されている。

describe-vpcs — AWS CLI 1.7.24 documentation

実行例

$ aws ec2 describe-vpcs --filters "Name=cidr,Values=10.0.0.0/16"
{
    "Vpcs": [
        {
            "VpcId": "vpc-2ce93449",
            "InstanceTenancy": "default",
            "Tags": [
                {
                    "Value": "vpc-awsbook",
                    "Key": "Name"
                }
            ],
            "State": "available",
            "DhcpOptionsId": "dopt-c5a7bca7",
            "CidrBlock": "10.0.0.0/16",
            "IsDefault": false
        }
    ]
}

--query

出力結果のに含める項目の絞り込み。 サービスやリソースの、特定の項目の情報だけ取得することができる。

定義できるQueryの条件は、ReferenceのOutputの項を参照。 例えば aws ec2 describe-vpcs で指定できるQueryは、以下に記載されている。

describe-vpcs — AWS CLI 1.7.24 documentation

実行例

$ aws ec2 describe-vpcs --query 'Vpcs[].VpcId[]'
[
    "vpc-6d11cc08",
    "vpc-9f1fc8fa",
    "vpc-2ce93449"
]

--filtersと--queryは組み合わせて使うと便利。

$ aws ec2 describe-vpcs --filters "Name=cidr,Values=10.0.0.0/16" --query 'Vpcs[].VpcId[]'
[
    "vpc-2ce93449"
]

EC2インスタンスのNameタグを取得する

aws ec2 describe-instances --instance-ids INSTANCE_ID --query 'Reservations[].Instances[].Tags[?Key==`Name`].Value' --output text

全てのインスタンスの情報を取得

aws ec2 describe-instances | jq '.Reservations[].Instances[]'

全てのインスタンスの Public IP と Public DNS Name を取得

aws ec2 describe-instances | jq '.Reservations[].Instances[] | {PublicDnsName, PublicIpAddress}' 

全てのインスタンスのタグ名を取得

aws ec2 describe-instances | jq '.Reservations[].Instances[]|{InstanceId, Tags}' 

インスンタンスへ ssh でアクセスするのに必要な情報を取得

aws ec2 describe-instances --filters Name=tag-value,Values="XXXX" |jq '.Reservations[].Instances[]|{InstanceId,PublicIpAddress,PrivateIpAddress,Tags}' 

PublicIpAddressを取得

aws ec2 describe-instances | jq '.Reservations [] .Instances [] .PublicIpAddress'

インスタンスIDを取得

aws ec2 describe-instances | jq -r '.Reservations[] .Instances[] .InstanceId'
aws ec2 describe-instances | jq '.Reservations[] .Instances[] .InstanceId'

Elastic IPの一覧を取得

aws ec2 describe-addresses| jq '.'

PublicDnsName, PublicIpAddress, Tagsの一覧を取得

aws ec2 describe-instances | jq '.Reservations[].Instances[] | {PublicDnsName, PublicIpAddress, Tags}'

AutoScalingで起動しているインスタンスの状態,InstanceID,PublicDnsName,PublicIpAddressの一覧を取得

aws ec2 describe-instances --filters "Name=tag:aws:autoscaling:groupName,Values=YOUR AUTOSCALING GROUP NAME" | jq '.Reservations[].Instances[] | {State, InstanceId, PublicDnsName, PublicIpAddress}'

自分で作成したAMIのName,ImageIdの一覧を取得

aws ec2 describe-images --owners self | jq '.Images[] | {Name, ImageId}'

自分で作成したAMIに特定のtagが付いているName,ImageIdの一覧を取得

aws ec2 describe-images --owners self --filter Name=tag-key,Values=YOUR TAG NAME Name=tag-value,Values=YOUR TAG VALUES | jq '.Images[] | {Name, ImageId}'

自分で作成したSnapshotに特定のtagが付いているSnapshotIdの一覧を取得

aws ec2 describe-snapshots --filter Name=tag-key,Values=YOUR TAG NAME Name=tag-value,Values=YOUR TAG VALUES | jq '.Snapshots[] .SnapshotId'

東京リージョンのEBSのVolumeId,SnapshotId,Sizeの一覧を取得

aws ec2 describe-volumes --region ap-northeast-1 | jq '.Volumes[]| {VolumeId, SnapshotId, Size}'

対象のAutoScalingグループで稼働中のインスタンスIDを取得

aws ec2 describe-instances --filter 'Name=tag:aws:autoscaling:groupName,Values=demo-asg' "Name=instance-state-name,Values=running" | jq '.Reservations[].Instances[] | {InstanceId}'

Auto Scaling グループのインスタンスの更新(min, max変更)

aws autoscaling update-auto-scaling-group --auto-scaling-group-name demo-asg --min-size 2 --max-size 8

AutoScalingスケジュール実行

aws autoscaling put-scheduled-update-group-action --auto-scaling-group-name demo-asg --scheduled-action-name "demo-scaling-1100-1500" --recurrence "0 2 * * *" --min-size 2 --max-size 8 --desired-capacity 3

AutoScalingグループに設定されたインスタンスの設定

aws autoscaling describe-auto-scaling-groups --auto-scaling-group-names demo-asg | jq '.AutoScalingGroups[] | {MinSize, DesiredCapacity, MaxSize}'

AWS EC2 で取得しているグローバルIP(Elastic IP)を CLI で一覧する

aws ec2 describe-addresses | jq '.[] | .[] | .PublicIp' | sed 's/\"//g'

セキュリティグループID指定して設定内容確認

aws ec2 describe-security-groups --query 'SecurityGroups[?GroupId==`sg-12345678`]'

停止しているインスタンスIDの一覧を確認

aws ec2 describe-instances --filter "Name=instance-state-name,Values=stopped" --query 'Reservations[].Instances[].[InstanceId]'

削除保護を無効化

aws ec2 modify-instance-attribute --instance-id i-xxxxxx --no-disable-api-termination

List AWS API Gateway Methods

aws apigateway get-resources --rest-api-id {api-id} | jq '.items[] | select(has("resourceMethods")) | .path'

List lambda functions

aws lambda list-functions --query 'Functions[].FunctionName'
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment