

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

# Amazon EventBridge を使用して Amazon Location Service イベントに対応する
<a name="location-events"></a>

Amazon EventBridge は、Amazon Location などの AWS サービスのデータを使用してアプリケーションを効率的に接続するサーバーレスイベントバスです。EventBridge はAmazon Location からイベントを受信し、そのデータを AWS Lambdaのようなターゲットにルーティングします。お客様は、データの送信先を判断するためのルーティングルールを設定して、すべてのデータソースにリアルタイムで反応するアプリケーションアーキテクチャを構築できます。

デフォルトでは、ジオフェンスイベント (`ENTER`と`EXIT`デバイスがジオフェンスエリアに出入りする際のイベント) のみが EventBridge に送信されます。トラッカーリソースのすべてのフィルターされた位置更新のイベントを有効にすることもできます。詳細については、「[トラッカーの更新イベントを有効にする](#enable-update-events)」を参照してください。

詳細については、*Amazon EventBridge ユーザーガイド*の[イベントとイベントパターン](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-events.html)を参照してください。

**Topics**
+ [トラッカーの更新イベントを有効にする](#enable-update-events)
+ [Amazon Location のイベントルールを作成する](#create-event-rule)
+ [Amazon Location Service 用の Amazon EventBridge イベントの例](#example-event)

## トラッカーの更新イベントを有効にする
<a name="enable-update-events"></a>

デフォルトでは、Amazon Location は `ENTER` と `EXIT` ジオフェンスイベントのみを EventBridge に送信します。トラッカーのフィルターされた位置`UPDATE`イベントをすべてEventBridge に送信できるようにすることができます。これはトラッカーを[作成](https://docs.aws.amazon.com/location/latest/APIReference/API_WaypointTracking_CreateTracker.html)または[更新する](https://docs.aws.amazon.com/location/latest/APIReference/API_WaypointTracking_UpdateTracker.html)ときに設定できます。

たとえば、 を使用して既存のトラッカーを更新するには AWS CLI、次のコマンドを使用できます (*MyTracker* の代わりにトラッカーリソースの名前を使用します）。

```
aws location update-tracker --tracker-name MyTracker --event-bridge-enabled
```

トラッカーの位置イベントをオフにするには、API または Amazon Location Service コンソールを使用する必要があります。

## Amazon Location のイベントルールを作成する
<a name="create-event-rule"></a>

EventBridge では、[イベントバスごとに最大 300 のルールを作成](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-quota.html)して、Amazon Location イベントに対応して実行されるアクションを設定できます。

例えば、ジオフェンスされた境界内で電話が検出されるとプッシュ通知が送信されるジオフェンスイベント用のルールを作成できます。

**Amazon Location イベントのルールを作成する**

次の値を使用して、Amazon Location イベントに基づいて [EventBridge ルールを作成します](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-create-rule-visual.html)。
+ **ルールタイプ**では、**イベントパターンを持つルール**を選択します。
+ **イベントパターン** ボックスに次のパターンを貼り付けます。

  ```
  {
    "source": ["aws.geo"],
    "detail-type": ["Location Geofence Event"]
  }
  ```

  トラッカー位置更新ルールを作成するには、代わりに次のパターンを使用できます。

  ```
  {
    "source": ["aws.geo"],
    "detail-type": ["Location Device Position Event"]
  }
  ```

  `detail` オプションでタグを追加することで `ENTER` または `EXIT` イベントのみを指定できます (ルールがトラッカーの位置更新の場合、`EventType` は 1 つだけなので、フィルタリングする必要はありません)。

  ```
  {
    "source": ["aws.geo"],
    "detail-type": ["Location Geofence Event"],
    "detail": {
      "EventType": ["ENTER"]
    }
  }
  ```

  オプションでポジションやジオフェンスのプロパティをフィルタリングすることもできます。

  ```
  {
    "source": ["aws.geo"],
    "detail-type": ["Location Geofence Event"],
    "detail": {
      "EventType": ["ENTER"],
      "GeofenceProperties": {
        "Type": "LoadingDock"
      },
      "PositionProperties": {
        "VehicleType": "Truck"
      }
    }
  }
  ```
+ **ターゲットを選択**では、Amazon Location Service からイベントを受信したときに実行するターゲットアクションを選択します。

  例えば、Amazon Simple Notification Service (SNS) トピックを使用して、イベントが発生したときに E メールまたはテキストメッセージを送信できます。先ず、Amazon SNS コンソールを使用して Amazon SNS トピックを作成する必要があります。詳細については、「[Amazon SNS を利用してユーザー通知](https://docs.aws.amazon.com/sns/latest/dg/sns-user-notifications.html)」を参照してください。

**警告**  
イベントルールが正常に適用されたことを確認するのがベストプラクティスです。そうしないと、自動アクションが期待どおりに開始されない場合があります。イベントルールを確認するには、イベントルールの条件を設定します。例えば、デバイスがジオフェンスエリアに入る様子をシミュレートします。

`detail-type`セクションを除外するだけで、Amazon Location からのすべてのイベントをキャプチャすることもできます。例えば、次のようになります。

```
{
  "source": [
    "aws.geo"
  ]
}
```

**注記**  
同じイベントが複数回配信される場合があります。イベント ID を使用して、受信したイベントの重複を排除できます。

## Amazon Location Service 用の Amazon EventBridge イベントの例
<a name="example-event"></a>

`BatchUpdateDevicePosition`の呼び出しによって開始されるジオフェンスに入るイベントの例を以下に示します。

```
{
  "version": "0",
  "id": "aa11aa22-33a-4a4a-aaa5-example",
  "detail-type": "Location Geofence Event",
  "source": "aws.geo",
  "account": "636103698109",
  "time": "2020-11-10T23:43:37Z",
  "region": "eu-west-1",
  "resources": [
    "arn:aws:geo:eu-west-1:0123456789101:geofence-collection/GeofenceEvents-GeofenceCollection_EXAMPLE",
    "arn:aws:geo:eu-west-1:0123456789101:tracker/Tracker_EXAMPLE"
  ],
  "detail": {
    "EventType": "ENTER",
    "GeofenceId": "polygon_14",
    "DeviceId": "Device1-EXAMPLE",
    "SampleTime": "2020-11-10T23:43:37.531Z",
    "Position": [
      -123.12390073297821,
      49.23433613216247
    ],
    "Accuracy": {
      "Horizontal": 15.3
    },
    "GeofenceProperties": {
      "ExampleKey1": "ExampleField1",
      "ExampleKey2": "ExampleField2"
    },
    "PositionProperties": {
      "ExampleKey1": "ExampleField1",
      "ExampleKey2": "ExampleField2"
    }
  }
}
```

`BatchUpdateDevicePosition`の呼び出しによって開始されるジオフェンスを終了するためのイベントの例を以下に示します。

```
{
  "version": "0",
  "id": "aa11aa22-33a-4a4a-aaa5-example",
  "detail-type": "Location Geofence Event",
  "source": "aws.geo",
  "account": "123456789012",
  "time": "2020-11-10T23:41:44Z",
  "region": "eu-west-1",
  "resources": [
    "arn:aws:geo:eu-west-1:0123456789101:geofence-collection/GeofenceEvents-GeofenceCollection_EXAMPLE",
    "arn:aws:geo:eu-west-1:0123456789101:tracker/Tracker_EXAMPLE"
  ],
  "detail": {
    "EventType": "EXIT",
    "GeofenceId": "polygon_10",
    "DeviceId": "Device1-EXAMPLE",
    "SampleTime": "2020-11-10T23:41:43.826Z",
    "Position": [
      -123.08569321875426,
      49.23766166742559
    ],
    "Accuracy": {
      "Horizontal": 15.3
    },
    "GeofenceProperties": {
      "ExampleKey1": "ExampleField1",
      "ExampleKey2": "ExampleField2"
    },
    "PositionProperties": {
      "ExampleKey1": "ExampleField1",
      "ExampleKey2": "ExampleField2"
    }
  }
}
```

`BatchUpdateDevicePosition`の呼び出しによって開始される位置更新イベントの例を以下に示します。

```
{
  "version": "0",
  "id": "aa11aa22-33a-4a4a-aaa5-example",
  "detail-type": "Location Device Position Event",
  "source": "aws.geo",
  "account": "123456789012",
  "time": "2020-11-10T23:41:44Z",
  "region": "eu-west-1",
  "resources": [
    "arn:aws:geo:eu-west-1:0123456789101:tracker/Tracker_EXAMPLE"
  ],
  "detail": {
    "EventType": "UPDATE",
    "TrackerName": "tracker_2",
    "DeviceId": "Device1-EXAMPLE",
    "SampleTime": "2020-11-10T23:41:43.826Z",
    "ReceivedTime": "2020-11-10T23:41:39.235Z",
    "Position": [
      -123.08569321875426,
      49.23766166742559
    ],
    "Accuracy": {
      "Horizontal": 15.3
    },
    "PositionProperties": {
      "ExampleKey1": "ExampleField1",
      "ExampleKey2": "ExampleField2"
    }
  }
}
```