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

Lambda 関数をトリガーする Amazon S3 イベント通知を作成する際の、Configuration is ambiguously defined というエラーを解決する方法を教えてください。

所要時間2分
0

AWS Lambda 関数をトリガーする Amazon Simple Storage Service (Amazon S3) バケットイベント通知を作成しようとしたところ、エラーが発生します。

簡単な説明

Configuration is ambiguously defined error というエラーは、通知のイベント情報とそのプレフィックスまたはサフィックスが S3 バケットの通知設定と重複している場合に発生します。

この問題を解決するには、次のいずれかの操作を行います。

  • 重複しているイベントを削除し、新しいイベントを作成します。
  • 重複したプレフィックスまたはサフィックスを含む、複数の重複イベントに対する S3 イベント通知を作成します。
  • アーキテクチャを再設計します。

注: Amazon S3 イベント通知設定では、プレフィックスまたはサフィックスが重複しない重複イベントが許可されます。この設定では、プレフィックスまたはサフィックスが重複する重複しないイベントも許可されます。

詳細については、「オブジェクトキー名のフィルタリングを使用したイベント通知の設定」を参照してください。

解決策

注: AWS コマンドラインインターフェイス (AWS CLI) コマンドの実行中にエラーが発生した場合は、「AWS CLI で発生したエラーのトラブルシューティング」を参照してください。また、AWS CLI の最新バージョンを使用していることを確認してください。

重複しているイベントを削除し、新しいイベントを作成する

重複するイベント通知を削除するには、Amazon S3 コンソールまたは AWS CLI を使用します。

注: Lambda 関数トリガーを削除しても、関連付けられた S3 イベント通知は自動的には削除されません。サフィックスの制約を受けない新しいトリガーを作成する前に、Amazon S3 の通知も削除する必要があります。

Amazon S3 コンソール

次の手順を実行します。

  1. Amazon S3 コンソールを開き、該当するバケットを選択します。
  2. [プロパティ] タブを選択します。
  3. [イベント通知] で、作成しようとした新しいイベント通知と重複するイベント通知を選択します。
  4. [削除] を選択します。
  5. [イベント通知の作成] を選択します。
  6. [Lambda 関数] のドロップダウンリストで該当する関数を選択し、[変更を保存] を選択します。

AWS CLI

AWS CLI を使用して S3 バケットの通知設定 JSON ファイルを更新します。S3 バケット上のすべてのイベント通知に関するリストを取得するには、AWS CLI コマンド get-bucket-notification-configuration を実行します。すべての S3 イベント通知を削除するには、AWS CLI コマンド put-bucket-notification-configuration を実行します。

aws s3api put-bucket-notification-configuration --bucket=your-bucket-name --notification-configuration="{}"

注: your-bucket-name を該当するバケット名に置き換えます。

重複するイベント通知を削除した後に AWS CLI コマンド put-bucket-notification-configuration を実行すると、新しい通知を追加できます。

重複したプレフィックスまたはサフィックスを含む、複数の重複イベントに対する S3 イベント通知を作成する

次の手順を実行します。

  1. Amazon S3 コンソールを開き、該当するバケットを選択します。
  2. [プロパティ] タブを選択します。
  3. [イベント通知][イベント通知の作成] を選択します。
  4. [イベント名] にイベントの名前を入力します (例: your-event-name)。
  5. [プレフィックス]images/ などのプレフィックスを入力します。
  6. [サフィックス].jpg などのサフィックスを入力します。
  7. [イベントタイプ][すべてのオブジェクトがイベントを作成] を選択します。
  8. [Lambda 関数] のドロップダウンリストで、該当する Lambda 関数を選択します。
  9. [変更を保存] を選択します。

アーキテクチャを再設計する

S3 イベント通知を再設定しても重複を避けられない場合は、アーキテクチャを再設計することで回避策を実施してください。

たとえば、S3 イベントに応じて、他の Lambda 関数をトリガーする Lambda 関数をトリガーするように、イベント通知を設定します。または、イベント通知を設定することで、Amazon Simple Notification Service (Amazon SNS) トピックまたは Amazon Simple Queue Service (Amazon SQS) キューにイベントを発行します。

注: トピックまたはキューが、サブスクライブされた複数の Lambda 関数にイベントをプッシュしていることを確認してください。サブスクライブされる関数において、その関数が受信したイベントを処理するかどうかを判断するロジックを使用して関数を設計します。詳細については、「S3 イベント通知を複数のエンドポイントにファンアウトする」を参照してください。

AWS CloudTrail に対する Amazon S3 のオブジェクトレベルでのログ記録を有効にしても対応できます。次に、Amazon EventBridge ルールを使用して、Amazon S3 イベントパターンに基づいて Lambda 関数をトリガーします。詳細については、「チュートリアル: EventBridge を使用して Amazon S3 のオブジェクトレベルでの操作を記録する」を参照してください。

複雑なアーキテクチャとプロセスでは、AWS Step Functions ステートマシンを使用してワークフローを設計、管理します。詳細については、「AWS Step Functions のユースケース」と「Step Functions の学習チュートリアル」を参照してください。

関連情報

Amazon S3 イベント通知の使用時に、Unable to validate the following destination configurations というエラーが発生する理由を知りたいです

Amazon S3 イベント通知で Lambda 関数が呼び出されない場合の問題をトラブルシューティングする方法を教えてください

Lambda を使用して Amazon S3 イベント通知を処理する

チュートリアル: Using an Amazon S3 trigger to invoke a Lambda function

AWS公式更新しました 10ヶ月前
コメントはありません

関連するコンテンツ