

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

# 耐久性のある関数のテストとデバッグ
<a name="test-and-debug-durable-functions"></a>

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

## ローカルテストワークフロー
<a name="test-and-debug-durable-functions-workflow"></a>

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

**耐久性のある関数テストワークフロー**

1. アプリケーションを構築します。

   ```
   $ sam build
   ```

1. 耐久性のある 関数を呼び出します。

   ```
   $ sam local invoke MyDurableFunction --durable-execution-name test 
   ```

1. 必要に応じて実行履歴を確認します。

   ```
   $ sam local execution history execution-id
   ```

## 一般的なテストシナリオ
<a name="test-and-debug-durable-functions-scenarios"></a>

### チェックポイント動作のテスト
<a name="test-and-debug-durable-functions-scenarios-checkpoints"></a>

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

```
# 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"}
```

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

### コールバックシナリオのテスト
<a name="test-and-debug-durable-functions-scenarios-callbacks"></a>

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

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

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

   ```
   $ sam local callback succeed callback-id
   ```

1. 関数の実行再開を確認する

## トラブルシューティング
<a name="test-and-debug-durable-functions-troubleshooting"></a>

### 耐久性のある関数が正しく実行されない
<a name="test-and-debug-durable-functions-troubleshooting-config"></a>

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

**解決方法:**
+ SAM テンプレートで `DurableConfig`が設定されていることを確認します。
+ 関数コードが耐久性のある関数 SDK メソッド (例: `context.wait()`) を使用していることを確認します。
+ サポートされているランタイム (TypeScript、JavaScript、Python) を使用していることを確認します。

### 実行履歴を取得できません
<a name="test-and-debug-durable-functions-troubleshooting-history"></a>

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

**解決方法:**
+ 実行 ID が正しいことを確認する
+ 関数が少なくとも 1 回呼び出されたことを確認します。

### コールバックコマンドが機能しない
<a name="test-and-debug-durable-functions-troubleshooting-callbacks"></a>

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

**解決方法:**
+ コールバック ID が正しいことを確認する
+ 関数が実際にコールバックを待っていることを確認します。
+ 正しいコールバックコマンド構文を使用していることを確認します。

## デバッグのヒント
<a name="test-and-debug-durable-functions-debugging"></a>
+ **実行履歴を使用する** - 実行履歴を確認して、耐久性のある関数のフローを理解します。
+ **段階的にテスト**する - 複雑なロジックを追加する前に単純な待機操作から開始する
+ **詳細ログ記録の使用** - 詳細ログ記録を有効にして実行フローをトレースする

## 詳細情報
<a name="test-and-debug-durable-functions-learn"></a>

テストとデバッグの詳細については、以下を参照してください。
+ [sam local invoke を使用したテストの概要](using-sam-cli-local-invoke.md) - ローカル呼び出しドキュメント
+ [sam local execution history](sam-cli-command-reference-sam-local-execution-history.md) - 実行履歴