Registre várias AWS contas com um único endereço de e-mail usando a Amazon SES - Recomendações da AWS

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Registre várias AWS contas com um único endereço de e-mail usando a Amazon SES

Criado por Joe Wozniak (AWS) e Shubhangi Vishwakarma () AWS

Repositório de códigos: GitHub aws-account-factory-email

Ambiente: PoC ou piloto

Tecnologias: Infraestrutura; Gestão e governança; Mensagens e comunicações

AWSserviços: AWS Lambda; AmazonSES; Amazon DynamoDB

Resumo

Esse padrão descreve como você pode dissociar endereços de e-mail reais do endereço de e-mail associado a uma AWS conta. AWSas contas exigem que um endereço de e-mail exclusivo seja fornecido no momento da criação da conta. Em algumas organizações, a equipe que gerencia AWS contas deve assumir a responsabilidade de gerenciar vários endereços de e-mail exclusivos com sua equipe de mensagens. Isso pode ser difícil para grandes organizações que gerenciam muitas AWS contas.

Esse padrão fornece uma solução exclusiva de venda automática de endereços de e-mail que permite que os proprietários AWS da conta associem um endereço de e-mail a várias AWS contas. Os endereços de e-mail reais dos proprietários da AWS conta são então associados a esses endereços de e-mail gerados em uma tabela. A solução lida com todos os e-mails recebidos para as contas de e-mail exclusivas, pesquisa o proprietário de cada conta e, em seguida, encaminha todas as mensagens recebidas para o proprietário.  

Pré-requisitos e limitações

Pré-requisitos

  • Acesso administrativo a uma AWS conta.

  • Acesso a um ambiente de desenvolvimento. Recomendamos que você use o AWS Cloud9 para evitar ter que configurar você mesmo as ferramentas e as chaves de acesso necessárias.

  • (Opcional) A familiaridade com os fluxos de trabalho do AWS Cloud Development Kit (AWSCDK) e com a linguagem de programação Python ajudará você a solucionar problemas ou fazer modificações.

Limitações

  • O tamanho geral do endereço de e-mail vendido é de 64 caracteres. Para obter detalhes, consulte CreateAccounta APIreferência de AWS Organizations.

Versões do produto

  • Node.js versão 12.7.0 ou superior

  • Python 3.9 ou superior

  • Pacotes Python pip e virtualenv

  • AWSCDKversão 2.23.0 ou posterior

  • Docker 20.10.x ou superior

Arquitetura

Pilha de tecnologias de destino

  • AWS CloudFormation pilha

  • AWSFunções Lambda

  • Regra e conjunto de regras do Amazon Simple Email Address (AmazonSES)

  • AWSFunções e políticas do Identity and Access Management (IAM)

  • O bucket do Amazon Simple Storage Service (Amazon S3) e política de bucket.

  • AWSChave e política de chaves do Key Management Service (AWSKMS)

  • Tópico e política de tópicos do Amazon Simple Notification Service (AmazonSNS)

  • Tabela do Amazon DynamoDB

Arquitetura de destino

Arquitetura de destino para registrar várias AWS contas com um único endereço de e-mail

Esse diagrama mostra dois fluxos:

  • Fluxo de venda automática de endereços de e-mail: no diagrama, o fluxo de venda automática de endereços de e-mail (seção inferior) geralmente inicia com uma solução de venda automática de contas ou automação externa, ou é invocado manualmente. Na solicitação, uma função do Lambda é chamada com uma carga que contém os metadados necessários. A função usa essas informações para gerar um nome de conta e endereço de e-mail exclusivos, armazenar em um banco de dados do DynamoDB e retornar os valores ao chamador. Esses valores podem então ser usados para criar uma nova AWS conta (normalmente usando AWS Organizations).

  • Fluxo de encaminhamento de e-mail: esse fluxo é ilustrado na seção superior do diagrama anterior. Quando uma AWS conta é criada usando o e-mail da conta gerado a partir do fluxo de venda automática de endereços de e-mail, AWS envia vários e-mails, como confirmação do registro da conta e notificações periódicas, para esse endereço de e-mail. Seguindo as etapas desse padrão, você configura sua AWS conta na Amazon SES para receber e-mails de todo o domínio. Essa solução configura regras de encaminhamento que permitem ao Lambda processar todos os e-mails recebidos, verificar se o endereço TO está na tabela do DynamoDB e encaminhar a mensagem para o endereço de e-mail do proprietário da conta. O uso desse processo dá aos proprietários da conta a capacidade de associar várias contas a um endereço de e-mail.

Automação e escala

Esse padrão usa o AWS CDK para automatizar totalmente a implantação. A solução usa serviços AWS gerenciados que serão (ou podem ser configurados para) escalar automaticamente para atender às suas necessidades. As funções do Lambda podem exigir configuração adicional para atender às suas necessidades de escalabilidade. Para obter mais informações, consulte Escalabilidade da função do Lambda na documentação do Lambda.

Ferramentas

AWSserviços

  • AWSO Cloud9 é um ambiente de desenvolvimento integrado IDE () que ajuda você a codificar, criar, executar, testar e depurar software. Também ajuda você a lançar software na AWS nuvem.

  • AWS CloudFormationajuda você a configurar AWS recursos, provisioná-los de forma rápida e consistente e gerenciá-los durante todo o ciclo de vida em todas AWS as contas e regiões.

  • AWSA interface de linha de comando (AWSCLI) é uma ferramenta de código aberto que ajuda você a interagir com AWS serviços por meio de comandos em seu shell de linha de comando.

  • O Amazon DynamoDB é um serviço SQL sem banco de dados totalmente gerenciado que fornece desempenho rápido, previsível e escalável.

  • AWSO Identity and Access Management (IAM) ajuda você a gerenciar com segurança o acesso aos seus AWS recursos controlando quem está autenticado e autorizado a usá-los.

  • AWSO Key Management Service (AWSKMS) ajuda você a criar e controlar chaves criptográficas para ajudar a proteger seus dados.

  • AWSO Lambda é um serviço de computação que ajuda você a executar código sem precisar provisionar ou gerenciar servidores. Ele executa o código somente quando necessário e dimensiona automaticamente, assim, você paga apenas pelo tempo de computação usado.

  • O Amazon Simple Email Service (AmazonSES) ajuda você a enviar e receber e-mails usando seus próprios endereços de e-mail e domínios.

  • O Amazon Simple Notification Service (AmazonSNS) ajuda você a coordenar e gerenciar a troca de mensagens entre editores e clientes, incluindo servidores web e endereços de e-mail.

  • O Amazon Simple Storage Service (Amazon S3) é um serviço de armazenamento de objetos baseado na nuvem que ajuda você a armazenar, proteger e recuperar qualquer quantidade de dados.

Ferramentas necessárias para implantação

  • Ambiente de desenvolvimento com AWS CLI e IAM acesso à sua AWS conta. Para obter detalhes, consulte os links na seção Recursos relacionados. Recomendamos que você use o AWS Cloud9 para simplificar o processo de configuração.  

  • Se você usa o AWS Cloud9, o seguinte será configurado para você.  Se você optar por não usar o AWS Cloud9, precisará instalar o seguinte:

    • O AWS CLI para configurar as credenciais de acesso para o. AWS CDK Para obter mais informações, consulte a AWSCLIdocumentação.

    • Python, versão 3.9 ou superior.

    • Pacotes Python pip e virtualenv

    • Node.js versão 12.7.0 ou superior

    • AWSCDKversão 2.23.0 ou posterior

    • Docker, versão 20.10 ou superior.

Código

O código desse padrão está disponível no repositório de e-mail da fábrica da GitHub AWS conta.

Épicos

TarefaDescriçãoHabilidades necessárias

Identifique ou crie uma AWS conta.

Identifique uma AWS conta nova ou existente à qual você tenha acesso administrativo total para implantar a solução de e-mail.  

AWSadministrador, administrador de nuvem

Configurar um ambiente de implantação.

Configure um ambiente de implantação fácil de usar e configure dependências seguindo estas etapas:

  1. Implante uma instância do AWS Cloud9 como um ambiente de implantação dedicado. Para obter instruções, consulte Introdução ao AWS Cloud9.

  2. Clone a base de código do repositório de e-mail de fábrica da GitHub AWS conta na instância do Cloud9 AWS usando o comando:

    git clone https://github.com/aws-samples/aws-account-factory-email
  3. No requirements.txt arquivo (na raiz do repositório), atualize a linha que começa com aws-cdk-lib== para corresponder à versão da AWS CDK que está sendo executada em seu ambiente. Para identificar a versão, use o cdk --version comando.

AWS DevOps, Desenvolvedor de aplicativos
TarefaDescriçãoHabilidades necessárias

Identifique e aloque um domínio.

A funcionalidade de encaminhamento de e-mail requer um domínio dedicado. Identifique e aloque um domínio ou subdomínio que você possa verificar com a Amazon. SES Esse domínio deve estar disponível para receber e-mails na AWS conta em que a solução de encaminhamento de e-mail está implantada.

Requisitos de domínio:

  • O domínio deve ser um domínio ou subdomínio padrão.

  • O domínio deve ser DNS resolvido externamente porque será usado para receber e-mails de fora da organização.

Administrador de nuvem, administrador de rede, DNS administrador

Verificar o domínio.

Verifique se o domínio identificado pode ser usado para aceitar e-mails recebidos.

Complete as instruções em Verificando seu domínio para recebimento de SES e-mails da Amazon na SES documentação da Amazon. Isso exigirá coordenação com a pessoa ou equipe responsável pelos DNS registros do domínio.

Desenvolvedor de aplicativos, AWS DevOps

Configurar registros MX.

Configure seu domínio com registros MX que apontam para os SES endpoints da Amazon em sua AWS conta e região. Para obter mais informações, consulte Publicar um registro MX para recebimento de SES e-mails da Amazon na SES documentação da Amazon.

Administrador de nuvem, administrador de rede, DNS administrador
TarefaDescriçãoHabilidades necessárias

Modifique os valores padrão em cdk.json.

Edite alguns dos valores padrão no arquivo cdk.json (na raiz do repositório) para que a solução funcione corretamente após a implantação.

  1. Modifique o valor SES_DOMAIN_NAME para corresponder ao nome de domínio que você verificou anteriormente.

  2. Modifique o valor ADDRESS_FROM para incluir o mesmo domínio que está em SES_DOMAIN_NAME. A parte local do endereço deve ser determinada pela sua equipe de nuvem. Esse endereço se torna o endereço FROM de cada e-mail encaminhado pela solução.

  3. Modifique o valor ADDRESS_ADMIN para corresponder ao endereço de e-mail para o qual todas as mensagens recebidas que não correspondam serão encaminhadas. Esse valor deve ser um endereço de e-mail válido e operacional.

Desenvolvedor de aplicativos, AWS DevOps

Implante a solução de venda e encaminhamento de e-mails.

  1. Crie um ambiente virtual Python.

    python -m venv .venv
  2. Ative o ambiente virtual Python:

    source .venv/bin/activate

    Ou, na plataforma Windows, use:

    % .venv\Scripts\activate.bat
  3. Instale todos os requisitos do Python sem erros:

    pip install -r requirements.txt
  4. Sintetize o CloudFormation modelo:

    cdk synth

    Confirme se não há erros e se o CloudFormation modelo completo contém a saída esperada.

  5. (Opcional) Se você estiver implantando o AWS CDK código na AWS conta atual ou na região pela primeira vez, inicialize o ambiente. Para obter mais informações, consulte Bootstrapping na documentação. AWS CDK

    cdk bootstrap aws://AWS-ACCOUNT-NUMBER/REGION

    Substitua AWS-ACCOUNT-NUMBER e REGION por valores reais.

  6. Implantar a solução.

    cdk bootstrap cdk deploy

    Os comandos de compilação deve ser concluídos sem erros.

Desenvolvedor de aplicativos, AWS DevOps

Verificar se a solução foi implantada.

Verificar se a solução foi implantada com sucesso antes de começar o teste:

  1. Abra o AWS CloudFormation console e procure uma CloudFormation pilha que contenha o nomeAwsMailFwdStack.

  2. Confirmar se essa pilha AwsMailFwdStack tem os seguintes recursos:

    • Funções do Lambda

    • SESRegras e conjunto de regras da Amazon

    • Funções e políticas do IAM

    • Bucket do Amazon S3 e política de bucket

    • AWSKMSchave e política chave

    • SNSTópico e política de tópicos da Amazon

    • Tabela do DynamoDB

Desenvolvedor de aplicativos, AWS DevOps
TarefaDescriçãoHabilidades necessárias

Verifique se o API está funcionando.

Nesta etapa, você envia dados de teste para a solução API e confirma se a solução produz a saída esperada e se as operações de back-end foram executadas conforme o esperado.

Execute manualmente a função do Lambda Vend Email usando a entrada de teste. (Para ver um exemplo, consulte o arquivo sample_vend_request.json.) Use um endereço de e-mail válido para OwnerAddress. Eles API devem retornar o nome da conta e o e-mail da conta com os valores esperados.

Desenvolvedor de aplicativos, AWS DevOps

Verificar se o e-mail está sendo encaminhado.

Nesta etapa, você enviará um e-mail de teste pelo sistema e verifica se o e-mail foi encaminhado para o destinatário esperado.

  1. Obtenha o e-mail da conta na última etapa.

  2. Enviar um e-mail para esse endereço com o assunto do teste e o corpo do texto.

  3. Confirmar se você recebeu o e-mail no endereço de e-mail do proprietário da conta.

  4. Confirmar se o e-mail que você recebeu tem um FROM endereço que corresponde à ADDRESS_FROM configuração em cdk.json.

  5. Confirmar se o assunto e o corpo do e-mail recebido são iguais aos da mensagem original enviada.

Desenvolvedor de aplicativos, AWS DevOps

Solução de problemas

ProblemaSolução

O sistema não encaminha e-mails conforme o esperado.

Verificar se sua configuração está correta:

  1. Você deve ter concluído o processo SES de verificação do seu domínio na Amazon.

  2. Seu domínio deve ser configurado corretamente com registros MX apontando para os SES endpoints da Amazon em sua AWS conta e região. Para obter mais informações, consulte Publicar um registro MX para recebimento de SES e-mails da Amazon na SES documentação da Amazon.

Depois de verificar a configuração do domínio, siga estas etapas:

  1. Abra o AWS CloudWatch console da conta e da região em que você implantou a solução e navegue até os grupos de CloudWatch log no painel de navegação.

  2. Pesquise na lista de grupos de logs porSesMailForwardLogGroup.

  3. Investigue os logs desse grupo para ver se algum erro foi gerado durante o processo de venda e encaminhamento de e-mails.

Ao tentar implantar a AWS CDK pilha, você recebe um erro semelhante a:

“Erro no formato do modelo: tipos de recursos não reconhecidos”

Na maioria dos casos, essa mensagem de erro significa que a região que você está segmentando não tem todos os AWS serviços disponíveis. Se você estiver usando o AWS Cloud9 para implantar a solução, talvez esteja visando uma região diferente da região em que a instância do AWS Cloud9 está sendo executada.

Nota: Por padrão, o AWS CDK implementa na região e na conta que você configurou no AWSCLI.

Soluções possíveis:

  1. Investigue se todos os serviços necessários para essa solução (consulte a seção Pilha de tecnologia de destino mais cedo neste padrão) estão na AWS região que você está almejando analisando os AWSserviços por região.

  2. Se você estiver usando o AWS Cloud9 e segmentando uma região diferente da região em que sua instância do AWS Cloud9 está sendo executada, certifique-se de definir a variável de ambiente ou definir uma região com AWS_DEFAULT_REGION a antes de implantar a solução. AWS CLI Para obter mais informações, consulte as variáveis de ambiente para AWS CLI configurá-las na AWS CLI documentação. Como alternativa, você pode modificar o app.py arquivo na raiz do repositório para incluir uma ID de conta e uma região codificadas seguindo as instruções na documentação dos ambientes. AWS CDK

Ao implementar a solução, você recebe a mensagem de erro:

“Falha na implantação: Erro: AwsMailFwdStack: SSM parâmetro /cdk-bootstrap/hnb659fds/versão não encontrada. O ambiente foi inicializado? Por favor, execute 'cdk bootstrap'”

Se você nunca implantou nenhum AWS CDK recurso na AWS conta e na região que está almejando, primeiro precisará executar o cdk bootstrap comando conforme o erro indica. Se você continuar recebendo esse erro depois de executar o comando bootstrapping, talvez esteja tentando implantar a solução em uma região diferente da região em que sua instância do Cloud9 AWS está sendo executada.

Para resolver esse problema, defina a variável de AWS_DEFAULT_REGION ambiente ou defina uma região com o AWS CLI antes de implantar a solução. Como alternativa, você pode modificar o app.py arquivo na raiz do repositório para incluir uma ID de conta e uma região codificadas seguindo as instruções na documentação dos ambientes. AWS CDK

Recursos relacionados

Mais informações

Custos

Quando você implanta essa solução, o titular da AWS conta pode incorrer em custos associados ao uso dos seguintes serviços.  É importante entender como esses serviços são cobrados para estar ciente de quaisquer possíveis cobranças. Para obter mais informações sobre definição de preço, veja as seguintes páginas: