はじめに
オンプレミスのサーバやネットワーク機器を運用している場合、設定しているパラメータをまとめたパラメータシートを作成して管理する方法がよく行われているかと思います。
クラウド環境の場合、ダッシュボードを見れば設定値等わかるため、以前よりは使われる機会が減っているかもしれませんが、例えばAWSの場合、サービスも多く、横断的に確認するには手間だったりします。
AWS等のクラウドサービスでは、コマンドでJsonなどの形式で設定値を確認したりすることができ、jq
を使えば整形することもできるので、書式もわかりやすく見栄えがいいMarkdown
形式のドキュメントを生成するツールを作成して、以下のGitHub
リポジトリで公開しましたので簡単に紹介したいと思います。
注意点
個人の制作物となり、ツールを使用して問題が生じた場合でも自己責任となりますので、その点理解したうえでご使用頂ければと思います。
AWSリソースのパラメータ取得ツールについて
詳しくはGitHub
リポジトリのREADMEを参照してもらえればと思いますが、ツールの本体となる「create_document_shell」内のcreate_document.sh
を実行することでMarkdown
形式のパラメータ一覧を作成することができます。
一覧の作成にはAWS環境へアクセスするためのアカウント設定やjq
コマンドのインストールが必要となるので、事前に準備しておいてください。
以下のようにcreate_document.sh
シェルの引数としてresource
ディレクトリ配下に格納されているファイル名を指定することで、指定したリソースの情報を取得し、docs
ディレクトリ配下に[リソース名]_list.md
というファイルが生成されます。
./create_document.sh IAM
生成されたドキュメントは以下のようなMarkdown
形式で出力されます。
# IAM
## IAM Policy(カスタマー管理ポリシー) (ap-northeast-1)
|ポリシー名|アタッチ済みの許可ポリシー数|アタッチ済みの境界ポリシー数|ARN|ポリシーID|
|:--|:--|:--|:--|:--|
|IAMSelfManagement-20240318054455207000000001|0|0|arn:aws:iam::211125643235:policy/IAMSelfManagement-20240318054455207000000001|ANPATCKARU7R3GPQK2KFI|
|IAMSelfManagement-20240318054455209900000002|0|0|arn:aws:iam::211125643235:policy/IAMSelfManagement-20240318054455209900000002|ANPATCKARU7RW6AGIDCCQ|
|IAMSelfManagement-20240318054455212000000003|0|0|arn:aws:iam::211125643235:policy/IAMSelfManagement-20240318054455212000000003|ANPATCKARU7RQZODQ6J6U|
|example_from_data_source|0|0|arn:aws:iam::211125643235:policy/example_from_data_source|ANPATCKARU7R74F5DZUAL|
## IAM Role (ap-northeast-1)
|ロール名|Description|ARN|ロールID|
|:--|:--|:--|:--|
|AWS-QuickSetup-DHMCRole-tgvp3-ap-northeast-1|Do Not Modify or Delete. This resource has been created to support the deployment of DHMC Quick Setup configuration, and modification or deletion of this resource may hinder the functionality of that Quick Setup configuration.|arn:aws:iam::211125643235:role/AWS-QuickSetup-DHMCRole-tgvp3-ap-northeast-1|AROATCKARU7RT3DINN7XY|
|AWS-QuickSetup-DHMCRole-tgvp3-ap-northeast-2|Do Not Modify or Delete. This resource has been created to support the deployment of DHMC Quick Setup configuration, and modification or deletion of this resource may hinder the functionality of that Quick Setup configuration.|arn:aws:iam::211125643235:role/AWS-QuickSetup-DHMCRole-tgvp3-ap-northeast-2|AROATCKARU7RXIMGQLW5U|
|AWS-QuickSetup-DHMCRole-tgvp3-ap-south-1|Do Not Modify or Delete. This resource has been created to support the deployment of DHMC Quick Setup configuration, and modification or deletion of this resource may hinder the functionality of that Quick Setup configuration.|arn:aws:iam::211125643235:role/AWS-QuickSetup-DHMCRole-tgvp3-ap-south-1|AROATCKARU7RS5VOEMFZF|
|AWS-QuickSetup-DHMCRole-tgvp3-ap-southeast-1|Do Not Modify or Delete. This resource has been created to support the deployment of DHMC Quick Setup configuration, and modification or deletion of this resource may hinder the functionality of that Quick Setup configuration.|
以下、VS CodeでMarkdown Previewした場合の例。
GitHub ActionsとGitHub Pagesを使用したドキュメント生成ツール
「create_document_github」はワークフローファイルに書いた内容を定期実行したり、pushを契機に実行したりできるGitHub Actions
と、リポジトリの特定ディレクトリを静的ページとして公開することができるGitHub Pages
を使って、定期的にドキュメントを生成してパラメータ一覧のページを公開するツールとなります。
複数アカウントのパラメータをまとめて見ることができる作りにしているため、複数アカウント管理している場合に効果を発揮します。
注意点として、GitHub Pages
はPrivate
リポジトリでは公開できず、一般アカウントではPublic
リポジトリにする必要があります。
Public
リポジトリは、誰でもアクセスできる状態で全体に公開されてしまうため、使用する場合は、GitHub Organizationが設定できるプランでOrganization、Team設定を行い、特定ユーザのみアクセスできるInternal
リポジトリにしたうえで公開するようにしてください。
生成したドキュメントの例
複数システム、複数環境のパラメータ一覧ページを生成した場合、以下のような表示になります。
- トップページ
- 環境一覧画面
- パラメータ一覧画面
AWSのサービスのみ使用したドキュメント生成ツール
「create_document_codebuild」はGitHub
を使用できない環境の場合でも「GitHub ActionsとGitHub Pagesを使用したドキュメント生成ツール」と同じように、定期的にドキュメントを生成してパラメータ一覧のページを公開するツールとなります。
ページの公開はS3の静的Webサイトホスティング機能で公開しているため、プロトコルはHTTP
となり、IPアドレス等のアクセス制限を行わないと全体に公開されてしまうため、使用する場合は十分に注意してください。
そのため実運用する場合はAWS WAF
、CloudFront
を挟んで、WAF
でアクセス制限を行ったり、S3バケットポリシーでアクセス元IPアドレスを制限したりしてください。
なお、公開用のHTML生成には、GitHub Pages
でドキュメント生成する際に使用しているものと同じJekyll
を使用しているため、ページの見え方はGitHub Pages
で見た場合と同じです。
おわりに
一般的なサービスはパラメータ取得できるようにしていますが、まだまだ足りないサービス等も多いツールとなります。
create_document_shell
配下のresource
に格納されているファイルを見てもらえれば分かる通り、基本的にはAWS CLIでパラメータを取ってきて、jq
コマンドで整形しているだけなので、もし足りないサービスがあれば、自分で作ってみるのも良いと思います。