はじめに
このラボでは、クラウドインフラストラクチャをモニタリングしてイベントに応答できるサーバーレスインフラストラクチャを作成する方法を説明します。
このラボの前半では、Amazon EC2 インスタンスの作成に対応する AWS Lambda 関数を、Amazon CloudWatch Events と組み合わせて使用する方法を学習します。
後半では、ウェブサイトをモニタリングし、正常に応答していない場合にアラートを発する AWS Lambda 関数を作成します。
取り上げるトピック
このラボを修了すると、以下ができるようになります。
- AWS Lambda 関数を作成する
- Amazon CloudWatch Events を設定する
- Amazon CloudWatch アラームを設定する
- Amazon Simple Notification Service (SNS) を設定して通知を送信する
技術知識の前提条件
このラボを修了するには、Amazon EC2 に関する知識が必要です。Node.js プログラミングは必須です。ただし、ソリューションコードはすべて提供されます。
アイコンキー
このラボでは、さまざまな種類の手順と注記への注意を促すため、各種アイコンが使用されています。以下のリストは、各アイコンの目的を説明したものです。
- 想定される出力: 出力のサンプルであり、コマンドまたは編集済みファイルの出力を確認するときに使用します。
- 注意: ヒントや重要なガイダンスです。
- 更新: 新しい情報を表示するためにウェブブラウザのページやリストを更新する必要があることを示します。
AWS のその他のサービス
このラボに必要なサービス以外の AWS のサービスは、このラボへのアクセス中は IAM ポリシーによって無効にされています。さらに、このラボで使用されるサービスの機能はラボに必要なものに限定されており、場合によってはラボの設計の観点から意図的にさらに制限されています。このラボガイドで指定されていないサービスを使用したりアクションを実行したりすると、エラーが発生することがあります。
テクノロジーについて
AWS Lambda
AWS Lambda は、クラウド内で提供されるコンピューティングサービスです。コンピューティング性能の規模を変更できるため、デベロッパーはウェブスケールコンピューティングを簡単に実現できます。ユーザーが AWS Lambda にコードをアップロードすると、このサービスは AWS インフラストラクチャを使用し、ユーザーに代わって、このコードを実行します。AWS Lambda では、Node.js、Java、Python など多様なコーディング言語がサポートされています。
コードをアップロードして Lambda 関数を作成すると、AWS Lambda により、コードの実行に使用されるサーバーのプロビジョニングや管理が行われるようになります。このラボでは、AWS Lambda をイベントドリブン型のコンピューティングサービスとして使用します。このサービスでは、SNS トピックと Amazon S3 バケットでのデータ変更に合わせて、AWS Lambda がコードを実行します。
AWS Lambda には、以下の 2 つの使用方法があります。
- AWS Lambda がイメージファイルのアップロードなどのイベントに応じてコードを実行する、イベントドリブン型のコンピューティングサービスとして。このラボではこれを実習します。
- Amazon API Gateway を使用した HTTP リクエストまたは API 呼び出しを受けて、お客様のコードを実行するコンピューティングサービスとしての使用法。
Lambda は、Amazon が持つ規模の経済的メリットをお客様に提供します。AWS Lambda では、必要に応じてコードが実行されます。また、リクエストは 1 日に数件から 1 秒に数千件まで自動的にスケールされます。Lambda のこれらの機能を使用することで、Amazon S3 や Amazon DynamoDB といった AWS のサービス向けのデータ処理呼び出しの簡単な構築、Amazon Kinesis に格納されるストリーミングデータの処理、そして AWS の規模、パフォーマンス、セキュリティを活かして稼働する独自のバックエンドの作成が可能です。
AWS Lambda の設計図
ブループリントは、最小限の処理を行うイベントソースと Lambda 関数のサンプル構成です。ブループリントの多くは、Amazon S3 や DynamoDB など、特定のイベントソースのイベントを処理します。例えば、s3-get-object ブループリントを選択した場合、Amazon S3 によって発行され Lambda がパラメータとして受け取る、オブジェクト作成イベントを処理するサンプルコードが提供されます。
AWS Lambda 関数を新規作成する場合は、シナリオに最適なブループリントを使用できます。ブループリントは必要に応じてカスタマイズできます。ブループリントは使用しなくても構いません (Lambda 関数を自身で作成し、イベントソースを別に設定することもできます)。
Amazon CloudWatch
CloudWatch Events は、AWS リソースの変更を記述したほぼリアルタイムのシステムイベントのストリームを配信します。数分で設定できるシンプルなルールを使用して、AWS Lambda 関数をはじめとする 1 つまたは複数のターゲットに各タイプのイベントを簡単にルーティングできるため、オーバーヘッドの削減と効率性の向上が可能です。CloudWatch イベントは、AWS 環境の中枢神経系と考えることができます。このイベントは、サポートされているサービスそれぞれに関連付けられ、運用が変更されると同時に、それを識別します。その後、指定されたルールに従って関数をアクティベートし、メッセージを送信して環境に応答します。
Amazon Simple Notification Service (SNS)
Amazon SNS は、非常に利便性の高い通知サービスです。複雑なカスタムメッセージングソリューションの開発や現場での維持管理が必要なシステム用ライセンスソフトウェアに費用をかけるよりも、大きなメリットが得られます。このサービスは、実績ある Amazon のネットワークインフラストラクチャとデータセンター内で実行されるため、アプリケーションが必要とするときはいつでもトピックを利用できます。メッセージの紛失を防ぐため、Amazon SNS に対してパブリッシュされる全メッセージは、複数のサーバーやデータセンターに冗長的に保存されます。Amazon SNS を使用することで、アプリケーションとエンドユーザーは、モバイルプッシュ通知、HTTP/HTTPS、Email/Email-JSON、SMS や Amazon SQS のキュー、または AWS Lambda 関数を通じて、種類の異なるデバイスでも通知を受け取ることができます。