

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

# Amazon EventBridge 入力変換
<a name="eb-transform-target-input"></a>

EventBridge が情報を[ルール](eb-rules.md)の[ターゲット](eb-targets.md)に渡す前に、[イベント](eb-events.md)からのテキストをカスタマイズできます。コンソールまたは API の入力トランスフォーマーを使用すると、JSON パスを使用する変数を定義して、元のイベントソースの値を参照することができます。変換されたイベントは、元のイベントではなくターゲットに送信されます。ただし、[動的パスパラメータ](eb-targets.md#dynamic-path-parameters)は、変換されたイベントではなく、元のイベントを参照する必要があります。最大 100 の変数を定義して、それぞれに入力から値を割り当てることができます。その後、こうした変数は、<*variable-name*> 形式の*入力テンプレート*で使用できます。

入力トランスフォーマーの使い方については、「[チュートリアル: 入力トランスフォーマーを使用して EventBridge のイベントを変換する](eb-input-transformer-tutorial.md)」を参照してください。

**注記**  
EventBridge ですべての JSON パス構文がサポートされているわけではなく、構文は実行時に評価されます。サポートされている構文には以下が含まれます。  
ドット表記 (`$.detail` など)
ダッシュ
下線
アルファベットの文字
配列インデックス
ワイルドカード (\$1)
スラッシュ

**Topics**
+ [定義済みの変数](#eb-transform-input-predefined)
+ [入力変換の例](#eb-transform-input-examples)
+ [EventBridge API を使用した入力の変換](#eb-transform-input-api)
+ [を使用した入力の変換 AWS CloudFormation](#eb-transform-input-cfn)
+ [入力変換に関する一般的な問題](#eb-transform-input-issues)
+ [EventBridge でルールを作成するときに入力トランスフォーマーを設定する](eb-transform-input-rule.md)
+ [EventBridge サンドボックスを使用したターゲット入力トランスフォーマーのテスト](eb-sandbox-input-trans.md)

## 定義済みの変数
<a name="eb-transform-input-predefined"></a>

JSON パスを定義せずに使用できる、事前定義された変数があります。これらの変数は予約されており、これらの名前で変数を作成することはできません。
+ ****`aws.events.rule-arn` — EventBridge ルールの Amazon リソースネーム (ARN)。
+ ****`aws.events.rule-name` — EventBridge ルールの名前。
+ ****`aws.events.event.ingestion-time` — EventBridge によってイベントが受信された時間。これは ISO 8601 タイムスタンプです。この変数は EventBridge によって生成され、上書きすることはできません。
+ ****`aws.events.event` — JSON としての元のイベントペイロード (`detail` フィールドなし)。内容はエスケープされないため、JSON フィールドの値としてのみ使用できます。
+ ****`aws.events.event.json` — JSON としての完全な元のイベントペイロード (`detail` フィールドあり)。内容はエスケープされないため、JSON フィールドの値としてのみ使用できます。

## 入力変換の例
<a name="eb-transform-input-examples"></a>

Amazon EC2 イベントの例を次に示します。

```
{
  "version": "0",
  "id": "7bf73129-1428-4cd3-a780-95db273d1602",
  "detail-type": "EC2 Instance State-change Notification",
  "source": "aws.ec2",
  "account": "123456789012",
  "time": "2015-11-11T21:29:54Z",
  "region": "us-east-1",
  "resources": [
    "arn:aws:ec2:us-east-1:123456789012:instance/i-abcd1111"
  ],
  "detail": {
    "instance-id": "i-0123456789",
    "state": "RUNNING"
  }
}
```

コンソールでルールを定義する際には、[**Configure input**] (入力の設定) の [**Input Transformer**] (入力トランスフォーマー) オプションを選択します。このオプションでは、2 つのテキストボックスが表示されます。1 つは*入力パス*用で、もう 1 つは*入力テンプレート*用です。

### 入力パス
<a name="eb-transform-target-input-path"></a>

[*Input Path*] (入力パス) は、変数を定義するために使用されます。JSON パスを使用してイベント内の項目を参照し、それらの値を変数に格納します。たとえば、最初のテキストボックスに次のように入力すると、イベント例の値を参照する*入力パス*を作成できます。角かっことインデックスを使用して、配列から項目を取得することもできます。

**注記**  
EventBridge では実行時に入力トランスフォーマーを置き換えることで、有効な JSON 出力を確保します。このため、JSON パスパラメータを参照する変数は、引用符で囲んでください。JSON オブジェクトまたは配列を参照する変数は、引用符で囲まないでください。

```
{
  "timestamp" : "$.time",
  "instance" : "$.detail.instance-id", 
  "state" : "$.detail.state",
  "resource" : "$.resources[0]"
}
```

これにより、`<timestamp>`、`<instance>`、`<state>`、および `<resource>` の 4 つの変数が定義されます。*入力テンプレート*の作成時にこれらの変数を参照できます。

**注記**  
Amazon CloudWatch Logs および SSM ターゲットは、入力トランスフォーマーでの `Input` および `InputPath` の使用をサポートしていません。

### 入力テンプレート
<a name="eb-transform-target-input-template"></a>

*入力テンプレート*は、ターゲットに渡す情報のテンプレートです。文字列または JSON をターゲットに渡すテンプレートを作成できます。上のイベントと*入力パス*を使用した*以下の入力テンプレート*の例では、イベントを出力例に変換してからターゲットにルーティングしています。


| 説明 | テンプレート | Output | 
| --- | --- | --- | 
| 単純な文字列 |  <pre>"instance <instance> is in <state>"</pre> |  <pre>"instance i-0123456789 is in RUNNING"</pre>  | 
|  **エスケープされた引用符を含む文字列**  |  <pre>"instance \"<instance>\" is in <state>"</pre> |  <pre>"instance \"i-0123456789\" is in RUNNING"</pre> これは Eventbridge コンソールでの動作です。 AWS CLI はスラッシュ文字をエスケープし、結果は `"instance "i-0123456789" is in RUNNING"` です。  | 
|  **単純な JSON**  |  <pre>{<br />  "instance" : <instance>,<br />  "state": <state><br />}</pre> |  <pre>{<br />  "instance" : "i-0123456789",<br />  "state": "RUNNING"<br />}</pre>  | 
|  **文字列と変数を含む JSON**  |  <pre>{<br /> "instance" : <instance>,<br /> "state": "<state>",<br /> "instanceStatus": "instance \"<instance>\" is in <state>"<br />}</pre>  |  <pre>{<br /> "instance" : "i-0123456789",<br /> "state": "RUNNING",<br /> "instanceStatus": "instance \"i-0123456789\" is in RUNNING"<br />}</pre>  | 
|  **変数と静的情報が混在した JSON**  |  <pre>{<br />  "instance" : <instance>,<br />  "state": [ 9, <state>, true ],<br />  "Transformed" : "Yes"<br />}<br /></pre> |  <pre>{<br />  "instance" : "i-0123456789",<br />  "state": [<br />    9,<br />    "RUNNING",<br />    true<br />  ],<br />  "Transformed" : "Yes"<br />}</pre>  | 
|  **JSON に予約変数を含める**  |  <pre>{<br />  "instance" : <instance>,<br />  "state": <state>,<br />  "ruleArn" : <aws.events.rule-arn>,<br />  "ruleName" : <aws.events.rule-name>,<br />  "originalEvent" : <aws.events.event.json><br />}</pre> |  <pre>{<br />  "instance" : "i-0123456789",<br />  "state": "RUNNING",<br />  "ruleArn" : "arn:aws:events:us-east-2:123456789012:rule/example",<br />  "ruleName" : "example",<br />  "originalEvent" : {<br />    ... // commented for brevity<br />  }<br />}</pre>  | 
|  **文字列に予約変数を含める**  | <pre>"<aws.events.rule-name> triggered"</pre> |  <pre>"example triggered"</pre>  | 
|  **Amazon CloudWatch ロググループ**  | <pre>{<br />  "timestamp" : <timestamp>,<br />  "message": "instance \"<instance>\" is in <state>"<br />}</pre> |  <pre>{<br />  "timestamp" : 2015-11-11T21:29:54Z,<br />  "message": "instance "i-0123456789" is in RUNNING<br />}</pre>  | 

## EventBridge API を使用した入力の変換
<a name="eb-transform-input-api"></a>

Eventbridge API での入力変換の使用方法と例については、「[入力トランスフォーマーを使用してイベントからデータを抽出し、そのデータをターゲットに入力する](https://docs.aws.amazon.com/eventbridge/latest/APIReference/API_PutTargets.html#API_PutTargets_Example_2)」を参照してください。

## を使用した入力の変換 AWS CloudFormation
<a name="eb-transform-input-cfn"></a>

を使用して入力 AWS CloudFormation を変換する方法については、[AWS::Events::Rule InputTransformer](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-inputtransformer.html)」を参照してください。

## 入力変換に関する一般的な問題
<a name="eb-transform-input-issues"></a>

これらは、Eventbridge で入力を変換するときの一般的な問題です。
+  文字列の場合は、引用符が必要です。
+  テンプレートの JSON パスを作成する場合、検証は行われません。
+  指定した変数と一致する JSON パスがイベントに存在しない場合、その変数は作成されず、出力にも表示されません。
+ `aws.events.event.json` のような JSON プロパティは JSON フィールドの値としてのみ使用でき、他の文字列に埋め込んで使用することはできません。
+  EventBridge は、ターゲットの*入力テンプレート*に入力する際に、*入力パス*によって抽出される値をエスケープしません。
+ JSON パスが JSON オブジェクトまたは配列を参照しているにもかかわらず、文字列では変数が参照されている場合、EventBridge は内部の引用符をすべて削除して文字列が有効であることを確認します。例えば、`$.detail` で変数 `<detail>` がポイントされている場合、"Detail is <detail>" が作成されると、EventBridge はオブジェクトから引用符を削除します。

  したがって、単一の JSON パス変数に基づいて JSON オブジェクトを出力する場合、それをキーとして配置する必要があります。この例では、`{"detail": <detail>}` です。
+ 文字列を表す変数に引用符は必要ありません。使用することはできますが、EventBridge では、変換出力が有効な JSON になるように、変換中に文字列変数の値に自動的に引用符を追加します。EventBridge は JSON オブジェクトや配列を表す変数に引用符を追加しません。JSON オブジェクトや配列を表す変数に引用符を追加しないでください。

  たとえば、次の入力テンプレートには、文字列と JSON オブジェクトの両方を表す変数が含まれています。

  ```
  {
    "ruleArn" : <aws.events.rule-arn>,
    "ruleName" : <aws.events.rule-name>,
    "originalEvent" : <aws.events.event.json>
  }
  ```

  正しい引用符で囲まれた有効な JSON が生成されます。

  ```
  {
    "ruleArn" : "arn:aws:events:us-east-2:123456789012:rule/example",
    "ruleName" : "example",
    "originalEvent" : {
      ... // commented for brevity
    }
  }
  ```
+ (非 JSON) テキスト出力を複数行文字列として使用する場合は、入力テンプレートの各行を二重引用符で囲みます。

  例えば、すべての [Amazon Inspector 検出結果](https://docs.aws.amazon.com/inspector/latest/user/eventbridge-integration.html#event-finding)イベントが以下のイベントパターンに一致した場合、

  ```
  {
    "detail": {
      "severity": ["HIGH"],
      "status": ["ACTIVE"]
    },
    "detail-type": ["Inspector2 Finding"],
    "source": ["inspector2"]
  }
  ```

  また、次の入力パスを使用していた場合、

  ```
  {
    "account": "$.detail.awsAccountId",
    "ami": "$.detail.resources[0].details.awsEc2Instance.imageId",
    "arn": "$.detail.findingArn",
    "description": "$.detail.description",
    "instance": "$.detail.resources[0].id",
    "platform": "$.detail.resources[0].details.awsEc2Instance.platform",
    "region": "$.detail.resources[0].region",
    "severity": "$.detail.severity",
    "time": "$.time",
    "title": "$.detail.title",
    "type": "$.detail.type"
  }
  ```

  以下の入力テンプレートを使用して、複数行の文字列出力を生成できます。

  ```
  "<severity> severity finding <title>"
  "Description: <description>"
  "ARN: \"<arn>\""
  "Type: <type>"
  "AWS Account: <account>"
  "Region: <region>"
  "EC2 Instance: <instance>"
  "Platform: <platform>"
  "AMI: <ami>"
  ```

# EventBridge でルールを作成するときに入力トランスフォーマーを設定する
<a name="eb-transform-input-rule"></a>

ルール作成の一環として、EventBridge から指定したターゲットに送信するイベントの事前のマッチング処理に使用する入力トランスフォーマーを指定できます。 AWS サービスまたは API 送信先であるターゲットの入力トランスフォーマーを設定できます。

**ルールの一部としてターゲットの入力トランスフォーマーを作成するには**

1. [Amazon EventBridge でのルールの作成](eb-create-rule-visual.md) に詳述しているルール作成の手順に従います。

1. **[ステップ 3 - ターゲットを選択]** で、**[追加設定]** を展開します。

1. **[ターゲット入力を設定]** で、ドロップダウンリストから **[入力トランスフォーマー]** を選択します。

   **[入力トランスフォーマーを設定]** をクリックします。

   EventBridge に **[入力トランスフォーマーを設定]** ダイアログボックスが表示されます。

1. **[サンプルイベント]** セクションで、イベントパターンをテストする対象の **[サンプルイベントタイプ]** を選択します。 AWS イベント、パートナーイベントを選択するか、独自のカスタムイベントを入力できます。

------
#### [ AWS events ]

   サポートされている  AWS のサービスから発行されたイベントを選択します。

   1. **[AWS  イベント]** を選択します。

   1. **サンプルイベント**で、目的の AWS イベントを選択します。イベントは AWS サービス別に整理されます。

      イベントを選択すると、EventBridge にサンプルイベントが表示されます。

      例えば、**[S3 オブジェクトの作成]** を選択すると、EventBridge に S3 オブジェクトの作成のサンプルイベントが表示されます。

   1. (オプション) **[コピー]** を選択して、サンプルイベントをデバイスのクリップボードにコピーすることもできます

------
#### [ Partner events ]

   Salesforce など、EventBridge をサポートしているサードパーティのサービスから送信されるイベントを選択します。

   1. **[EventBridge パートナーイベント]** を選択します。

   1. **[サンプルイベント]** で、目的のパートナーイベントを選択します。イベントはパートナーごとに整理されています。

      イベントを選択すると、EventBridge にサンプルイベントが表示されます。

   1. (オプション) **[コピー]** を選択して、サンプルイベントをデバイスのクリップボードにコピーすることもできます

------
#### [ Enter your own ]

   自分のイベントを JSON テキストで入力します。

   1. **[独自のイベントを入力]** を選択します。

   1. EventBridge に、必要なイベント属性のテンプレートと共にサンプルイベントが表示されます。

   1. 必要に応じてサンプルイベントを編集および追加します。サンプルイベントは有効な JSON である必要があります。

   1. (オプション) 以下のいずれかのオプションを選択することもできます。
      + **[コピー]** — サンプルイベントをデバイスのクリップボードにコピーします
      + **[Prettify]** (整文) — 改行、タブ、スペースを追加して JSON テキストを読みやすくします。

------

1. (オプション) **[入力パス、テンプレート、および出力の例]** セクションを展開して、以下の例を表示します。
   + JSON パスを使用してイベントデータを表す変数を定義する方法
   + これらの変数を入力トランスフォーマーテンプレートで使用する方法
   + EventBridge からターゲットに送信する結果の出力

   入力変換の詳細な例については、「[入力変換の例](eb-transform-target-input.md#eb-transform-input-examples)」を参照してください。

1. **[ターゲット入力トランスフォーマー]** セクションで、入力テンプレートで使用する変数を定義します。

   変数は、JSON パスを使用して元のイベントソースの値を参照します。これらの変数を入力テンプレートで参照し、EventBridge からターゲットに渡す変換済みイベントに、元のソースイベントからのデータを含めることができます。最大 100 の変数を定義できます。入力トランスフォーマーは有効な JSON である必要があります。

   たとえば、この入力トランスフォーマーのサンプル AWS イベントとしてイベント **S3 Object Created** を選択したとします。この場合、以下の変数を定義してテンプレートで使用できます。

   ```
   {
     "requester": "$.detail.requester",
     "key": "$.detail.object.key",
     "bucket": "$.detail.bucket.name"
   }
   ```

   (オプション) **[コピー]** を選択して、入力トランスフォーマーをデバイスのクリップボードにコピーすることもできます。

1. **[テンプレート]** セクションで、EventBridge からターゲットに何を渡すかを決めるために使用するテンプレートを作成します。

   JSON、文字列、静的情報、定義した変数、予約変数を使用できます。入力変換の詳細な例については、「[入力変換の例](eb-transform-target-input.md#eb-transform-input-examples)」を参照してください。

   例えば、前の例で変数を定義したとします。次に、これらの変数、予約変数、静的情報を参照する次のテンプレートを作成できます。

   ```
   {
       "message": "<requester> has created the object \"<key>\" in the bucket \"<bucket>\"",
       "RuleName": <aws.events.rule-name>,
       "ruleArn" : <aws.events.rule-arn>,
       "Transformed": "Yes"
   }
   ```

   (オプション) **[コピー]** を選択して、テンプレートをデバイスのクリップボードにコピーすることもできます。

1. テンプレートをテストするには、**[出力を生成]** を選択します。

   EventBridge は入力テンプレートに基づいてサンプルイベントを処理し、生成された変換後の出力を **[出力]** に表示します。これは、EventBridge が元のソースイベントの代わりにターゲットに渡す情報です。

   上で説明したサンプル入力テンプレートで生成される出力は、次のようになります。

   ```
   {
       "message": "123456789012 has created the object "example-key" in the bucket "amzn-s3-demo-bucket"",
       "RuleName": rule-name,
       "ruleArn" : arn:aws:events:us-east-1:123456789012:rule/rule-name,
       "Transformed": "Yes"
   }
   ```

   (オプション) **[コピー]** を選択して、生成された出力をデバイスのクリップボードにコピーすることもできます。

1. **[確認]** を選択します。

1. 「[Amazon EventBridge でのルールの作成](eb-create-rule-visual.md)」に詳述しているルールの作成に関する残りのステップに従います。

# EventBridge サンドボックスを使用したターゲット入力トランスフォーマーのテスト
<a name="eb-sandbox-input-trans"></a>

入力トランスフォーマーを使用して[イベント](eb-events.md)のテキストをカスタマイズした後で、その情報を EventBridge から[ルール](eb-rules.md)の[ターゲット](eb-targets.md)に渡すことができます。

入力トランスフォーマーの設定は、通常、[新しいルールの作成](eb-create-rule-visual.md)や既存のルールの編集に伴ってターゲットを指定するという、より大きなプロセスの一環として行います。ただし、EventBridge のサンドボックスを使用すると、ルールを作成または編集しなくても、入力トランスフォーマーをすばやく設定し、サンプルイベントを使用して目的の出力を確実に得ることができます。

入力変換の詳細については、「[Amazon EventBridge 入力変換](eb-transform-target-input.md)」を参照してください。

**ターゲット入力トランスフォーマーをテストするには**

1. Amazon EventBridge コンソールの [https://console.aws.amazon.com/events/](https://console.aws.amazon.com/events/) を開いてください。

1. **[デベロッパーリソース]** で **[サンドボックス]** を選択し、**[サンドボックス]** ページで **[ターゲット入力トランスフォーマー]** タブを選択します。

1. **[サンプルイベント]** セクションで、イベントパターンをテストする対象の **[サンプルイベントタイプ]** を選択します。 AWS イベント、パートナーイベントを選択するか、独自のカスタムイベントを入力できます。

------
#### [ AWS events ]

   サポートされている  AWS のサービスから発行されたイベントを選択します。

   1. **[AWS  イベント]** を選択します。

   1. **サンプルイベント**で、目的の AWS イベントを選択します。イベントは AWS サービス別に整理されます。

      イベントを選択すると、EventBridge にサンプルイベントが表示されます。

      例えば、**[S3 オブジェクトの作成]** を選択すると、EventBridge に S3 オブジェクトの作成のサンプルイベントが表示されます。

   1. (オプション) **[コピー]** を選択して、サンプルイベントをデバイスのクリップボードにコピーすることもできます

------
#### [ Partner events ]

   Salesforce など、EventBridge をサポートしているサードパーティのサービスから送信されるイベントを選択します。

   1. **[EventBridge パートナーイベント]** を選択します。

   1. **[サンプルイベント]** で、目的のパートナーイベントを選択します。イベントはパートナーごとに整理されています。

      イベントを選択すると、EventBridge にサンプルイベントが表示されます。

   1. (オプション) **[コピー]** を選択して、サンプルイベントをデバイスのクリップボードにコピーすることもできます

------
#### [ Enter your own ]

   自分のイベントを JSON テキストで入力します。

   1. **[独自のイベントを入力]** を選択します。

   1. EventBridge に、必要なイベント属性のテンプレートと共にサンプルイベントが表示されます。

   1. 必要に応じてサンプルイベントを編集および追加します。サンプルイベントは有効な JSON である必要があります。

   1. (オプション) 以下のいずれかのオプションを選択することもできます。
      + **[コピー]** — サンプルイベントをデバイスのクリップボードにコピーします
      + **[Prettify]** (整文) — 改行、タブ、スペースを追加して JSON テキストを読みやすくします。

------

1. (オプション) **[入力パス、テンプレート、および出力の例]** セクションを展開して、以下の例を表示します。
   + JSON パスを使用してイベントデータを表す変数を定義する方法
   + これらの変数を入力トランスフォーマーテンプレートで使用する方法
   + EventBridge からターゲットに送信する結果の出力

   入力変換の詳細な例については、「[入力変換の例](eb-transform-target-input.md#eb-transform-input-examples)」を参照してください。

1. **[ターゲット入力トランスフォーマー]** セクションで、入力テンプレートで使用する変数を定義します。

   変数は、JSON パスを使用して元のイベントソースの値を参照します。これらの変数を入力テンプレートで参照し、EventBridge からターゲットに渡す変換済みイベントに、元のソースイベントからのデータを含めることができます。最大 100 の変数を定義できます。入力トランスフォーマーは有効な JSON である必要があります。

   たとえば、この入力トランスフォーマーのサンプル AWS イベントとしてイベント **S3 Object Created** を選択したとします。この場合、以下の変数を定義してテンプレートで使用できます。

   ```
   {
     "requester": "$.detail.requester",
     "key": "$.detail.object.key",
     "bucket": "$.detail.bucket.name"
   }
   ```

   (オプション) **[コピー]** を選択して、入力トランスフォーマーをデバイスのクリップボードにコピーすることもできます。

1. **[テンプレート]** セクションで、EventBridge からターゲットに何を渡すかを決めるために使用するテンプレートを作成します。

   JSON、文字列、静的情報、定義した変数、予約変数を使用できます。入力変換の詳細な例については、「[入力変換の例](eb-transform-target-input.md#eb-transform-input-examples)」を参照してください。

   例えば、前の例で変数を定義したとします。次に、これらの変数、予約変数、静的情報を参照する次のテンプレートを作成できます。

   ```
   {
       "message": "<requester> has created the object \"<key>\" in the bucket \"<bucket>\"",
       "RuleName": <aws.events.rule-name>,
       "ruleArn" : <aws.events.rule-arn>,
       "Transformed": "Yes"
   }
   ```

   (オプション) **[コピー]** を選択して、テンプレートをデバイスのクリップボードにコピーすることもできます。

1. テンプレートをテストするには、**[出力を生成]** を選択します。

   EventBridge は入力テンプレートに基づいてサンプルイベントを処理し、生成された変換後の出力を **[出力]** に表示します。これは、EventBridge が元のソースイベントの代わりにターゲットに渡す情報です。

   上で説明したサンプル入力テンプレートで生成される出力は、次のようになります。

   ```
   {
       "message": "123456789012 has created the object "example-key" in the bucket "amzn-s3-demo-bucket"",
       "RuleName": rule-name,
       "ruleArn" : arn:aws:events:us-east-1:123456789012:rule/rule-name,
       "Transformed": "Yes"
   }
   ```

   (オプション) **[コピー]** を選択して、生成された出力をデバイスのクリップボードにコピーすることもできます。