耐久性のある関数のテストとデバッグ - AWS Serverless Application Model

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

耐久性のある関数のテストとデバッグ

耐久性のある関数のテストとデバッグは、通常の Lambda 関数と同様に機能し、チェックポイントとリプレイを自動的にサポートします。このガイドでは、一般的なテストシナリオとトラブルシューティング手法について説明します。

ローカルテストワークフロー

耐久性のある関数をローカルでテストする場合、ワークフローは通常の Lambda 関数とは異なります。

耐久性のある関数テストワークフロー
  1. アプリケーションを構築します。

    $ sam build
  2. 耐久性のある 関数を呼び出します。

    $ sam local invoke MyDurableFunction --durable-execution-name test
  3. 必要に応じて実行履歴を確認します。

    $ sam local execution history execution-id

一般的なテストシナリオ

チェックポイント動作のテスト

関数が 状態を適切にチェックポイントすることをテストするには:

# Example Python durable function def handler(event, context): # This will create a checkpoint context.wait(10) # Wait 10 seconds # Function resumes here after wait return {"message": "Function resumed after wait"}

この関数をローカルで呼び出すと、待機期間は自動的に処理されます。

コールバックシナリオのテスト

外部コールバックを待機する関数の場合:

  1. コールバックを待機する耐久性のある関数を開始する

  2. 別のターミナルで、コールバックを解決します。

    $ sam local callback succeed callback-id
  3. 関数の実行再開を確認する

トラブルシューティング

耐久性のある関数が正しく実行されない

問題: 関数は耐久性のある関数として動作しません。

解決方法:

  • SAM テンプレートで DurableConfigが設定されていることを確認します。

  • 関数コードが耐久性のある関数 SDK メソッド (例: context.wait()) を使用していることを確認します。

  • サポートされているランタイム (TypeScript、JavaScript、Python) を使用していることを確認します。

実行履歴を取得できません

問題: local execution history コマンドは結果を返しません。

解決方法:

  • 実行 ID が正しいことを確認する

  • 関数が少なくとも 1 回呼び出されたことを確認します。

コールバックコマンドが機能しない

問題: コールバックコマンドは保留中のオペレーションを解決しません。

解決方法:

  • コールバック ID が正しいことを確認する

  • 関数が実際にコールバックを待っていることを確認します。

  • 正しいコールバックコマンド構文を使用していることを確認します。

デバッグのヒント

  • 実行履歴を使用する - 実行履歴を確認して、耐久性のある関数のフローを理解します。

  • 段階的にテストする - 複雑なロジックを追加する前に単純な待機操作から開始する

  • 詳細ログ記録の使用 - 詳細ログ記録を有効にして実行フローをトレースする

詳細はこちら

テストとデバッグの詳細については、以下を参照してください。