AWSの部屋

AWS学習者向けのブログです

S3 にファイル格納時に SNS からメールを送信させてみる

概要

本日はS3とSNSの連携を試してみたいと思います。AWS認定ソリューションアーキテクト-アソシエイトに合格したものの、実際にAWSを触ったことがあまりないため、少しずつですが色々なサービスを使っていこうと思います。

今回の目標

S3とSNSを連携させる

使用するサービス

構成

手順

  1. SNSトピックを作成
  2. サブスクリプションの設定
  3. S3にバケットを作成
  4. SNSトピックアクセスポリシーの編集
  5. S3イベント通知の作成
  6. 動作確認

1.SNSトピックを作成

以下のようにSNSトピックを作成します。

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

以下のようにサブスクリプションの設定を行います。

3.S3にバケットを作成

S3に適当にバケットを作成します。今回は前回のエントリーで使用したバケットを使用します。

aws-room.hatenablog.com

4.SNSトピックアクセスポリシーの編集

SNSコンソールページに戻り先ほど作成したトピックを選択し、編集を押下しアクセスポリシーを以下のように編集します。(バケットポリシーを編集)

{
  "Version": "2008-10-17",
  "Id": "__default_policy_ID",
  "Statement": [
    {
      "Sid": "__default_statement_ID",
      "Effect": "Allow",
      "Principal": {
        "AWS": "*"
      },
      "Action": [
        "SNS:GetTopicAttributes",
        "SNS:SetTopicAttributes",
        "SNS:AddPermission",
        "SNS:RemovePermission",
        "SNS:DeleteTopic",
        "SNS:Subscribe",
        "SNS:ListSubscriptionsByTopic",
        "SNS:Publish"
      ],
      "Resource":"<SNSトピックのARN>"
      "Condition": {
        "ArnLike": {
          "aws:SourceArn": "arn:aws:s3:*:*:<バケット名>"
        }
      }
    }
  ]
}

5.S3イベント通知の作成

作成したバケットに対してイベント通知の作成を行います。

6.動作確認

バケットにファイルをアップロードするとこのようにメールを受信することができるようになりました。

まとめ

いかがでしたでしょうか。AWS認定試験で頻繁に問われるS3とSNSの連携ですが、実際に行ってみるとすごく簡単にできることがわかりました。やはり自分で手を動かしてみると本を読んで勉強するよりイメージが湧きやすくなりますね。次回は Lambda に挑戦してみようと思います。