Lambda の処理完了後にメール通知

SNS トピックを作成

  • SNS のコンソール画面を開く
  • 画面左側のメニューから、トピック を選択して トピックの作成 トピック
  • 今回は Eメールに通知を出すため、トピックの タイプ に スタンダード を選択
  • 名前yyyymmdd-yourname-email-topic を記入
  • 残りの設定はデフォルトのまま、下までスクロールして トピックの作成 トピックの作成
  • そのまま、サブスクリプションの設定に進みます。

サブスクリプションの設定

  • サブスクリプション タブで、サブスクリプションの作成 を選択
  • サブスクリプションの作成画面で、プロトコルEメール を選択し、ご自身のメールアドレスを入力
  • 残りの設定はデフォルトのまま、下までスクロールして サブスクリプションの作成
  • 数分後に、設定したメールアドレスに AWS Notification - Subscription Confirmation という件名のメールが届きます。メールの本文中の Confirm Subscription をクリックしてメールアドレスを認証します。

Lambda 関数の送信先を設定

  • Lambda のコンソールを開き、先ほど作成した関数 yyyymmdd-yourname-handson-function を開く
  • デザイナー の右側、送信先を追加 を選択
  • 送信先の設定をおこないます。
    • 条件正常 を選択(この設定により、関数が正常終了した時に通知されます)
    • 送信先タイプ として SNSトピック を選択
    • 送信先yyyymmdd-yourname-email-topic を選択
    • 「関数の実行ロールに、送信先へ結果を送信するアクセス許可がありません。[保存] をクリックすることで、お使いのロールにアクセス許可を追加しようとします。」というメッセージが出る場合があります。これは実行ロールに適切なアクセス許可がないが自動的に権限を付与しようとしているというメッセージです。
    • 保存 を選択 送信先を追加

Optional: Lambda の IAM ロールを確認する

  • 作成中の Lambda 関数 yyyymmdd-yourname-handson-function のページで、 アクセス権限 タブに移動する
  • 実行ロール から、ロール名 のリンクをクリックし、IAM のコンソール画面に移動する アクセス権限
  • 先ほど追加した SNS トピックへの送信の権限が、AWSLambdaSNSTopicDestinationExecutionRole-** のような名前のポリシーとして付与されていることを確認する
    • AWSLambdaBasicExecutionRole-** は Lambda で関数を作成した際に自動的に作られるポリシーです。Lambda が CloudWatch Logs にログを書き込むための権限を設定しています。 IAMポリシーのチェック

S3 バケットから再度画像をアップロードし、動作をテストする

S3 バケットに、画像 awslogo.png などを再度アップロードしてみましょう。ファイルをのアップロードをトリガーとして Lambda 関数が動作し、それが成功した旨の通知が Email に送信されるのを確認しましょう。