🧑💻
[AWS]CLI便利コマンド
複数AWSアカウント運用していてEC2やRDSの状態を確認したい場合、
- マネージメントコンソール (AWS SSO運用でも)ログインしなおすのが面倒
- CLI コマンドを調べるのが面倒 以下コマンドを
alias
か/usr/local/bin
などで登録してあると確認が楽。
前提条件
- aws cli v2 (v1でも動くかもしれないが未検証)
- jq インストール済
EC2一覧
aws ec2 describe-instances \
| jq -r '.[][].Instances[]
| [[.Tags[] | select(.Key == "Name").Value][],
.InstanceId,
.PrivateIpAddress,
.InstanceType,
.LaunchTime,
.State.Name,
.PublicIpAddress
]
| @tsv' | \
column -t
AMI一覧
- AMI一覧を名前でソートしてcsvで出力する。
ownersの箇所にself
をいれないと全てのパブリックイメージを一覧化しようとするので注意
aws ec2 describe-images \
--query 'sort_by(Images[*].{A_Name:Name,B_IMAGEID:ImageId,C_Date:CreationDate,D_SNAPSHOTID:join(`,`,BlockDeviceMappings[].Ebs.SnapshotId)},&A_Name)' \
--owners self \
--output text | sed s%\\t%,%g
スナップショット一覧
owner-idsの箇所にself
をいれないと全てのパブリックスナップショットを一覧化しようとするので注意
aws ec2 describe-snapshots \
--owner-ids self \
--query "sort_by(Snapshots[*].{ID:SnapshotId,Time:StartTime,V_ID:VolumeId,Name:Tags[?Key=='Name'] | [0].Value},&Time)" \
--output text | sort -k3 | sed s%\\t%,%g
RDS一覧
echo "======= RDS Cluster =========="
aws rds describe-db-clusters | \
jq -r '.[][]
| [.DBClusterIdentifier,
.Status,
.Endpoint]
| @tsv' | \
column -t
echo "======= RDS Instance =========="
aws rds describe-db-instances | \
jq -r '.[][]
| [.DBInstanceIdentifier,
.DBInstanceClass,
.DBClusterIdentifier,
.DBInstanceStatus]
| @tsv' | \
column -t
echo "==== RDS Writer Instance ===="
aws rds describe-db-clusters --query "DBClusters[].[DBClusterIdentifier,DBClusterMembers[].[DBInstanceIdentifier,IsClusterWriter]]" --output text
ElastiCache一覧
aws elasticache describe-cache-clusters | \
jq -r '.[][]
| [.CacheClusterId,
.CacheNodeType,
.CacheClusterStatus,
.ReplicationGroupId]
| @tsv' | \
column -t
おまけ
RI/SavingsPlans一覧
#!/bin/bash
echo " =========== EC2 RI 確認 ============="
aws ec2 describe-reserved-instances \
| jq -r '.ReservedInstances[] |
[
.InstanceType,
.InstanceCount,
.Start,
.End,
.State
] | @tsv' | \
column -t | sort -k5
echo " =========== RDS RI 確認 ============="
aws rds describe-reserved-db-instances \
| jq -r '.ReservedDBInstances[] |
[
.DBInstanceClass,
.DBInstanceCount,
.StartTime,
.Duration,
.State
] | @tsv' | \
column -t | sort -k5
echo " =========== ElastiCache RI 確認 ============="
aws elasticache describe-reserved-cache-nodes \
| jq -r '.ReservedCacheNodes[] |
[
.CacheNodeType,
.CacheNodeCount,
.StartTime,
.Duration,
.State
] | @tsv' | \
column -t | sort -k5
echo " =========== OpenSearch RI 確認 ============="
aws opensearch describe-reserved-instances \
| jq -r '.ReservedInstances[] |
[
.InstanceType,
.InstanceCount,
.StartTime,
.Duration,
.State
] | @tsv' | \
column -t | sort -k5
echo " =========== SavingsPlans確認 ============="
_DATE=$(date +%Y-%m-%d)
_DATE_1Y=$(date -v-1y +%Y-%m-%d)
aws ce get-savings-plans-utilization-details --time-period Start=${_DATE_1Y},End=${_DATE} | jq -r '.SavingsPlansUtilizationDetails[].Attributes |
[
.InstanceFamily,
.HourlyCommitment,
.StartDateTime,
.EndDateTime,
.Status
] | @tsv'
Discussion