Amazon SQS Connector 5.11 のトラブルシューティング - Mule 4

Amazon SQS 用 Anypoint Connector (Amazon SQS Connector) のトラブルシューティングを行うには、よくスローされる例外メッセージの解釈に関する情報を理解しておきます。

SSL ログの有効化

SSL ログを有効化して、TLS 通信に関連する問題を調査します。

必要な詳細レベルに応じて SSL ログレベルを設定します。

  1. SSL ログの詳細のみを有効化します。

    javax.net.debug=ssl

  2. ハンドシェイクの詳細のみを有効化します。(ハンドシェイクプロトコルは、レコードプロトコル上で交換される一連のメッセージです。)

    javax.net.debug=ssl:handshake

  3. ハンドシェイクの詳細と SSL の詳細を同時に有効化します。

    javax.net.debug=ssl, handshake

  4. すべての詳細とトラフィックデータのダンプを有効化します。

    javax.net.debug=all

    このオプションは非常に冗長であり、通常の状況では不要です。
SSL ログは、HTTPS または他の TLS 接続のパフォーマンスに影響します。SSL ログは、特定の問題のトラブルシューティングを行うためにのみ有効化し、長期間有効にしないでください。SSL ログでは大量のログメッセージが生成されるため、有効にしたまま放置しておくと、ログファイルが溢れる可能性があります。

SSL ログを有効化する手順は、次のとおりです。

アプリケーションのランタイム設定でデバッグパラメーターを引数として設定します。

  1. Studio で、プロジェクトを右クリックし、​[Run (実行)] > [Run Configurations (実行設定)]​ を選択します。

  2. [Arguments (引数)]​ タブに移動して、​[VM arguments (VM 引数)]​ セクションで ​-M-Djavax.net.debug=ssl​ を追加します。

冗長例外ログの有効化

冗長例外ログを有効化して、デフォルトの切り捨てられた出力ではなくエラーの完全なスタック追跡を表示します。

  1. Studio で、プロジェクトを右クリックし、​[Run (実行)] > [Run Configurations (実行設定)]​ を選択します。

  2. [Arguments (引数)]​ タブに移動して、​[VM arguments (VM 引数)]​ セクションで引数を付加して ​mule.verbose.exceptions​ プロパティを追加します。次に例を示します。

    -XX:PermSize=128M -XX:MaxPermSize=256M -Dmule.verbose.exceptions=true

冗長ログの有効化

アプリケーションと Amazon SQS Connector のやりとりが失敗する理由の理解を深めるには、コネクタの冗長ログを一時的に有効にします。

Mule アプリケーションのパフォーマンスに影響する可能性があるため、トラブルシューティングが完了したら、必ず拡張された冗長性を無効にしてください。

設定ファイルで冗長ログを有効にする手順は、次のとおりです。

  1. Anypoint Studio にアクセスし、​[Package Explorer]​ ビューに移動します。

  2. アプリケーションのプロジェクト名を開きます。

  3. src/main/resources​ フォルダーを開きます。

  4. フォルダー内の ​log4j2.xml​ ファイルを開きます。

  5. <Loggers>​ タグ内に ​<AsyncLogger>​ タグを追加します。

    			<Loggers>
    				...
    				<AsyncLogger name="org.mule.extension.sqs" level="DEBUG"/>
    				...
    			</Loggers>
    xml
  6. アプリケーションの変更を保存します。

  7. Package Explorer​ でプロジェクト名をクリックし、​[Run (実行)]​ > ​[Run As (別のユーザーとして実行)]​ > ​[Mule Application (Mule アプリケーション)]​ をクリックします。

AWS STS リージョンエンドポイント

AWS SDK v2 では、​AssumeRoleConnectionProvider​ の STS クライアントがセッショントークンを取得するために使用するエンドポイントがグローバルエンドポイントではなくリージョンエンドポイントになりました。詳細は、 「AWS STS リージョンエンドポイント」Leaving the Site​ドキュメントを参照してください。 「AWS Security Token Service エンドポイントとクォータ」Leaving the Site​ドキュメントで説明されているように、リージョンエンドポイントでコネクタの機能は変更されません。 AWS では、STS リージョンエンドポイントを使用してレイテンシーを短縮して、冗長性を組み込み、セッショントークンの検証を増やすことを推奨しています。

リージョンエンドポイントに変更することで問題が発生した場合、コネクタの ​[Global Elements (グローバル要素)]​ プロパティ設定ウィンドウの ​[Advanced (詳細)]​ タブにある ​[Custom STS Endpoint (カスタム SQS エンドポイント)]​ 項目で URL エンドポイント ​https://sts.amazonaws.com​ を指定して、強制的に Amazon SQS Connector でグローバルエンドポイントを使用させることができます。

スローされる一般的な例外メッセージの理解

スローされる一般的な例外メッセージとその解釈方法のリストを次に示します。

  • SQS:ACCESS_DENIED

    ユーザーにこの操作を実行するための権限がありません。
  • SQS:CONNECTIVITY

    Amazon SQS サーバーへの接続が中断されました。
  • SQS:INTERNAL_FAILURE

    不明なエラー、例外、または障害のために要求が失敗しました。
  • SQS:INVALID_CREDENTIALS

    無効なログイン情報が原因で Amazon SQS サーバーに対する認証に失敗しました。
  • SQS:INVALID_DATA

    [Test Queue ARN (キュー ARN をテスト)] パラメーターが設定されていないため、テスト接続を実行できません。
  • SQS:MESSAGE_NOT_IN_FLIGHT

    指定されたメッセージはインフライト状態ではありません。
  • SQS:MESSAGE_SIZE_THRESHOLD_OUT_OF_RANGE

    メッセージしきい値サイズが 0 ~ 256 KB ではありません。
  • SQS:OPT_IN_REQUIRED

    AWS アクセスキー ID には、サービスのサブスクリプションが必要です。
  • SQS:OVER_LIMIT

    試行されたアクションが制限を超えています。たとえば、Recieve Messages ソースでインフライトメッセージの最大数を受信した場合や、Add Permission 操作でキューの権限の最大数に達した場合です。
  • SQS:PARAMETER_OUT_RANGE

    値が、指定された範囲内にありません。
  • SQS:PURGE_QUEUE_IN_PROGRESS

    指定されたキューが過去 60 秒以内に [Purge Queue (キューをパージ)] 要求を受信しました。
  • SQS:QUEUE_ALREADY_EXISTS

    この名前のキューがすでに存在し、この名前の既存のキューとは異なる属性が要求に含まれます。
  • SQS:QUEUE_DELETED_RECENTLY

    同じ名前のキューが過去 60 秒以内に削除されました。
  • SQS:REQUEST_EXPIRED

    要求の日付スタンプまたは要求の有効期限から 15 分以上経過した後に要求がサービスに到達したか、要求の日付スタンプが 15 分以上先になっています。
  • SQS:RETRY_EXHAUSTED

    特定の実行ブロックの再試行回数の上限に達しました。
  • SQS:S3_BUCKET_ACCESS_DENIED

    サーバーから AmazonSQSException が 403 HTTP 状況コードと共に返されました。
  • SQS:S3_BUCKET_NOT_FOUND

    サーバーから AmazonSQSException が 404 HTTP 状況コードと共に返されました。
  • SQS:SERVICE_UNAVAILABLE

    サーバーで一時的な障害が発生しています。
  • SQS:THROTTLING_EXCEPTION

    要求調整が原因で要求が失敗しました。