0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

EC2とEBSをセットで一覧表示

Posted at

よくあるケース

EC2を中心としたAWS環境を運用管理していると、以下のような質問をされることがあります。

「このサーバーって、何GBのディスクが何個ついているの?合計何GBなの?」
「他のサーバーはどう?全サーバーとも教えてほしいんだけど、Excelでちょうだい。」
「この500GBのディスクって、HDD?SSD?」

オンプレでよくあった質問ですが、クラウドでもよくあったりします。

AWSマネージメントコンソール(マネコン)で、EC2とそれにアタッチされたEBSの情報を取得しようとすると、EC2インスタンスごとには確認できますが、サーバー数が多いと急に困ってしまいます。
また、EC2に複数のEBSがアタッチされている場合、マネコンではその合計容量が表示されることもありません。
さらに、マネコンではExcelでダウンロードできる機能もありません。

デモページ

この問題を解決するために、EC2とEBSをセットで一覧表示するWebページを作成してみました。

以下がそのデモページです。
このデモでは、各EC2と、それにアタッチされたEBSのサイズやタイプを一覧で表示することができます。
また、一覧データをExcel形式でダウンロードする機能もあります。

デモページの動作

以下の流れで動作します。

  1. 静的Webサイト(HTMLとJavascript)がWebブラウザに読み込まれます
  2. Javasciprtにより右記の2つのAPIが呼び出されます。EC2:DescribeInstances, EC2:DescribeVolumes
  3. APIの先では、AWS Lambda関数を実行する処理があり、AWS APIの結果がJson形式でWebブラウザに返ります
  4. Webブラウザ上(クライアントサイドのプログラム)で、EC2とEBSを結合させたデータを作成します
  5. 結果を一覧表示します
  6. Execlダウンロードのボタンを押すと、一覧表示された内容がExcelファイルでダウンロードされます

デモページで表示される列

EBSタイプをグループ化しています。

  • 汎用 SSD (gp2, gp3)
  • Provisioned IOPS SSD (io1, io2)
  • HDD (st1, sc1)

に分けて表示します。

EBSタイプの Volumeの列では、VolumeID (EBSのNameタグ) あるいはNameタグが無い場合は VolumeID (デバイス名) を表示します。

デモページでの制限事項

デモのためというのもあり、以下は考慮されていません。
実装次第で対応可能です。

  • io2 Block Expressの表示
  • インスタンスストアの表示
  • マルチアタッチされたボリュームの考慮
  • マルチリージョン(デモは単一リージョン)
  • マルチアカウント(デモは単一アカウント)

構築方法

「describe-api」の利用

このデモは、別のの記事で紹介したAWS Lambda関数「describe-api」を活用しています。​
「describe-api」は、URLパラメータを組み合わせることでAWSのAPIを呼び出し、その結果をWebブラウザに返すLambda関数です。
これにより、マネコンにログインせずとも、Webブラウザ上でAWSの情報を取得することが可能となります。

  • Lambda関数に必要なIAMロールを作成します。
  • Lambda関数 describe-api をデプロイします。

S3によるWebサービス

Webページ自体は、AWSのS3バケットを利用してホスティングします。

  • S3バケットを作成します。
  • S3に対する必要な外部アクセスを設定します。(パブリックアクセスの許可や、必要に応じてCDNの設定)
  • S3バケットにWebページのHTML, Javascriptや関連するリソースをアップロードします。

これらの手順により、Webサービスを構築することができます。

他のWebサービス

このWebサービスは 別記事 Qiita - describe-api AWS Lambda関数によるAWS APIの実行 の具体的な実装例として、
記事を分けてここで紹介しました。

他にも、こういう質問もよくあったりします。

「全サーバーの一週間の稼働状況(停止・起動の時刻)が知りたい。」

これは describe-api だけでは難しくて、他のLambda関数を利用することで実装可能です。
それはまた別の記事で紹介します。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?