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

Date de la dernière mise à jour : 06/11/2019

Je souhaite utiliser AWS Lambda pour envoyer un e-mail à l'aide d'Amazon Simple Email Service (Amazon SES). Comment configurer cela ?

Brève description

Pour envoyer un e-mail à partir de Lambda en utilisant Amazon SES, vous avez besoin des éléments suivants :

Remarque : l'exemple de code de la fonction Lambda dans 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.

Solution

Créez une stratégie et un rôle d'exécution IAM

1.    Créez une stratégie IAM à l'aide de l'éditeur de stratégie JSON. Collez ce document de stratégie JSON dans l'éditeur de stratégie.

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

Remarque : pour plus d'informations, notamment sur la façon de restreindre l'accès pour cette stratégie IAM, consultez Exemples de stratégies IAM pour Amazon SES.

2.    Associez la stratégie IAM au rôle IAM que vous envisagez d'attribuer à votre fonction Lambda.

Pour en savoir plus sur la procédure, consultez Ajout d'autorisations IAM Identity (Console). Ensuite, suivez les instructions fournies sous Pour utiliser une stratégie gérée comme stratégie d'autorisation pour une identité (console).

Vérifier votre identité Amazon SES

Vérifiez l'identité Amazon SES (domaine ou adresse e-mail) depuis laquelle vous allez envoyer des messages Amazon SES.

Créer ou mettre à jour votre fonction Lambda

Si ce n'est déjà fait, créez une fonction Lambda en utilisant la console Lambda ou en créant et chargeant votre propre package de déploiement.

1.    Dans la console Lambda, sur le volet de navigation de gauche, choisissez Functions (Fonctions).

2.    Choisissez le nom de votre fonction.

3.    Sur le volet Configuration, sous Execution role (Rôle d'exécution), vérifiez que le rôle IAM avec les autorisations Amazon SES est attribué à votre fonction.

4.    Sous Function code (Code de fonction), sur le volet de l'éditeur, collez cet exemple de code de fonction :

Remarque : Remplacez us-west-2 par la région AWS de votre identité Amazon SES vérifiée. Remplacez recipientEmailAddress par une adresse e-mail à laquelle vous souhaitez envoyer l'e-mail. (Si votre compte est toujours dans l'environnement de test (sandbox) Amazon SES dans la région de votre identité Amazon SES vérifiée, vous devez remplacer recipientEmailAddress par une adresse e-mail Amazon SES vérifiée dans les mêmes compte et région.) 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 ») par vos préférences.

// 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 = (event, context, callback) => {
    
     var params = {
        Destination: {
            ToAddresses: ["recipientEmailAddress"]
        },
        Message: {
            Body: {
                Text: { Data: "Test"
                    
                }
                
            },
            
            Subject: { Data: "Test Email"
                
            }
        },
        Source: "sourceEmailAddress"
    };

    
     ses.sendEmail(params, function (err, data) {
        callback(null, {err: err, data: data});
        if (err) {
            console.log(err);
            context.fail(err);
        } else {
            
            console.log(data);
            context.succeed(event);
        }
    });
};

Remarque : si vous ne remplacez pas us-west-2 par la région de votre identité Amazon SES vérifiée, vous obtenez un message d'erreur indiquant « Email address is not verified » (L'adresse e-mail n'est pas vérifiée) et le code d'erreur « MessageRejected » (Message rejeté). Si vous exécutez la fonction Lambda dans une région où Amazon SES n'est pas pris en charge, vous obtenez un message d'erreur indiquant « Inaccessible host » et le code d'erreur « UnknownEndpoint ».

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

5.    Choisissez Save (Enregistrer).

Sélectionnez Send a Test Email (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 ?

Cette page peut-elle être améliorée ?


Vous avez besoin d'aide ?