翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
耐久性のある関数のテストとデバッグ
耐久性のある関数のテストとデバッグは、通常の Lambda 関数と同様に機能し、チェックポイントとリプレイを自動的にサポートします。このガイドでは、一般的なテストシナリオとトラブルシューティング手法について説明します。
ローカルテストワークフロー
耐久性のある関数をローカルでテストする場合、ワークフローは通常の Lambda 関数とは異なります。
耐久性のある関数テストワークフロー
-
アプリケーションを構築します。
$sam build -
耐久性のある 関数を呼び出します。
$sam local invoke MyDurableFunction --durable-execution-name test -
必要に応じて実行履歴を確認します。
$sam local execution historyexecution-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"}
この関数をローカルで呼び出すと、待機期間は自動的に処理されます。
コールバックシナリオのテスト
外部コールバックを待機する関数の場合:
-
コールバックを待機する耐久性のある関数を開始する
-
別のターミナルで、コールバックを解決します。
$sam local callback succeedcallback-id -
関数の実行再開を確認する
トラブルシューティング
耐久性のある関数が正しく実行されない
問題: 関数は耐久性のある関数として動作しません。
解決方法:
-
SAM テンプレートで
DurableConfigが設定されていることを確認します。 -
関数コードが耐久性のある関数 SDK メソッド (例:
context.wait()) を使用していることを確認します。 -
サポートされているランタイム (TypeScript、JavaScript、Python) を使用していることを確認します。
実行履歴を取得できません
問題: local execution history コマンドは結果を返しません。
解決方法:
-
実行 ID が正しいことを確認する
-
関数が少なくとも 1 回呼び出されたことを確認します。
コールバックコマンドが機能しない
問題: コールバックコマンドは保留中のオペレーションを解決しません。
解決方法:
-
コールバック ID が正しいことを確認する
-
関数が実際にコールバックを待っていることを確認します。
-
正しいコールバックコマンド構文を使用していることを確認します。
デバッグのヒント
-
実行履歴を使用する - 実行履歴を確認して、耐久性のある関数のフローを理解します。
-
段階的にテストする - 複雑なロジックを追加する前に単純な待機操作から開始する
-
詳細ログ記録の使用 - 詳細ログ記録を有効にして実行フローをトレースする
詳細はこちら
テストとデバッグの詳細については、以下を参照してください。
-
sam local invoke を使用したテストの概要 - ローカル呼び出しドキュメント
-
sam local execution history - 実行履歴