AWS Lambda と AWS SNS を利用して、AWS SageMaker で起動中のエンドポイントを携帯に通知する

Pocket

はじめに

今回はAWS SageMaker で作成したエンドポイントの消し忘れ防止用に、エンドポイントが起動している場合、決まった時間に携帯へ通知するシステムを作成しました。
その内容を説明します。
構成図は以下の通りです。

Lambda 関数の作成

まず、AWS のコンソール上で lambda と検索しLambda を開きます。

左のサイドバーから関数を選択し、右上の関数の選択をクリックします。

各項目を設定し、関数の作成 をクリックします。

Laambda 関数が作成されたのを確認し、左のトリガーの追加をクリックします。

トリガーの選択から CloudWatch Events を選択します。

ルールから新規ルールの新規作成を選択します。

各項目を設定します。
スケジュールの入力方式については以下のドキュメントを参考にしてください。
https://docs.aws.amazon.com/ja_jp/AmazonCloudWatch/latest/events/ScheduledEvents.html

設定をし終えたら下にスクロールし、トリガーの有効化からチェックを外して追加をクリックします。

トリガーが作成されたら、画面真ん中のLambda 関数をクリックし、下にスクロールします。

関数コードの欄までスクロールしたら赤枠内に、以下のコードを貼り付けてください。
※phoneNumberにメッセージを送る携帯の電話番号を入力しておいてください。

コードをペーストしたら、右上の保存をクリックし、下にスクロールします。

基本設定の欄までスクロールしたら、タイムアウトの時間を15秒に変更します。

次に、赤枠で示した青文字をクリックします。

IAMロールのタブが開いたら、ポリシーをアタッチしますをクリック。

AmazonSageMakerReadOnly と検索し、チェックマークを付けてポリシーのアタッチをクリックします。

ポリシーがアタッチされたことを確認し、もう一度ポリシーをアタッチしますをクリックします。

AmazonSNSFullAccess と検索し、チェックマークを付けてポリシーのアタッチをクリックします。

ポリシ-がアタッチされたことを確認し、Lambda 関数のタブに戻ってください。
※今回アタッチしたポリシーは権限を絞ることができます。セキュリティ面上 FullAccess などはよくないので、実際に利用する際は適切な IAM ロール設定を行いましょう。

Lambda のタブに戻ってきたら、右上のテストをクリックします。

各項目を設定し、下にスクロールします。

作成をクリックします。

右上のテストをクリックし、一番上までスクロールします。

実行が成功したことを確認します。

それでは、エンドポイントをデプロイした状態で、もう一度テストを実行してみましょう。
※エンドポイントが InService になってからテストを実行してください。


すると、設定した電話番号の携帯にメッセージが届きます。

動作を確認したら、CloudWatch Events を選択し、下にスクロールします。

イベントを有効にして、保存をクリックします。
これで、設定したスケジュールで Lambda 関数が起動するようになります。

最後に

今回はエンドポイントの消し忘れ防止用に、エンドポイントが起動している場合、決まった時間に携帯へ通知するシステムを作成しました。
エンドポイントは稼働時間に対して課金が発生するので、使わなくなったエンドポイントは消しておくようにしましょう。

参考文献

Amazon SageMakerの起動しているノートブックインスタンスとエンドポイントをSlackに通知するBotを作ってみた
https://dev.classmethod.jp/tool/sagemaker-slack-list-notebook-endpoint/