Como uso o Lambda e o Amazon SES para enviar e-mails?
Quero usar o AWS Lambda para enviar e-mails usando o Amazon Simple Email Service (Amazon SES).
Breve descrição
Para enviar e-mails de uma função do Lambda usando o Amazon SES, siga estas etapas:
1. Crie uma política e um perfil de execução do AWS Identity and Access Management (IAM) para que o Lambda execute a chamada de API.
2. Verifique sua identidade do Amazon SES (domínio ou endereço de e-mail).
3. Crie ou atualize uma função do Lambda que inclua lógica para enviar e-mails pelo Amazon SES.
Observação: para incluir um anexo em PDF em seus e-mails, você deve usar a operação da API Amazon SES SendRawEmail. Para obter mais informações, consulte Enviar e-mail bruto usando a API do Amazon SES no GitHub.
Resolução
Observação: os exemplos de código de função do Lambda Node.js, Python e Ruby neste artigo requerem modificações, dependendo do seu caso de uso. Adapte o exemplo ao seu caso de uso ou crie o seu próprio em sua linguagem de programação preferida.
Crie uma política do IAM e um perfil de execução para o Lambda executar a chamada de API
1. Crie uma política do IAM usando o editor de políticas JSON. Ao criar a política, cole o seguinte documento de política JSON no editor de políticas:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ses:SendEmail", "ses:SendRawEmail" ], "Resource": "*" } ] }
Observação: para obter mais informações e exemplos de como restringir o acesso a essa política, consulte Exemplos de políticas do IAM para o Amazon SES.
2. Anexe a política do IAM a um perfil do IAM. Para obter instruções, consulte a seção Para usar uma política gerenciada como política de permissões para uma identidade (console) em Adicionar permissões de identidade do IAM (console).
Observação: você atribuirá esse perfil do IAM à sua função do Lambda nas etapas a seguir.
Verificar sua identidade do Amazon SES (domínio ou endereço de e-mail)
Para verificar um domínio, consulte Verificar uma identidade de domínio DKIM com seu provedor de DNS.
Para verificar um endereço de e-mail, consulte Verificar a identidade de um endereço de e-mail.
Criar ou atualizar uma função Lambda que inclua lógica para enviar e-mails por meio do Amazon SES
1. Se você ainda não fez isso, crie uma função do Lambda.
Observação: você pode criar uma função do Lambda usando o console do Lambda ou criando e carregando um pacote de implantação.
2. No console do Lambda, no painel de navegação esquerdo, escolha Funções.
3. Escolha o nome da sua função.
4. Na guia Configuração, no painel Permissões, veja o Perfil de execução da função. Verifique se o perfil do IAM com as permissões do Amazon SES que você criou anteriormente está listado. Se o perfil do IAM correto não estiver listado, atribua o perfil correto à função.
5. Em Código de função, no painel do editor, cole um dos seguintes exemplos de código de função. Certifique-se de usar o exemplo relevante para seu runtime e versão do Node.js, Python ou Ruby.
Importante: substitua us-west-2 pela região da AWS em que sua identidade verificada do Amazon SES está. Substitua “Endereço de e-mail do destinatário”,... pelo endereço ou endereços de e-mail para os quais você deseja enviar o e-mail. Substitua SourceEmailAddress pelo seu endereço de e-mail de remetente verificado pelo Amazon SES ou por qualquer endereço de e-mail de um domínio verificado pelo Amazon SES. Opcionalmente, edite o corpo da mensagem (“Teste”) e a linha de assunto (“E-mail de teste”).
Para as versões 18 e mais recentes do Node.js, consulte o código de exemplo a seguir:
// Copyright 2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 import { SESClient, SendEmailCommand } from "@aws-sdk/client-ses"; const ses = new SESClient({ region: "us-west-2" }); export const handler = async(event) => { const command = new SendEmailCommand({ Destination: { ToAddresses: ["RecipientEmailAddress", ...], }, Message: { Body: { Text: { Data: "Test" }, }, Subject: { Data: "Test Email" }, }, Source: "SourceEmailAddress", }); try { let response = await ses.send(command); // process data. return response; } catch (error) { // error handling. } finally { // finally. } };
Para as versões 16 e anteriores do Node.js, consulte o código de exemplo a seguir:
// 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() };
Para a versão 3.9 do Python, consulte o código de exemplo a seguir:
import json import boto3 client = boto3.client('ses', region_name='us-west-2') def lambda_handler(event, context): response = client.send_email( Destination={ 'ToAddresses': ['RecipientEmailAddress'] }, Message={ 'Body': { 'Text': { 'Charset': 'UTF-8', 'Data': 'This is the message body in text format.', } }, 'Subject': { 'Charset': 'UTF-8', 'Data': 'Test email', }, }, Source='SourceEmailAddress' ) print(response) return { 'statusCode': 200, 'body': json.dumps("Email Sent Successfully. MessageId is: " + response['MessageId']) }
Para a versão 2.7 do Ruby, veja o código de exemplo a seguir:
require "aws-sdk-ses" $ses = Aws::SES::Client.new(region: "us-west-2") def lambda_handler(event:, context:) resp = $ses.send_email({ destination: { to_addresses: ["RecipientEmailAddress"], }, message: { body: { text: { charset: "UTF-8", data: "This is the message body in text format.", }, }, subject: { charset: "UTF-8", data: "Test email", }, }, source: "SourceEmailAddress" }) { statusCode: 200, body: JSON.generate("Message Sent Successfully. #{resp.to_h} ") } end
Para obter mais informações sobre o uso da API sendEmail, consulte a documentação do AWS SDK para JavaScript, Python, Ruby e Java V2.
6. Escolha Implantar.
(Opcional) Enviar um e-mail de teste
1. No console do Lambda, configure um evento de teste para sua função.
Observação: a carga útil de teste é obrigatória, mas não é usada neste exemplo de código.
2. Escolha Testar. O Lambda usa o Amazon SES para enviar o e-mail de teste ao destinatário.
Informações relacionadas
Vídeos relacionados
Conteúdo relevante
- AWS OFICIALAtualizada há 2 anos
- AWS OFICIALAtualizada há 2 anos
- AWS OFICIALAtualizada há 2 anos
- AWS OFICIALAtualizada há 2 anos