Définition d'une AWS IoT Events alarme (AWS CLI) - AWS IoT SiteWise

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.

Définition d'une AWS IoT Events alarme (AWS CLI)

Vous pouvez utiliser le AWS Command Line Interface (AWS CLI) pour définir une AWS IoT Events alarme qui surveille la propriété d'un actif. Vous pouvez définir l'alarme sur un modèle d'actif nouveau ou existant. Après avoir défini l'alarme sur le modèle d'actif, vous créez une alarme AWS IoT Events et vous la connectez au modèle d'actif. Dans ce processus, vous devez effectuer les opérations suivantes :

Étape 1 : Définition d'une alarme sur un modèle d'actif

Ajoutez une définition d'alarme et les propriétés associées à un modèle d'actif nouveau ou existant.

Pour définir une alarme sur un modèle d'actif (CLI)
  1. Créez un fichier, appelé asset-model-payload.json. Suivez les étapes décrites dans ces autres sections pour ajouter les détails de votre modèle d'actif au fichier, mais ne soumettez pas de demande de création ou de mise à jour du modèle d'actif. Dans cette section, vous ajoutez une définition d'alarme aux détails du modèle d'actif dans le asset-model-payload.json fichier.

    Note

    Votre modèle d'actif doit définir au moins une propriété d'actif, y compris la propriété d'actif à surveiller avec l'alarme.

  2. Ajoutez un modèle composite d'alarme (assetModelCompositeModels) au modèle d'actif. Un modèle composite AWS IoT Events d'alarme indique le IOT_EVENTS type et spécifie une propriété de source d'alarme. Vous ajoutez la propriété source d'alarme après avoir créé le modèle d'alarme dans AWS IoT Events.

    Important

    Le modèle composite d'alarme doit porter le même nom que le modèle AWS IoT Events d'alarme que vous créerez ultérieurement. Les noms des modèles d'alarme ne peuvent contenir que des caractères alphanumériques. Spécifiez un nom alphanumérique unique afin de pouvoir utiliser le même nom pour le modèle d'alarme.

    { ... "assetModelCompositeModels": [ { "name": "BoilerTemperatureHighAlarm", "type": "AWS/ALARM", "properties": [ { "name": "AWS/ALARM_TYPE", "dataType": "STRING", "type": { "attribute": { "defaultValue": "IOT_EVENTS" } } }, { "name": "AWS/ALARM_STATE", "dataType": "STRUCT", "dataTypeSpec": "AWS/ALARM_STATE", "type": { "measurement": {} } } ] } ] }
  3. Ajoutez un attribut de seuil d'alarme au modèle d'actif. Spécifiez la valeur par défaut à utiliser pour ce seuil. Vous pouvez remplacer cette valeur par défaut pour chaque actif en fonction de ce modèle.

    Note

    L'attribut du seuil d'alarme doit être a INTEGER ou DOUBLE a.

    { ... "assetModelProperties": [ ... { "name": "Temperature Max Threshold", "dataType": "DOUBLE", "type": { "attribute": { "defaultValue": "105.0" } } } ] }
  4. (Facultatif) Ajoutez des attributs de notification d'alarme au modèle d'actif. Ces attributs indiquent le destinataire du centre d'identité IAM et les autres entrées AWS IoT Events utilisées pour envoyer des notifications lorsque l'alarme change d'état. Vous pouvez remplacer ces valeurs par défaut pour chaque actif en fonction de ce modèle.

    Important

    Vous pouvez envoyer des notifications d'alarme aux AWS IAM Identity Center utilisateurs. Pour utiliser cette fonctionnalité, vous devez activer IAM Identity Center. Vous ne pouvez activer IAM Identity Center que dans une seule AWS région à la fois. Cela signifie que vous ne pouvez définir des notifications d'alarme que dans la région où vous activez IAM Identity Center. Pour plus d'informations, consultez Démarrer dans le Guide de l'utilisateur AWS IAM Identity Center .

    Procédez comme suit :

    1. Ajoutez un attribut qui spécifie l'ID de votre banque d'identités IAM Identity Center. Vous pouvez utiliser l'opération d'ListInstancesAPI IAM Identity Center pour répertorier vos magasins d'identités. Cette opération ne fonctionne que dans la région où vous activez IAM Identity Center.

      aws sso-admin list-instances

      Spécifiez ensuite l'ID du magasin d'identités (par exemple,d-123EXAMPLE) comme valeur par défaut pour l'attribut.

      { ... "assetModelProperties": [ ... { "name": "identityStoreId", "dataType": "STRING", "type": { "attribute": { "defaultValue": "d-123EXAMPLE" } } } ] }
    2. Ajoutez un attribut qui spécifie l'ID de l'utilisateur IAM Identity Center qui reçoit les notifications. Pour définir un destinataire de notification par défaut, ajoutez un ID utilisateur IAM Identity Center comme valeur par défaut. Procédez de l'une des manières suivantes pour obtenir un ID utilisateur IAM Identity Center :

      1. Vous pouvez utiliser l'ListUsersAPI IAM Identity Center pour obtenir l'identifiant d'un utilisateur dont vous connaissez le nom d'utilisateur. Remplacez D-123Example par l'ID de votre banque d'identités et remplacez Name par le nom d'utilisateur de l'utilisateur.

        aws identitystore list-users \ --identity-store-id d-123EXAMPLE \ --filters AttributePath=UserName,AttributeValue=Name
      2. Utilisez la console IAM Identity Center pour parcourir vos utilisateurs et trouver un ID utilisateur.

      Spécifiez ensuite l'ID utilisateur (par exemple,123EXAMPLE-a1b2c3d4-5678-90ab-cdef-33333EXAMPLE) comme valeur par défaut pour l'attribut, ou définissez l'attribut sans valeur par défaut.

      { ... "assetModelProperties": [ ... { "name": "userId", "dataType": "STRING", "type": { "attribute": { "defaultValue": "123EXAMPLE-a1b2c3d4-5678-90ab-cdef-33333EXAMPLE" } } } ] }
    3. (Facultatif) Ajoutez un attribut qui spécifie l'ID d'expéditeur par défaut pour les notifications par SMS (texte). L'identifiant de l'expéditeur s'affiche en tant qu'expéditeur des messages envoyés par Amazon Simple Notification Service (Amazon SNS). Pour plus d'informations, consultez la section Demande d'identifiants d'expéditeur pour les messages SMS avec Amazon SNS dans le guide du développeur Amazon Simple Notification Service.

      { ... "assetModelProperties": [ ... { "name": "senderId", "dataType": "STRING", "type": { "attribute": { "defaultValue": "MyFactory" } } } ] }
    4. (Facultatif) Ajoutez un attribut qui spécifie l'adresse e-mail par défaut à utiliser comme adresse d'expéditeur dans les notifications par e-mail.

      { ... "assetModelProperties": [ ... { "name": "fromAddress", "dataType": "STRING", "type": { "attribute": { "defaultValue": "my.factory@example.com" } } } ] }
    5. (Facultatif) Ajoutez un attribut qui indique le sujet par défaut à utiliser dans les notifications par e-mail.

      { ... "assetModelProperties": [ ... { "name": "emailSubject", "dataType": "STRING", "type": { "attribute": { "defaultValue": "[ALERT] High boiler temperature" } } } ] }
    6. (Facultatif) Ajoutez un attribut qui spécifie un message supplémentaire à inclure dans les notifications. Par défaut, les messages de notification incluent des informations sur l'alarme. Vous pouvez également inclure un message supplémentaire fournissant plus d'informations à l'utilisateur.

      { ... "assetModelProperties": [ ... { "name": "additionalMessage", "dataType": "STRING", "type": { "attribute": { "defaultValue": "Turn off the power before you check the alarm." } } } ] }
  5. Créez le modèle d'actif ou mettez à jour le modèle d'actif existant. Effectuez l’une des actions suivantes :

    • Pour créer le modèle d'actif, exécutez la commande suivante.

      aws iotsitewise create-asset-model --cli-input-json file://asset-model-payload.json
    • Pour mettre à jour le modèle d'actif existant, exécutez la commande suivante. Remplacez asset-model-idpar l'ID du modèle d'actif.

      aws iotsitewise update-asset-model \ --asset-model-id asset-model-id \ --cli-input-json file://asset-model-payload.json

    Après avoir exécuté la commande, notez le assetModelId dans la réponse.

Le modèle d'actif suivant représente une chaudière qui fournit des données de température. Ce modèle d'équipement définit une alarme qui détecte la surchauffe de la chaudière.

{ "assetModelName": "Boiler Model", "assetModelDescription": "Represents a boiler.", "assetModelProperties": [ { "name": "Temperature", "dataType": "DOUBLE", "unit": "C", "type": { "measurement": {} } }, { "name": "Temperature Max Threshold", "dataType": "DOUBLE", "type": { "attribute": { "defaultValue": "105.0" } } }, { "name": "identityStoreId", "dataType": "STRING", "type": { "attribute": { "defaultValue": "d-123EXAMPLE" } } }, { "name": "userId", "dataType": "STRING", "type": { "attribute": { "defaultValue": "123EXAMPLE-a1b2c3d4-5678-90ab-cdef-33333EXAMPLE" } } }, { "name": "senderId", "dataType": "STRING", "type": { "attribute": { "defaultValue": "MyFactory" } } }, { "name": "fromAddress", "dataType": "STRING", "type": { "attribute": { "defaultValue": "my.factory@example.com" } } }, { "name": "emailSubject", "dataType": "STRING", "type": { "attribute": { "defaultValue": "[ALERT] High boiler temperature" } } }, { "name": "additionalMessage", "dataType": "STRING", "type": { "attribute": { "defaultValue": "Turn off the power before you check the alarm." } } } ], "assetModelHierarchies": [ ], "assetModelCompositeModels": [ { "name": "BoilerTemperatureHighAlarm", "type": "AWS/ALARM", "properties": [ { "name": "AWS/ALARM_TYPE", "dataType": "STRING", "type": { "attribute": { "defaultValue": "IOT_EVENTS" } } }, { "name": "AWS/ALARM_STATE", "dataType": "STRUCT", "dataTypeSpec": "AWS/ALARM_STATE", "type": { "measurement": {} } } ] } ] }

Étape 2 : Définition d'un modèle AWS IoT Events d'alarme

Créez le modèle d'alarme dans AWS IoT Events. Dans AWS IoT Events, vous utilisez des expressions pour spécifier des valeurs dans les modèles d'alarme. Vous pouvez utiliser des expressions pour spécifier des valeurs de AWS IoT SiteWise à évaluer et à utiliser comme entrées pour l'alarme. Lorsque les valeurs des propriétés de l'actif sont AWS IoT SiteWise envoyées au modèle d'alarme, il AWS IoT Events évalue l'expression pour obtenir la valeur de la propriété ou l'ID de l'actif. Vous pouvez utiliser les expressions suivantes dans le modèle d'alarme :

  • Valeurs des propriétés des actifs

    Pour obtenir la valeur d'une propriété d'actif, utilisez l'expression suivante. Remplacez assetModelIdpar l'ID du modèle d'actif et remplacez PropertyID par l'ID de la propriété.

    $sitewise.assetModel.`assetModelId`.`propertyId`.propertyValue.value
  • Identifiants des actifs

    Pour obtenir l'ID de la ressource, utilisez l'expression suivante. Remplacez assetModelIdpar l'ID du modèle d'actif et remplacez PropertyID par l'ID de la propriété.

    $sitewise.assetModel.`assetModelId`.`propertyId`.assetId
Note

Lorsque vous créez le modèle d'alarme, vous pouvez définir des littéraux au lieu d'expressions évaluant des AWS IoT SiteWise valeurs. Cela peut réduire le nombre d'attributs que vous définissez dans votre modèle d'actifs. Toutefois, si vous définissez une valeur au sens littéral, vous ne pouvez pas personnaliser cette valeur sur les actifs en fonction du modèle d'actif. Vos AWS IoT SiteWise Monitor utilisateurs ne peuvent pas non plus personnaliser l'alarme, car ils ne peuvent configurer les paramètres d'alarme que sur les actifs.

Pour créer un modèle AWS IoT Events d'alarme (CLI)
  1. Lorsque vous créez le modèle d'alarme dans AWS IoT Events, vous devez spécifier l'ID de chaque propriété utilisée par l'alarme, notamment les éléments suivants :

    • La propriété d'état d'alarme dans le modèle d'actif composite

    • La propriété surveillée par l'alarme

    • L'attribut de seuil

    • (Facultatif) L'attribut ID de la banque d'identités IAM Identity Center

    • (Facultatif) L'attribut d'ID utilisateur IAM Identity Center

    • (Facultatif) L'attribut ID de l'expéditeur du SMS

    • (Facultatif) L'attribut d'adresse e-mail

    • (Facultatif) L'attribut d'objet de l'e-mail

    • (Facultatif) L'attribut de message supplémentaire

    Exécutez la commande suivante pour récupérer les identifiants de ces propriétés sur le modèle d'actif. Remplacez asset-model-idpar l'ID du modèle d'actif de l'étape précédente.

    aws iotsitewise describe-asset-model --asset-model-id asset-model-id

    L'opération renvoie une réponse qui contient les détails du modèle de ressource. Notez l'ID de chaque propriété utilisée par l'alarme. Vous utiliserez ces identifiants lorsque vous créerez le modèle AWS IoT Events d'alarme à l'étape suivante.

  2. Créez le modèle d'alarme dans AWS IoT Events. Procédez comme suit :

    1. Créez un fichier, appelé alarm-model-payload.json.

    2. Copiez l'objet JSON suivant dans le fichier.

    3. Entrez le nom (alarmModelName), la description (alarmModelDescription) et la gravité (severity) de votre alarme. Pour ce qui est de la gravité, spécifiez un entier qui reflète les niveaux de gravité de votre entreprise.

      Important

      Le modèle d'alarme doit porter le même nom que le modèle composite d'alarme que vous avez défini précédemment dans votre modèle d'équipement.

      Les noms des modèles d'alarme ne peuvent contenir que des caractères alphanumériques.

      { "alarmModelName": "BoilerTemperatureHighAlarm", "alarmModelDescription": "Detects when the boiler temperature is high.", "severity": 3 }
    4. Ajoutez la règle de comparaison (alarmRule) à l'alarme. Cette règle définit la propriété à surveiller (inputProperty), la valeur de seuil à comparer (threshold) et l'opérateur de comparaison à utiliser (comparisonOperator).

      • Remplacez assetModelIdpar l'ID du modèle d'actif.

      • Remplacez alarmPropertyIdpar l'identifiant de la propriété surveillée par l'alarme.

      • Remplacez thresholdAttributeIdpar l'ID de la propriété de l'attribut threshold.

      • Remplacez GREATER par l'opérateur à utiliser pour comparer les valeurs des propriétés avec le seuil. Sélectionnez parmi les options suivantes :

        • LESS

        • LESS_OR_EQUAL

        • EQUAL

        • NOT_EQUAL

        • GREATER_OR_EQUAL

        • GREATER

      { "alarmModelName": "BoilerTemperatureHighAlarm", "alarmModelDescription": "Detects when the boiler temperature is high.", "severity": 3, "alarmRule": { "simpleRule": { "inputProperty": "$sitewise.assetModel.`assetModelId`.`alarmPropertyId`.propertyValue.value", "comparisonOperator": "GREATER", "threshold": "$sitewise.assetModel.`assetModelId`.`thresholdAttributeId`.propertyValue.value" } } }
    5. Ajoutez une action (alarmEventActions) pour envoyer l'état de l'alarme au AWS IoT SiteWise moment où l'alarme change d'état.

      Note

      Pour une configuration avancée, vous pouvez définir des actions supplémentaires à effectuer lorsque l'alarme change d'état. Par exemple, vous pouvez appeler une AWS Lambda fonction ou publier sur un sujet MQTT. Pour plus d'informations, consultez la section Utilisation d'autres AWS services dans le Guide du AWS IoT Events développeur.

      • Remplacez assetModelIdpar l'ID du modèle d'actif.

      • Remplacez alarmPropertyIdpar l'identifiant de la propriété surveillée par l'alarme.

      • Remplacez alarmStatePropertyId par l'ID de la propriété d'état de l'alarme dans le modèle composite d'alarme.

      { "alarmModelName": "BoilerTemperatureHighAlarm", "alarmModelDescription": "Detects when the boiler temperature is high.", "severity": 3, "alarmRule": { "simpleRule": { "inputProperty": "$sitewise.assetModel.`assetModelId`.`alarmPropertyId`.propertyValue.value", "comparisonOperator": "GREATER", "threshold": "$sitewise.assetModel.`assetModelId`.`thresholdAttributeId`.propertyValue.value" } }, "alarmEventActions": { "alarmActions": [ { "iotSiteWise": { "assetId": "$sitewise.assetModel.`assetModelId`.`alarmPropertyId`.assetId", "propertyId": "'alarmStatePropertyId'" } } ] } }
    6. (Facultatif) Configurez les paramètres de notification d'alarme. L'action de notification d'alarme utilise une fonction Lambda de votre compte pour envoyer des notifications d'alarme. Pour plus d’informations, consultez Exigences relatives aux notifications d'alarme. Dans les paramètres de notification d'alarme, vous pouvez configurer les notifications par SMS et e-mail à envoyer aux utilisateurs d'IAM Identity Center. Procédez comme suit :

      1. Ajoutez la configuration de notification d'alarme (alarmNotification) à la charge utile dansalarm-model-payload.json.

        • Remplacez alarmNotificationFunctionArn par l'ARN de la fonction Lambda qui gère les notifications d'alarme.

        { "alarmModelName": "BoilerTemperatureHighAlarm", "alarmModelDescription": "Detects when the boiler temperature is high.", "severity": 3, "alarmRule": { "simpleRule": { "inputProperty": "$sitewise.assetModel.`assetModelId`.`alarmPropertyId`.propertyValue.value", "comparisonOperator": "GREATER", "threshold": "$sitewise.assetModel.`assetModelId`.`thresholdAttributeId`.propertyValue.value" } }, "alarmEventActions": { "alarmActions": [ { "iotSiteWise": { "assetId": "$sitewise.assetModel.`assetModelId`.`alarmPropertyId`.assetId", "propertyId": "'alarmStatePropertyId'" } } ] }, "alarmNotification": { "notificationActions": [ { "action": { "lambdaAction": { "functionArn": "alarmNotificationFunctionArn" } } } ] } }
      2. (Facultatif) Configurez les notifications par SMS (smsConfigurations) à envoyer à un utilisateur du IAM Identity Center lorsque l'alarme change d'état.

        • identityStoreIdAttributeIdRemplacez-le par l'ID de l'attribut qui contient l'ID de la banque d'identités IAM Identity Center.

        • Remplacez userIdAttributeId par l'ID de l'attribut contenant l'ID de l'utilisateur IAM Identity Center.

        • Remplacez l'senderIdAttributeID par l'ID de l'attribut qui contient l'identifiant de l'expéditeur Amazon SNS, ou supprimez-le senderId de la charge utile.

        • Remplacez additionalMessageAttributeId par l'ID de l'attribut qui contient le message supplémentaire, ou supprimez-le additionalMessage de la charge utile.

        { "alarmModelName": "BoilerTemperatureHighAlarm", "alarmModelDescription": "Detects when the boiler temperature is high.", "severity": 3, "alarmRule": { "simpleRule": { "inputProperty": "$sitewise.assetModel.`assetModelId`.`alarmPropertyId`.propertyValue.value", "comparisonOperator": "GREATER", "threshold": "$sitewise.assetModel.`assetModelId`.`thresholdAttributeId`.propertyValue.value" } }, "alarmEventActions": { "alarmActions": [ { "iotSiteWise": { "assetId": "$sitewise.assetModel.`assetModelId`.`alarmPropertyId`.assetId", "propertyId": "'alarmStatePropertyId'" } } ] }, "alarmNotification": { "notificationActions": [ { "action": { "lambdaAction": { "functionArn": "alarmNotificationFunctionArn" } }, "smsConfigurations": [ { "recipients": [ { "ssoIdentity": { "identityStoreId": "$sitewise.assetModel.`assetModelId`.`identityStoreIdAttributeId`.propertyValue.value", "userId": "$sitewise.assetModel.`assetModelId`.`userIdAttributeId`.propertyValue.value" } } ], "senderId": "$sitewise.assetModel.`assetModelId`.`senderIdAttributeId`.propertyValue.value", "additionalMessage": "$sitewise.assetModel.`assetModelId`.`additionalMessageAttributeId`.propertyValue.value" } ] } ] } }
      3. (Facultatif) Configurez les notifications par e-mail (emailConfigurations) à envoyer à un utilisateur du IAM Identity Center lorsque l'alarme change d'état.

        • identityStoreIdAttributeIdRemplacez-le par l'ID de la propriété d'attribut ID de la banque d'identités IAM Identity Center.

        • Remplacez userIdAttributeId par l'ID de la propriété d'attribut IAM Identity Center user ID.

        • Remplacez fromAddressAttributeId par l'ID de la propriété d'attribut d'adresse « from » ou supprimez-le from de la charge utile.

        • Remplacez l'emailSubjectAttributeID par l'ID de la propriété d'attribut de l'objet de l'e-mail ou subject supprimez-le de la charge utile.

        • Remplacez additionalMessageAttributeId par l'ID de la propriété d'attribut de message supplémentaire, ou supprimez-le additionalMessage de la charge utile.

        { "alarmModelName": "BoilerTemperatureHighAlarm", "alarmModelDescription": "Detects when the boiler temperature is high.", "severity": 3, "alarmRule": { "simpleRule": { "inputProperty": "$sitewise.assetModel.`assetModelId`.`alarmPropertyId`.propertyValue.value", "comparisonOperator": "GREATER", "threshold": "$sitewise.assetModel.`assetModelId`.`thresholdAttributeId`.propertyValue.value" } }, "alarmEventActions": { "alarmActions": [ { "iotSiteWise": { "assetId": "$sitewise.assetModel.`assetModelId`.`alarmPropertyId`.assetId", "propertyId": "'alarmStatePropertyId'" } } ] }, "alarmNotification": { "notificationActions": [ { "action": { "lambdaAction": { "functionArn": "alarmNotificationFunctionArn" } }, "smsConfigurations": [ { "recipients": [ { "ssoIdentity": { "identityStoreId": "$sitewise.assetModel.`assetModelId`.`identityStoreIdAttributeId`.propertyValue.value", "userId": "$sitewise.assetModel.`assetModelId`.`userIdAttributeId`.propertyValue.value" } } ], "senderId": "$sitewise.assetModel.`assetModelId`.`senderIdAttributeId`.propertyValue.value", "additionalMessage": "$sitewise.assetModel.`assetModelId`.`additionalMessageAttributeId`.propertyValue.value" } ], "emailConfigurations": [ { "from": "$sitewise.assetModel.`assetModelId`.`fromAddressAttributeId`.propertyValue.value", "recipients": { "to": [ { "ssoIdentity": { "identityStoreId": "$sitewise.assetModel.`assetModelId`.`identityStoreIdAttributeId`.propertyValue.value", "userId": "$sitewise.assetModel.`assetModelId`.`userIdAttributeId`.propertyValue.value" } } ] }, "content": { "subject": "$sitewise.assetModel.`assetModelId`.`emailSubjectAttributeId`.propertyValue.value", "additionalMessage": "$sitewise.assetModel.`assetModelId`.`additionalMessageAttributeId`.propertyValue.value" } } ] } ] } }
    7. (Facultatif) Ajoutez les capacités d'alarme (alarmCapabilities) à la charge utile. alarm-model-payload.json Dans cet objet, vous pouvez spécifier si le flux d'accusé de réception est activé et l'état d'activation par défaut pour les actifs en fonction du modèle d'actif. Pour plus d'informations sur le flux d'accusé de réception, consultezÉtats d'alarme.

      { "alarmModelName": "BoilerTemperatureHighAlarm", "alarmModelDescription": "Detects when the boiler temperature is high.", "severity": 3, "alarmRule": { "simpleRule": { "inputProperty": "$sitewise.assetModel.`assetModelId`.`alarmPropertyId`.propertyValue.value", "comparisonOperator": "GREATER", "threshold": "$sitewise.assetModel.`assetModelId`.`thresholdAttributeId`.propertyValue.value" } }, "alarmEventActions": { "alarmActions": [ { "iotSiteWise": { "assetId": "$sitewise.assetModel.`assetModelId`.`alarmPropertyId`.assetId", "propertyId": "'alarmStatePropertyId'" } } ] }, "alarmNotification": { "notificationActions": [ { "action": { "lambdaAction": { "functionArn": "alarmNotificationFunctionArn" } }, "smsConfigurations": [ { "recipients": [ { "ssoIdentity": { "identityStoreId": "$sitewise.assetModel.`assetModelId`.`identityStoreIdAttributeId`.propertyValue.value", "userId": "$sitewise.assetModel.`assetModelId`.`userIdAttributeId`.propertyValue.value" } } ], "senderId": "$sitewise.assetModel.`assetModelId`.`senderIdAttributeId`.propertyValue.value", "additionalMessage": "$sitewise.assetModel.`assetModelId`.`additionalMessageAttributeId`.propertyValue.value" } ], "emailConfigurations": [ { "from": "$sitewise.assetModel.`assetModelId`.`fromAddressAttributeId`.propertyValue.value", "recipients": { "to": [ { "ssoIdentity": { "identityStoreId": "$sitewise.assetModel.`assetModelId`.`identityStoreIdAttributeId`.propertyValue.value", "userId": "$sitewise.assetModel.`assetModelId`.`userIdAttributeId`.propertyValue.value" } } ] }, "content": { "subject": "$sitewise.assetModel.`assetModelId`.`emailSubjectAttributeId`.propertyValue.value", "additionalMessage": "$sitewise.assetModel.`assetModelId`.`additionalMessageAttributeId`.propertyValue.value" } } ] } ] }, "alarmCapabilities": { "initializationConfiguration": { "disabledOnInitialization": false }, "acknowledgeFlow": { "enabled": true } } }
    8. Ajoutez le rôle de service IAM (roleArn) qui AWS IoT Events peut assumer d'envoyer des données à AWS IoT SiteWise. Ce rôle nécessite l'iotsitewise:BatchPutAssetPropertyValueautorisation et une relation de confiance qui permettent iotevents.amazonaws.com d'assumer le rôle. Pour envoyer des notifications, ce rôle nécessite également les sso-directory:DescribeUser autorisations lambda:InvokeFunction et. Pour plus d'informations, consultez la section Rôles du service Alarm dans le guide du AWS IoT Events développeur.

      • Remplacez le roleArn par l'ARN du rôle qui AWS IoT Events peut assumer ces actions.

      { "alarmModelName": "BoilerTemperatureHighAlarm", "alarmModelDescription": "Detects when the boiler temperature is high.", "severity": 3, "alarmRule": { "simpleRule": { "inputProperty": "$sitewise.assetModel.`assetModelId`.`alarmPropertyId`.propertyValue.value", "comparisonOperator": "GREATER", "threshold": "$sitewise.assetModel.`assetModelId`.`thresholdAttributeId`.propertyValue.value" } }, "alarmEventActions": { "alarmActions": [ { "iotSiteWise": { "assetId": "$sitewise.assetModel.`assetModelId`.`alarmPropertyId`.assetId", "propertyId": "'alarmStatePropertyId'" } } ] }, "alarmNotification": { "notificationActions": [ { "action": { "lambdaAction": { "functionArn": "alarmNotificationFunctionArn" } }, "smsConfigurations": [ { "recipients": [ { "ssoIdentity": { "identityStoreId": "$sitewise.assetModel.`assetModelId`.`identityStoreIdAttributeId`.propertyValue.value", "userId": "$sitewise.assetModel.`assetModelId`.`userIdAttributeId`.propertyValue.value" } } ], "senderId": "$sitewise.assetModel.`assetModelId`.`senderIdAttributeId`.propertyValue.value", "additionalMessage": "$sitewise.assetModel.`assetModelId`.`additionalMessageAttributeId`.propertyValue.value" } ], "emailConfigurations": [ { "from": "$sitewise.assetModel.`assetModelId`.`fromAddressAttributeId`.propertyValue.value", "recipients": { "to": [ { "ssoIdentity": { "identityStoreId": "$sitewise.assetModel.`assetModelId`.`identityStoreIdAttributeId`.propertyValue.value", "userId": "$sitewise.assetModel.`assetModelId`.`userIdAttributeId`.propertyValue.value" } } ] }, "content": { "subject": "$sitewise.assetModel.`assetModelId`.`emailSubjectAttributeId`.propertyValue.value", "additionalMessage": "$sitewise.assetModel.`assetModelId`.`additionalMessageAttributeId`.propertyValue.value" } } ] } ] }, "alarmCapabilities": { "initializationConfiguration": { "disabledOnInitialization": false }, "acknowledgeFlow": { "enabled": false } }, "roleArn": "arn:aws:iam::123456789012:role/MyIoTEventsAlarmRole" }
    9. Exécutez la commande suivante pour créer le modèle AWS IoT Events d'alarme à partir de la charge utile. alarm-model-payload.json

      aws iotevents create-alarm-model --cli-input-json file://alarm-model-payload.json
    10. L'opération renvoie une réponse qui inclut l'ARN du modèle d'alarme,alarmModelArn. Copiez cet ARN pour définir la définition de l'alarme sur votre modèle d'actif à l'étape suivante.

Étape 3 : Activation du flux de données entre AWS IoT SiteWise et AWS IoT Events

Après avoir créé les ressources requises dans AWS IoT SiteWise et AWS IoT Events, vous pouvez activer le flux de données entre les ressources pour activer votre alarme. Dans cette section, vous allez mettre à jour la définition d'alarme dans le modèle d'actif pour utiliser le modèle d'alarme que vous avez créé à l'étape précédente.

Pour activer le flux de données entre AWS IoT SiteWise et AWS IoT Events (CLI)
  • Définissez le modèle d'alarme comme source de l'alarme dans le modèle d'actif. Procédez comme suit :

    1. Exécutez la commande suivante pour récupérer la définition de modèle de ressource existante. Remplacez asset-model-idpar l'ID du modèle d'actif.

      aws iotsitewise describe-asset-model --asset-model-id asset-model-id

      L'opération renvoie une réponse qui contient les détails du modèle de ressource.

    2. Créez un fichier appelé update-asset-model-payload.json et copiez la réponse de la commande précédente dans le fichier.

    3. Supprimez les paires clé-valeur suivantes du update-asset-model-payload.json fichier :

      • assetModelId

      • assetModelArn

      • assetModelCreationDate

      • assetModelLastUpdateDate

      • assetModelStatus

    4. Ajoutez la propriété de source d'alarme (AWS/ALARM_SOURCE) au modèle composite d'alarme que vous avez défini précédemment. alarmModelArnRemplacez-le par l'ARN du modèle d'alarme, qui définit la valeur de la propriété de la source d'alarme.

      { ... "assetModelCompositeModels": [ ... { "name": "BoilerTemperatureHighAlarm", "type": "AWS/ALARM", "properties": [ { "id": "a1b2c3d4-5678-90ab-cdef-11111EXAMPLE", "name": "AWS/ALARM_TYPE", "dataType": "STRING", "type": { "attribute": { "defaultValue": "IOT_EVENTS" } } }, { "id": "a1b2c3d4-5678-90ab-cdef-22222EXAMPLE", "name": "AWS/ALARM_STATE", "dataType": "STRUCT", "dataTypeSpec": "AWS/ALARM_STATE", "type": { "measurement": {} } }, { "name": "AWS/ALARM_SOURCE", "dataType": "STRING", "type": { "attribute": { "defaultValue": "alarmModelArn" } } } ] } ] }
    5. Exécutez la commande suivante pour mettre à jour le modèle d'actif avec la définition stockée dans le update-asset-model-payload.json fichier. Remplacez asset-model-idpar l'ID du modèle d'actif.

      aws iotsitewise update-asset-model \ --asset-model-id asset-model-id \ --cli-input-json file://update-asset-model-payload.json

Votre modèle d'équipement définit désormais une alarme qui détecte AWS IoT Events. L'alarme surveille la propriété cible dans tous les actifs sur la base de ce modèle d'actif. Vous pouvez configurer l'alarme sur chaque actif afin de personnaliser les propriétés telles que le seuil ou le destinataire du IAM Identity Center pour chaque actif. Pour plus d’informations, consultez Configuration des alarmes sur les actifs.