Comment puis-je envoyer un e-mail à l'aide de Lambda et d'Amazon SES ?

Dernière mise à jour : 15/09/2021

Je souhaite utiliser AWS Lambda pour envoyer un e-mail à l'aide d'Amazon Simple Email Service (Amazon SES). Comment puis-je faire la configuration ?

Brève description

Pour envoyer un e-mail à partir de la fonction Lambda en utilisant Amazon SES, effectuez ce qui suit :

1.    Créez un rôle d'exécution et une stratégie AWS Identity and Access Management (IAM) pour que Lambda exécute l’appel d’API.

2.    Vérifiez votre identité Amazon SES (domaine ou adresse e-mail).

3.    Créez ou mettez à jour une fonction Lambda qui inclut une logique d'envoi d'e-mails via Amazon SES.

Remarque : Pour inclure une pièce jointe PDF dans vos e-mails, vous devez utiliser l'opération d'API SendRawEmail d’Amazon SES. Pour plus d'informations, consultez Envoi d'e-mails bruts à l'aide de l'API Amazon SES.

Résolution

Remarque : l'exemple de code de la fonction Lambda Node.js dans cet article est fourni en l'état. Adaptez l'exemple à votre cas d'utilisation, ou créez votre propre code dans le langage de programmation de votre choix.

Créez une stratégie IAM et un rôle d'exécution pour que Lambda exécute l’appel d’API

1.    Créez une stratégie IAM à l'aide d'un éditeur de stratégie JSON. Lorsque vous créez la politique, collez le document de politique JSON suivant dans l'éditeur de politique :

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ses:SendEmail",
                "ses:SendRawEmail"
            ],
            "Resource": "*"
        }
    ]
}

Remarque : pour plus d'informations et des exemples sur la façon de restreindre l'accès à cette politique, consultez Exemples de politiques IAM pour Amazon SES.

2.    Associer la politique IAM à un rôle IAM. Pour obtenir des instructions, consultez la section Pour utiliser une politique gérée en tant que politique d'autorisations pour une identité (console) dans Ajout d'autorisations d'identité IAM (console).

Remarque : Vous allez attribuer ce rôle IAM à votre fonction Lambda au cours des étapes suivantes.

Une identité Amazon SES vérifiée (domaine ou adresse e-mail)

Pour vérifier un domaine, consultez Vérification des domaines dans Amazon SES.

Pour vérifier une adresse e-mail, consultez la section Vérification des adresses e-mail dans Amazon SES.

Créez ou mettez à jour une fonction Lambda qui inclut une logique d'envoi d'e-mails via Amazon SES

1.    Si vous ne l’avez pas déjà fait, créez une fonction Lambda.

Remarque : vous pouvez créer la fonction Lamba en utilisant la console Lambda ou en créant et chargeant un package de déploiement.

2.    Dans la console Lambda, sur le panneau de navigation de gauche, choisissez Fonctions.

3.    Choisissez le nom de votre fonction.

4.    Dans l'onglet Configuration, dans le panneau Autorisations, examinez le Rôle d'exécution de la fonction. Vérifiez que le rôle IAM ayant les autorisations Amazon SES que vous avez créées précédemment est répertorié. Si le rôle IAM correct n'est pas répertorié, attribuez le rôle approprié à la fonction.

5.    Sous Code de fonction, sur le panneau de l'éditeur, collez cet exemple de code de fonction :

Important  : remplacez us-west-2 par la région AWS dans laquelle se trouve votre identité Amazon SES vérifiée. Remplacez « RecipientEmailAddress »,... par l’adresse ou les adresses e-mail auxquelles vous souhaitez envoyer l'e-mail. Remplacez SourceEmailAddress par votre adresse e-mail d'expéditeur vérifiée Amazon SES ou toute adresse e-mail provenant d'un domaine vérifié Amazon SES. Le cas échéant, modifiez le corps de message (« Test ») et la ligne d'objet (« Test Email »).

// Copyright 2019 Amazon.com, Inc. or its affiliates. All Rights Reserved.
// SPDX-License-Identifier: Apache-2.0

var aws = require("aws-sdk");
var ses = new aws.SES({ region: "us-west-2" });
exports.handler = async function (event) {
  var params = {
    Destination: {
      ToAddresses: ["RecipientEmailAddress", ...],
    },
    Message: {
      Body: {
        Text: { Data: "Test" },
      },

      Subject: { Data: "Test Email" },
    },
    Source: "SourceEmailAddress",
  };
 
  return ses.sendEmail(params).promise()
};

Pour plus d'informations sur l'utilisation de l'API sendEmail, consultez la documentation du kit SDK AWS pour JavaScript.

5.    Choisissez Déployer.

(Facultatif) Envoyer un e-mail de test

1.    Dans la console Lambda, configurez un événement de test pour votre fonction.

Remarque : la charge utile de test est obligatoire, mais n'est pas utilisée pour cet exemple de code.

2.    Choisissez Test. Lambda utilise Amazon SES pour envoyer l'e-mail de test au destinataire.


Cet article vous a-t-il été utile ?


Besoin d'aide pour une question technique ou de facturation ?