

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

# イベントメッセージ
<a name="iot-events"></a>

このセクションには、モノまたはジョブが更新または変更された AWS IoT ときに によって発行されるメッセージに関する情報が含まれています。ディテクターを作成して、動作中の障害や変更がないかデバイスをモニタリングし、発生したときにアクションをトリガーできる AWS IoT Events サービスについては、「」を参照してください[AWS IoT Events](https://aws.amazon.com/iot-events)。

## イベントメッセージが生成される方法
<a name="iot-events-how"></a>

AWS IoT は、特定のイベントが発生したときにイベントメッセージを発行します。例えば、モノが追加、更新、または削除されると、イベントがレジストリによって生成されます。各イベントによって、単一のイベントメッセージが送信されます。イベントメッセージは、MQTT を介して JSON ペイロードを使用して公開されます。ペイロードのコンテンツは、イベントの種類によって異なります。

**注記**  
イベントメッセージは一度公開されることが保証されています。複数回発行することが可能です。イベントメッセージの順序は保証されません。

### イベントメッセージを受信するためのポリシー
<a name="iot-events-policy"></a>

イベントメッセージを受信するには、デバイスが AWS IoT デバイスゲートウェイに接続し、MQTT イベントトピックをサブスクライブできるようにする適切なポリシーを使用する必要があります。また、適切なトピックフィルターを受信登録する必要があります。

以下に示しているのは、ライフサイクルイベントの受信に必要なポリシーの例です。

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:Subscribe",
                "iot:Receive"
            ],
            "Resource": [
                "arn:aws:iot:us-east-1:123456789012:/$aws/events/*"
            ]
        }
    ]
}
```

## のイベントを有効にする AWS IoT
<a name="iot-events-enable"></a>

予約済みトピックのサブスクライバーがメッセージを受信する前に、 API AWS マネジメントコンソール または CLI を使用して、 または からイベントメッセージを有効にする必要があります。さまざまなオプションが管理するイベントメッセージの詳細については、[AWS IoT 「イベント設定表](#iot-events-settings-table)」を参照してください。
+ イベントメッセージを有効にするには、 AWS IoT コンソール[の設定](https://console.aws.amazon.com//iot/home#/settings)タブに移動し、**イベントベースのメッセージ**セクションでイベント**の管理**を選択します。管理したいイベントを指定ができます。
+ API または CLI を使用して発行されるイベントタイプを制御するには、[UpdateResourceEventConfiguration](https://docs.aws.amazon.com/iot/latest/apireference/API_UpdateEventConfigurations.html) API を呼び出すか、**update-event-configurations** CLI コマンドを使用します。例:。

  ```
  aws iot update-event-configurations --event-configurations "{\"THING\":{\"Enabled\": true}}"
  ```

**注記**  
二重引用符 (") はバックスラッシュ (\$1) でエスケープされます。

現在のイベント設定は、[DescribeEventConfigurations](https://docs.aws.amazon.com/iot/latest/apireference/API_DescribeEventConfigurations.html) API を呼び出すか、**describe-event-configurations** CLI コマンドを使用することで取得できます。例 :

```
aws iot describe-event-configurations
```<a name="iot-events-settings-table"></a>

** AWS IoT イベント構成設定表**


|  イベントカテゴリ  (AWS IoT コンソール: 設定: イベントベースのメッセージ)  |  `eventConfigurations` キーバリュー (AWS CLI/API)  |    イベントメッセージのトピック  | 
| --- | --- | --- | 
|  ( AWS CLI/API を使用してのみ設定可能)  |  `CA_CERTIFICATE`  |  `$aws/events/certificates/registered/caCertificateId`  | 
|  *( AWS CLI/API を使用してのみ設定可能)*  |  `CERTIFICATE`  |  `$aws/events/presence/connected/clientId`  | 
|  *( AWS CLI/API を使用してのみ設定可能)*  |  `CERTIFICATE`  |  `$aws/events/presence/disconnected/clientId`  | 
|  *( AWS CLI/API を使用してのみ設定可能)*  |  `CERTIFICATE`  |  `$aws/events/subscriptions/subscribed/clientId`  | 
|  *( AWS CLI/API を使用してのみ設定可能)*  |  `CERTIFICATE`  |  `$aws/events/subscriptions/unsubscribed/clientId`  | 
|  ジョブ完了、キャンセル済み  |  `JOB`  |  `$aws/events/job/jobID/canceled`  | 
|  ジョブ完了、キャンセル済み  |  `JOB`  |  `$aws/events/job/jobID/cancellation_in_progress`  | 
|  ジョブ完了、キャンセル済み  |  `JOB`  |  `$aws/events/job/jobID/completed`  | 
|  ジョブ完了、キャンセル済み  |  `JOB`  |  `$aws/events/job/jobID/deleted`  | 
|  ジョブ完了、キャンセル済み  |  `JOB`  |  `$aws/events/job/jobID/deletion_in_progress`  | 
|  ジョブ実行 : 成功、失敗、拒否、キャンセル、削除  |  `JOB_EXECUTION`  |  `$aws/events/jobExecution/jobID/canceled`  | 
|  ジョブ実行 : 成功、失敗、拒否、キャンセル、削除  |  `JOB_EXECUTION`  |  `$aws/events/jobExecution/jobID/deleted`  | 
|  ジョブ実行 : 成功、失敗、拒否、キャンセル、削除  |  `JOB_EXECUTION`  |  `$aws/events/jobExecution/jobID/failed`  | 
|  ジョブ実行 : 成功、失敗、拒否、キャンセル、削除  |  `JOB_EXECUTION`  |  `$aws/events/jobExecution/jobID/rejected`  | 
|  ジョブ実行 : 成功、失敗、拒否、キャンセル、削除  |  `JOB_EXECUTION`  |  `$aws/events/jobExecution/jobID/removed`  | 
|  ジョブ実行 : 成功、失敗、拒否、キャンセル、削除  |  `JOB_EXECUTION`  |  `$aws/events/jobExecution/jobID/succeeded`  | 
|  ジョブ実行 : 成功、失敗、拒否、キャンセル、削除  |  `JOB_EXECUTION`  |  `$aws/events/jobExecution/jobID/timed_out`  | 
|  モノ : 作成、更新、削除  |  `THING`  |  `$aws/events/thing/thingName/created`  | 
|  モノ : 作成、更新、削除  |  `THING`  |  `$aws/events/thing/thingName/updated`  | 
|  モノ : 作成、更新、削除  |  `THING`  |  `$aws/events/thing/thingName/deleted`  | 
|  モノグループ : 追加、削除  |  `THING_GROUP`  |  `$aws/events/thingGroup/thingGroupName/created`  | 
|  モノグループ : 追加、削除  |  `THING_GROUP`  |  `$aws/events/thingGroup/thingGroupName/updated`  | 
|  モノグループ : 追加、削除  |  `THING_GROUP`  |  `$aws/events/thingGroup/thingGroupName/deleted`  | 
|  モノグループ階層 : 追加、削除  |  `THING_GROUP_HIERARCHY`  |  `$aws/events/thingGroupHierarchy/thingGroup/parentThingGroupName/childThingGroup/childThingGroupName/added`  | 
|  モノグループ階層 : 追加、削除  |  `THING_GROUP_HIERARCHY`  |  `$aws/events/thingGroupHierarchy/thingGroup/parentThingGroupName/childThingGroup/childThingGroupName/removed`  | 
|  モノグループメンバーシップ : 追加、削除  |  `THING_GROUP_MEMBERSHIP`  |  `$aws/events/thingGroupMembership/thingGroup/thingGroupName/thing/thingName/added`  | 
|  モノグループメンバーシップ : 追加、削除  |  `THING_GROUP_MEMBERSHIP`  |  `$aws/events/thingGroupMembership/thingGroup/thingGroupName/thing/thingName/removed`  | 
|  モノタイプ : 作成、更新、削除  |  `THING_TYPE`  |  `$aws/events/thingType/thingTypeName/created`  | 
|  モノタイプ : 作成、更新、削除  |  `THING_TYPE`  |  `$aws/events/thingType/thingTypeName/updated`  | 
|  モノタイプ : 作成、更新、削除  |  `THING_TYPE`  |  `$aws/events/thingType/thingTypeName/deleted`  | 
|  モノタイプの関連付け : 追加、削除  |  `THING_TYPE_ASSOCIATION`  |  `$aws/events/thingTypeAssociation/thing/thingName/thingType/thingTypeName/added` `$aws/events/thingTypeAssociation/thing/thingName/thingType/thingTypeName/removed`  | 

# 登録イベント
<a name="registry-events"></a>

モノ、モノのタイプ、モノのグループが作成、更新、または削除されたときに、レジストリでのイベントメッセージ発行が可能になります。ただし、これらのイベントはデフォルトでは使用できません。これらのイベントを有効にする方法の詳細については、[のイベントを有効にする AWS IoT](iot-events.md#iot-events-enable) を参照してください。

**Topics**
+ [モノのイベント](#registry-events-thing)
+ [モノのタイプのイベント](#registry-events-thingtype)
+ [モノのグループのイベント](#registry-events-thinggroup)

## モノのイベント
<a name="registry-events-thing"></a>

**モノの作成/更新/削除**

レジストリは、モノが作成、更新、または削除されると次のイベントメッセージを発行します。
+ `$aws/events/thing/thingName/created`
+ `$aws/events/thing/thingName/updated`
+ `$aws/events/thing/thingName/deleted`

メッセージには、次のペイロード例が含まれています。

```
{
    "eventType" : "THING_EVENT",
    "eventId" : "f5ae9b94-8b8e-4d8e-8c8f-b3266dd89853",
    "timestamp" : 1234567890123,
    "operation" : "CREATED|UPDATED|DELETED",
    "accountId" : "123456789012",
    "thingId" : "b604f69c-aa9a-4d4a-829e-c480e958a0b5",
    "thingName" : "MyThing",
    "versionNumber" : 1,
    "thingTypeName" : null,
    "attributes": {
                "attribute3": "value3",
                "attribute1": "value1",
                "attribute2": "value2"
    }
}
```

ペイロードには次の属性が含まれます。

eventType  
「THING\$1EVENT」に設定します。

eventId  
一意のイベント ID (文字列)。

timestamp  
イベントが発生したときの UNIX タイムスタンプ。

オペレーション  
イベントをトリガーしたオペレーション。有効な値は次のとおりです。  
+ CREATED
+ UPDATED
+ 削除済み

accountId  
 AWS アカウント ID。

thingId  
作成、更新、または削除されているモノの ID。

thingName  
作成、更新、または削除されているモノの名前。

versionNumber  
作成、更新、または削除されているモノのバージョン。この値は、モノが作成されると 1 に設定されます。これは、モノが更新されるたびに 1 ずつ増加します。

thingTypeName  
新しいモノに関連付けられたモノのタイプの名前 (存在する場合)。そうでない場合は、`null` です。

個の属性  
モノに関連付けられた名前と値のペアの集合。

## モノのタイプのイベント
<a name="registry-events-thingtype"></a>

**Topics**
+ [作成/更新/廃止/復帰/削除されたモノのタイプ](#registry-events-thingtype-crud)
+ [モノに関連付けまたは関連付け解除されたモノのタイプ](#registry-events-thingtype-assoc)

### 作成/更新/廃止/復帰/削除されたモノのタイプ
<a name="registry-events-thingtype-crud"></a>

レジストリは、モノのタイプが作成、更新、廃止、復帰、または削除されると、次のイベントメッセージを発行します。
+ `$aws/events/thingType/thingTypeName/created`
+ `$aws/events/thingType/thingTypeName/updated`
+ `$aws/events/thingType/thingTypeName/deleted`

メッセージには、次の例のペイロードが含まれています。

```
{
    "eventType" : "THING_TYPE_EVENT",
    "eventId" : "8827376c-4b05-49a3-9b3b-733729df7ed5",
    "timestamp" : 1234567890123,
    "operation" : "CREATED|UPDATED|DELETED",
    "accountId" : "123456789012",
    "thingTypeId" : "c530ae83-32aa-4592-94d3-da29879d1aac",
    "thingTypeName" : "MyThingType",
    "isDeprecated" : false|true,
    "deprecationDate" : null,
    "searchableAttributes" : [ "attribute1", "attribute2", "attribute3" ],
    "propagatingAttributes": [
        {
	    "userPropertyKey": "key",
	    "thingAttribute": "model"
        },
        {
	    "userPropertyKey": "key",
	    "connectionAttribute": "iot:ClientId"
        }
    ],
    "description" : "My thing type"
}
```

ペイロードには次の属性が含まれます。

eventType  
「THING\$1TYPE\$1EVENT」に設定します。

eventId  
一意のイベント ID (文字列)。

timestamp  
イベントが発生したときの UNIX タイムスタンプ。

オペレーション  
イベントをトリガーしたオペレーション。有効な値は次のとおりです。  
+ CREATED
+ UPDATED
+ 削除済み

accountId  
 AWS アカウント ID。

thingTypeId  
作成、更新、廃止、または削除されているモノのタイプの ID。

thingTypeName  
作成、更新、廃止、または削除されているモノのタイプの名前。

isDeprecated  
`true` モノのタイプは廃止されている場合。そうでない場合は、`false` です。

deprecationDate  
モノのタイプが廃止されたときの UNIX タイムスタンプ。

searchableAttributes  
検索に使用できるモノのタイプに関連付けられた名前と値のペアの集合。

propagatingAttributes  
伝播属性のリスト。伝達属性には、モノの属性、接続属性、およびユーザープロパティキーを含めることができます。詳細については、「[メッセージエンリッチメントの伝播属性の追加](https://docs.aws.amazon.com//iot/latest/developerguide/thing-types-propagating-attributes.html)」を参照してください。

説明  
モノのタイプの説明。

### モノに関連付けまたは関連付け解除されたモノのタイプ
<a name="registry-events-thingtype-assoc"></a>

レジストリは、モノのタイプがモノに関連付けまたは関連付け解除されると、次のイベントメッセージを発行します。
+ `$aws/events/thingTypeAssociation/thing/thingName/thingType/typeName/added`
+ `$aws/events/thingTypeAssociation/thing/thingName/thingType/typeName/removed`

`added` ペイロードの例を次に示します。`removed` メッセージのペイロードは類似しています。

```
{
    "eventId" : "87f8e095-531c-47b3-aab5-5171364d138d",
    "eventType" : "THING_TYPE_ASSOCIATION_EVENT",
    "operation" : "ADDED",
    "thingId" : "b604f69c-aa9a-4d4a-829e-c480e958a0b5",
    "thingName": "myThing",
    "thingTypeName" : "MyThingType",
    "timestamp" : 1234567890123,
}
```

ペイロードには次の属性が含まれます。

eventId  
一意のイベント ID (文字列)。

eventType  
「THING\$1TYPE\$1ASSOCIATION\$1EVENT」に設定します。

オペレーション  
イベントをトリガーしたオペレーション。次の値を指定できます。  
+ 追加
+ 削除済み

thingId  
タイプの関連付けが変更されたモノの ID。

thingName  
タイプの関連付けが変更されたモノの名前。

thingTypeName  
モノと関連付けられた、または関連付けが解除されたモノのタイプ。

timestamp  
イベントが発生したときの UNIX タイムスタンプ。

## モノのグループのイベント
<a name="registry-events-thinggroup"></a>

**Topics**
+ [作成/更新/削除されたモノのグループ](#registry-events-thinggroup-crud)
+ [モノのグループに対して追加または削除されたモノ](#registry-events-thinggroup-addremove)
+ [モノのグループに対して追加または削除されたモノのグループ](#registry-events-thinggroup-adddelete)

### 作成/更新/削除されたモノのグループ
<a name="registry-events-thinggroup-crud"></a>

レジストリは、モノのグループが作成、更新、または削除されると次のイベントメッセージを発行します。
+ `$aws/events/thingGroup/groupName/created`
+ `$aws/events/thingGroup/groupName/updated`
+ `$aws/events/thingGroup/groupName/deleted`

`updated` ペイロードの例を次に示します。`created` と `deleted` メッセージのペイロードは類似しています。

```
{
  "eventType": "THING_GROUP_EVENT",
  "eventId": "8b9ea8626aeaa1e42100f3f32b975899",
  "timestamp": 1603995417409,
  "operation": "UPDATED",
  "accountId": "571EXAMPLE833",
  "thingGroupId": "8757eec8-bb37-4cca-a6fa-403b003d139f",
  "thingGroupName": "Tg_level5",
  "versionNumber": 3,
  "parentGroupName": "Tg_level4",
  "parentGroupId": "5fce366a-7875-4c0e-870b-79d8d1dce119",
  "description": "New description for Tg_level5",
  "rootToParentThingGroups": [
    {
      "groupArn": "arn:aws:iot:us-west-2:571EXAMPLE833:thinggroup/TgTopLevel",
      "groupId": "36aa0482-f80d-4e13-9bff-1c0a75c055f6"
    },
    {
      "groupArn": "arn:aws:iot:us-west-2:571EXAMPLE833:thinggroup/Tg_level1",
      "groupId": "bc1643e1-5a85-4eac-b45a-92509cbe2a77"
    },
    {
      "groupArn": "arn:aws:iot:us-west-2:571EXAMPLE833:thinggroup/Tg_level2",
      "groupId": "0476f3d2-9beb-48bb-ae2c-ea8bd6458158"
    },
    {
      "groupArn": "arn:aws:iot:us-west-2:571EXAMPLE833:thinggroup/Tg_level3",
      "groupId": "1d9d4ffe-a6b0-48d6-9de6-2e54d1eae78f"
    },
    {
      "groupArn": "arn:aws:iot:us-west-2:571EXAMPLE833:thinggroup/Tg_level4",
      "groupId": "5fce366a-7875-4c0e-870b-79d8d1dce119"
    }
  ],
  "attributes": {
    "attribute1": "value1",
    "attribute3": "value3",
    "attribute2": "value2"
  },
  "dynamicGroupMappingId": null
}
```

ペイロードには次の属性が含まれます。

eventType  
「THING\$1GROUP\$1EVENT」に設定します。

eventId  
一意のイベント ID (文字列)。

timestamp  
イベントが発生したときの UNIX タイムスタンプ。

オペレーション  
イベントをトリガーしたオペレーション。有効な値は次のとおりです。  
+ CREATED
+ UPDATED
+ 削除済み

accountId  
 AWS アカウント ID。

thingGroupId  
作成、更新、または削除されているモノのグループの ID。

thingGroupName  
作成、更新、または削除されているモノのグループの名前。

versionNumber  
モノのグループのバージョン。この値は、モノのグループが作成されると 1 に設定されます。これは、モノのグループが更新されるたびに 1 ずつ増加します。

parentGroupName  
親モノグループの名前 (存在する場合)。

parentGroupId  
親モノグループの ID (存在する場合)。

description  
モノのグループの説明。

rootToParentThingGroups  
親モノのグループについての情報の配列。モノの親グループごとに 1 つの要素があり、モノのルートグループから始まり、そのモノのグループの親まで続きます。各エントリには、モノのグループの `groupArn` と `groupId` が含まれています。

個の属性  
モノのグループに関連付けられた名前と値のペアの集合。

### モノのグループに対して追加または削除されたモノ
<a name="registry-events-thinggroup-addremove"></a>

レジストリは、モノがモノのグループに対して追加または削除されると、次のイベントメッセージを発行します。
+ `$aws/events/thingGroupMembership/thingGroup/thingGroupName/thing/thingName/added`
+ `$aws/events/thingGroupMembership/thingGroup/thingGroupName/thing/thingName/removed`

メッセージには、次のペイロード例が含まれています。

```
{
    "eventType" : "THING_GROUP_MEMBERSHIP_EVENT",
    "eventId" : "d684bd5f-6f6e-48e1-950c-766ac7f02fd1",
    "timestamp" : 1234567890123,
    "operation" : "ADDED|REMOVED",
    "accountId" : "123456789012",
    "groupArn" : "arn:aws:iot:ap-northeast-2:123456789012:thinggroup/MyChildThingGroup",
    "groupId" : "06838589-373f-4312-b1f2-53f2192291c4",
    "thingArn" : "arn:aws:iot:ap-northeast-2:123456789012:thing/MyThing",
    "thingId" : "b604f69c-aa9a-4d4a-829e-c480e958a0b5",
    "membershipId" : "8505ebf8-4d32-4286-80e9-c23a4a16bbd8"
}
```

ペイロードには次の属性が含まれます。

eventType  
「THING\$1GROUP\$1MEMBERSHIP\$1EVENT」に設定します。

eventId  
イベントの ID｡

timestamp  
イベントが発生したときの UNIX タイムスタンプ。

オペレーション  
`ADDED` モノのグループにモノが追加されると送信されます。`REMOVED` モノのグループからモノが削除されると送信されます。

accountId  
 AWS アカウント ID。

groupArn  
モノのグループの ARN｡

groupId  
グループの ID｡

thingArn  
モノのグループに追加または削除されたモノの ARN。

thingId  
モノのグループに追加または削除されたモノの ID。

membershipId  
モノとモノの間の関係を表す ID。この値は、モノをモノのグループに追加するときに生成されます。

### モノのグループに対して追加または削除されたモノのグループ
<a name="registry-events-thinggroup-adddelete"></a>

レジストリは、モノのグループが別のモノのグループに対して追加または削除されると、次のイベントメッセージを発行します。
+ `$aws/events/thingGroupHierarchy/thingGroup/parentThingGroupName/childThingGroup/childThingGroupName/added`
+ `$aws/events/thingGroupHierarchy/thingGroup/parentThingGroupName/childThingGroup/childThingGroupName/removed`

メッセージには、次の例のペイロードが含まれています。

```
{
    "eventType" : "THING_GROUP_HIERARCHY_EVENT",
    "eventId" : "264192c7-b573-46ef-ab7b-489fcd47da41",
    "timestamp" : 1234567890123,
    "operation" : "ADDED|REMOVED",
    "accountId" : "123456789012",
    "thingGroupId" : "8f82a106-6b1d-4331-8984-a84db5f6f8cb",
    "thingGroupName" : "MyRootThingGroup",
    "childGroupId" : "06838589-373f-4312-b1f2-53f2192291c4",
    "childGroupName" : "MyChildThingGroup"
}
```

ペイロードには次の属性が含まれます。

eventType  
「THING\$1GROUP\$1HIERARCHY\$1EVENT」に設定します。

eventId  
イベントの ID｡

timestamp  
イベントが発生したときの UNIX タイムスタンプ。

オペレーション  
`ADDED` モノのグループにモノが追加されると送信されます。`REMOVED` モノのグループからモノが削除されると送信されます。

accountId  
 AWS アカウント ID。

thingGroupId  
親モノのグループの ID

thingGroupName  
親モノのグループの名前。

childGroupId  
子モノのグループの ID

childGroupName  
子モノのグループの名前。

# ジョブイベント
<a name="events-jobs"></a>

 AWS IoT ジョブサービスは、ジョブが保留中、完了、またはキャンセルされたとき、およびジョブの実行時にデバイスが成功または失敗を報告するときに、MQTT プロトコルの予約済みトピックに発行します。デバイスまたは管理および監視アプリケーションは、これらのトピックにサブスクライブする事によって、ジョブの状態を追跡することができます。

**ジョブイベントを有効にする方法**  
 AWS IoT Jobs サービスからのレスポンスメッセージはメッセージブローカーを通過せず、他のクライアントやルールによってサブスクライブすることはできません。ジョブアクティビティ関連のメッセージをサブスクライブするには、`notify` および `notify-next`トピックを使用します。トピックの詳細については、[ジョブのトピック](reserved-topics.md#reserved-topics-job)を参照してください。

ジョブの更新を通知するには、 を使用するか AWS マネジメントコンソール、 API または CLI を使用して、これらのジョブイベントを有効にします。詳細については、「[のイベントを有効にする AWS IoT](iot-events.md#iot-events-enable)」を参照してください。

**ジョブイベントの仕組み**  
ジョブのキャンセルと削除には少し時間がかかることがあるため、リクエストの開始と終了を示す 2 つのメッセージが送信されます。例えば、キャンセルリクエストが開始されたら、`$aws/events/job/jobID/cancellation_in_progress` トピックにメッセージが送信されます。キャンセルリクエストが完了したら、`$aws/events/job/jobID/canceled` トピックにメッセージが送信されます。

ジョブ削除リクエストにも同様のプロセスが発生します。管理およびモニタリングアプリケーションは、これらのトピックに登録することによって、ジョブの状態を追跡することができます。MQTT トピックのパブリッシュとサブスクライブの詳細については、「[デバイス通信プロトコル](protocols.md)」を参照してください。

**Job イベントのタイプ**  
以下に、ジョブイベントの様々なタイプの例を示しています。

**ジョブの完了/キャンセル/削除**  
 AWS IoT ジョブサービスは、ジョブが完了、キャンセル、削除されたとき、またはキャンセルまたは削除が進行中のときに、MQTT トピックにメッセージを発行します。  
+ `$aws/events/job/jobID/completed`
+ `$aws/events/job/jobID/canceled`
+ `$aws/events/job/jobID/deleted`
+ `$aws/events/job/jobID/cancellation_in_progress`
+ `$aws/events/job/jobID/deletion_in_progress`
`completed`メッセージには、次の例のペイロードが含まれています：  

```
{
  "eventType": "JOB",
  "eventId": "7364ffd1-8b65-4824-85d5-6c14686c97c6",
  "timestamp": 1234567890,
  "operation": "completed",
  "jobId": "27450507-bf6f-4012-92af-bb8a1c8c4484",
  "status": "COMPLETED",
  "targetSelection": "SNAPSHOT|CONTINUOUS",
  "targets": [
    "arn:aws:iot:us-east-1:123456789012:thing/a39f6f91-70cf-4bd2-a381-9c66df1a80d0",
    "arn:aws:iot:us-east-1:123456789012:thinggroup/2fc4c0a4-6e45-4525-a238-0fe8d3dd21bb"
  ],
  "description": "My Job Description",
  "completedAt": 1234567890123,
  "createdAt": 1234567890123,
  "lastUpdatedAt": 1234567890123,
  "jobProcessDetails": {
    "numberOfCanceledThings": 0,
    "numberOfRejectedThings": 0,
    "numberOfFailedThings": 0,
    "numberOfRemovedThings": 0,
    "numberOfSucceededThings": 3
  }
}
```
`canceled`メッセージには、次の例のペイロードが含まれています：  

```
{
  "eventType": "JOB",
  "eventId": "568d2ade-2e9c-46e6-a115-18afa1286b06",
  "timestamp": 1234567890,
  "operation": "canceled",
  "jobId": "4d2a531a-da2e-47bb-8b9e-ff5adcd53ef0",
  "status": "CANCELED",
  "targetSelection": "SNAPSHOT|CONTINUOUS",
  "targets": [
    "arn:aws:iot:us-east-1:123456789012:thing/Thing0-947b9c0c-ff10-4a80-b4b3-cd33d0145a0f",
    "arn:aws:iot:us-east-1:123456789012:thinggroup/ThingGroup1-95c644d5-1621-41a6-9aa5-ad2de581d18f"
  ],
  "description": "My job description",
  "createdAt": 1234567890123,
  "lastUpdatedAt": 1234567890123
}
```
`deleted`メッセージには、次の例のペイロードが含まれています：  

```
{
      "eventType": "JOB",
      "eventId": "568d2ade-2e9c-46e6-a115-18afa1286b06",
      "timestamp": 1234567890,
      "operation": "deleted",
      "jobId": "4d2a531a-da2e-47bb-8b9e-ff5adcd53ef0",
      "status": "DELETED",
      "targetSelection": "SNAPSHOT|CONTINUOUS",
      "targets": [
        "arn:aws:iot:us-east-1:123456789012:thing/Thing0-947b9c0c-ff10-4a80-b4b3-cd33d0145a0f",
        "arn:aws:iot:us-east-1:123456789012:thinggroup/ThingGroup1-95c644d5-1621-41a6-9aa5-ad2de581d18f"
      ],
      "description": "My job description",
      "createdAt": 1234567890123,
      "lastUpdatedAt": 1234567890123,
      "comment": "Comment for this operation"
    }
```
`cancellation_in_progress`メッセージには、次の例のペイロードが含まれています：  

```
{
      "eventType": "JOB",
      "eventId": "568d2ade-2e9c-46e6-a115-18afa1286b06",
      "timestamp": 1234567890,
      "operation": "cancellation_in_progress",
      "jobId": "4d2a531a-da2e-47bb-8b9e-ff5adcd53ef0",
      "status": "CANCELLATION_IN_PROGRESS",
      "targetSelection": "SNAPSHOT|CONTINUOUS",
      "targets": [
        "arn:aws:iot:us-east-1:123456789012:thing/Thing0-947b9c0c-ff10-4a80-b4b3-cd33d0145a0f",
        "arn:aws:iot:us-east-1:123456789012:thinggroup/ThingGroup1-95c644d5-1621-41a6-9aa5-ad2de581d18f"
      ],
      "description": "My job description",
      "createdAt": 1234567890123,
      "lastUpdatedAt": 1234567890123,
      "comment": "Comment for this operation"
    }
```
`deletion_in_progress`メッセージには、次の例のペイロードが含まれています：  

```
{
      "eventType": "JOB",
      "eventId": "568d2ade-2e9c-46e6-a115-18afa1286b06",
      "timestamp": 1234567890,
      "operation": "deletion_in_progress",
      "jobId": "4d2a531a-da2e-47bb-8b9e-ff5adcd53ef0",
      "status": "DELETION_IN_PROGRESS",
      "targetSelection": "SNAPSHOT|CONTINUOUS",
      "targets": [
        "arn:aws:iot:us-east-1:123456789012:thing/Thing0-947b9c0c-ff10-4a80-b4b3-cd33d0145a0f",
        "arn:aws:iot:us-east-1:123456789012:thinggroup/ThingGroup1-95c644d5-1621-41a6-9aa5-ad2de581d18f"
      ],
      "description": "My job description",
      "createdAt": 1234567890123,
      "lastUpdatedAt": 1234567890123,
      "comment": "Comment for this operation"
    }
```

**ジョブ実行ターミナルステータス**  
 AWS IoT ジョブサービスは、デバイスがジョブ実行を終了ステータスに更新したときにメッセージを発行します。  
+ `$aws/events/jobExecution/jobID/succeeded`
+ `$aws/events/jobExecution/jobID/failed`
+ `$aws/events/jobExecution/jobID/rejected`
+ `$aws/events/jobExecution/jobID/canceled`
+ `$aws/events/jobExecution/jobID/timed_out`
+ `$aws/events/jobExecution/jobID/removed`
+ `$aws/events/jobExecution/jobID/deleted`
メッセージには、次の例のペイロードが含まれています。  

```
{
  "eventType": "JOB_EXECUTION",
  "eventId": "cca89fa5-8a7f-4ced-8c20-5e653afb3572",
  "timestamp": 1234567890,
  "operation": "succeeded|failed|rejected|canceled|removed|timed_out",
  "jobId": "154b39e5-60b0-48a4-9b73-f6f8dd032d27",
  "thingArn": "arn:aws:iot:us-east-1:123456789012:myThing/6d639fbc-8f85-4a90-924d-a2867f8366a7",
  "status": "SUCCEEDED|FAILED|REJECTED|CANCELED|REMOVED|TIMED_OUT",
  "statusDetails": {
    "key": "value"
  }
}
```

# コマンド実行イベント
<a name="command-events"></a>

AWS IoT コマンド実行のステータスが変更されると、 は MQTT トピックにイベントメッセージを発行します。これらのイベントを使用して、コマンド実行の進行状況をモニタリングし、ステータスの変更に対応するアプリケーションを構築できます。

**コマンド実行イベントのトピック**  
コマンド実行イベントは、次の MQTT トピックに発行されます。

```
$aws/events/commandExecution/commandId/status
```

コードの説明は以下のとおりです。
+ `commandId` は コマンドの識別子です。
+ `status` は、コマンド実行のステータスです。有効な値は、`CREATED`、`IN_PROGRESS`、`SUCCEEDED`、`FAILED`、`REJECTED`、`TIMED_OUT` です。

すべてのコマンドとすべてのステータスの通知を受信するには、ワイルドカード文字を使用して次のトピックにサブスクライブします。

```
$aws/events/commandExecution/+/#
```

**コマンド実行イベントメッセージ**  
コマンドの実行ステータスが変更されると、 は対応する MQTT トピックにイベントメッセージ AWS IoT を発行します。メッセージには、次の例のペイロードが含まれています。

```
{
    "executionId": "2bd65c51-4cfd-49e4-9310-d5cbfdbc8554",
    "status": "FAILED",
    "statusReason": {
        "reasonCode": "DEVICE_TOO_BUSY",
        "reasonDescription": ""
    },
    "eventType": "COMMAND_EXECUTION",
    "commandArn": "arn:aws:iot:us-east-1:123456789012:command/0b9d9ddf-e873-43a9-8e2c-9fe004a90086",
    "targetArn": "arn:aws:iot:us-east-1:123456789012:thing/5006c3fc-de96-4def-8427-7eee36c6f2bd",
    "timestamp": 1717708862107
}
```

ペイロードには以下の属性が含まれます。

**executionId**  
コマンド実行の一意の識別子 (文字列）。

**status**  
コマンド実行のステータス。有効な値は、`CREATED`、`IN_PROGRESS`、`SUCCEEDED`、`FAILED`、`REJECTED`、`TIMED_OUT` です。

**statusReason**  
利用可能な場合、ステータスに関する追加情報を含むオブジェクト。`reasonCode` および `reasonDescription`フィールドが含まれます。

**eventType**  
「COMMAND\$1EXECUTION」に設定します。

**commandArn**  
コマンドの Amazon リソースネーム (ARN)。

**targetArn**  
コマンド実行のターゲットデバイス (モノまたはクライアント) の ARN。

**timestamp**  
イベントが発生したときの UNIX タイムスタンプ。

# ライフサイクルイベント
<a name="life-cycle-events"></a>

AWS IoT は、MQTT トピックでライフサイクルイベントを発行できます。これらのイベントはデフォルトで利用可能で、無効にすることはできません。

**注記**  
ライフサイクルメッセージは順不同で送信される場合があります。重複したメッセージを受信することがあります。  
`thingName` は、クライアントが[排他的なモノ](exclusive-thing.md)の機能を使用して接続している場合にのみ含まれます。

**Topics**
+ [接続/切断イベント](#connect-disconnect)
+ [接続試行失敗イベント](#connect-authfailure-event)
+ [サブスクライブ/サブスクライブ解除イベント](#subscribe-unsubscribe-events)

## 接続/切断イベント
<a name="connect-disconnect"></a>

**注記**  
 AWS IoT Device Management フリートインデックス作成を使用すると、モノの検索、集計クエリの実行、モノの Connect/Disconnect イベントに基づく動的グループの作成を行うことができます。詳細については、「[フリートインデックス作成](https://docs.aws.amazon.com//iot/latest/developerguide/iot-indexing.html)」を参照してください。

AWS IoT クライアントが接続または切断すると、 は次の MQTT トピックにメッセージを発行します。
+ `$aws/events/presence/connected/clientId` – クライアントがメッセージブローカーに接続しました。
+ `$aws/events/presence/disconnected/clientId` – クライアントがメッセージブローカーから切断されました。

以下に示しているのは、`$aws/events/presence/connected/clientId` トピックにパブリッシュされる接続/切断メッセージに含まれる JSON 要素のリストです。

**clientId**  
接続/切断するクライアントの ID。  
\$1 または \$1 が含まれているクライアント ID はライフサイクルイベントを受信しません。

**thingName**  
IoT モノの名前。`thingName` は、クライアントが[排他的なモノ](exclusive-thing.md)の機能を使用して接続している場合にのみ含まれます。

**clientInitiatedDisconnect**  
クライアントによって切断が開始された場合は True、それ以外の場合は、false を返します。接続解除メッセージのみで見つかります。

**disconnectReason**  
クライアントが切断する理由。接続解除メッセージのみで見つかります。次の表には、有効な値と、接続が切断されたときにブローカーが [Last Will and Testament (LWT) メッセージ](mqtt.md#mqtt-lwt)を送信するかどうかが含まれています。      
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/iot/latest/developerguide/life-cycle-events.html)
1このエラーが表示される前にデバイスの接続がアクティブだった場合。  
2Last Will and Testament (LWT) メッセージを防ぐには、`DeleteConnection` API のデフォルトの LWT 送信動作を上書きするように `preventWillMessage=true` を設定します。

**eventType**  
イベントのタイプ。有効な値は `connected` または `disconnected` です。

**ipAddress**  
接続しているクライアントの IP アドレス。これは、IPv4 形式または IPv6 形式にすることができます。接続メッセージでのみ見つかります。

**principalIdentifier**  
認証に使用された認証情報。TLS 相互認証の場合、これは使用された証明書の ID です。その他の認証の場合、これは IAM 認証情報です。

**sessionIdentifier**  
セッションの存続中 AWS IoT に存在する のグローバルに一意の識別子。

**timestamp**  
イベントが発生したおおよその日時。

**versionNumber**  
ライフサイクルイベントのバージョン番号。これは、各クライアント ID 接続ごとに単調に増加する長い整数値です。バージョン番号は、ライフサイクルイベントの順序を推測するために加入者が使用できます。  
クライアント接続の Connect メッセージと Disconnect メッセージのバージョン番号は同じです。  
バージョン番号は値をスキップする可能性があり、イベントごとに 1 ずつ増加するとは限りません。  
クライアントが約 1 時間接続されない場合、バージョン番号は 0 にリセットされます。永続的なセッションでは、永続的なセッションに設定された有効期間 (TTL) よりも長い時間クライアントが切断された後、バージョン番号は 0 にリセットされます。

接続メッセージの構造は次のとおりです。

```
{
    "clientId": "186b5",
    "thingName": "exampleThing",
    "timestamp": 1573002230757,
    "eventType": "connected",
    "sessionIdentifier": "00000000-0000-0000-0000-000000000000",
    "principalIdentifier": "12345678901234567890123456789012",
    "ipAddress": "192.0.2.0",
    "versionNumber": 0
}
```

切断メッセージの構造は次のとおりです。

```
{
    "clientId": "186b5",
    "thingName": "exampleThing",
    "timestamp": 1573002340451,
    "eventType": "disconnected",
    "sessionIdentifier": "00000000-0000-0000-0000-000000000000",
    "principalIdentifier": "12345678901234567890123456789012",
    "clientInitiatedDisconnect": true,
    "disconnectReason": "CLIENT_INITIATED_DISCONNECT",
    "versionNumber": 0
}
```

### クライアントの切断の処理
<a name="reconnect"></a>

ベストプラクティスは、[Last Will and Testament (LWT) メッセージ](mqtt.md)を含むライフサイクルイベントに対して、常に待機状態を実装することです。切断メッセージが受信されると、コードは一定期間待機し、デバイスがオフラインのままであることを確認してからアクションを実行します。これを行う 1 つの方法は、[SQS 遅延キュー](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-delay-queues.html)の使用です。クライアントが LWT またはライフサイクルイベントを受信したら、例えば 5 秒間メッセージをキューに追加できます。そのメッセージが使用可能になり、(Lambda または別のサービスによって) 処理されたら、さらにアクションを実行する前に、最初にデバイスがまだオフラインかどうか確認できます。

## 接続試行失敗イベント
<a name="connect-authfailure-event"></a>

AWS IoT は、クライアントが接続する権限がない場合、または最後の Will と Testament が設定されていて、クライアントがその最後の Will トピックに発行する権限がない場合に、次の MQTT トピックにメッセージを発行します。

```
$aws/events/presence/connect_failed/clientId
```

以下に、`$aws/events/presence/connect_failed/clientId` トピックに発行される接続許可メッセージに含まれる JSON 要素のリストを示しています。

**clientId**  
接続を試みて失敗したクライアントのクライアント ID。  
\$1 または \$1 が含まれているクライアント ID はライフサイクルイベントを受信しません。

**thingName**  
IoT モノの名前。`thingName` は、クライアントが[排他的なモノ](exclusive-thing.md)の機能を使用して接続している場合にのみ含まれます。

**timestamp**  
イベントが発生したおおよその日時。

**eventType**  
イベントのタイプ。有効な値は`connect_failed`です。

**connectFailureReason**  
接続が失敗する理由。有効な値は`AUTHORIZATION_FAILED`です。

**principalIdentifier**  
認証に使用された認証情報。TLS 相互認証の場合、これは使用された証明書の ID です。その他の認証の場合、これは IAM 認証情報です。

**sessionIdentifier**  
セッションの存続中 AWS IoT に存在する のグローバルに一意の識別子。

**ipAddress**  
接続しているクライアントの IP アドレス。これは、IPv4 形式または IPv6 形式にすることができます。接続メッセージでのみ見つかります。

接続失敗メッセージの構造は次のとおりです。

```
{
    "clientId": "186b5",
    "thingName": "exampleThing",
    "timestamp": 1460065214626,
    "eventType": "connect_failed",
    "connectFailureReason": "AUTHORIZATION_FAILED",
    "principalIdentifier": "12345678901234567890123456789012",
    "sessionIdentifier": "00000000-0000-0000-0000-000000000000",
    "ipAddress" : "192.0.2.0"
}
```

## サブスクライブ/サブスクライブ解除イベント
<a name="subscribe-unsubscribe-events"></a>

AWS IoT クライアントが MQTT トピックをサブスクライブまたはサブスクライブ解除すると、 は次の MQTT トピックにメッセージを発行します。

```
$aws/events/subscriptions/subscribed/clientId
```

 または 

```
$aws/events/subscriptions/unsubscribed/clientId
```

ここで、`clientId` は、 AWS IoT メッセージブローカーに接続する MQTT クライアントの ID です。

このトピックにパブリッシュされたメッセージには、以下の構造があります。

```
{
    "clientId": "186b5",
    "thingName": "exampleThing",
    "timestamp": 1460065214626,
    "eventType": "subscribed" | "unsubscribed",
    "sessionIdentifier": "00000000-0000-0000-0000-000000000000",
    "principalIdentifier": "12345678901234567890123456789012",
    "topics" : ["foo/bar","device/data","dog/cat"]
}
```

以下に示しているのは、`$aws/events/subscriptions/subscribed/clientId` および `$aws/events/subscriptions/unsubscribed/clientId` トピックにパブリッシュされるサブスクライブ/サブスクライブ解除メッセージに含まれる JSON 要素のリストです。

clientId  
サブスクライブまたはサブスクライブ解除するクライアントの ID。  
\$1 または \$1 が含まれているクライアント ID はライフサイクルイベントを受信しません。

thingName  
IoT モノの名前。`thingName` は、クライアントが[排他的なモノ](exclusive-thing.md)の機能を使用して接続している場合にのみ含まれます。

eventType  
イベントのタイプ。有効な値は `subscribed` または `unsubscribed` です。

principalIdentifier  
認証に使用された認証情報。TLS 相互認証の場合、これは使用された証明書の ID です。その他の認証の場合、これは IAM 認証情報です。

sessionIdentifier  
セッションの存続中 AWS IoT に存在する のグローバルに一意の識別子。

timestamp  
イベントが発生したおおよその日時。

トピック  
クライアントがサブスクライブした MQTT トピックの配列。

**注記**  
ライフサイクルメッセージは順不同で送信される場合があります。重複したメッセージを受信することがあります。