はじめに
こんにちは
この連載も3回目になります。前回までで「Day1にAWSアカウントに最初に行うべき設定」のセキュリティカテゴリーについて紹介しました。未読の方はこちらから是非読んでみてください。
Day1~AWSで最初に行うべき設定 セキュリティ編 Part1
Day1~AWSで最初に行うべき設定 セキュリティ編 Part2
最初に行うべき設定には、大きく分けて以下の3つのカテゴリーがあります。
- セキュリティ
- コスト最適化
- 信頼性
この記事では、コストを最適化するために行うべき設定について紹介します。
※この記事はあくまでもAWSから公開されている「Day 1 with Amazon Web Services AWSご利用開始時に最低限おさえておきたい10のこと」を実現する方法の一例を紹介しています。この設定をしていれば必ず安全であると保証するものではありません。
(6)適切なサイジング
クラウドにおけるメリットの一つは、柔軟にリソースのサイズを調整できることです。
例えば、オンプレミスのサーバでは、CPUやメモリは、数年後の利用状況を見越して、最初から大きく購入することが一般的ですが、使っていない分のリソースは無駄になってしまいます。
クラウドでは、CPUやメモリは拡張も縮小も容易に行うことができるため、実状に即したサイズのリソースを無駄なく使うことができます。または、サーバの負荷が高くなった場合に自動的に同じサーバを複数起動することで、処理を分散する方法をとることもできます(Auto Scalingといいます)
いずれにせよ、現在のリソースの利用状況を監視する機能が必要です。ここでは、Amazon EC2インスタンスのCPU使用率を監視し、負荷が一定以上になったらアラートメールを送る手順を説明します。
AWSマネジメントコンソールにログインし、CloudWatchを押下します。
「アラームの作成」を押下します。
「メトリックスの選択」を押下します。
監視したいサービスを選びます。今回は「EC2」を選びます。
「インスタンス別メトリクス」を押下します。
何の項目を監視するかを選択します。メトリクス名が「CPUUtilization」となっている行にチェックを入れ、「メトリクスの選択」を押下します。
名前を入力し、閾値を入力します。今回はCPU使用率が80%を超えたときアラートメールを出したいので、閾値には「>=80」を入力します。
閾値を超えたときどのようなアクションをとるかを選択します。
今回はアラートメールを送信するため、アラームが次の時で「状態:警告」を選び、任意の通知の送信先名を入力します。アラートを送信したいメールアドレスを「メールリスト」に入力します。
メールリストで指定したアドレスに下のようなメールが届きます。本文中の「Confirm subscription」の文字リンクを押下します。
Subscription confirmed!の画面になれば認証成功です。この画面はこのまま閉じて構いません。
CloudWatchの画面に戻ると、新しいメールアドレスの確認ダイアログが表示されています。メール認証ができていれば、メールアドレスの左に緑色のマークが表示されるので、「アラームの表示」を押下してダイアログを閉じます。
CPU使用率のグラフが表示されるようになりました。
実際にCPU使用率を上げて、アラートが表示されるか確認してみます。サーバ上で確認すると負荷が高い状態になっています。
数分後、AWSのコンソール上でステータスがアラート状態になりました。
アラートメールも送信されました。
(7)利用料金の把握
AWSは従量課金制です。なのでユーザは常に「今どれくらいコストがかかっているか」を気にしています。また、不意な課金が発生した場合は、できるだけ早くそれを把握し、対処したいと考えるはずです。
ここでは、IAMユーザーでも請求情報が確認できるようにする手順と、指定した金額以上の課金が発生したらアラートメールを送る手順を説明します。
※移行の操作はルートアカウントでのみ行うことができます。扱いには十分気を付けてください。
まずはIAMユーザが請求情報にアクセスできるようにします。これにより、ルートアカウントでログインせずとも、課金状況を把握することができます。
AWSマネジメントコンソールにログインし、右上に表示されているアカウント名から「アカウント」を押下します。
下にスクロールし、IAMユーザー/ロールによる請求情報へのアクセスの「編集」を押下します。
「IAMアクセスのアクティブ化」にチェックを入れ、「更新」を押下する。
ルートアカウントの保護のために、IAMユーザが請求情報を表示できる機能は大切ですが、全てのIAMユーザが課金情報へアクセスできる必要はありません。ですので、IAMユーザが請求情報を見るためには、上記の設定に加え、IAMユーザ自体に請求情報を見る権限を付ける必要があります。
AWSマネジメントコンソールで「IAM」を押下します。
請求情報の表示権限を付与するグループのグループ名を押下します。
「ポリシーのアタッチ」を押下します。
検索窓に「Billing」と入力し、表示されたポリシーにチェックを入れ、「ポリシーのアタッチ」を押下します。
権限が付与されました。サインアウトしてIAMユーザでログインし、請求情報が表示できるか試してみましょう。
表示されました。
次に、Cost Explorerが表示されるように設定を変更します。
請求ダッシュボードで「Cost Explorer」を押下します。
「コストエクスプローラーを有効化」を押下します。
データが取得されるまで約24時間待ちます。
表示されることを確認しました。
次に、課金が発生した際にアラートメールが送信されるように設定します。
AWSマネジメントコンソールにログインし、右上に表示されているアカウント名から「アカウント」を押下します。
「設定」を押下します。
「請求アラートを受け取る」にチェックを入れ、「設定の保存」を押下します。
「請求アラートを管理する」の文字リンクを押下します。
CloudWatchの画面が開きます。
ここで注意したいのは、右上のリージョンがバージニア北部になっていることです。請求アラートは東京リージョンでは設定できないため、バージニア北部で設定することになります。
※設定後に他のサービスのダッシュボードを開くとバージニア北部のまま表示されます。リソースを見失う原因にになるためよく確認してください。
「アラームの作成」を押下します。
いくら課金されたらアラートが送信されるか入力します。(ここでは$0=僅かでも課金されたら送信される設定です。)
通知の送信先にメールアドレスを入力し、「アラームの作成」を押下します。
認証メールが送られてくるので、本文中の「Confirm subscription」の文字リンクを押下します。
Subscription confirmed!の画面になれば認証成功です。この画面はこのまま閉じて構いません。
CloudWatchの画面に戻ると、新しいメールアドレスの確認ダイアログが表示されています。
メール認証ができていれば、メールアドレスの左に緑色のマークが表示されるので、「アラームの表示」を押下してダイアログを閉じます。
課金が発生したらアラートメールが送信されてくることを確認しました。
(8)購入オプションの活用
かかっているコストが確認できるようになったら、次はどのようにコストが削減できるかを考えましょう。
AWSのサービスの中には、初期費用なしの重量課金で使える「オンデマンド」の他に、1年または3年の決まった期間使用し続けることを条件に安価に契約できる「リザーブド」、オンデマンドより安価で、他のユーザが自分よりも高い値段で買わない限り使い続けることができる「スポット」という購入オプションがあり、Amazon EC2やAmazon CloudFront、Amazon DynamoDBなどのサービスで利用することができます。(利用できる購入オプションはサービスにより異なります。)
スポットインスタンスを作成してみます。
AWSマネジメントコンソールからEC2を開き、通常のオンデマンドインスタンスを起動するときと同じ手順を進めます。インスタンスの詳細の設定画面で「スポットインスタンスのリクエスト」にチェックを入れます。現在の価格に表示されている価格がスポットインスタンスの1時間あたりの価格です。この価格は時間ごとに需要により変化します。特定の価格以上になったらインスタンスを停止したい場合は最高価格に金額を入力します。
その他の設定はオンデマンドの時と変わりません。
起動後もオンデマンドインスタンスと同様に使用できます。
なお、インスタンスの価格が設定した最高価格を上回った場合、インスタンスが停止されます。
おわりに
今回はコストに関する設定を3つ行いました。これにより、
・Amazon EC2のリソース使用率を監視してアラートを送信すること
・請求情報を見えるようにすること、一定以上請求が発生したときにアラートを送信すること
・よりコストを最適化した購入オプションを選択すること
がそれぞれ実現できました。いよいよ次回が最終回、信頼性を上げるための設定方法を紹介します。
執筆者プロフィール
-
物理からクラウドまで幅広く手掛けるインフラエンジニア。
最近はどっぷりAWSに浸かっています。好きなAWSサービスは「CloudFormation」
この執筆者の最新記事
- Pick UP!2020.11.30AWS re:Invent 2019見聞録・後編――英語ができなくても楽しめる
- Pick UP!2020.11.30AWS re:Invent 2019見聞録・前編――AWS注目サービス情報
- AWS・クラウド2019.09.13Day1~AWSで最初に行うべき設定 信頼性編
- AWS・クラウド2019.07.31Day1~AWSで最初に行うべき設定 コスト編