

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

# Step Functions ワークフローの Amazon States Language でのステートマシン構造
<a name="statemachine-structure"></a>

**ステートの管理とデータの変換**  
[変数を使用したステート間のデータ受け渡し](workflow-variables.md)と [JSONata を使用したデータ変換](transforming-data.md)について説明します。

ステートマシンは、次のフィールドを含む構造を表す JSON テキストを使用して定義されます。

** `Comment` (オプション)**  
ステートマシンの人間が読み取れる説明。

** `QueryLanguage` (オプション。省略時は `JSONPath` がデフォルト)**  
+ ステートマシンで使用されるクエリ言語の名前。指定できる値は `JSONPath` と `JSONata` です。
+ ステートマシンに指定しない場合、各ステートのデフォルト値は JSONPath です。
+ トップレベルのステートマシンのクエリ言語が `JSONPath` の場合、個々のステートで QueryLanguage を `JSONata` に設定することでクエリ言語をオーバーライドできます。この方法により、ステートマシンを JSONPath から JSONata へと、一度に 1 ステートずつ段階的に変換できます。
+ **注: **トップレベルで JSONata ベースのステートマシンに変更した場合、JSONata と JSONPath のステートが混在する状態に戻すことはできません。

** `StartAt` (必須)**  
いずれかの状態オブジェクトの名前と完全に一致する必要がある (大文字と小文字が区別されます) 文字列。

** `TimeoutSeconds` (オプション)**  
ステートマシンを実行できる最大秒数。指定された時間より長く実行されると、`States.Timeout` [エラー名](concepts-error-handling.md#error-handling-error-representation) で実行が失敗します。

** `Version` (オプション)**  
ステートマシンで使用される のバージョンです (デフォルトは「1.0」)。

** `States` (必須)**  
オブジェクトには、コンマで区切られた一連の状態が含まれています。

`States` フィールドには[状態](workflow-states.md)が含まれています。

```
{
    "State1" : {
    },

    "State2" : {
    },
    ...
}
```

ステートマシンは、それに含まれている状態と、状態間の関係によって定義されます。

以下に例を示します。

```
{
  "Comment": "A Hello World example of the Amazon States Language using a Pass state",
  "StartAt": "HelloWorld",
  "States": {
    "HelloWorld": {
      "Type": "Pass",
      "Result": "Hello World!",
      "End": true
    }
  }
}
```

このステートマシンの実行が開始されると、システムは `StartAt` フィールドで参照されている状態で開始されます (`"HelloWorld"`)。この状態に `"End": true` フィールドがある場合、実行が停止して結果が返されます。それ以外の場合、システムは `"Next":` フィールドを探し、次はその状態で続行します。このプロセスは、システムが終了状態 (`"Type": "Succeed"`、`"Type": "Fail"`、または `"End": true` の状態) に到達するまで繰り返されます。そうでない場合は、ランタイムエラーが発生します。

ステートマシン内の状態には次のルールが適用されます。
+ 状態は、囲みブロック内の任意の順序で発生しますが、リストされた順序は実行順序に影響を与えません。状態自体の内容によってこの順序が決まります。
+ ステートマシン内では、最上位の構造で `start` フィールドの値により指定される `StartAt` 状態として指定された状態が 1 つだけ存在します。この状態は、実行が開始されたときに最初に実行される状態です。
+ `End` フィールドが `true` の状態は、`end` (または `terminal`) 状態とみなされます。ステートマシンのロジックによっては (ステートマシンに実行のブランチが複数あるかどうかなど)、複数の `end` 状態が存在する可能性があります。
+ ステートマシンが 1 つの状態だけで構成される場合、`start` 状態と `end` 状態の両方になることができます。

## ワークフローに共通の状態フィールド
<a name="amazon-states-language-common-fields"></a>

以下のフィールドは、すべての状態要素に共通です。

** `Type` (必須)**  
ステートのタイプ: Task、Choice、Parallel、Map、Pass、Wait、Succeed、Fail。

**`QueryLanguage` (オプション。省略時は `JSONPath` がデフォルト)**  
+ ステートで使用されるクエリ言語の名前。指定できる値は `JSONPath` と `JSONata` です。
+ トップレベルのステートマシンのクエリ言語が `JSONPath` の場合、個々のステートで QueryLanguage を `JSONata` に設定することでクエリ言語をオーバーライドできます。この方法により、ステートマシンを JSONPath から JSONata へと、一度に 1 ステートずつ段階的に変換できます。

** `Next` **  
現在の状態が終了するときに実行される次の状態の名前。`Choice` など、一部の状態では複数の移行状態が許可されます。  
現在の状態がワークフローの最後の状態、[Succeed ワークフロー状態](state-succeed.md) または [ワークフロー状態に失敗する](state-fail.md) またはなどのターミナルステートである場合は、`Next` フィールドを指定する必要はありません。

** `End` **  
`true` に設定されている場合は、この状態を終了状態として指定します (実行が終了されます)。ステートマシンごとに、任意の数の終了状態が存在します。状態では `Next` または `End` のどちらか 1 つのみを使用できます。`Choice` などの一部の状態タイプや、[Succeed ワークフロー状態](state-succeed.md) や [ワークフロー状態に失敗する](state-fail.md) などのターミナルの状態は、`End` フィールドをサポートしていないか、または使用していません。

** `Comment` (オプション)**  
状態に関する、人間が読み取れる説明を保持します。

** `Assign` (オプション)**  
変数を保存するために使用します。`Assign` フィールドは、変数名とその割り当て値を定義するキーと値のペアを含む JSON オブジェクトを受け入れます。すべての文字列値は、オブジェクトや配列内の値を含め、`{% %}` 文字で囲まれていれば、JSONata として評価されます。  
詳細については、「[変数を使用したステート間のデータ受け渡し](workflow-variables.md)」を参照してください。

** `Output` (オプション、JSONata のみ)**  
ステートからの出力を指定して変換するために使用します。指定すると、ステートのデフォルト出力がオーバーライドされます。  
Output フィールドは、あらゆる型の JSON 値 (オブジェクト、配列、文字列、数値、boolean、null) を受け入れます。すべての文字列値は、オブジェクトや配列内の値を含め、\$1% %\$1 文字で囲まれていれば、JSONata として評価されます。  
 Output は JSONata 式を直接受け入れることもできます。例: "Output": "\$1% jsonata expression %\$1"  
詳細については、[入力および出力処理](concepts-input-output-filtering.md)を参照してください。

** `InputPath` (オプション、JSONPath のみ)**  
状態の入力の一部を選択して状態の処理タスクに渡す[パス](concepts-input-output-filtering.md)。省略した場合、入力全体を指定する値 `$` が設定されます。詳細については、[入力および出力処理](concepts-input-output-filtering.md)を参照してください。

** `OutputPath` (オプション、JSONPath のみ)**  
状態の出力の一部を選択して次の状態に渡す[パス](concepts-input-output-filtering.md)。省略した場合、出力全体を指定する値 `$` が設定されます。詳細については、[入力および出力処理](concepts-input-output-filtering.md)を参照してください。