View a markdown version of this page

Notifiche di integrazioni gestite - Integrazioni gestite per AWS IoT Device Management

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Notifiche di integrazioni gestite

Le notifiche di Managed Integrations forniscono aggiornamenti e informazioni chiave dai dispositivi. Le notifiche includono eventi relativi ai connettori, comandi dei dispositivi, eventi del ciclo di vita, aggiornamenti OTA (Over-the-Air) e segnalazioni di errori. Queste informazioni forniscono informazioni utilizzabili per creare flussi di lavoro automatizzati, intraprendere azioni immediate o archiviare dati sugli eventi per la risoluzione dei problemi.

Attualmente, solo i flussi di dati di Amazon Kinesis sono supportati come destinazione per le notifiche di integrazioni gestite. Prima di configurare le notifiche, dovrai prima configurare un flusso di dati Amazon Kinesis e consentire a Managed Integrations di accedere al flusso di dati.

Configurare Amazon Kinesis per le notifiche

Per configurare le notifiche di Amazon Kinesis for Managed Integrations, segui questi passaggi:

Fase 1: creare un flusso di dati Amazon Kinesis

Un Amazon Kinesis Data Stream può importare una grande quantità di dati in tempo reale, archiviarli in modo duraturo e renderli disponibili per l'utilizzo da parte delle applicazioni.

Per creare un flusso di dati Amazon Kinesis

Passaggio 2: crea una politica di autorizzazioni

Crea una politica di autorizzazioni che consenta a Managed Integrations di accedere al flusso di dati Kinesis.

Per creare una politica di autorizzazioni
  • Per creare una politica di autorizzazioni, copia la politica seguente e segui i passaggi descritti in Creare politiche utilizzando l'editor JSON

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

Apri la dashboard IAM e fai clic su Ruoli.

Per accedere alla dashboard IAM
  • Apri la dashboard IAM e fai clic su Ruoli.

    Per ulteriori informazioni, consulta la creazione di ruoli IAM nella Guida AWS Identity and Access Managementper l'utente.

Fase 4: Utilizzare una politica di fiducia personalizzata

Puoi utilizzare una policy di fiducia personalizzata per concedere a Managed Integrations l'accesso al flusso di dati Kinesis.

Per utilizzare una politica di fiducia personalizzata
  • Crea un nuovo ruolo e scegli una politica di fiducia personalizzata. Fai clic su Avanti.

    La seguente politica consente a Managed Integrations di assumere il ruolo e la Condition dichiarazione aiuta a prevenire problemi confusi tra i deputati.

    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:*" } } } ] }

Passaggio 5: Applica la tua politica sulle autorizzazioni

Aggiungi al ruolo la politica di autorizzazione creata nel passaggio 2.

Per aggiungere una politica di autorizzazioni
  • Nella pagina Aggiungi autorizzazioni, cerca e aggiungi la politica di autorizzazione creata nel passaggio 2. Fai clic su Avanti.

Fase 6: Inserire il nome del ruolo

  • Inserisci il nome del ruolo e fai clic su Crea ruolo.

Imposta le notifiche relative alle integrazioni gestite

Per configurare le notifiche di Managed Integrations, segui questi passaggi:

Passaggio 1: concedere all'utente le autorizzazioni per chiamare l'API CreateDestination

  • Concedi all'utente le autorizzazioni per chiamare l'API CreateDestination

    La seguente politica definisce i requisiti per l'utente per chiamare l'CreateDestinationAPI.

    Consulta Concedere a un utente le autorizzazioni per passare un ruolo a un AWS servizio nella Guida per l'AWS Identity and Access Managementutente per ottenere le autorizzazioni passrole per le integrazioni gestite.

    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":"*" } ] }

Fase 2: Chiama l'API CreateDestination

  • Chiama l'CreateDestinationAPI

    Dopo aver creato il flusso di dati di Amazon Kinesis e il ruolo di accesso allo stream, chiama l'CreateDestinationAPI per creare la destinazione delle notifiche a cui verranno indirizzate le notifiche. Per il DeliveryDestinationArn parametro, usa il nuovo arn flusso di dati di Amazon Kinesis.

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

    ClientTokenè un token di idempotenza. Se riprovi una richiesta completata correttamente inizialmente utilizzando lo stesso token client e gli stessi parametri, il nuovo tentativo avrà esito positivo senza eseguire ulteriori azioni.

Fase 3: Chiama l'API CreateNotificationConfiguration

  • Chiama l'CreateNotificationConfigurationAPI

    Infine, usa l'CreateNotificationConfigurationAPI per creare la configurazione di notifica che indirizza i tipi di eventi scelti verso la tua destinazione rappresentata dal flusso di dati Kinesis. Nel DestinationName parametro, utilizza lo stesso nome di destinazione utilizzato per la chiamata iniziale all'CreateDestinationAPI.

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

Tipi di eventi monitorati con Managed Integrations

Di seguito sono riportati i tipi di eventi monitorati con le notifiche di Managed Integrations:

  • DEVICE_COMMAND

    • Lo stato del comando SendManagedThingCommandAPI. I valori validi sono succeeded o 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 richiesta di comando da Web Real-Time Communication (WebRTC).

      Lo standard WebRTC consente la comunicazione tra due peer. Questi peer possono trasmettere video, audio e dati arbitrari in tempo reale. Managed Integrations supporta WebRTC per abilitare questi tipi di streaming tra un'applicazione mobile del cliente e il dispositivo di un utente finale. Per ulteriori informazioni sullo standard WebRTC, vedere 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

    • Lo stato di rilevamento del dispositivo.

      { "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

    • Una notifica del verificarsi di un evento relativo al dispositivo.

      { "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" }] }] }] } }

      Il DEVICE_EVENT payload contiene i seguenti campi:

      • iotMiArrivalTimestamp, String (ISO 8601): il timestamp che indica quando l'evento del dispositivo è stato pubblicato dal dispositivo in Managed Integrations. Utilizzate questo campo per determinare la latenza tra il momento in cui l'evento è stato generato dal dispositivo e il momento in cui Managed Integrations lo ha ricevuto.

      • endpoints: l'elenco degli endpoint dei dispositivi e le relative proprietà di funzionalità aggiornate.

      Il timestamp campo nella busta esterna del messaggio indica quando la notifica è stata consegnata a Kinesis. Il payload iotMiArrivalTimestamp nel payload indica quando l'evento è arrivato in Managed Integrations. Questi due timestamp possono differire in caso di latenza di elaborazione tra l'arrivo dell'evento e l'invio della notifica.

  • DEVICE_LIFE_CYCLE

    Riflette i cambiamenti nello stato del ciclo di vita del dispositivo (inclusi lo stato e lo stato di onboarding). connected/disconnected

    • Evento di aggiornamento dello stato di onboarding.

      { "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" } }
    • Evento sullo stato della connessione del dispositivo.

      { "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" } }
    • Evento di stato di disconnessione del dispositivo.

      { "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

    • Una notifica OTA del dispositivo.

      { "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

    • Una notifica quando lo stato di un dispositivo è stato aggiornato.

      { "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

    • Una notifica quando lo stato di associazione di un account cambia in 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" } }
    • Una notifica quando l'associazione di un account viene completata correttamente.

      { "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

    • Questa notifica viene inviata quando un connettore cloud-to-cloud (C2C) segnala un errore durante l'elaborazione di una richiesta per conto dell'utente, ad esempio il rilevamento di un comando o di un dispositivo che ha restituito una risposta non riuscita.

      { "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" } }

      Il managedThingId campo viene incluso quando può essere risolto per la richiesta. I campi senza un valore vengono omessi dal payload.