

Avis de fin de support : le 20 mai 2026, AWS le support de AWS IoT Events. Après le 20 mai 2026, vous ne pourrez plus accéder à la AWS IoT Events console ni aux AWS IoT Events ressources. Pour plus d'informations, consultez [AWS IoT Events la fin du support](https://docs.aws.amazon.com/iotevents/latest/developerguide/iotevents-end-of-support.html).

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.

# Surveillance avec alarmes intégrées AWS IoT Events
<a name="iotevents-alarms"></a>

AWS IoT Events les alarmes vous aident à surveiller les modifications apportées à vos données. Les données peuvent être des indicateurs que vous mesurez pour votre équipement et vos processus. Vous pouvez créer des alarmes qui envoient des notifications lorsqu'un seuil est dépassé. Les alarmes vous aident à détecter les problèmes, à rationaliser la maintenance et à optimiser les performances de votre équipement et de vos processus.

Les alarmes sont des exemples de modèles d'alarme. Le modèle d'alarme indique ce qu'il faut détecter, quand envoyer des notifications, qui est averti, etc. Vous pouvez également spécifier une ou plusieurs [actions prises en charge](https://docs.aws.amazon.com/iotevents/latest/developerguide/iotevents-supported-actions.html) qui se produisent lorsque l'état de l'alarme change. AWS IoT Events achemine les [attributs d'entrée](https://docs.aws.amazon.com/iotevents/latest/developerguide/iotevents-detector-input.html) dérivés de vos données vers les alarmes appropriées. Si les données que vous surveillez se situent en dehors de la plage spécifiée, l'alarme est déclenchée. Vous pouvez également accuser réception des alarmes ou les régler sur le mode snooze.

## Travailler avec AWS IoT SiteWise
<a name="alarms-collaborations.title"></a>

Vous pouvez utiliser des AWS IoT Events alarmes pour surveiller les propriétés des actifs dans AWS IoT SiteWise. AWS IoT SiteWise envoie les valeurs des propriétés des actifs aux AWS IoT Events alarmes. AWS IoT Events envoie l'état de l'alarme à AWS IoT SiteWise.

AWS IoT SiteWise prend également en charge les alarmes externes. Vous pouvez choisir des alarmes externes si vous utilisez des alarmes externes AWS IoT SiteWise et si vous disposez d'une solution qui renvoie les données d'état des alarmes. L'alarme externe contient une propriété de mesure qui ingère les données d'état de l'alarme.

AWS IoT SiteWise n'évalue pas l'état des alarmes externes. De plus, vous ne pouvez pas accuser réception ou suspendre une alarme externe lorsque l'état de l'alarme change.

Vous pouvez utiliser la fonction de SiteWise surveillance pour afficher l'état des alarmes externes dans les portails de SiteWise surveillance.

Pour plus d'informations, consultez les sections [Surveillance des données à l'aide d'alarmes](https://docs.aws.amazon.com/iot-sitewise/latest/userguide/industrial-alarms.html) dans le *guide de AWS IoT SiteWise l'utilisateur* et [Surveillance à l'aide d'alarmes](https://docs.aws.amazon.com//iot-sitewise/latest/appguide/monitor-alarms.html) dans le *guide d'application du SiteWise moniteur*.

## Reconnaître le flux
<a name="acknowledge-flow"></a>

Lorsque vous créez un modèle d'alarme, vous choisissez d'activer ou non le flux d'accusé de réception. Si vous activez le flux d'accusé de réception, votre équipe est avertie lorsque l'état de l'alarme change. Votre équipe peut accuser réception de l'alarme et laisser une note. Par exemple, vous pouvez inclure les informations relatives à l'alarme et les mesures que vous allez prendre pour résoudre le problème. Si les données que vous surveillez se situent en dehors de la plage spécifiée, l'alarme est déclenchée.

Les alarmes présentent les états suivants :

`DISABLED`  
Lorsque l'alarme est activée, `DISABLED` elle n'est pas prête à évaluer les données. Pour activer l'alarme, vous devez la mettre en `NORMAL` état.

`NORMAL`  
Lorsque l'alarme est activée, `NORMAL` elle est prête à évaluer les données.

`ACTIVE`  
Si l'alarme est active`ACTIVE`, elle est invoquée. Les données que vous surveillez se situent en dehors de la plage spécifiée.

`ACKNOWLEDGED`  
Lorsque l'alarme est activée, `ACKNOWLEDGED` elle a été déclenchée et vous avez accusé réception de l'alarme.

`LATCHED`  
L'alarme a été déclenchée, mais vous n'avez pas accusé réception après un certain temps. L'alarme passe automatiquement à l'`NORMAL`état.

`SNOOZE_DISABLED`  
Lorsque l'alarme est activée`SNOOZE_DISABLED`, elle est désactivée pendant une période spécifiée. Après le temps de rappel, l'alarme passe automatiquement à l'`NORMAL`état normal.

# Création d'un modèle d'alarme dans AWS IoT Events
<a name="create-alarm-model"></a>

Vous pouvez utiliser des AWS IoT Events alarmes pour surveiller vos données et être averti lorsqu'un seuil est dépassé. Les alarmes fournissent des paramètres que vous pouvez utiliser pour créer ou configurer un modèle d'alarme. Vous pouvez utiliser la AWS IoT Events console ou AWS IoT Events l'API pour créer ou configurer le modèle d'alarme. Lorsque vous configurez le modèle d'alarme, les modifications prennent effet à mesure que de nouvelles données arrivent.

## Exigences
<a name="create-alarm-model-requirements"></a>

Les exigences suivantes s'appliquent lorsque vous créez un modèle d'alarme.
+ Vous pouvez créer un modèle d'alarme pour surveiller un attribut d'entrée AWS IoT Events ou une propriété d'actif dans AWS IoT SiteWise.
  + Si vous choisissez de surveiller un attribut d'entrée dans AWS IoT Events, [Créez une entrée pour les modèles dans AWS IoT Events](create-input-overview.md) avant de créer le modèle d'alarme.
  + Si vous choisissez de surveiller la propriété d'un actif, vous devez [créer un modèle d'actif](https://docs.aws.amazon.com/iot-sitewise/latest/userguide/create-asset-models.html) AWS IoT SiteWise avant de créer le modèle d'alarme.
+ Vous devez disposer d'un rôle IAM qui permet à votre alarme d'effectuer des actions et d'accéder aux AWS ressources. Pour plus d'informations, consultez la section [Configuration des autorisations pour AWS IoT Events](https://docs.aws.amazon.com/iotevents/latest/developerguide/iotevents-start.html).
+ Toutes les AWS ressources utilisées dans ce didacticiel doivent se trouver dans la même AWS région.

## Création d'un modèle d'alarme (console)
<a name="create-alarm-model-console"></a>

Ce qui suit explique comment créer un modèle d'alarme pour surveiller un AWS IoT Events attribut dans la AWS IoT Events console.

1. Connectez-vous à la [console AWS IoT Events](https://console.aws.amazon.com/iotevents/).

1. Dans le volet de navigation, sélectionnez **Modèles d'alarme**.

1. Sur la page **Modèles d'alarme**, choisissez **Créer un modèle d'alarme**.

1. Dans la section **Détails du modèle d'alarme**, procédez comme suit :

   1. Entrez un nom unique.

   1. (Facultatif) Entrez une description.

1. Dans la section **Cible de l'alarme**, procédez comme suit :
**Important**  
Si vous choisissez la **propriété de l'AWS IoT SiteWise actif**, vous devez avoir créé un modèle d'actif dans AWS IoT SiteWise.

   1. Choisissez l'**attribut AWS IoT Events d'entrée**.

   1. Choisissez l'entrée.

   1. Choisissez la clé d'attribut d'entrée. Cet attribut d'entrée est utilisé comme clé pour créer l'alarme. AWS IoT Events achemine les entrées associées à cette touche vers l'alarme.
**Important**  
Si la charge utile du message d'entrée ne contient pas cette clé d'attribut d'entrée, ou si la clé ne se trouve pas dans le même chemin JSON spécifié dans la clé, l'ingestion du message échouera. AWS IoT Events

1. Dans la section **Définitions des seuils**, vous définissez l'attribut d'entrée, la valeur de seuil et l'opérateur de comparaison AWS IoT Events utilisés pour modifier l'état de l'alarme.

   1. Pour **Attribut d'entrée**, choisissez l'attribut que vous souhaitez surveiller.

      Chaque fois que cet attribut d'entrée reçoit de nouvelles données, il est évalué pour déterminer l'état de l'alarme.

   1. Pour **Opérateur**, choisissez l'opérateur de comparaison. L'opérateur compare votre attribut d'entrée à la valeur de seuil de votre attribut.

      Vous pouvez choisir l'une des options suivantes : 
      + **> supérieur à**
      + **>= supérieur ou égal à**
      + **< inférieur à**
      + **<= inférieur ou égal à**
      + **= égal à**
      + **\$1 = différent de**

   1. Pour **la valeur** du seuil, entrez un nombre ou choisissez un attribut dans les AWS IoT Events entrées. AWS IoT Events compare cette valeur avec la valeur de l'attribut d'entrée que vous avez choisi. 

   1. (Facultatif) Pour **la gravité**, utilisez un chiffre compris par votre équipe pour refléter la gravité de cette alarme.

1. (Facultatif) Dans la section **Paramètres de notification**, configurez les paramètres de notification pour l'alarme.

   Vous pouvez ajouter jusqu'à 10 notifications. Pour **la notification 1**, procédez comme suit :

   1. Pour **Protocole**, choisissez l'une des options suivantes :
      + **Courrier électronique et texto** - L'alarme envoie une notification par SMS et une notification par e-mail.
      + **E-mail** - L'alarme envoie une notification par e-mail.
      + **Texte** - L'alarme envoie une notification par SMS.

   1. Pour **Expéditeur**, spécifiez l'adresse e-mail qui peut envoyer des notifications concernant cette alarme.

      Pour ajouter d'autres adresses e-mail à votre liste d'expéditeurs, choisissez **Ajouter un expéditeur**. 

   1. (Facultatif) **Dans Destinataire**, choisissez le destinataire.

      Pour ajouter d'autres utilisateurs à votre liste de destinataires, choisissez **Ajouter un nouvel utilisateur**. Vous devez ajouter de nouveaux utilisateurs à votre boutique IAM Identity Center avant de pouvoir les ajouter à votre modèle d'alarme. Pour de plus amples informations, veuillez consulter [Gérez l'accès des destinataires des alarmes à l'IAM Identity Center dans AWS IoT Events](sso-authorization-recipients.md).

   1. (Facultatif) Dans **Message personnalisé supplémentaire**, entrez un message qui décrit ce que l'alarme détecte et les mesures que les destinataires doivent prendre.

1. Dans la section **Instance**, vous pouvez activer ou désactiver toutes les instances d'alarme créées sur la base de ce modèle d'alarme.

1. Dans la section **Paramètres avancés**, procédez comme suit :

   1. Pour **Accusez le flux**, vous pouvez activer ou désactiver les notifications.
      + Si vous choisissez **Activé**, vous recevez une notification lorsque l'état de l'alarme change. Vous devez accuser réception de la notification avant que l'état d'alarme ne redevienne normal.
      + Si vous choisissez **Désactivé**, aucune action n'est requise. L'alarme passe automatiquement à l'état normal lorsque la mesure revient à la plage spécifiée.

      Pour de plus amples informations, veuillez consulter [Reconnaître le flux](iotevents-alarms.md#acknowledge-flow).

   1. Pour **Autorisations**, choisissez l'une des options suivantes :
      + Vous pouvez **créer un nouveau rôle à partir de modèles de AWS politique** et créer AWS IoT Events automatiquement un rôle IAM pour vous. 
      + Vous pouvez **utiliser un rôle IAM existant** qui permet à ce modèle d'alarme d'effectuer des actions et d'accéder à d'autres AWS ressources.

      Pour plus d'informations, veuillez consulter la rubrique [Gestion des identités et des accès pour AWS IoT Events](https://docs.aws.amazon.com/iotevents/latest/developerguide/security-iam.html).

   1. Pour les **paramètres de notification supplémentaires**, vous pouvez modifier votre AWS Lambda fonction pour gérer les notifications d'alarme. Choisissez l'une des options suivantes pour votre AWS Lambda fonction :
      + **Créer une nouvelle AWS Lambda fonction** : AWS IoT Events crée une nouvelle AWS Lambda fonction pour vous.
      + **Utiliser une AWS Lambda fonction existante** : utilisez une AWS Lambda fonction existante en choisissant un nom de AWS Lambda fonction. 

      Pour plus d'informations sur les actions possibles, consultez[AWS IoT Events travailler avec d'autres AWS services](iotevents-other-aws-services.md).

   1. (Facultatif) Pour **l'action Définir l'état**, vous pouvez ajouter une ou plusieurs AWS IoT Events actions à effectuer lorsque l'état de l'alarme change.

1. (Facultatif) Vous pouvez ajouter des **tags** pour gérer vos alarmes. Pour plus d’informations, veuillez consulter la rubrique [Balisage de vos AWS IoT Events ressources](https://docs.aws.amazon.com/iotevents/latest/developerguide/tagging-iotevents.html).

1. Choisissez **Créer**.

# Répondre aux alarmes dans AWS IoT Events
<a name="respond-to-alarms"></a>

Répondre efficacement aux alarmes est un aspect important de la gestion des systèmes IoT avec AWS IoT Events. Découvrez différentes manières de configurer et de gérer les alarmes, notamment : configurer des canaux de notification, définir des procédures d'escalade et mettre en œuvre des actions de réponse automatisées. Apprenez à créer des conditions d'alarme nuancées, à hiérarchiser les alertes et à les intégrer à d'autres AWS services afin de créer un système de gestion des alarmes réactif pour vos applications IoT.

Si vous avez activé le [flux d'accusé](https://docs.aws.amazon.com/iotevents/latest/developerguide/iotevents-alarms.html#acknowledge-flow) de réception, vous recevez des notifications lorsque l'état de l'alarme change. Pour répondre à l'alarme, vous pouvez accuser réception, désactiver, activer, réinitialiser ou suspendre l'alarme.

------
#### [ Console ]

Voici comment réagir à une alarme dans la AWS IoT Events console.

1. Connectez-vous à la [console AWS IoT Events](https://console.aws.amazon.com/iotevents/).

1. Dans le volet de navigation, sélectionnez **Modèles d'alarme**.

1. Choisissez le modèle d'alarme cible.

1. Dans la section **Liste des alarmes**, choisissez l'alarme cible.

1. Vous pouvez choisir l'une des options suivantes dans **Actions** :
   + **Confirmer** - L'alarme passe à l'`ACKNOWLEDGED`état actuel.
   + **Désactiver** : l'alarme passe à l'`DISABLED`état normal.
   + **Activer** : l'alarme passe à l'`NORMAL`état actuel.
   + **Réinitialisation** : l'alarme passe à l'`NORMAL`état normal.
   + **Snoooze**, puis effectuez les opérations suivantes :

     1. Choisissez la durée **du rappel ou entrez une durée** de rappel **personnalisée.**

     1. Choisissez **Enregistrer**.

     L'alarme passe à l'`SNOOZE_DISABLED`état

   Pour plus d'informations sur les états des alarmes, consultez[Reconnaître le flux](iotevents-alarms.md#acknowledge-flow).

------
#### [ API ]

Pour répondre à une ou plusieurs alarmes, vous pouvez utiliser les opérations AWS IoT Events d'API suivantes :
+ [BatchAcknowledgeAlarm](https://docs.aws.amazon.com/iotevents/latest/apireference/API_iotevents-data_BatchAcknowledgeAlarm.html)
+ [BatchDisableAlarm](https://docs.aws.amazon.com/iotevents/latest/apireference/API_iotevents-data_BatchDisableAlarm.html)
+ [BatchEnableAlarm](https://docs.aws.amazon.com/iotevents/latest/apireference/API_iotevents-data_BatchEnableAlarm.html)
+ [BatchResetAlarm](https://docs.aws.amazon.com/iotevents/latest/apireference/API_iotevents-data_BatchResetAlarm.html)
+ [BatchSnoozeAlarm](https://docs.aws.amazon.com/iotevents/latest/apireference/API_iotevents-data_BatchSnoozeAlarm.html)

------

# Gestion des notifications d'alarme dans AWS IoT Events
<a name="lambda-support"></a>

AWS IoT Events s'intègre à Lambda, offrant des fonctionnalités de traitement d'événements personnalisées. Cette section explique comment utiliser les fonctions Lambda dans vos modèles de AWS IoT Events détecteurs, ce qui vous permet d'exécuter une logique complexe, d'interagir avec des services externes et de mettre en œuvre une gestion sophistiquée des événements.

AWS IoT Events utilise une fonction Lambda pour gérer les notifications d'alarme. Vous pouvez utiliser la fonction Lambda fournie par AWS IoT Events ou en créer une nouvelle.

**Topics**
+ [Création d'une fonction Lambda dans AWS IoT Events](alarms-create-lambda.md)
+ [À l'aide de la fonction Lambda fournie par AWS IoT Events](use-alarm-notifications.md)
+ [Gérez l'accès des destinataires des alarmes à l'IAM Identity Center dans AWS IoT Events](sso-authorization-recipients.md)

# Création d'une fonction Lambda dans AWS IoT Events
<a name="alarms-create-lambda"></a>

AWS IoT Events fournit une fonction Lambda qui permet aux alarmes d'envoyer et de recevoir des notifications par e-mail et SMS.

## Exigences
<a name="alarms-lambda-requirements"></a>

Les exigences suivantes s'appliquent lorsque vous créez une fonction Lambda pour les alarmes :
+ Si votre alarme envoie des notifications par SMS, assurez-vous qu'Amazon SNS est configuré pour envoyer des SMS.
  + Pour plus d’informations, consultez la documentation suivante :
    + [Messagerie texte mobile avec Amazon SNS](https://docs.aws.amazon.com/sns/latest/dg/sns-mobile-phone-number-as-subscriber.html) et [identités d'origine pour les messages SMS Amazon SNS dans le guide du développeur *Amazon Simple* Notification](https://docs.aws.amazon.com/sns/latest/dg/channels-sms-originating-identities.html) Service.
    + [Qu'est-ce que la messagerie SMS destinée aux utilisateurs finaux d'AWS ?](https://docs.aws.amazon.com/sms-voice/latest/userguide/what-is-sms-mms.html) dans le *guide de AWS SMS l'utilisateur*.
+ Si votre alarme envoie des notifications par e-mail ou SMS, vous devez disposer d'un rôle IAM qui vous permet AWS Lambda de travailler avec Amazon SES et Amazon SNS.

  

  Exemple de politique :

------
#### [ JSON ]

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Effect": "Allow",
              "Action": [
                  "ses:GetIdentityVerificationAttributes",
                  "ses:SendEmail",
                  "ses:VerifyEmailIdentity"
              ],
              "Resource": "*"
          },
          {
              "Effect": "Allow",
              "Action": [
                  "sns:Publish",
                  "sns:OptInPhoneNumber",
                  "sns:CheckIfPhoneNumberIsOptedOut",
                  "sms-voice:DescribeOptedOutNumbers"
              ],
              "Resource": "*"
          },
          {
              "Effect": "Deny",
              "Action": "sns:Publish",
              "Resource": "arn:aws:sns:*:*:*"
          },
          {
            "Effect" : "Allow",
            "Action" : [
              "logs:CreateLogGroup",
              "logs:CreateLogStream",
              "logs:PutLogEvents"
            ],
            "Resource" : "*"
          }
      ]
  }
  ```

------
+ Vous devez choisir la même AWS région pour les deux AWS IoT Events et AWS Lambda. Pour la liste des régions prises en charge, voir [AWS IoT Events points de terminaison et quotas et points](https://docs.aws.amazon.com/general/latest/gr/iot-events.html) de [AWS Lambda terminaison et quotas](https://docs.aws.amazon.com/general/latest/gr/lambda-service.html) dans le. *Référence générale d'Amazon Web Services*

# Déployez une fonction Lambda pour utiliser AWS IoT Events CloudFormation
<a name="alarms-create-lambda-cfn"></a>

Ce didacticiel utilise un CloudFormation modèle pour déployer une fonction Lambda. Ce modèle crée automatiquement un rôle IAM qui permet à la fonction Lambda de fonctionner avec Amazon SES et Amazon SNS.

Ce qui suit vous montre comment utiliser le AWS Command Line Interface (AWS CLI) pour créer une CloudFormation pile.

1. <a name="install-cli"></a>Dans le terminal de votre appareil, exécutez `aws --version` pour vérifier si vous avez installé le AWS CLI. Pour plus d’informations, consultez la section [Installation ou mise à jour vers la version la plus récente de l’ AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) dans le *Guide de l’utilisateur AWS Command Line Interface *.

1. <a name="configure-cli"></a>Exécutez `aws configure list` pour vérifier si vous avez configuré le AWS CLI dans la AWS région qui contient toutes vos AWS ressources pour ce didacticiel. Pour plus d'informations, voir [Définir et afficher les paramètres de configuration à l'aide des commandes](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html#cli-configure-files-methods) du *Guide de AWS Command Line Interface l'utilisateur*

1. Téléchargez le CloudFormation modèle, [NotificationLambda.Template.Yaml.zip](samples/notificationLambda.template.yaml.zip).
**Note**  
Si vous rencontrez des difficultés pour télécharger le fichier, le modèle est également disponible dans le[CloudFormation modèle](alarms-create-lambda.md#cfn-template).

1. Décompressez le contenu et enregistrez-le localement en tant que `notificationLambda.template.yaml`.

1. Ouvrez un terminal sur votre appareil et accédez au répertoire dans lequel vous avez téléchargé le `notificationLambda.template.yaml` fichier.

1. Pour créer une CloudFormation pile, exécutez la commande suivante :

   ```
   aws cloudformation create-stack --stack-name notificationLambda-stack --template-body file://notificationLambda.template.yaml --capabilities CAPABILITY_IAM
   ```

Vous pouvez modifier ce CloudFormation modèle pour personnaliser la fonction Lambda et son comportement.

**Note**  
AWS Lambda réessaie deux fois les erreurs de fonction. Si la fonction ne dispose pas de la capacité suffisante pour gérer toutes les demandes entrantes, des événements peuvent attendre dans la file d'attente pendant des heures ou des jours avant d'être envoyés à la fonction. Vous pouvez configurer une file d'attente de messages non remis (DLQ) sur la fonction pour capturer les événements qui n'ont pas été traités correctement. Pour plus d'informations, consultez [Appel asynchrone](https://docs.aws.amazon.com/lambda/latest/dg/invocation-async.html) dans le *Guide du développeur AWS Lambda *.

Vous pouvez également créer ou configurer la pile dans la CloudFormation console. Pour plus d'informations, consultez la section [Utilisation des piles](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacks.html) dans le *Guide de l'AWS CloudFormation utilisateur*.

# Création d'une fonction Lambda personnalisée pour AWS IoT Events
<a name="alarms-create-custom-lambda"></a>

Vous pouvez créer une fonction Lambda ou modifier celle fournie par. AWS IoT Events

Les exigences suivantes s'appliquent lorsque vous créez une fonction Lambda personnalisée.
+ Ajoutez des autorisations qui permettent à votre fonction Lambda d'effectuer des actions spécifiques et d'accéder aux AWS ressources.
+ Si vous utilisez la fonction Lambda fournie par AWS IoT Events, assurez-vous de choisir le runtime Python 3.7.

Exemple de fonction Lambda :

```
import boto3
import json
import logging
import datetime
logger = logging.getLogger()
logger.setLevel(logging.INFO)
ses = boto3.client('ses')
sns = boto3.client('sns')
def check_value(target):
  if target:
    return True
  return False

# Check whether email is verified. Only verified emails are allowed to send emails to or from.
def check_email(email):
  if not check_value(email):
    return False
  result = ses.get_identity_verification_attributes(Identities=[email])
  attr = result['VerificationAttributes']
  if (email not in attr or attr[email]['VerificationStatus'] != 'Success'):
      logging.info('Verification email for {} sent. You must have all the emails verified before sending email.'.format(email))
      ses.verify_email_identity(EmailAddress=email)
      return False
  return True

# Check whether the phone holder has opted out of receiving SMS messages from your account
def check_phone_number(phone_number):
  try:
    result = sns.check_if_phone_number_is_opted_out(phoneNumber=phone_number)
    if (result['isOptedOut']):
        logger.info('phoneNumber {} is not opt in of receiving SMS messages. Phone number must be opt in first.'.format(phone_number))
        return False
    return True
  except Exception as e:
    logging.error('Your phone number {} must be in E.164 format in SSO. Exception thrown: {}'.format(phone_number, e))
    return False

def check_emails(emails):
  result = True
  for email in emails:
      if not check_email(email):
          result = False
  return result

def lambda_handler(event, context):
  logging.info('Received event: ' + json.dumps(event))
  nep = json.loads(event.get('notificationEventPayload'))
  alarm_state = nep['alarmState']
  default_msg = 'Alarm ' + alarm_state['stateName'] + '\n'
  timestamp = datetime.datetime.utcfromtimestamp(float(nep['stateUpdateTime'])/1000).strftime('%Y-%m-%d %H:%M:%S')
  alarm_msg = "{} {} {} at {} UTC ".format(nep['alarmModelName'], nep.get('keyValue', 'Singleton'), alarm_state['stateName'], timestamp)
  default_msg += 'Sev: ' + str(nep['severity']) + '\n'
  if (alarm_state['ruleEvaluation']):
    property = alarm_state['ruleEvaluation']['simpleRule']['inputProperty']
    default_msg += 'Current Value: ' + str(property) + '\n'
    operator = alarm_state['ruleEvaluation']['simpleRule']['operator']
    threshold = alarm_state['ruleEvaluation']['simpleRule']['threshold']
    alarm_msg += '({} {} {})'.format(str(property), operator, str(threshold))
  default_msg += alarm_msg + '\n'

  emails = event.get('emailConfigurations', [])
  logger.info('Start Sending Emails')
  for email in emails:
    from_adr = email.get('from')
    to_adrs = email.get('to', [])
    cc_adrs = email.get('cc', [])
    bcc_adrs = email.get('bcc', [])
    msg = default_msg + '\n' + email.get('additionalMessage', '')
    subject = email.get('subject', alarm_msg)
    fa_ver = check_email(from_adr)
    tas_ver = check_emails(to_adrs)
    ccas_ver = check_emails(cc_adrs)
    bccas_ver = check_emails(bcc_adrs)
    if (fa_ver and tas_ver and ccas_ver and bccas_ver):
      ses.send_email(Source=from_adr,
                     Destination={'ToAddresses': to_adrs, 'CcAddresses': cc_adrs, 'BccAddresses': bcc_adrs},
                     Message={'Subject': {'Data': subject}, 'Body': {'Text': {'Data': msg}}})
      logger.info('Emails have been sent')

  logger.info('Start Sending SNS message to SMS')
  sns_configs = event.get('smsConfigurations', [])
  for sns_config in sns_configs:
    sns_msg = default_msg + '\n' + sns_config.get('additionalMessage', '')
    phone_numbers = sns_config.get('phoneNumbers', [])
    sender_id = sns_config.get('senderId')
    for phone_number in phone_numbers:
        if check_phone_number(phone_number):
          if check_value(sender_id):
            sns.publish(PhoneNumber=phone_number, Message=sns_msg, MessageAttributes={'AWS.SNS.SMS.SenderID':{'DataType': 'String','StringValue': sender_id}})
          else:
            sns.publish(PhoneNumber=phone_number, Message=sns_msg)
          logger.info('SNS messages have been sent')
```

Pour plus d'informations, veuillez consulter [Présentation de AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) dans le *Manuel du développeur AWS Lambda *.

## CloudFormation modèle
<a name="cfn-template"></a>

Utilisez le CloudFormation modèle suivant pour créer votre fonction Lambda.

```
AWSTemplateFormatVersion: '2010-09-09'
Description: 'Notification Lambda for Alarm Model'
Resources:
  NotificationLambdaRole:
    Type: AWS::IAM::Role
    Properties:
      AssumeRolePolicyDocument:
        Statement:
          - Effect: Allow
            Principal:
              Service: lambda.amazonaws.com
            Action: sts:AssumeRole
      Path: "/"
      ManagedPolicyArns:
        - 'arn:aws:iam::aws:policy/AWSLambdaExecute'
      Policies:
        - PolicyName: "NotificationLambda"
          PolicyDocument:
            Version: "2012-10-17"		 	 	 
            Statement:
              - Effect: "Allow"
                Action:
                  - "ses:GetIdentityVerificationAttributes"
                  - "ses:SendEmail"
                  - "ses:VerifyEmailIdentity"
                Resource: "*"
              - Effect: "Allow"
                Action:
                  - "sns:Publish"
                  - "sns:OptInPhoneNumber"
                  - "sns:CheckIfPhoneNumberIsOptedOut"
                  - "sms-voice:DescribeOptedOutNumbers"
                Resource: "*"
              - Effect: "Deny"
                Action:
                  - "sns:Publish"
                Resource: "arn:aws:sns:*:*:*"
  NotificationLambdaFunction:              
    Type: AWS::Lambda::Function
    Properties:
      Role: !GetAtt NotificationLambdaRole.Arn
      Runtime: python3.7
      Handler: index.lambda_handler
      Timeout: 300
      MemorySize: 3008
      Code:
        ZipFile: |
          import boto3
          import json
          import logging
          import datetime
          logger = logging.getLogger()
          logger.setLevel(logging.INFO)
          ses = boto3.client('ses')
          sns = boto3.client('sns')
          def check_value(target):
            if target:
              return True
            return False

          # Check whether email is verified. Only verified emails are allowed to send emails to or from.
          def check_email(email):
            if not check_value(email):
              return False
            result = ses.get_identity_verification_attributes(Identities=[email])
            attr = result['VerificationAttributes']
            if (email not in attr or attr[email]['VerificationStatus'] != 'Success'):
                logging.info('Verification email for {} sent. You must have all the emails verified before sending email.'.format(email))
                ses.verify_email_identity(EmailAddress=email)
                return False
            return True

          # Check whether the phone holder has opted out of receiving SMS messages from your account
          def check_phone_number(phone_number):
            try:
              result = sns.check_if_phone_number_is_opted_out(phoneNumber=phone_number)
              if (result['isOptedOut']):
                  logger.info('phoneNumber {} is not opt in of receiving SMS messages. Phone number must be opt in first.'.format(phone_number))
                  return False
              return True
            except Exception as e:
              logging.error('Your phone number {} must be in E.164 format in SSO. Exception thrown: {}'.format(phone_number, e))
              return False

          def check_emails(emails):
            result = True
            for email in emails:
                if not check_email(email):
                    result = False
            return result

          def lambda_handler(event, context):
            logging.info('Received event: ' + json.dumps(event))
            nep = json.loads(event.get('notificationEventPayload'))
            alarm_state = nep['alarmState']
            default_msg = 'Alarm ' + alarm_state['stateName'] + '\n'
            timestamp = datetime.datetime.utcfromtimestamp(float(nep['stateUpdateTime'])/1000).strftime('%Y-%m-%d %H:%M:%S')
            alarm_msg = "{} {} {} at {} UTC ".format(nep['alarmModelName'], nep.get('keyValue', 'Singleton'), alarm_state['stateName'], timestamp)
            default_msg += 'Sev: ' + str(nep['severity']) + '\n'
            if (alarm_state['ruleEvaluation']):
              property = alarm_state['ruleEvaluation']['simpleRule']['inputProperty']
              default_msg += 'Current Value: ' + str(property) + '\n'
              operator = alarm_state['ruleEvaluation']['simpleRule']['operator']
              threshold = alarm_state['ruleEvaluation']['simpleRule']['threshold']
              alarm_msg += '({} {} {})'.format(str(property), operator, str(threshold))
            default_msg += alarm_msg + '\n'

            emails = event.get('emailConfigurations', [])
            logger.info('Start Sending Emails')
            for email in emails:
              from_adr = email.get('from')
              to_adrs = email.get('to', [])
              cc_adrs = email.get('cc', [])
              bcc_adrs = email.get('bcc', [])
              msg = default_msg + '\n' + email.get('additionalMessage', '')
              subject = email.get('subject', alarm_msg)
              fa_ver = check_email(from_adr)
              tas_ver = check_emails(to_adrs)
              ccas_ver = check_emails(cc_adrs)
              bccas_ver = check_emails(bcc_adrs)
              if (fa_ver and tas_ver and ccas_ver and bccas_ver):
                ses.send_email(Source=from_adr,
                               Destination={'ToAddresses': to_adrs, 'CcAddresses': cc_adrs, 'BccAddresses': bcc_adrs},
                               Message={'Subject': {'Data': subject}, 'Body': {'Text': {'Data': msg}}})
                logger.info('Emails have been sent')

            logger.info('Start Sending SNS message to SMS')
            sns_configs = event.get('smsConfigurations', [])
            for sns_config in sns_configs:
              sns_msg = default_msg + '\n' + sns_config.get('additionalMessage', '')
              phone_numbers = sns_config.get('phoneNumbers', [])
              sender_id = sns_config.get('senderId')
              for phone_number in phone_numbers:
                  if check_phone_number(phone_number):
                    if check_value(sender_id):
                      sns.publish(PhoneNumber=phone_number, Message=sns_msg, MessageAttributes={'AWS.SNS.SMS.SenderID':{'DataType': 'String','StringValue': sender_id}})
                    else:
                      sns.publish(PhoneNumber=phone_number, Message=sns_msg)
                    logger.info('SNS messages have been sent')
```

# À l'aide de la fonction Lambda fournie par AWS IoT Events
<a name="use-alarm-notifications"></a>

Avec les notifications d'alarme, vous pouvez utiliser la fonction Lambda fournie par AWS IoT Events pour gérer les notifications d'alarme.

Les exigences suivantes s'appliquent lorsque vous utilisez la fonction Lambda fournie par AWS IoT Events pour gérer vos notifications d'alarme :
+ Vous devez vérifier l'adresse e-mail qui envoie les notifications par e-mail dans Amazon Simple Email Service (Amazon SES). Pour plus d'informations, consultez [Vérifier l'identité d'une adresse e-mail](https://docs.aws.amazon.com/ses/latest/dg/creating-identities.html#just-verify-email-proc) dans le manuel *Amazon Simple Email Service Developer Guide*.

  Si vous recevez un lien de vérification, cliquez dessus pour vérifier votre adresse e-mail. Vous pouvez également vérifier la présence d'un e-mail de vérification dans votre dossier de courrier indésirable.
+ Si votre alarme envoie des notifications par SMS, vous devez utiliser le format de numéro de téléphone international E.164 pour les numéros de téléphone. Ce format contient`+<country-calling-code><area-code><phone-number>`.

  Exemples de numéros de téléphone :    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/iotevents/latest/developerguide/use-alarm-notifications.html)

  Pour trouver le code d'appel d'un pays, rendez-vous sur [countrycode.org](https://countrycode.org/).

  La fonction Lambda fournie par AWS IoT Events vérifie si vous utilisez des numéros de téléphone au format E.164. Cependant, il ne vérifie pas les numéros de téléphone. Si vous vous assurez que vous avez saisi des numéros de téléphone exacts mais que vous n'avez pas reçu de notifications par SMS, vous pouvez contacter les opérateurs téléphoniques. Les transporteurs peuvent bloquer les messages.

# Gérez l'accès des destinataires des alarmes à l'IAM Identity Center dans AWS IoT Events
<a name="sso-authorization-recipients"></a>

AWS IoT Events permet AWS IAM Identity Center de gérer l'accès SSO des destinataires des alarmes. La mise en œuvre d'IAM Identity Center pour les destinataires des AWS IoT Events notifications peut améliorer la sécurité et l'expérience utilisateur. Pour permettre à l'alarme d'envoyer des notifications aux destinataires, vous devez activer IAM Identity Center et ajouter des destinataires à votre boutique IAM Identity Center. Pour plus d'informations, consultez la section [Ajouter des utilisateurs](https://docs.aws.amazon.com/singlesignon/latest/userguide/addusers.html) dans le *guide de AWS IAM Identity Center l'utilisateur*.

**Important**  
Vous devez choisir la même AWS région pour AWS IoT Events AWS Lambda, et le centre d'identité IAM.
AWS Organizations ne prend en charge qu'une seule région du centre d'identité IAM à la fois. Si vous souhaitez rendre IAM Identity Center disponible dans une autre région, vous devez d'abord supprimer votre configuration IAM Identity Center actuelle. Pour plus d'informations, consultez les [données régionales du centre d'identité IAM](https://docs.aws.amazon.com/singlesignon/latest/userguide/regions.html#region-data) dans le *guide de AWS IAM Identity Center l'utilisateur*.