

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

# 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` からのレスポンスにゼロ以外の `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 でエンコードされた文字列で 256 KiB です。「[ステートマシンの実行に関連するクォータ](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` は、1 つ以上のエントリが失敗した場合でも、HTTP 200 レスポンスを返します。`PutEvents` は `FailedEntryCount` フィールドの失敗したエントリの数を返します。

Step Functions、`FailedEntryCount` がゼロより大きいかどうかをチェックします。0 より大きい場合、Step Functions はエラー `EventBridge.FailedEntry` を使って状態を失敗させます。こうして、エントリに失敗した場合、キャッチまたは再試行のため、タスクの状態で Step Functions の組み込みエラー処理を使用できます。レスポンスから `FailedEntryCount` を分析する追加状態を使う必要はありません。

**注記**  
べき等を実装し、すべてのエントリで安全に再試行できる場合は、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/*"
        }
    ]
}
```