ウェブサイト検索

AWSのS3バケットでイベント通知を設定する方法


AWSのS3バケットでイベント通知を設定する方法

このページで

  1. 前提条件
  2. 私たちは何をしますか?
  3. AWSにログインする
  4. S3イベント通知を設定します。
  5. 結論

AWS S3 イベント通知は、S3 バケット内で特定のイベントが発生したときに通知を受け取るのに役立ちます。利用可能な Amazon S3 バケットイベントを有効にして、通知メッセージを送信できます。したがって、指定されたイベントが S3 バケットで発生すると、イベントがトリガーされ、通知が送信されます。

この記事では、特定のイベントがS3バケットで発生したときに、メールで通知を受ける方法について説明します。

AWS S3 イベント通知は、通知/メッセージを送信できる以下の宛先をサポートしています。

  1. Amazon Simple Notification Service (Amazon SNS) トピック:
    メッセージはサブスクライブされたエンドポイントに送信されます。
  2. Amazon Simple Queue Service (Amazon SQS)キュー:
    メッセージはSQSキューに送信され、そこに保存されます。
  3. AWS Lambda:
    Lambda関数を呼び出し、イベントメッセージを引数として提供するために使用できます。

進む前に、あなたがS3バケットとSNSに精通していて、すでにアカウントにS3バケットとSNSトピックが作成されていることを前提とします。これらのリソースを持っていない場合は、ここをクリックしてAWSコンソールからS3バケットを作成する方法を学び、「AWSでのSNSトピックとサブスクライバーの作成方法」を検索して、メールサブスクライバーを含むSNSトピックを作成してください。

前提条件

  1. AWSアカウント(持っていない場合は作成してください)。
  2. S3バケット。
  3. SNSトピック。

私たちは何をしますか?

  1. AWSにログインしてください。
  2. S3イベント通知を設定します。

AWSにログインする

ここをクリックしてAWSログインページに移動します。

上記のリンクをクリックすると、以下のようなウェブページが表示され、ログイン情報を使用してログインする必要があります。

アカウントに正常にログインすると、次のような画面が表示されます。

S3イベント通知を設定します。

サービスをクリックしてS3を検索し、S3ダッシュボードに移動します。

S3ダッシュボードで、イベント通知を設定したいS3バケットをクリックします。

「プロパティ」をクリックすると、以下の画面が表示されます。ここで「イベント」をクリックしてください。

今、「通知を追加」をクリックすることで通知を作成できます。

作成する通知に名前を付け、通知を受け取りたいイベントを選択し、通知を送信したいSNSトピックを選択して「保存」をクリックしてください。

特定のフォルダーにファイルが追加されたときのみ通知を受け取るために、プレフィックス/サフィックスフィルターを設定することもできます。これはプレフィックス/サフィックスを追加することで実現できます。今のところ、私はこれを追加していませんが、希望があれば試してみてください。

通知を保存するとエラーが表示されます。これは、通知を送信するために選択されたSNSトピックが、このバケットから通知を受信する権限を持っていないためです。このため、この種のエラーが発生します。このエラーを解決するには、SNSバケットに権限を追加して、S3バケットから通知を受信できるようにする必要があります。

SNSに行くには、SNSを検索して結果をクリックしてください。

メインダッシュボードで、左側のパネルにある「トピック」をクリックします。

あなたのSNSトピックをクリックしてください。

「アクセスポリシー」の下に、SNSが現在持っているポリシーを見ることができます。このポリシーを編集する必要があります。「編集」をクリックしてください。

SNSポリシーを以下のポリシーに置き換えてください。

{
  "Version": "2012-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",
        "SNS:Receive"
      ],
      "Resource": "arn:aws:sns:eu-west-3:064827688814:rahul-test",
      "Condition": {
        "StringEquals": {
          "AWS:SourceOwner": "064827688814"
        }
      }
    },
    {
      "Sid": "AWSEvents_all-events_Id2377506854031",
      "Effect": "Allow",
      "Principal": {
        "Service": "events.amazonaws.com"
      },
      "Action": "sns:Publish",
      "Resource": "arn:aws:sns:eu-west-3:064827688814:rahul-test"
    },
    {
      "Sid": "AWSEvents_S3_Event",
      "Effect": "Allow",
      "Principal": {
        "Service": "s3.amazonaws.com"
      },
      "Action": "sns:Publish",
      "Resource": "arn:aws:sns:eu-west-3:064827688814:rahul-test"
    }
  ]
}

SNSポリシーには、太字かつイタリック体の文言のみを追加しました。また、赤でハイライトされたフィールドを置き換えるのも忘れないでください。

SNSに変更を保存します。

S3イベントに戻りますが、今度は同じイベントを再現して保存してみてください。そうすると、1つのイベントが作成されたことがわかります。

S3バケットのメインページに移動して、イベントが通知されているかどうかをテストしてください。

S3バケットにサンプルオブジェクトをアップロードしてください。これはS3バケットにおける「PUT」アクションになります。これにより、私たちのイベント通知がトリガーされ、通知が送信されます。

オブジェクトをアップロードしたときに、作成したイベント通知がトリガーされ、SNSが私がそれに持っていたメール購読に通知を送信しました。

結論

この記事では、S3でイベント通知を作成し、PUT/COPY/POSTなどの指定されたイベントがS3バケットで発生したときにSNSをトリガーする方法を学びました。

関連記事: