

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

# Step Functions를 사용하여 EventBridge 이벤트 추가
<a name="connect-eventbridge"></a>

Step Functions는 Amazon EventBridge와 통합할 수 있도록 서비스 통합 API를 제공합니다. Step Functions 워크플로에서 직접 사용자 지정 이벤트를 전송하여 이벤트 기반 애플리케이션을 빌드하는 방법을 알아봅니다.

Step Functions의 AWS서비스와 통합하는 방법에 대한 자세한 내용은 [ 서비스 통합](integrate-services.md) 및 섹션을 참조하세요[Step Functions의 서비스 API에 파라미터 전달](connect-parameters.md).

**최적화된 EventBridge 통합의 주요 기능**  
실행 ARN 및 상태 머신 ARN은 각 `PutEventsRequestEntry`의 `Resources` 필드에 자동으로 추가됩니다.
`PutEvents`의 응답에 0이 아닌 `FailedEntryCount`가 포함된 경우 `Task` 상태가 실패하고 `EventBridge.FailedEntry` 오류가 발생합니다.

 `PutEvents` API를 사용하려면 전송할 이벤트의 특정 패턴과 일치하는 EventBridge 규칙을 계정에 만들어야 합니다. 예를 들면, 다음과 같이 할 수 있습니다.
+ EventBridge 규칙과 일치하는 이벤트를 수신하고 출력하는 Lambda 함수를 계정에 만듭니다.
+  특정 이벤트 패턴과 일치하고 Lambda 함수를 대상으로 하는 기본 이벤트 버스 기반 EventBridge 규칙을 계정에 만듭니다.

 자세한 내용은 다음을 참조하세요.
+ EventBridge 사용 설명서의 [PutEvents와 함께 Amazon EventBridge 이벤트 추가](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-putevents.html)
+ 서비스 통합 패턴의 [작업 토큰을 사용하여 콜백 대기](connect-to-resource.md#connect-wait-token)

다음에는 사용자 지정 이벤트를 전송하는 `Task`가 포함됩니다.

```
{
  "Type": "Task",
  "Resource": "arn:aws:states:::events:putEvents",
  "Arguments": {
    "Entries": [
      {
        "Detail": {
          "Message": "MyMessage"
        },
        "DetailType": "MyDetailType",
        "EventBusName": "MyEventBus",
        "Source": "my.source"
      }
    ]
  },
  "End": true
}
```

**입력 또는 결과 데이터의 할당량**  
서비스 간에 데이터를 전송하거나 수신할 때 작업의 최대 입력 또는 결과는 UTF-8 인코딩 문자열로 256KiB의 데이터입니다. [상태 머신 실행과 관련된 할당량](service-quotas.md#service-limits-state-machine-executions)을(를) 참조하세요.

## 최적화된 EventBridge API
<a name="connect-eventbridge-apis"></a>

지원되는 EventBridge API 및 구문은 다음과 같습니다.
+ [https://docs.aws.amazon.com/eventbridge/latest/APIReference/API_PutEvents.html](https://docs.aws.amazon.com/eventbridge/latest/APIReference/API_PutEvents.html)

## 오류 처리
<a name="connect-eventbridge-error"></a>

`PutEvents` API는 항목 배열을 입력으로 허용한 다음 결과 항목 배열을 반환합니다. `PutEvents` 작업이 성공하면 항목이 하나 이상 실패하더라도 `PutEvents`에서 HTTP 200 응답을 반환합니다. `PutEvents`에서 `FailedEntryCount` 필드에 실패한 항목 수를 반환합니다.

Step Functions는 `FailedEntryCount`가 0보다 큰지 여부를 확인합니다. 값이 0보다 크면 Step Functions에서 상태가 실패하고 `EventBridge.FailedEntry` 오류가 발생합니다. 이를 통해 실패한 항목이 있을 때 추가 상태를 사용하여 응답의 `FailedEntryCount`를 분석할 필요 없이 Task 상태에서 Step Functions의 기본 제공 오류 처리 기능을 사용하여 이 항목을 포착하거나 재시도할 수 있습니다.

**참고**  
멱등성을 구현했고 모든 항목을 안전하게 재시도할 수 있는 경우 Step Functions의 재시도 로직을 사용할 수 있습니다. Step Functions는 재시도하기 전에 `PutEvents` 입력 배열에서 성공한 항목을 제거하지 않습니다. 대신 원래 항목 배열을 사용하여 재시도합니다.

## EventBridge 호출을 위한 IAM 정책
<a name="eventbridge-iam"></a>

다음 예제 템플릿은가 상태 시스템 정의의 리소스를 기반으로 IAM 정책을 AWS Step Functions생성하는 방법을 보여줍니다. 자세한 내용은 [Step Functions가 통합 서비스용 IAM 정책을 생성하는 방법](service-integration-iam-templates.md) 및 [Step Functions에서 서비스 통합 패턴 검색](connect-to-resource.md) 섹션을 참조하세요.

### `PutEvents`
<a name="eventbridge-iam-listconnections"></a>

*정적 리소스*

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Action": [
                "events:PutEvents"
            ],
            "Resource": [
                "arn:aws:events:us-east-1:123456789012:event-bus/my-project-eventbus"
            ],
            "Effect": "Allow"
        }
    ]
}
```

*동적 리소스*

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "events:PutEvents"
            ],
            "Resource": "arn:aws:events:*:*:event-bus/*"
        }
    ]
}
```