

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# 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` 또는 `Timeouts`와 같은 `PutEvents` 작업을 수행하는 동안 발생하는 오류는 `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**

다음 예는 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\$110개의 항목이 할당되어야 합니다.

  `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" : []
}
```