

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# EventBridge 資料來源的AWS AppSync JavaScript 解析程式函數參考
<a name="resolver-reference-eventbridge-js"></a>

搭配 EventBridge 資料來源使用的 AWS AppSync 解析程式函數請求和回應可讓您將自訂事件傳送至 Amazon EventBridge 匯流排。

## 請求
<a name="request-js"></a>

請求處理常式可讓您將多個自訂事件傳送至 EventBridge 事件匯流排：

```
export function request(ctx) {
  return {
    "operation" : "PutEvents",
    "events" : [{}]
  }
}
```

EventBridge `PutEvents`請求具有下列類型定義：

```
type PutEventsRequest = {
  operation: 'PutEvents'
  events: {
    source: string
    detail: { [key: string]: any }
    detailType: string
    resources?: string[]
    time?: string // RFC3339 Timestamp format
  }[]
}
```

## 回應
<a name="response-js"></a>

如果`PutEvents`操作成功，EventBridge 的回應會包含在 中`ctx.result`：

```
export function response(ctx) {
  if(ctx.error)
    util.error(ctx.error.message, ctx.error.type, ctx.result)
  else
    return ctx.result
}
```

執行 `InternalExceptions`或 等`PutEvents`操作時發生的錯誤`Timeouts`會出現在 中`ctx.error`。如需 EventBridge 常見錯誤的清單，請參閱 [EventBridge 常見錯誤參考](https://docs.aws.amazon.com/eventbridge/latest/APIReference/CommonErrors.html)。

`result` 將具有下列類型定義：

```
type PutEventsResult = {
  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**

下列範例是具有兩個成功事件`PutEvents`的操作：

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

**範例回應 2**

下列範例是具有三個事件、兩個成功和一個失敗`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` 物件包含以下欄位：
  + `"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" : []
}
```