⚒️

AWS CLIの出力をMarkdownテーブルに変換するツール「aws2md」を作ってみた

に公開

AWS CLIの出力はデフォルトのJSONに加え、yamlや独自フォーマットのテーブル表示を選択できます(関連リンク参照)。

このテーブル表示も見やすいのですが、技術的なドキュメントの多くは最近ではMarkdownで書かれることも多く、Markdown形式のテーブルであれば装飾もききます。そこで出力をMarkdownに変換するツール「aws2md」を作ってみました。

https://github.com/kuredev/aws2md

できること

  • AWS CLIのJSON出力をMarkdownのテーブル形式で表示
  • 縦表示・横表示の切り替えに対応
  • ネストした配列やオブジェクトも再帰的に処理
  • パイプでそのまま使えるCLIツール

こんな感じで動きます(実行イメージ)

実行イメージは以下の通りです。AWS CLIのデフォルトの出力をパイプで本ツール(aws2md)にわたすとMarkdownテーブル形式で出力します。


$ aws ec2 describe-vpcs | aws2md

# Vpcs

## Vpc.0
| OwnerId      | InstanceTenancy | IsDefault | VpcId                 | State     | CidrBlock   | DhcpOptionsId |
|--------------|-----------------|-----------|-----------------------|-----------|-------------|---------------|
| 111111111111 | default         | false     | vpc-xxxxxxxxxxxxx | available | 10.0.0.0/16 | dopt-xxxxxxxxx |

### CidrBlockAssociationSet

#### CidrBlockAssociationSet.0
| AssociationId                    | CidrBlock   |
|----------------------------------|-------------|
| vpc-cidr-assoc-xxxxxxxxxxx | 10.0.0.0/16 |

出力した結果をここに貼り付けるとMarkdownテーブルの装飾が効くのが分かります。

Vpcs

Vpc.0

OwnerId InstanceTenancy IsDefault VpcId State CidrBlock DhcpOptionsId
111111111111 default false vpc-xxxxxxxxxxxxxx available 10.0.0.0/16 dopt-xxxxxxx

CidrBlockAssociationSet

CidrBlockAssociationSet.0

AssociationId CidrBlock
vpc-cidr-assoc-xxxxxxxxxxxxxxx 10.0.0.0/16

使い方

Rubyが入っていれば、以下のコマンドでインストールできます:

gem install aws2md

横向きに項目名を表示するのがデフォルトで、オプションなしまたは h でそうなります。

aws ec2 describe-vpcs | aws2md --output h

v オプションを渡すと縦向きになります。

aws ec2 describe-vpcs | aws2md --output v

リソースの属性の種類が多いケースが多いので、横向きだとターミナル表示したときに入り切らないことが多く、ターミナルで完結するなら縦表示の方が見やすいかもしれません(AWS CLIに備わっているテーブル表示機能は自動でそれらが切り替わるようになっていて便利です)。
ただし、Markdownのテーブルは見出しの設定が必須であるため、項目名(Key)と項目の値(Value)を見出しとして各テーブルに必ず表示するようにしているため、少し冗長かもしれません。

$ aws ec2 describe-vpcs | exe/aws2md --output v                              

# Vpcs

## Vpc.0
| Key             | Value                 |
|-----------------|-----------------------|
| OwnerId         | 111111111111          |
| InstanceTenancy | default               |
| IsDefault       | false                 |
| VpcId           | vpc-xxxxxxxxxxxxxxxx |
| State           | available             |
| CidrBlock       | 10.0.0.0/16           |
| DhcpOptionsId   | dopt-xxxxxxxx         |

### CidrBlockAssociationSet

#### CidrBlockAssociationSet.0
| Key           | Value                            |
|---------------|----------------------------------|
| AssociationId | vpc-cidr-assoc-xxxxxxxxxx |
| CidrBlock     | 10.0.0.0/16                      

おわりに

小さなツールですが、「CLIの出力を読みやすくしたい」「ドキュメントに貼るのを楽にしたい」といった場面で役立つかもしれません。
作り手としては、AWS CLIのソースコードをよく読んだので勉強になりました。

関連リンク

https://docs.aws.amazon.com/ja_jp/cli/latest/userguide/cli-usage-output-format.html

Discussion