

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

# Step Functions でサービス API にパラメータを渡す
<a name="connect-parameters"></a>

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

サービス API に渡されるパラメータを管理するには、`Parameters` フィールドを `Task` 状態で使用します。

`Parameters` フィールド内では、API アクションで複数形の配列パラメータを使用する必要があります。例えば、Amazon EC2 との統合に `DescribeSnapshots` API アクションの [[フィルター]](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeSnapshots.html#API_DescribeSnapshots_RequestParameters) フィールドを使用する場合、`Filters`フィールドをとして定義する必要があります。複数形を使用しない場合、Step Functions は次のエラーを返します。

```
The field Filter is not supported by Step Functions.
```

## 静的 JSON をパラメータとして渡す
<a name="connect-parameters-json"></a>

JSON オブジェクトをパラメータとしてリソースに渡すには、ステートマシン定義に直接含めます。

例えば、`RetryStrategy` API の `SubmitJob` パラメータを AWS Batch 用に設定するには、次のようにパラメータに含めます。

```
"RetryStrategy": {
  "attempts": 5
}
```

また、静的 JSON を使用して複数のパラメータを渡すこともできます。より複雑な例として、`{{myTopic}}` という名前の Amazon SNS トピックを発行するタスクの仕様の `Resource` フィールドおよび `Parameters` フィールドを以下に示します。

```
"Resource": "arn:aws:states:::sns:publish",
  "Parameters": {
     "TopicArn": "arn:aws:sns:us-east-2:{{account-id}}:{{myTopic}}",
     "Message": "test message",
     "MessageAttributes": {
       "my attribute no 1": {
         "DataType": "String",
         "StringValue": "value of my attribute no 1"
       },
       "my attribute no 2": {
         "DataType": "String",
         "StringValue": "value of my attribute no 2"
       }
     }
  },
```

## パスを使用して状態入力をパラメータとして渡す
<a name="connect-parameters-path"></a>

状態の入力の一部をパラメータに渡すには、[パス](amazon-states-language-paths.md)を使用します。パスは `$` で始まる文字列です。これを使用して JSON テキスト内でコンポーネントを識別できます。Step Functions パスは [JsonPath](https://datatracker.ietf.org/wg/jsonpath/about/) 構文を使用します。

パラメータがパスを使用するように指定するには、パラメータ名の末尾を `.$` で終了します。例えば、状態の入力に `message` という名前のノード内にテキストが含まれている場合、そのテキストをパスを使用してパラメータとして渡すことができます。

次の状態入力を考えてみます。

```
{
  "comment": "A message in the state input",
  "input": {
    "message": "foo",
    "otherInfo": "bar"
  },
  "data": "example"
}
```

`message` という名前のノードの値を `myMessage` というパラメータとして渡すには、次の構文を指定します。

```
"Parameters": {"myMessage.$": "$.input.message"},
```

次に、Step Functions は値 `foo` をパラメータとして渡します。

Step Functions のパラメータの使用の詳細については、以下を参照してください。
+ [入力および出力処理](concepts-input-output-filtering.md)
+ [Step Functions ワークフロー内でパラメータを操作する](input-output-inputpath-params.md)

## Context オブジェクトノードをパラメータとして渡す
<a name="connect-parameters-context"></a>

静的コンテンツ、およびステートの入力からのノードに加えて、Context オブジェクトからノードをパラメータとして渡すことができます。Context オブジェクトは、ステートマシンの実行中に存在する動的な JSON データです。これにはステートマシンと現在の実行に関する情報が含まれます。ステート定義の `Parameters` フィールドのパスを使用して、Context オブジェクトにアクセスできます。



Context オブジェクトの詳細、および `"Parameters"` フィールドからデータにアクセスする方法については、以下を参照してください。
+ [Step Functions の Context オブジェクトから実行データにアクセスする](input-output-contextobject.md)
+ [Context オブジェクトへのアクセス](input-output-contextobject.md#contextobject-access)
+ [Context オブジェクトからトークンを取得する](connect-to-resource.md#wait-token-contextobject)