

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

# EventBridge のAWS AppSync リゾルバーマッピングテンプレートリファレンス
<a name="resolver-mapping-template-reference-eventbridge"></a>

**注記**  
現在、主に APPSYNC\$1JS ランタイムとそのドキュメントをサポートしています。[こちら](https://docs.aws.amazon.com/appsync/latest/devguide/resolver-reference-js-version.html) で APPSYNC\$1JS ランタイムとそのガイドの使用をご検討ください。

EventBridge データソースで使用される AWS AppSync リゾルバーマッピングテンプレートを使用すると、Amazon EventBridge バスにカスタムイベントを送信できます。

## リクエストマッピングテンプレート
<a name="request-mapping-template"></a>

`PutEvents` リクエストマッピングテンプレートを使用すると、複数のカスタムイベントを EventBridge イベントバスに送信できます。 マッピングドキュメントの構造は次のとおりです。

```
{
    "version" : "2018-05-29", 
    "operation" : "PutEvents",
    "events" : [{}]
}
```

次の例は、EventBridge のリクエストマッピングテンプレートの例です。

```
{
    "version": "2018-05-29",
    "operation": "PutEvents",
    "events": [{
        "source": "com.mycompany.myapp",
        "detail": {
            "key1" : "value1",
            "key2" : "value2"
        },
        "detailType": "myDetailType1"
    },
    {
        "source": "com.mycompany.myapp",
        "detail": {
            "key3" : "value3",
            "key4" : "value4"
        },
        "detailType": "myDetailType2",
        "resources" : ["Resource1", "Resource2"],
        "time" : "2023-01-01T00:30:00.000Z"
    }
    
    ]
}
```

## レスポンスマッピングテンプレート
<a name="response-mapping-template"></a>

`PutEvents` 操作が成功すると、EventBridge からの応答が `$ctx.result` に含まれます。

```
#if($ctx.error)
  $util.error($ctx.error.message, $ctx.error.type, $ctx.result)
#end
  $util.toJson($ctx.result)
```

`InternalExceptions` や `Timeouts` などの `PutEvents` 操作の実行中に発生したエラーは、`$ctx.error` に表示されます。EventBridge の一般的なエラーのリストについては、[EventBridge の一般的なエラーのリファレンス](https://docs.aws.amazon.com/eventbridge/latest/APIReference/CommonErrors.html)を参照してください。

`result` は、次の形式になります。

```
{
    "Entries" [
        {
            "ErrorCode" : String,
            "ErrorMessage" : String,
            "EventId" : String
        }
    ],
    "FailedEntryCount" : number
}
```
+ **エントリ**

  取り込まれたイベントは、成功と失敗の両方の結果になります。取り込みが成功すると、エントリには `EventID` が含まれます。それ以外の場合は、`ErrorCode` と `ErrorMessage` を使用してエントリの問題を特定できます。

  各レコードの応答要素のインデックスは、リクエスト配列のインデックスと同じです。
+ **FailedEntryCount**

  失敗したエントリの数。この値は整数として表されます。

`PutEvents` のレスポンスの詳細については、「[PutEvents](https://docs.aws.amazon.com/eventbridge/latest/APIReference/API_PutEvents.html#API_PutEvents_ResponseElements)」を参照してください。

**サンプルレスポンスの例: 1**

次の例は、2 つのイベントが成功する `PutEvents` 操作です。

```
{
    "Entries" : [ 
        {
            "EventId": "11710aed-b79e-4468-a20b-bb3c0c3b4860"
        }, 
        {
            "EventId": "d804d26a-88db-4b66-9eaf-9a11c708ae82"
        }
    ],
    "FailedEntryCount" : 0
}
```

**サンプルレスポンスの例: 2**

次の例は、3 つのイベント (2 つの成功、1 つの失敗) がある `PutEvents` 操作です。

```
{
    "Entries" : [ 
        {
            "EventId": "11710aed-b79e-4468-a20b-bb3c0c3b4860"
        }, 
        {
            "EventId": "d804d26a-88db-4b66-9eaf-9a11c708ae82"
        },
        {
            "ErrorCode" : "SampleErrorCode",
            "ErrorMessage" : "Sample Error Message"
        }
    ],
    "FailedEntryCount" : 1
}
```

## `PutEvents` フィールド
<a name="putevents-field"></a>

`PutEvents` には、次のマッピングテンプレートフィールドが含まれています。
+ **バージョン**

  すべてのリクエストマッピングテンプレートに共通で、`version` フィールドはテンプレートが使用するバージョンを定義します。このフィールドは必須です。値 `2018-05-29` は、EventBridge マッピングテンプレートでサポートされている唯一のバージョンです。
+ **操作**

  サポートされている操作は `PutEvents` のみです。この操作により、カスタムイベントをイベントバスに追加できます。
+ **イベント**

  イベントバスに追加されるイベントの配列。この配列には 1～10 個の項目が割り当てられている必要があります。

  `Event` オブジェクトは、以下のフィールドを持つ有効な JSON オブジェクトです。
  + `"source"`: イベントのソースを識別する文字列。
  + `"detail"`: イベントに関する情報をアタッチするのに使用できる JSON オブジェクト。このフィールドは空のマップ (`{ }`) でもかまいません。
  + `"detailType`: イベントの種類を識別する文字列。
  + `"resources"`: イベントに関わるリソースを識別する文字列の JSON 配列 このフィールドは、空白の配列でもかまいません。
  + `"time"`: 文字列として提供されるイベントのタイムスタンプ。これは [RFC3339](https://www.rfc-editor.org/rfc/rfc3339.txt) タイムスタンプ形式に従う必要があります。

以下のスニペットは有効な `Event` オブジェクトの例です。

**例 1**

```
{
    "source" : "source1",
    "detail" : {
        "key1" : [1,2,3,4],
        "key2" : "strval"
    },
    "detailType" : "sampleDetailType",
    "resources" : ["Resouce1", "Resource2"],
    "time" : "2022-01-10T05:00:10Z"
}
```

**例 2**

```
{
    "source" : "source1",
    "detail" : {},
    "detailType" : "sampleDetailType"
}
```

**例 3**

```
{
    "source" : "source1",
    "detail" : {
        "key1" : 1200
    },
    "detailType" : "sampleDetailType",
    "resources" : []
}
```