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

CloudWatch の "Canary Navigation Timeout Exceeded" エラーのトラブルシューティング方法を教えてください。

所要時間2分
0

Amazon CloudWatch の “Canary Navigation Timeout” エラーをトラブルシューティングしたいです。

簡単な説明

"Canary Navigation Timeout Exceeded" エラーは、ブラウザまたはエンドポイントが指定された時間内に Canary に接続できない場合に発生します。

注: CloudWatch Canary を作成すると、CloudWatch は Canary 設定の一部として AWS Lambda 関数を自動的に作成します。Canary のタイムアウトは、CloudWatch コンソールの [追加設定] セクションで設定できます。または、Lambda コンソールで Lambda 関数のタイムアウトを個別に設定することもできます。Lambda 関数のタイムアウトを Canary スクリプトのタイムアウトよりも低く設定すると、Lambda 関数は Canary スクリプトが完了する前にタイムアウトになります。

解決策

エンドポイントの到達可能性を確認する

次のコマンドを実行して、Canary が指定されたエンドポイントに到達し、タイムアウト期間内に応答を受信することを確認します。

time curl https://example-endpoint-ip:example-port

注: example-endpoint-ip をエンドポイントのホスト名または IP アドレスに置き換え、example-port を実際のポートに置き換えてください。

モニタリングエンドポイントがファイアウォールまたはプロキシを使用している場合は、ルールが Canary のエンドポイント接続をブロックしていないことを確認します。

Amazon Virtual Private Cloud (Amazon VPC) Canary を使用する場合は、Canary がエンドポイントに到達するかどうかを確認してください。エンドポイントにアクセスできない場合は、セキュリティグループとネットワークアクセスコントロールリスト (ネットワーク ACL) がアクセスを許可していることを確認します。

Canary スクリプトのタイムアウト値を確認する

Canary スクリプトのタイムアウトがエンドポイントの応答時間よりも大きいことを確認します。Canary スクリプトのタイムアウトがエンドポイントの応答時間よりも短い場合は、Canary スクリプトのタイムアウト値を増やしてください。

Canary ハートビートのタイムアウトを Canary コードから変更するには、次のコマンドを実行します。

const response = await page.goto(URL, {waitUntil: 'domcontentloaded', timeout: 30000});

GUI ワークフロービルダーのナビゲーションタイムアウトの問題を解決する

GUI ワークフロービルダーを使用する場合は、[ナビゲーションでクリック] アクションが正しく設定されていることを確認してください。次に、ボタンまたはリンクの [ナビゲーションでクリック] アクションが正しい送信先にリダイレクトされることを確認します。ウェブページで非同期操作を使用している場合は、非同期操作に対応するようにタイムアウト値を増やしてください。

Canary ソースコードスクリプトに次のコードを追加して、[ナビゲーションでクリック] アクションのタイムアウトを変更します。

await Promise.all([             page.waitForNavigation({ timeout: 30000 }),  
           await page.click("example-button")

[ナビゲーションでクリック] アクションが正しい送信先にリダイレクトされない場合は、代わりに [クリック] アクションを使用するように Canary ソースコードスクリプトを更新してください。

Canary ソースコードスクリプトを更新したら、次のコマンドを実行して、エンドポイントが設定されたタイムアウト内に応答することを確認します。

time curl https://example-endpoint-ip:example-port

注: example-endpoint-ip と example-port を、実際の IP アドレスとポート番号に置き換えてください。

VPC ネットワーク設定を検証する

Canary が仮想プライベートクラウド (VPC) で実行されている場合は、次のアクションを実行します。

  • Canary のセキュリティグループに、エンドポイントへのトラフィックを許可するアウトバウンドルールがあることを確認します。
  • ネットワークアクセスコントロールリスト (ネットワーク ACL) に、エンドポイントへのトラフィックを許可するインバウンドルールとアウトバウンドルールがあることを確認します。
  • 設定されたサブネットのルートテーブルにエンドポイントへのルートがあることを確認します。
  • NAT ゲートウェイまたは Elastic IP アドレスが Canary の Lambda 関数にアタッチされていることを確認します。

複雑なページや動的ページのタイムアウトを調整する

Canary が JavaScript や DOM 要素が多数含まれる動的ページを移動する場合、そのページの実行にはさらに時間がかかります。Canary のソースコードスクリプトを確認して、ページの読み込みが完了する前に Canary がタイムアウトする原因となり得る複雑な JavaScript 要素や DOM 要素がないかを確認してください。

スクリプトに豊富な JavaScript または DOM 要素が含まれている場合は、Canary ソースコードスクリプトのタイムアウト値を増やしてください。これにより、ページの読み込みと実行に十分な時間が与えられます。

CloudWatch メトリクスとログを確認する

Canary の CloudWatch メトリクスを確認して、タイムアウトエラーと相関するパフォーマンスパターンを特定します。また、Lambda 関数が生成する CloudWatch ログを確認して、タイムアウトエラーに関連するエントリを探します。

Canary の SuccessPercent、Duration、および Failed メトリクスを確認してください。また、エンドポイントまたはサーバーの問題を示す 4xx および 5xx HTTP エラーコードも確認してください。

Canary のログを確認するには、次の手順を実行します。

  1. CloudWatch コンソールを開きます。
  2. ナビゲーションペインで [ロググループ] をクリックします。
  3. Canary のロググループを探します。
    注: ロググループ名は /aws/lambda/cwsyn-[canary-name]-[uuid] という形式を使用します。
  4. ログエントリを確認して、タイムアウトエラーメッセージ、ネットワーク接続エラー、およびスクリプト実行エラーがないかどうかを確認します。

関連情報

失敗した Canary のトラブルシューティング

AWS公式更新しました 7ヶ月前
1コメント

This article was reviewed and updated on 2026-03-02.

エキスパート

応答済み 2ヶ月前