

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

# AWS AppSync Amazon EventBridge のルールのターゲット
<a name="target-appsync"></a>

AWS AppSync を使用すると、開発者は、安全でサーバーレス、高性能な GraphQL および Pub/Sub APIs を使用して、アプリケーションとサービスをデータやイベントに接続できます。を使用すると AWS AppSync、GraphQL ミューテーションを使用してアプリケーションにリアルタイムのデータ更新を発行できます。EventBridge は、一致したイベントに対する有効な GraphQL ミューテーション操作の呼び出しをサポートしています。 AWS AppSync API ミューテーションをターゲットとして指定すると、 はミューテーションオペレーションを介してイベント AWS AppSync を処理し、ミューテーションにリンクされたサブスクリプションをトリガーできます。

**注記**  
EventBridge は AWS AppSync パブリック GraphQL APIsをサポートしています。EventBridge は現在 AWS AppSync 、プライベート APIsをサポートしていません。

 AWS AppSync GraphQL API ターゲットは、次のユースケースに使用できます。
+ 設定したデータソースへのイベントデータのプッシュ、変換、保存
+ 接続しているアプリケーションクライアントへの通知のリアルタイム送信

**注記**  
AWS AppSync ターゲットは、 [`AWS_IAM`認可タイプ](https://docs.aws.amazon.com/appsync/latest/devguide/security-authz.html#aws-iam-authorization)を使用した AWS AppSync GraphQL APIs の呼び出しのみをサポートします。

 AWS AppSync GraphQL APIs「 *AWS AppSync デベロッパーガイド*」の[GraphQL と AWS AppSync アーキテクチャ](https://docs.aws.amazon.com/appsync/latest/devguide/graphql-overview.html)」を参照してください。

**コンソールを使用して EventBridge ルールの AWS AppSync ターゲットを指定するには**

1. [ルールを作成または編集します。](eb-create-rule-visual.md)

1. **[ターゲット]** で、**[AWS のサービス]**、**[AWS AppSync]** の順に選択して[ターゲットを指定](eb-create-rule-wizard.md#eb-create-rule-target)します。

1. 解析して実行するミューテーション操作を、選択セットと共に指定します。
   +  AWS AppSync API を選択し、次に呼び出す GraphQL API ミューテーションを選択します。
   + **[パラメータと選択セットの設定]** で、選択セットの作成にキーと値のマッピングを使用するか、入力トランスフォーマーを使用するかを選択します。

------
#### [ Key-value mapping ]

     キーと値のマッピングを使用して選択セットを作成するには:
     + API パラメータの変数を指定します。各変数は、静的な値でも、イベントペイロードへの動的な JSON パス式でもかまいません。
     + **[選択セット]** で、レスポンスに含める変数を選択します。

------
#### [ Input transformer ]

     入力トランスフォーマーを使用して選択セットを作成するには:
     + 使用する変数を定義する入力パスを指定します。
     + ターゲットに渡す情報を定義およびフォーマットする入力テンプレートを指定します。

     詳細については、「[EventBridge でルールを作成するときに入力トランスフォーマーを設定する](eb-transform-input-rule.md)」を参照してください。

------

1. **[実行ロール]** で、新しいロールを作成するか、既存のロールを使用するかを選択します。

1. ルールの作成または編集を完了します。

## 例:Amazon EventBridge の AWS AppSync ターゲット
<a name="target-appsync-walkthrough"></a>

次の例では、EventBridge ルールの AWS AppSync ターゲットを指定する方法について説明します。これには、配信するイベントをフォーマットするための入力変換の定義が含まれます。

次のスキーマで定義された AWS AppSync GraphQL API `Ec2EventAPI`があるとします。

```
type Event {
    id: ID!
    statusCode: String
    instanceId: String
}

type Mutation {
    pushEvent(id: ID!, statusCode: String!, instanceId: String): Event
}

type Query {
    listEvents: [Event]
}

type Subscription {
    subscribeToEvent(id: ID, statusCode: String, instanceId: String): Event
        @aws_subscribe(mutations: ["pushEvent"])
}
```

この API を使用するアプリケーションクライアントは、`pushEvent` ミューテーションによってトリガーされる `subscribeToEvent` サブスクリプションにサブスクライブできます。

`pushEvent` ミューテーションを介して AppSync API にイベントを送信するターゲットを使用して EventBridge ルールを作成できます。ミューテーションを呼び出すと、サブスクライブしているすべてのクライアントがイベントを受信します。

この API を EventBridge ルールのターゲットとして指定するには、次の操作を行います。

1. ルールターゲットの Amazon リソースネーム (ARN) を `Ec2EventAPI` API の GraphQL エンドポイント ARN に設定します。

1. GraphQL ミューテーション操作をターゲットパラメータとして指定します。

   ```
   mutation CreatePushEvent($id: ID!, $statusCode: String, $instanceId: String) {
     pushEvent(id: $input, statusCode: $statusCode, instanceId: $instanceId) {
       id
       statusCode
       instanceId
     }
   }
   ```

   ミューテーション選択セットには、GraphQL サブスクリプションでサブスクライブするすべてのフィールドを含める必要があります。

1. 入力トランスフォーマーを設定して、一致したイベントのデータをどのように操作で使用するかを指定します。

   次の `“EC2 Instance Launch Successful”` サンプルイベントを選択したとします。

   ```
   {
     "version": "0",
     "id": "3e3c153a-8339-4e30-8c35-687ebef853fe",
     "detail-type": "EC2 Instance Launch Successful",
     "source": "aws.autoscaling",
     "account": "123456789012",
     "time": "2015-11-11T21:31:47Z",
     "region": "us-east-1",
     "resources": ["arn:aws:autoscaling:us-east-1:123456789012:autoScalingGroup:eb56d16b-bbf0-401d-b893-d5978ed4a025:autoScalingGroupName/sampleLuanchSucASG", "arn:aws:ec2:us-east-1:123456789012:instance/i-b188560f"],
     "detail": {
       "StatusCode": "InProgress",
       "AutoScalingGroupName": "sampleLuanchSucASG",
       "ActivityId": "9cabb81f-42de-417d-8aa7-ce16bf026590",
       "Details": {
         "Availability Zone": "us-east-1b",
         "Subnet ID": "subnet-95bfcebe"
       },
       "RequestId": "9cabb81f-42de-417d-8aa7-ce16bf026590",
       "EndTime": "2015-11-11T21:31:47.208Z",
       "EC2InstanceId": "i-b188560f",
       "StartTime": "2015-11-11T21:31:13.671Z",
       "Cause": "At 2015-11-11T21:31:10Z a user request created an AutoScalingGroup changing the desired capacity from 0 to 1.  At 2015-11-11T21:31:11Z an instance was started in response to a difference between desired and actual capacity, increasing the capacity from 0 to 1."
     }
   }
   ```

   ターゲット入力トランスフォーマーの入力パスを使用して、テンプレートで使用する以下の変数を定義できます。

   ```
   {
     "id": "$.id",
     "statusCode": "$.detail.StatusCode",
     "EC2InstanceId": "$.detail.EC2InstanceId"
   }
   ```

   入力トランスフォーマーテンプレートを作成して、EventBridge が AWS AppSync ミューテーションオペレーションに渡す変数を定義します。テンプレートは JSON として評価される必要があります。入力パスを指定すると、次のテンプレートを作成できます。

   ```
   {
     "id": <id>,
     "statusCode": <statusCode>,
     "instanceId": <EC2InstanceId>
   }
   ```