スキップしてコンテンツを表示

S3からSQSへのイベント通知が発火されず、SQSが動作しない。

0

S3のイベント通知をSQSに実施したいが、実行できない。 実施したいことは、"バケット/{dir_name} に *.pdf がアップロードされたら SQSキューを実行する。" 条件は以下 イベントタイプ : PUT/すべてのオブジェクト作成 フィルター : {dir_nam3}/ , .pdf 送信先タイプ : SQSキュー 送信先 : 任意のSQS

・SQS側にもS3からメッセージ受け取るポリシー追加済 ・他のイベント通知は実行できている → 別ディレクトリ、 .json のフィルターで Lambda関数の実行。の条件だと実行できている。

AWS CLI で SQSのEvent 受信確認 → Event は空となっているため、受け取ていなさそう。 S3側の問題と思っていますが、手詰まりです。 情報不足部分もあるかもしれませんが、何かわかる方はお願いします。

2回答
0
承認された回答

SQSのキューポリシーを共有いただくことは可能でしょうか?
S3からほかの送信先だと機能しているというところからキューポリシーに何かしら誤りがあって機能していない可能性があると思いました。

エキスパート
回答済み 1年前
  • 回答ありがとうございます。 キューポリシーですが以下になります。

    {
      "Version": "2012-10-17",
      "Id": "__default_policy_ID",
      "Statement": [
        {
          "Sid": "__owner_statement",
          "Effect": "Allow",
          "Principal": {
            "AWS": "arn:aws:iam::717279694197:root"
          },
          "Action": "SQS:*",
          "Resource": "arn:aws:sqs:us-east-1:717279694197:MainQueue_S3Check"
        },
        {
          "Sid": "AllowLambdaToAccessSQS",
          "Effect": "Allow",
          "Principal": {
            "Service": "lambda.amazonaws.com"
          },
          "Action": [
            "SQS:SendMessage",
            "SQS:ReceiveMessage",
            "SQS:DeleteMessage",
            "SQS:GetQueueAttributes"
          ],
          "Resource": "arn:aws:sqs:us-east-1:717279694197:MainQueue_S3Check"
        },
        {
          "Sid": "AllowS3ToSendMessage",
          "Effect": "Allow",
          "Principal": {
            "Service": "s3.amazonaws.com"
          },
          "Action": "sqs:SendMessage",
          "Resource": "arn:aws:sqs:us-east-1:717279694197:MainQueue_S3Check",
          "Condition": {
            "ArnLike": {
              "aws:SourceArn": "arn:aws:s3:::biztrip-need-analyze"
            }
          }
        }
      ]
    }
    
  • 私の環境で同じポリシーを設定して試してみました。(アカウントIDやリソース名は変更しています) S3バケットの「dir_nam3」フォルダ内にpdfファイルを配置することでSQSキューにメッセージが溜まることが確認できています。 a

    SQSキューのメトリクスで受信済みのメッセージ数や削除されたメッセージ数などは確認できますでしょうか? もし削除されたメッセージ数のメトリクスが上がっているようでしたらメッセージが何かしら (Lambdaなど) で処理されているのでそちらの確認が必要です。 ちなみにSQSのターゲットにLambdaを紐づけるとキューにメッセージが送信された際に処理が行われてLambdaが正常終了するとキュー内のメッセージが消えます。 a

  • 確認ありがとうございます。 手元でも同様の確認をしたところ、メッセージは受信しており、lambdamで要求が飛んでいることは確認できました。 問題はSQSでなくlambda側ということが核にできました。 ありがとうございます。

0

S3からSQSへのイベント通知が発火されない問題について、いくつかの確認点と対策を提案します。

  1. S3バケットの通知設定を再確認してください:

    • イベントタイプが正しく「すべてのオブジェクト作成イベント」に設定されているか
    • プレフィックスとサフィックスのフィルターが正確に設定されているか({dir_name}/ と .pdf)
  2. SQSキューのポリシーを再確認してください:

    • S3バケットからのメッセージ受信を許可する正しいポリシーが設定されているか
    • ポリシーにS3バケットのARNが正確に記載されているか
  3. S3バケットとSQSキューが同じリージョンにあることを確認してください。

  4. S3バケットの所有者とSQSキューの所有者が同じAWSアカウントであることを確認してください。

  5. オブジェクトのアップロード方法を確認してください:

    • マルチパートアップロードを使用している場合、完了イベントのみが発生する可能性があります
  6. イベント通知の設定後、テスト用のPDFファイルを指定したディレクトリにアップロードして、通知が発生するか確認してください。

  7. CloudTrailログを確認して、S3からのイベント発行が行われているか確認してください。

  8. AWS CLIやAWS SDKを使用して、S3バケットの通知設定を直接取得し、設定が正しく適用されているか確認してください。

  9. SQSキューの可視性タイムアウトやメッセージ保持期間が適切に設定されているか確認してください。

  10. S3イベント通知の設定を一度削除し、再度作成してみてください。

これらの確認と対策を行っても問題が解決しない場合は、AWSサポートに連絡して詳細な調査を依頼することをお勧めします。
Sources
AWSSupport-TroubleshootS3EventNotifications - AWS Systems Manager Automation runbook reference
Event message structure - Amazon Simple Storage Service

回答済み 1年前

ログインしていません。 ログイン 回答を投稿する。

優れた回答とは、質問に明確に答え、建設的なフィードバックを提供し、質問者の専門分野におけるスキルの向上を促すものです。

関連するコンテンツ