チュートリアル: スケジュールされたイベントでの AWS Lambda の使用
このチュートリアルでは、以下の作業を行います。
-
[任意の URL の定期的なチェックをスケジュールする] のブループリントを使用して、Lambda 関数を作成します。Lambda 関数を毎分実行されるように設定します。関数がエラーを返すと、Lambda が Amazon CloudWatch にエラーメトリクスを記録することに注意してください。
-
Lambda 関数の
Errors
メトリクスに CloudWatch アラームを設定し、AWS Lambda が CloudWatch にエラーメトリクスを送信したとき、Amazon SNS トピックにメッセージが投稿されるようにします。Amazon SNS トピックに、電子メール通知を受け取るようにサブスクライブします。このチュートリアルでは、以下の手順でこの設定を行います。-
Amazon SNS トピックを作成する。
-
新しいメッセージがトピックに投稿されたときに E メール通知を取得するようにトピックにサブスクライブします。
-
Amazon CloudWatch で Lambda 関数の
Errors
メトリクスにアラームを設定し、エラー発生時に SNS トピックにメッセージを発行するようにします。
-
前提条件
このチュートリアルでは、基本的な Lambda オペレーションと Lambda コンソールについてある程度の知識があることを前提としています。初めての方は、コンソールで Lambda の関数の作成 の手順に従って最初の Lambda 関数を作成してください。
Lambda 関数を作成する
AWS Management Console にサインインして AWS Lambda コンソール (https://console.aws.amazon.com/lambda/
) を開きます。 -
[Create function] (関数の作成) を選択します。
-
[設計図の使用] を選択します。
-
[ブループリントの選択] ドロップダウンリストを開き、[任意の URL の定期的なチェックをスケジュールする] のブループリントを選択します。
-
以下を設定します。
-
関数名 -
lambda-canary
. -
[実行の役割] – [AWS ポリシーテンプレートから新しいロールを作成する]。
-
Role name –
lambda-eventbridge-role
。 -
Policy templates – シンプルなマイクロサービスのアクセス許可。
-
Rule – 新しいルールを作成します。
-
Rule name –
CheckWebsiteScheduledEvent
。 -
Rule description –
CheckWebsiteScheduledEvent trigger
。 -
ルールタイプ –
Schedule expression
。 -
Schedule expression –
rate(1 minute)
。 -
環境変数
-
site –
https://docs.aws.amazon.com/lambda/latest/dg/welcome.html
-
expected –
What is AWS Lambda?
-
-
-
[機能の作成]を選択します。
Eventbridge (CloudWatch Events) は、スケジュール表現に基づいてイベントを 1 分おきに発行します。イベントにより Lambda 関数がトリガーされ、予想される文字列が指定されたページに表示されことが確認されます。スケジュール式の詳細については、「」を参照してくださいrate または cron を使用する式をスケジュールする
Lambda 関数をテストする
Lambda コンソールが提供するサンプルイベントを使用して関数をテストします。
Lambda コンソールの [Functions]
(関数) ページを開きます。 -
lambda-canary 関数を選択します。
-
[Test] (テスト) を選択します。
-
CloudWatch イベントテンプレート (cloudwatch-scheduled-event) を使用して新しいイベントを作成します。
-
[ イベントの作成 ] を選択します。
-
[呼び出し] を選択します。
関数実行の出力がページの上部に表示されます。
Amazon SNS トピックを作成してサブスクライブします。
Canary 関数がエラーを返したときに通知を受け取るための、Amazon Simple Notification Service (Amazon SNS) トピックを作成します。
トピックを作成する
-
Amazon SNS コンソール
を開きます。 -
Lambda 関数を作成した AWS リージョンに切り替えます。
-
[Topics] (トピック) を選択してから、[Create topic] (トピックの作成) を選択します。
-
次の設定でトピックを作成します。
-
[Type] (タイプ) – [Standard] (スタンダード)
-
[Name] (名前) –
lambda-canary-notifications
。 -
[Display name] (表示名) –
Canary
。
-
-
[Create topic] (トピックの作成) を選択します。
-
[Lambda-canary-notifications] トピックページで、[Create subscription] (サブスクリプションの作成) を選択します。
-
次の設定でサブスクリプションを作成します。
-
[Protocol] (プロトコル) –
Email
。 -
[Endpoint] (エンドポイント) – お使いの E メールアドレスです。
-
-
[Create subscription] (サブスクリプションの作成) を選択します。
Amazon SNS が Canary <no-reply@sns.amazonaws.com>
から E メールを送信します。トピックのフレンドリ名が反映されます。メール内のリンクを使用してアドレスを確認します。
アラームを設定する
Lambda 関数を監視し、エラーが発生した場合に通知を送信するアラームを Amazon CloudWatch で設定します。
アラームを作成する
-
CloudWatch コンソール
を開きます。 -
Lambda 関数を作成した AWS リージョンに切り替えます。
-
[Add alarm] (アラームを追加) を選択します。
-
[Create alarm] (アラームの作成) を選択します。
-
[Specify metric and conditions] (メトリクスと条件の指定) ページで、[Select metric] (メトリクスの選択) を選択します。
-
[Metrics] (メトリクス) 検索ボックスに [lambda-canary Errors] を入力します。
-
[Lambda] > [By Function 1 Name] (関数名 1 別) の順に選択します。
-
[lambda-canary Errors] メトリクスを選択します。
-
[Specify metric and conditions] (メトリクスと条件の指定) ページの [Statistic] (統計) ドロップダウンメニューから、[Sum] (合計) を選択します。
-
しきい値を
1
[Greater/Equal] (以上) に設定します。 -
[Configure actions] (アクションの設定) ページで、以下の設定で通知を追加します。
-
[Alarm state trigger] (アラーム状態トリガー) – [In alarm] (アラーム状態)
-
[Send notification to...] (通知の送信先) –
lambda-canary-notifications
-
-
[Add name and description] (名前と説明を追加) ページで、以下を入力します。
-
[Name] (名前) –
lambda-canary-alarm
-
[Description] (説明) –
Lambda canary alarm
-
-
[アラームの作成] を選択します。
アラームをテストする
関数の設定を更新し、関数がエラーを返すようにします。これにより、アラームがトリガーされます。
アラームをトリガーするには
Lambda コンソールの [Functions]
(関数) ページを開きます。 -
lambda-canary 関数を選択します。
-
下にスクロールします。[環境変数] で、[編集] を選択します。
-
[予定] を
404
に設定します。 -
[Save] を選択します。
少し待ってから、Amazon SNS からのメッセージが E メールされていることを確認します。
リソースのクリーンアップ
このチュートリアル用に作成したリソースは、保持を希望しない場合、すぐに削除できます。使用しなくなった AWS リソースを削除することで、AWS アカウントに請求される料金が発生しないようにできます。
Lambda 関数を削除する
-
Lambda コンソールの [Functions
] (関数) ページを開きます。 -
作成した関数を選択します。
-
[ Actions] で、[Delete ] を選択します。
-
テキスト入力フィールドに
delete
と入力し、[Delete] (削除) を選択します。
CloudWatch アラームを削除する
-
CloudWatch コンソールの [All alarms page]
(すべてのアラーム) ページを開きます。 -
作成したアラームを選択します。
-
[ Actions] で、[Delete ] を選択します。
-
[削除] を選択します。
Amazon SNS サブスクリプションを削除するには
-
Amazon SNS コンソールのSubscriptions page
] (サブスクリプションページ) をを開きます。 -
作成したサブスクリプションを選択します。
-
[Delete] (削除) を選択し、削除します。
Amazon SNS トピックを作成するには
-
Amazon SNS コンソールで [Topics (トピック)] ページ
を開きます。 -
先ほど作成したトピックを選択します。
-
[削除] を選択します。
-
テキスト入力フィールドに
delete me
を入力します。 -
[Delete] (削除) をクリックします。