View a markdown version of this page

Notifications relatives aux intégrations gérées - Intégrations gérées pour AWS IoT Device Management

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Notifications relatives aux intégrations gérées

Les notifications d'intégrations gérées fournissent des mises à jour et des informations clés sur les appareils. Les notifications incluent les événements liés aux connecteurs, les commandes des appareils, les événements liés au cycle de vie, les mises à jour OTA (Over-the-Air) et les rapports d'erreurs. Ces informations fournissent des informations exploitables pour créer des flux de travail automatisés, prendre des mesures immédiates ou stocker des données d'événements à des fins de dépannage.

Actuellement, seuls les flux de données Amazon Kinesis sont pris en charge en tant que destination pour les notifications d'intégrations gérées. Vous devez d'abord configurer un flux de données Amazon Kinesis et autoriser Managed Integrations à accéder au flux de données avant de configurer les notifications.

Configurer Amazon Kinesis pour les notifications

Pour configurer les notifications Amazon Kinesis for Managed Integrations, procédez comme suit :

Étape 1 : créer un flux de données Amazon Kinesis

Un flux de données Amazon Kinesis peut ingérer une grande quantité de données en temps réel, les stocker de manière durable et les mettre à disposition des applications.

Pour créer un flux de données Amazon Kinesis

Étape 2 : créer une politique d'autorisation

Créez une politique d'autorisation qui autorise Managed Integrations à accéder à votre flux de données Kinesis.

Pour créer une politique d'autorisations
  • Pour créer une politique d'autorisation, copiez la politique ci-dessous et suivez les étapes décrites dans Création de politiques à l'aide de l'éditeur JSON

    JSON
    { "Version":"2012-10-17", "Statement": [ { "Action": "kinesis:PutRecord", "Resource": "*", "Effect": "Allow" } ] }

Ouvrez le tableau de bord IAM et cliquez sur Rôles.

Pour accéder au tableau de bord IAM
  • Ouvrez le tableau de bord IAM et cliquez sur Rôles.

    Pour plus d'informations, consultez la section Création de rôles IAM dans le guide de l'Gestion des identités et des accès AWSutilisateur.

Étape 4 : Utiliser une politique de confiance personnalisée

Vous pouvez utiliser une politique de confiance personnalisée pour accorder à Managed Integrations l'accès au flux de données Kinesis.

Pour utiliser une politique de confiance personnalisée
  • Créez un nouveau rôle et choisissez Politique de confiance personnalisée. Cliquez sur Next.

    La politique suivante permet à Managed Integrations d'assumer le rôle, et la Condition déclaration permet d'éviter toute confusion liée aux adjoints.

    JSON
    { "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "iotmanagedintegrations.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceAccount": "123456789012" }, "ArnLike": { "aws:SourceArn": "arn:aws:iotmanagedintegrations:ca-central-1:123456789012:*" } } } ] }

Étape 5 : appliquez votre politique d'autorisation

Ajoutez au rôle la politique d'autorisation que vous avez créée à l'étape 2.

Pour ajouter une politique d'autorisation
  • Sur la page Ajouter des autorisations, recherchez et ajoutez la politique d'autorisation que vous avez créée à l'étape 2. Cliquez sur Next.

Étape 6 : Entrez un nom de rôle

  • Entrez un nom de rôle et cliquez sur Créer un rôle.

Configurer les notifications d'intégrations gérées

Pour configurer les notifications d'intégrations gérées, procédez comme suit :

Étape 1 : autoriser l'utilisateur à appeler l' CreateDestination API

  • Autoriser l'utilisateur à appeler l'CreateDestinationAPI

    La politique suivante définit les conditions requises pour que l'utilisateur appelle l'CreateDestinationAPI.

    Consultez la section Accorder à un utilisateur l'autorisation de transmettre un rôle à un AWS service dans le Guide de Gestion des identités et des accès AWSl'utilisateur pour obtenir des autorisations de transfert pour les intégrations gérées.

    JSON
    { "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":"iam:PassRole", "Resource":"arn:aws:iam::123456789012:role/ROLE_CREATED_IN_PREVIOUS_STEP", "Condition":{ "StringEquals":{ "iam:PassedToService":"iotmanagedintegrations.amazonaws.com" } } }, { "Effect":"Allow", "Action":"iotmanagedintegrations:CreateDestination", "Resource":"*" } ] }

Étape 2 : appeler l' CreateDestination API

  • Appelez l'CreateDestinationAPI

    Après avoir créé votre flux de données Amazon Kinesis et votre rôle d'accès au flux, appelez l'CreateDestinationAPI pour créer votre destination de notification vers laquelle les notifications seront acheminées. Pour le DeliveryDestinationArn paramètre, utilisez celui arn de votre nouveau flux de données Amazon Kinesis.

    { "DeliveryDestinationArn": "Your Kinesis arn" "DeliveryDestinationType": "KINESIS" "Name": "DestinationName" "ClientToken": "string" "RoleArn": "arn:aws:iam::accountID:role/ROLE_CREATED_IN_PREVIOUS_STEP" }
    Note

    ClientTokenest un jeton d'idempuissance. Si vous réessayez une demande qui s'est initialement terminée avec succès en utilisant le même jeton client et les mêmes paramètres, la nouvelle tentative aboutira sans aucune autre action.

Étape 3 : appeler l' CreateNotificationConfiguration API

  • Appelez l'CreateNotificationConfigurationAPI

    Enfin, utilisez l'CreateNotificationConfigurationAPI pour créer la configuration des notifications qui achemine les types d'événements choisis vers votre destination représentée par le flux de données Kinesis. Dans le DestinationName paramètre, utilisez le même nom de destination que lorsque vous avez initialement appelé l'CreateDestinationAPI.

    { "EventType": "DEVICE_EVENT" "DestinationName" // This name has to be identical to the name in createDestination API "ClientToken": "string" }

Types d'événements surveillés avec Managed Integrations

Les types d'événements surveillés par les notifications Managed Integrations sont les suivants :

  • DEVICE_COMMAND

    • État de la commande SendManagedThingCommandAPI. Les valeurs valides sont succeeded ou failed.

      { "version":"0", "messageId":"6a7e8feb-b491-4cf7-a9f1-bf3703467718", "messageType":"DEVICE_COMMAND", "source":"aws.iotmanagedintegrations", "customerAccountId":"123456789012", "timestamp":"1731623291671", "region":"ca-central-1", "resources":[ "arn:aws:iotmanagedintegrations:ca-central-1:123456789012:managed-thing/6a7e8feb-b491-4cf7-a9f1-bf3703467718" ], "payload":{ "traceId":"1234567890abcdef0", "receivedAt":"2017-12-22T18:43:48Z", "executedAt":"2017-12-22T18:43:48Z", "result":"failed" } }
  • DEVICE_COMMAND_REQUEST

    • La demande de commande de Web Real-Time Communication (WebRTC).

      La norme WebRTC permet la communication entre deux pairs. Ces pairs peuvent transmettre des données vidéo, audio et arbitraires en temps réel. Managed Integrations prend en charge le WebRTC pour permettre ce type de streaming entre l'application mobile d'un client et l'appareil de l'utilisateur final. Pour plus d'informations sur la norme WebRTC, voir WebRTC.

      { "version":"0", "messageId":"6a7e8feb-b491-4cf7-a9f1-bf3703467718", "messageType":"DEVICE_COMMAND_REQUEST", "source":"aws.iotmanagedintegrations", "customerAccountId":"123456789012", "timestamp":"1731623291671", "region":"ca-central-1", "resources":[ "arn:aws:iotmanagedintegrations:ca-central-1:123456789012:managed-thing/6a7e8feb-b491-4cf7-a9f1-bf3703467718" ], "payload":{ "endpoints":[{ "endpointId":"1", "capabilities":[{ "id":"aws.DoorLock", "name":"Door Lock", "version":"1.0" }] }] } }
  • DEVICE_DISCOVERY_STATUS

    • État de découverte de l'appareil.

      { "version":"0", "messageId":"6a7e8feb-b491-4cf7-a9f1-bf3703467718", "messageType":"DEVICE_DISCOVERY_STATUS", "source":"aws.iotmanagedintegrations", "customerAccountId":"123456789012", "timestamp":"2017-12-22T18:43:48Z", "region":"ca-central-1", "resources":[ "arn:aws:iotmanagedintegrations:ca-central-1:123456789012:managed-thing/6a7e8feb-b491-4cf7-a9f1-bf3703467718" ], "payload":{ "deviceCount": 1, "deviceDiscoveryId": "123", "status": "SUCCEEDED" } }
  • DEVICE_EVENT

    • Notification d'un événement survenant sur un appareil.

      { "version":"1.0", "messageId":"2ed545027bd347a2b855d28f94559940", "messageType":"DEVICE_EVENT", "source":"aws.iotmanagedintegrations", "customerAccountId":"123456789012", "timestamp":"1731630247280", "resources":[ "/quit/1b15b39992f9460ba82c6c04595d1f4f" ], "payload":{ "iotMiArrivalTimestamp":"2026-06-26T21:28:14.697Z", "endpoints":[{ "endpointId":"1", "capabilities":[{ "id":"aws.DoorLock", "name":"Door Lock", "version":"1.0", "properties":[{ "name":"ActuatorEnabled", "value":"true" }] }] }] } }

      La DEVICE_EVENT charge utile contient les champs suivants :

      • iotMiArrivalTimestamp, String (ISO 8601) : horodatage indiquant le moment où l'événement de l'appareil a été publié par l'appareil dans Managed Integrations. Utilisez ce champ pour déterminer le temps de latence entre le moment où l'événement a été généré par l'appareil et le moment où Managed Integrations l'a reçu.

      • endpoints: liste des points de terminaison de l'appareil et de leurs propriétés de fonctionnalité mises à jour.

      Le timestamp champ de l'enveloppe extérieure du message indique la date à laquelle la notification a été envoyée à Kinesis. La charge utile indique la date iotMiArrivalTimestamp à laquelle l'événement est arrivé dans Managed Integrations. Ces deux horodatages peuvent être différents en cas de latence de traitement entre l'arrivée de l'événement et l'envoi de la notification.

  • DEVICE_LIFE_CYCLE

    Reflète l'évolution de l'état du cycle de vie de l'appareil (y compris le statut d'intégration et connected/disconnected le statut).

    • Événement de mise à jour du statut d'intégration.

      { "version": "1.0.0", "messageId": "a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6", "messageType": "DEVICE_LIFE_CYCLE", "source": "aws.iotmanagedintegrations", "customerAccountId": "123456789012", "timestamp": "2024-11-14T19:55:57.568284645Z", "region": "ca-central-1", "resources": [ "arn:aws:iotmanagedintegrations:ca-central-1:123456789012:managed-thing/a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6" ], "payload": { "deviceDetails": { "id": "a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6", "arn": "arn:aws:iotmanagedintegrations:ca-central-1:123456789012:managed-thing/a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6", "createdAt": "2024-11-14T19:55:57.515841147Z", "updatedAt": "2024-11-14T19:55:57.515841559Z" }, "status": "UNCLAIMED" } }
    • Événement relatif à l'état de connexion de l'appareil

      { "version": "1.0", "messageId": "a1b2c3d4-e5f6-g7h8-i9j0-k1l2m3n4o5p6", "messageType": "DEVICE_LIFE_CYCLE", "source": "aws.iotmanagedintegrations", "customerAccountId": "123456789012", "timestamp": "2024-11-14T19:55:57.568284645Z", "region": "ca-central-1", "resources": [ "arn:aws:iotmanagedintegrations:ca-central-1:123456789012:managed-thing/a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6" ], "payload": { "managedThingId": "a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6", "managedThingArn": "arn:aws:iotmanagedintegrations:ca-central-1:123456789012:managed-thing/a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6", "clientId": "iotmi-example-client-id", "timestamp": "1768000475344", "eventType": "connected", "sessionIdentifier": "q1w2e3r4-t5y6-u7i8-o9p0-a1s2d3f4g5h6", "principalIdentifier": "z1x2c3v4b5n6m7a8s9d0f1g2h3j4k5l6p7o8i9u0y1t2r3e4w5q6a7z8x9c0v1b2", "ipAddress": "192.0.2.100", "versionNumber": "0" } }
    • Événement d'état de déconnexion de l'appareil.

      { "version": "1.0", "messageId": "b2n3m4a5-s6d7-f8g9-h0j1-k2l3z4x5c6v7", "messageType": "DEVICE_LIFE_CYCLE", "source": "aws.iotmanagedintegrations", "customerAccountId": "123456789012", "timestamp": "2024-11-14T19:55:57.568284645Z", "region": "ca-central-1", "resources": [ "arn:aws:iotmanagedintegrations:ca-central-1:123456789012:managed-thing/a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6" ], "payload": { "managedThingId": "a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6", "managedThingArn": "arn:aws:iotmanagedintegrations:ca-central-1:123456789012:managed-thing/a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6", "clientId": "iotmi-example-client-id", "timestamp": "1768000492431", "eventType": "disconnected", "sessionIdentifier": "p9o8i7u6-y5t4-r3e2-w1q0-m9n8b7v6c5x4", "principalIdentifier": "a1s2d3f4g5h6j7k8l9z0x1c2v3b4n5m6q7w8e9r0t1y2u3i4o5p6a7s8d9f0g1h2", "versionNumber": "0", "disconnectReason": "CLIENT_INITIATED_DISCONNECT" } }
  • DEVICE_OTA

    • Une notification OTA de l'appareil.

      { "version": "1.0.0", "messageId": "a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6", "messageType": "DEVICE_OTA", "source": "aws.iotmanagedintegrations", "customerAccountId": "123456789012", "timestamp": "2024-11-14T19:55:57.568284645Z", "region": "ca-central-1", "resources": [ "arn:aws:iotmanagedintegrations:ca-central-1:123456789012:managed-thing/a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6", "arn:aws:iotmanagedintegrations:ca-central-1:123456789012:managed-thing/b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7", "arn:aws:iotmanagedintegrations:ca-central-1:123456789012:managed-thing/c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8" ], "payload": { "operation": "CREATE_OTA", "otaTaskId": "ota-job-abc123def456", "status": "IN_PROGRESS", "otaType": "ONE_TIME" } }
  • DEVICE_STATE

    • Une notification lorsque l'état d'un appareil a été mis à jour.

      { "messageType": "DEVICE_STATE", "source": "aws.iotmanagedintegrations", "customerAccountId": "123456789012", "timestamp": "1731623291671", "resources": [ "arn:aws:iotmanagedintegrations:ca-central-1:123456789012:managed-thing/61889008880012345678" ], "payload": { "addedStates": { "endpoints": [{ "endpointId": "nonEndpointId", "capabilities": [{ "id": "aws.OnOff", "name": "On/Off", "version": "1.0", "properties": [{ "name": "OnOff", "value": { "propertyValue": "\"onoff\"", "lastChangedAt": "2024-06-11T01:38:09.000414Z" } } ]} ]} ]} } }
  • ACCOUNT_ASSOCIATION

    • Une notification lorsque l'état d'une association de comptes passe à IN_PROGRESS.

      { "version": "1.0.0", "messageId": "a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6", "messageType": "ACCOUNT_ASSOCIATION", "source": "aws.iotmanagedintegrations", "customerAccountId": "123456789012", "timestamp": "2026-01-20T23:59:34.009284802Z", "region": "ca-central-1", "resources": ["arn:aws:iotmanagedintegrations:ca-central-1:123456789012:account-association/a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6"], "payload": { "traceId": "a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6", "logLevel": "INFO", "resourceType": "account-association", "resourceId": "a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6", "connectorDestinationId": "a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6", "associationArn": "arn:aws:iotmanagedintegrations:ca-central-1:123456789012:account-association/a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6", "state": "ASSOCIATION_IN_PROGRESS", "isServiceError": false, "isCustomerError": false, "details": "AccountAssociation State is updated to IN_PROGRESS during StartAccountAssociationRefresh" } }
    • Une notification lorsqu'une association de comptes est terminée avec succès.

      { "version": "1.0.0", "messageId": "b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7", "messageType": "ACCOUNT_ASSOCIATION", "source": "aws.iotmanagedintegrations", "customerAccountId": "123456789012", "timestamp": "2026-01-20T23:59:44.672304821Z", "region": "ca-central-1", "resources": ["arn:aws:iotmanagedintegrations:ca-central-1:123456789012:account-association/b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7"], "payload": { "traceId": "b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7", "logLevel": "INFO", "resourceType": "account-association", "resourceId": "b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7", "connectorDestinationId": "b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7", "associationArn": "arn:aws:iotmanagedintegrations:ca-central-1:123456789012:account-association/b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7", "state": "ASSOCIATION_SUCCEEDED", "isServiceError": false, "isCustomerError": false, "details": "AccountAssociation has completed successfully" } }
  • CONNECTOR_ERROR_REPORT

    • Cette notification est envoyée lorsqu'un connecteur cloud vers cloud (C2C) signale une erreur lors du traitement d'une demande en votre nom, telle qu'une commande ou une découverte d'appareil ayant renvoyé une réponse infructueuse.

      { "version": "1.0.0", "messageId": "a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6", "messageType": "CONNECTOR_ERROR_REPORT", "source": "aws.iotmanagedintegrations", "customerAccountId": "123456789012", "timestamp": "2026-01-20T23:59:34.009284802Z", "region": "ca-central-1", "resources": [ "arn:aws:iotmanagedintegrations:ca-central-1:123456789012:account-association/a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6" ], "payload": { "statusCode": 0, "resourceType": "account-association", "resourceId": [ "a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6" ], "associationArn": [ "arn:aws:iotmanagedintegrations:ca-central-1:123456789012:account-association/a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6" ], "connectorDestinationId": "b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7", "connectorDeviceId": "connectorDeviceId11597664a", "operation": "AWS.SendCommand", "operationVersion": "1.0", "traceId": "f4be7a5d55d34cc=_1", "logLevel": "ERROR", "message": "AWS.SendCommand operation failed during asynchronous invocation of the connector: Connector response exception: responseCode=xxx, responseMessage=Mocking a ValidationException with error code xxx", "managedThingId": "c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8" } }

      Le managedThingId champ est inclus lorsqu'il peut être résolu pour la demande. Les champs sans valeur sont omis de la charge utile.