AWSの情報をCSV出力するワンライナー

# 概要
EC2インスタンスの情報だとかRDSの情報だとかいろいろ一覧にして作業したいとき用のワンライナー
出力をスプレッドシートに貼り付けて,で列に分ければ表管理できるので便利

csv楽でいいんですよね、csv

# 前提
- 各種資産を取得できるIAMの権限
- ローカル端末はMacを使用
- jqが必要

## EC2

インスタンス名,インスタンスID,インスタンスタイプ,ステータス,作成日時
で出力し、クリップボードへ保存

```bash:Command
aws ec2 describe-instances \
    --query "Reservations[].Instances[].{InstanceId:InstanceId, InstanceType:InstanceType, State:State.Name, Name: Tags[?Key==\`Name\`].Value, LaunchTime:LaunchTime}" \
    --output json | 
    jq -r ".[] | [.Name[0], .InstanceId, .InstanceType, .State, .LaunchTime] | @csv" | pbcopy
```

## RDS

DBインスタンス名,DBエンジン,インスタンスタイプ,DB名,ステータス,作成時間
で出力し、クリップボードへ保存

```bash:Command
aws rds describe-db-instances \
    --query "DBInstances[].{DBInstanceClass:DBInstanceClass, DBInstanceIdentifier:DBInstanceIdentifier, DBName:DBName, Engine:Engine, Status:DBInstanceStatus, InstanceCreateTime:InstanceCreateTime}" \
    --output json |
    jq -r ".[] | [.DBInstanceIdentifier, .Engine, .DBInstanceClass, .DBName, .Status , .InstanceCreateTime] | @csv" | pbcopy
```

## ElasticBeanstalk

アプリケーション名,環境名,ステータス.作成日時,最終更新日時
で出力し、クリップボードへ保存

```bash:Command
aws elasticbeanstalk describe-environments \
    --query "Environments[].{ApplicationName:ApplicationName, EnvironmentName:EnvironmentName, Status:Status, DateUpdated:DateUpdated, DateCreated:DateCreated}" \
    --output json |
    jq -r ".[] | [.ApplicationName, .EnvironmentName, .Status, .DateCreated, .DateUpdated ] | @csv" | pbcopy
```

## ElastiCache

ノード名,エンジン,ノードタイプ,ステータス,作成日時
で出力し、クリップボードへ保存

```bash:Command
aws elasticache describe-cache-clusters \
    --query "CacheClusters[].{Status:CacheClusterStatus, CacheNodeType:CacheNodeType, Engine:Engine, CacheClusterId:CacheClusterId, CacheClusterCreateTime:CacheClusterCreateTime}" \
    --output json |
    jq -r ".[] | [.CacheClusterId, .Engine, .CacheNodeType, .Status, .CacheClusterCreateTime] | @csv" | pbcopy
```

## Cloudwatch logs
ロググループ毎の補完量と保管期間をログ量の降順で出力

```bash:Command
aws logs describe-log-groups \
    --query "logGroups[].{logGroupName:logGroupName, retentionInDays:retentionInDays, storedBytes:storedBytes}" \
    --output json |
    jq -r "sort_by(.storedBytes)| reverse | .[] | [.logGroupName, .storedBytes, .retentionInDays] | @csv" | pbcopy
```

## VPC

```bash:Command
aws ec2 describe-vpcs \
	--query "Vpcs[].{VpcId:VpcId, Name:Tags[?Key==\`Name\`].Value, CidrBlock:CidrBlock, AccountId:OwnerId, IsDefaultVpc:IsDefault}" \
	--region ap-northeast-1 \
	--output json | jq -r ".[] | [.AccountId, .Name[0], .VpcId, .CidrBlock, .IsDefaultVpc] | @csv" | pbcopy
```

## VPC peering
ステータスがactiveなもののみ表示

```bash:Command
aws ec2 describe-vpc-peering-connections \
	--query "VpcPeeringConnections[].{VpcPeeringConnectionId:VpcPeeringConnectionId, Name: Tags[?Key==\`Name\`].Value, AccepterAccountId:AccepterVpcInfo.OwnerId, AccepterVpcId:AccepterVpcInfo.VpcId, AccepterCidrBlock:AccepterVpcInfo.CidrBlock, RequesterAccountId:RequesterVpcInfo.OwnerId, RequesterVpcId:RequesterVpcInfo.VpcId, RequesterCidrBlock:RequesterVpcInfo.CidrBlock, Status:Status.Code}" \
	--region ap-northeast-1 \
	--output json |
	jq -r ".[] | select(.Status == \"active\") | [.VpcPeeringConnectionId, .Name[0], .AccepterAccountId, .AccepterVpcId, .AccepterCidrBlock, .RequesterAccountId, .RequesterVpcId, .RequesterCidrBlock] | @csv" | pbcopy
```