

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

# 使用 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)。

**Optimized EventBridge 整合的主要功能**  
執行 ARN 和狀態機器 ARN 會自動附加到每個 的 `Resources` 欄位`PutEventsRequestEntry`。
如果 的回應`PutEvents`包含非零`FailedEntryCount`，則`Task`狀態會失敗並顯示錯誤 `EventBridge.FailedEntry`。

 若要使用 `PutEvents` API，您需要在帳戶中建立符合您將傳送之事件特定模式的 EventBridge 規則。例如，您可以：
+ 在您的帳戶中建立 Lambda 函數，該函數會接收並列印符合 EventBridge 規則的事件。
+  在符合特定事件模式並以 Lambda 函數為目標的預設事件匯流排上，在您的帳戶中建立 EventBridge 規則。

 如需詳細資訊，請參閱：
+ 《[EventBridge 使用者指南》中的使用 PutEvents 新增 Amazon](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-putevents.html) EventBridge 事件。
+ [使用任務字符等待回呼](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
}
```

**輸入或結果資料的配額**  
在服務之間傳送或接收資料時，任務的最大輸入或結果為 256 KiB 的資料，做為 UTF-8 編碼字串。請參閱 [狀態機器執行的相關配額](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` 是否大於零。如果大於零，Step Functions 會失敗狀態並顯示錯誤 `EventBridge.FailedEntry`。這可讓您在任務狀態上使用 Step Functions 的內建錯誤處理，在項目失敗時擷取或重試，而不需要使用其他狀態來分析回應`FailedEntryCount`中的 。

**注意**  
如果您已實作冪等性，並且可以安全地對所有項目重試，則可以使用 Step Functions 的重試邏輯。在重試之前，Step Functions 不會從`PutEvents`輸入陣列中移除成功的項目。反之，它會重試原始項目陣列。

## 用於呼叫 EventBridge 的 IAM 政策
<a name="eventbridge-iam"></a>

下列範例範本顯示 如何根據狀態機器定義中的資源AWS Step Functions產生 IAM 政策。如需詳細資訊，請參閱[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/*"
        }
    ]
}
```