これはなに?
EC2やLambdaなどのリソース情報をCSV形式で取得するAWS CLIコマンド群。
コスト削減を目的としてデータ集めていたので、課金に関連するパラメータが多いです。
実行環境はWindows。
目次
実行環境
- Microsoft Windows 10 Pro
- jqコマンド
コマンド内では、 ”jq” で実行できるようにしています。環境に合わせて読み替えてください。
以下から実行ファイルダウンロードできます。
jq
コマンドリスト
--profile <your_profile_name> の箇所を自身のクレデンシャルに設定している値に置換してください。
--queryとjqのパラメータ変更すれば自身の好きな値を取得できるようになるので、よしなに。 クエリの指定の仕方は以下参照。
AWS CLI からのコマンド出力の制御 - AWS Command Line Interface
また、csvにヘッダー行を入れていないので、コマンド内に説明入れてあります。
実行イメージ
EC2
aws ec2 describe-instances --profile <your_profile_name> --output json --query "Reservations[].Instances[].{Name:Tags[?Key==`Name`].Value,InstanceId:InstanceId,InstanceType:InstanceType,LaunchTime:LaunchTime,State:State.Name,Platform:Platform}" | jq -r ".[] | [.Name[0],.InstanceType,.InstanceId,.LaunchTime,.State,.Platform] | @csv"
# |
カラム |
説明 |
1 |
Name |
Nameタグ |
2 |
InstanceType |
インスタンスタイプ |
3 |
InstanceId |
インスタンスID |
4 |
LaunchTime |
起動日時 |
5 |
Platform |
Windowsの場合のみ? 表示 |
EBS
aws ec2 describe-volumes --profile <your_profile_name> --output json --query "Volumes[].{VolumeId:VolumeId,Size:Size,State:State,VolumeType:VolumeType,Name:Tags[?Key==`Name`].Value,CreateTime:CreateTime}"| jq -r ".[]| [.VolumeId,.VolumeType,.Size,.State,.Name[0],.CreateTime]|@csv"
# |
カラム |
説明 |
1 |
VolumeId |
EBSボリュームID |
2 |
VolumeType |
EBSボリュームタイプ |
3 |
Size |
EBSボリュームサイズ |
4 |
State |
EBSの状態 |
5 |
Name |
あればNameタグ |
6 |
CreateTime |
作成日 |
EBS スナップショット
aws ec2 describe-snapshots --owner self --output json --profile <your_profile_name> --query "Snapshots[].{SnapshotId:SnapshotId,VolumeId:VolumeId,VolumeSize: VolumeSize,State:State,StartTime:StartTime,Description:Description}"|jq -r ".[]| [.SnapshotId,.VolumeId,.VolumeSize,.State,.StartTime]|@csv"
# |
カラム |
説明 |
1 |
SnapshotId |
スナップショットID |
2 |
VolumeId |
元となっているEBSボリュームID |
3 |
VolumeSize |
EBSスナップショットのボリュームサイズ |
4 |
State |
スナップショットの状態 |
5 |
StartTime |
スナップショットを取得開始した日時 |
Lambda
aws lambda list-functions --profile <your_profile_name> --query "Functions[].{FunctionName:FunctionName,Runtime:Runtime,Timeout:Timeout,MemorySize:MemorySize}" |jq -r ".[] | [.FunctionName,.Runtime,.MemorySize,.Timeout] | @csv"
# |
カラム |
説明 |
1 |
FunctionName |
Lamnbdaファンクション名 |
2 |
Runtime |
ランタイム |
3 |
MemorySize |
メモリサイズ |
4 |
Timeout |
タイムアウト |
Glue Jobs
aws glue get-jobs --profile <your_profile_name> --query "Jobs[].{Name:Name,JobLanguage:DefaultArguments,Timeout:Timeout,MaxCapacity:MaxCapacity}"|jq -r ".[]| [.Name,.JobLanguage[\"--job-language\"],.Timeout,.MaxCapacity] | @csv"
# |
カラム |
説明 |
1 |
Name |
Glueジョブ名 |
2 |
job-language |
ランタイム |
3 |
Timeout |
タイムアウト |
4 |
MaxCapacity |
DPUの割り当て値 |
CloudWatch Logs
aws logs describe-log-groups --profile <your_profile_name> --query "logGroups[].{logGroupName:logGroupName,storedBytes:storedBytes,creationTime:creationTime}"| jq -r ".[]|[.logGroupName,.storedBytes,.creationTime] | @csv"
# |
カラム |
説明 |
1 |
logGroupName |
CloudwatchLogs名 |
2 |
storedBytes |
データ保存量 |
3 |
creationTime |
作成日 |
CloudWatch Events
aws events list-rules --profile <your_profile_name> --query "Rules[].{Name:Name,State:State,ScheduleExpression:ScheduleExpression}"|jq -r ".[]|[.Name,.State,.ScheduleExpression] | @csv"
# |
カラム |
説明 |
1 |
Name |
CloudWatchEvents名 |
2 |
State |
状態。有効/無効 |
3 |
ScheduleExpression |
スケジュール実行の場合は、実行日時 |
S3
aws s3api list-buckets --profile <your_profile_name> --query "Buckets[].{Name:Name,CreationDate:CreationDate}" | jq -r ".[]|[.Name,.CreationDate] | @csv"
# |
カラム |
説明 |
1 |
Name |
S3バケット名 |
2 |
CreationDate |
作成日時 |
本当は保存量も取れたらよかったのですが、コマンド一発じゃ厳しそうなので、いったん保留。
Stepfunctions ステートマシン
aws stepfunctions list-state-machines --profile <your_profile_name> --query "stateMachines[].{name:name,creationDate:creationDate}"|jq -r ".[]|[.name,.creationDate] | @csv"
# |
カラム |
説明 |
1 |
name |
ステートマシン名 |
2 |
creationDate |
作成日時 |
Cost
aws ce get-cost-and-usage --time-period Start=YYYY-MM-DD,End=YYYY-MM-DD --granularity MONTHLY --metrics "BlendedCost" "UnblendedCost" "UsageQuantity" --group-by Type=DIMENSION,Key=SERVICE Type=TAG,Key=Environment --profile <your_profile_name> --query "ResultsByTime[].Groups[].{Keys:Keys,BlendedCost:Metrics.BlendedCost.Amount}"|jq -r ".[]|[.Keys[0],.BlendedCost] | @csv"
# |
カラム |
説明 |
1 |
SERVICE Type |
サービス名 |
2 |
BlendedCost |
混合コスト |
コスト関連もCLIで取得できるのいいですね。 BlendedCost の意味は以下参照。
明細項目の詳細 - AWS コストと使用状況レポート
IAM User
aws iam list-users --profile <your_profile_name> --query "Users[].{UserName:UserName,Arn:Arn,CreateDate:CreateDate,PasswordLastUsed:PasswordLastUsed}"|jq -r ".[]|[.UserName,.Arn,.CreateDate,.PasswordLastUsed] | @csv"
# |
カラム |
説明 |
1 |
UserName |
IAM ユーザー名 |
2 |
Arn |
Arn |
3 |
CreateDate |
IAMユーザー作成日 |
4 |
PasswordLastUsed |
IAMユーザー最終利用日 パスワードを保持している場合のみ |
github
一応githubにもコード上げました。
github.com