aws-cliでEC2,RDSマネージメントコンソールの内容をCSVに出力する

# 一覧作成
## EC2
```shell-session:
$ aws ec2 describe-instances | jq -r '.Reservations[].Instances[]' > ec2_instance_list.json

$ echo '"Name","インスタンスの状態","インスタンスID","インスタンスタイプ","VPC ID","テナンシー","アベイラビリティゾーン","プラットフォーム","パブリック DNS (IPv4)","IPv4 パブリックIP","プライベート IP"' > ec2_instance_list.csv
$ aws ec2 describe-instances | jq -r '.Reservations[].Instances[] | [ ( .Tags[]| select(.Key == "Name") | .Value ) // "", .State.Name, .InstanceId, .InstanceType, .VpcId, .Placement.Tenancy, .Placement.AvailabilityZone, .Platform, .PublicDnsName, .PublicIpAddress, .PrivateIpAddress ] | @csv' >> ec2_instance_list.csv
$ iconv -f UTF-8 -t SHIFT_JIS ec2_instance_list.csv > ec2_instance_list-shift_jis.csv
```

## RDS
```shell-session:
$ aws rds describe-db-instances > rds_instance_list.json

$ echo '"DB 識別子","DB クラスター識別子","ステータス","サイズ","エンジン","エンジンバージョン","ストレージタイプ","ストレージ","IOPS","リージョンと AZ","マルチ AZ","DB サブネットグループ名","VPC ID","パラメータグループ","パフォーマンスインサイト","バックアップ保持期間","バックアップウィンドウ","マイナーバージョン自動アップグレード","メンテナンスウィンドウ","作成時刻"' > rds_instance_list.csv
$ aws rds describe-db-instances | jq -r '.DBInstances[] | [  .DBInstanceIdentifier, .DBClusterIdentifier, .DBInstanceStatus, .DBInstanceClass, .Engine, .EngineVersion, .StorageType, .AllocatedStorage, .Iops, .AvailabilityZone, .MultiAZ, .DBSubnetGroup.DBSubnetGroupName, .DBSubnetGroup.VpcId, .DBParameterGroups[].DBParameterGroupName, .PerformanceInsightsEnabled, .BackupRetentionPeriod, .PreferredBackupWindow, .AutoMinorVersionUpgrade, .PreferredMaintenanceWindow, .InstanceCreateTime ] | @csv' >> rds_instance_list.csv
$ iconv -f UTF-8 -t SHIFT_JIS rds_instance_list.csv > rds_instance_list-shift_jis.csv
```

## Elasticache
```shell-session:
$ aws elasticache describe-cache-clusters > elasticache_node_list.json

$ echo '"ノード名","クラスター名","ステータス","ノードのタイプ","モード","エンジンのバージョン","送信中の暗号化","保管時の暗号化","アベイラビリティーゾーン","サブネットグループ","パラメータグループ","バックアップの保存期間","バックアップウィンドウ","マイナーバージョン自動アップグレード","メンテナンスウィンドウ","クラスター作成時刻"' > elasticache_node_list.csv
$ aws elasticache describe-cache-clusters | jq -r '.CacheClusters[] | [  .CacheClusterId, .ReplicationGroupId, .CacheClusterStatus, .CacheNodeType, .Engine, .EngineVersion, .TransitEncryptionEnabled,.AtRestEncryptionEnabled, .PreferredAvailabilityZone, .CacheSubnetGroupName, .CacheParameterGroup.CacheParameterGroupName, .SnapshotRetentionLimit, .SnapshotWindow, .AutoMinorVersionUpgrade, .PreferredMaintenanceWindow, .CacheClusterCreateTime ] | @csv' >> elasticache_node_list.csv
$ iconv -f UTF-8 -t SHIFT_JIS elasticache_node_list.csv > elasticache_node_list-shift_jis.csv
```

それぞれのコマンドでは以下の処理を実行しています。

1. 行目：各サービスのリソース一覧をほぼ未加工のjson形式で作成します。
    1. 作成したjsonは抜き出したい項目を手動で確認する場合に使用しました。
    1. 一覧を作成するだけなら実行不要です。
1. 行目：一覧のヘッダーをcsvファイルの先頭行に書き込んでいます。
    1. 一覧にヘッダー行が不要であれば実行不要です。
1. 行目：返り値(json)から欲しいデータだけをcsv形式で抜き出して、指定ファイルに追記しています。
1. 行目：作成したcsvファイルのshift_jis版ファイルを変換して作成します。
    1. ヘッダーに日本語を使用している為にcsvをExcelで開いた際に文字化けしてしまう問題の対処です。
    1. Excelを使用しない場合やヘッダーに文字化けする文字（日本語等）を使用しない場合は実行不要です。

3行目のみ実行した場合でも一覧の作成は可能です。
取得するインスタンスIDを指定したり、インスタンスの状態によって取得するインスタンスをフィルターしたい場合は、[AWS CLIを使ってEC2インスタンスの情報を取得する - Qiita](https://qiita.com/toshiro3/items/37821bdcc50c8b6d06dc)を参考に`--instance-ids`オプションや`--filter`オプションを用いてフィルタリングします。