Enregistrez plusieurs AWS comptes avec une seule adresse e-mail en utilisant Amazon SES - Recommandations AWS

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.

Enregistrez plusieurs AWS comptes avec une seule adresse e-mail en utilisant Amazon SES

Créé par Joe Wozniak (AWS) et Shubhangi Vishwakarma () AWS

Référentiel de code : GitHub aws-account-factory-email

Environnement : PoC ou pilote

Technologies : infrastructure ; gestion et gouvernance ; messagerie et communications

AWSservices : AWS Lambda ; Amazon SES ; Amazon DynamoDB

Récapitulatif

Ce modèle décrit comment vous pouvez dissocier les adresses e-mail réelles de l'adresse e-mail associée à un. Compte AWS Comptes AWS exigent qu'une adresse e-mail unique soit fournie au moment de la création du compte. Dans certaines organisations, l'équipe de gestion Comptes AWS doit assumer la charge de gérer de nombreuses adresses e-mail uniques avec son équipe de messagerie. Cela peut s'avérer difficile pour les grandes entreprises qui en gèrent de nombreuses Comptes AWS. De plus, si votre système de messagerie n'autorise pas l'adressage plus ou le sous-adressage tels que définis dans Sieve Email Filtering : Subaddress Extension (RFC5233), en ajoutant un signe plus (+) et un identifiant à la fin de la partie locale de l'adresse e-mail, par exemple, admin+123456789123@example.com ce modèle peut aider à surmonter cette limitation.

Ce modèle fournit une solution de vente d'adresses e-mail unique qui permet aux Compte AWS propriétaires d'associer une adresse e-mail à plusieurs Comptes AWS. Les adresses e-mail réelles des Compte AWS propriétaires sont ensuite associées à ces adresses e-mail générées dans un tableau. La solution gère tous les e-mails entrants pour les comptes de messagerie uniques, recherche le propriétaire de chaque compte, puis transmet tous les messages reçus au propriétaire.  

Conditions préalables et limitations

Prérequis

  • Accès administratif à un Compte AWS.

  • Accès à un environnement de développement.

  • (Facultatif) La connaissance des AWS Cloud Development Kit (AWS CDK) flux de travail et du langage de programmation Python vous aidera à résoudre les problèmes ou à apporter des modifications.

Limites

  • La longueur totale de l'adresse e-mail vendue est de 64 caractères. Pour plus de détails, voir CreateAccountla AWS Organizations APIréférence.

Versions du produit

  • Node.js version 12.7.0 ou ultérieure

  • Python 3.9 ou version ultérieure

  • Paquets Python pip et virtualenv

  • AWS CDK version 2.23.0 ou ultérieure

  • Docker 20.10.x ou version ultérieure

Architecture

Pile technologique cible

  • AWS CloudFormation empiler

  • AWS Lambda fonctions

  • Règle et ensemble de règles Amazon Simple Email Service (AmazonSES)

  • AWS Identity and Access Management (IAM) rôles et politiques

  • Politique relative aux compartiments et aux compartiments Amazon Simple Storage Service (Amazon S3)

  • AWS Key Management Service (AWS KMS) politique clé et clé

  • Rubrique d'Amazon Simple Notification Service (AmazonSNS) et politique thématique

  • Table Amazon DynamoDB

Architecture cible

Architecture cible pour l'enregistrement de plusieurs AWS comptes avec une seule adresse e-mail

Ce diagramme montre deux flux :

  • Flux de distribution d'adresses e-mail : dans le diagramme, le flux de distribution d'adresses e-mail (section inférieure) commence généralement par une solution de vente de comptes ou une automatisation externe, ou est invoqué manuellement. Dans la demande, une fonction Lambda est appelée avec une charge utile contenant les métadonnées nécessaires. La fonction utilise ces informations pour générer un nom de compte et une adresse e-mail uniques, les stocke dans une base de données DynamoDB et renvoie les valeurs à l'appelant. Ces valeurs peuvent ensuite être utilisées pour créer un nouveau Compte AWS (généralement en utilisant AWS Organizations).

  • Flux de transfert d'e-mails : Ce flux est illustré dans la partie supérieure du schéma précédent. Lorsqu'un Compte AWS est créé à l'aide de l'e-mail du compte généré à partir du flux de vente d'adresses e-mail, il AWS envoie divers e-mails, tels que la confirmation de l'enregistrement du compte et des notifications périodiques, à cette adresse e-mail. En suivant les étapes de ce modèle, vous configurez votre compte Compte AWS Amazon pour SES recevoir des e-mails pour l'ensemble du domaine. Cette solution configure les règles de transfert qui permettent à Lambda de traiter tous les e-mails entrants, de vérifier si TO l'adresse figure dans le tableau DynamoDB et de transférer le message à l'adresse e-mail du propriétaire du compte. L'utilisation de ce processus permet aux propriétaires de comptes d'associer plusieurs comptes à une seule adresse e-mail.

Automatisation et mise à l'échelle

Ce modèle utilise le AWS CDK pour automatiser entièrement le déploiement. La solution utilise des services AWS gérés qui seront (ou peuvent être configurés pour) évoluer automatiquement en fonction de vos besoins. Les fonctions Lambda peuvent nécessiter une configuration supplémentaire pour répondre à vos besoins de dimensionnement. Pour plus d'informations, consultez la section Comprendre le dimensionnement des fonctions Lambda dans la documentation Lambda.

Outils

AWSservices

  • AWS CloudFormationvous aide à configurer les AWS ressources, à les approvisionner rapidement et de manière cohérente, et à les gérer tout au long de leur cycle de vie dans toutes Comptes AWS les régions.

  • AWS Command Line Interface (AWS CLI) est un outil open source qui vous permet d'interagir avec les AWS services par le biais de commandes dans votre interface de ligne de commande.

  • Amazon DynamoDB est un service SQL sans base de données entièrement géré qui fournit des performances rapides, prévisibles et évolutives.

  • AWS Identity and Access Management (IAM) vous aide à gérer en toute sécurité l'accès à vos AWS ressources en contrôlant qui est authentifié et autorisé à les utiliser.

  • AWS Key Management Service (AWS KMS) vous aide à créer et à contrôler des clés cryptographiques afin de protéger vos données.

  • AWS Lambdaest un service de calcul qui vous permet d'exécuter du code sans avoir à approvisionner ou à gérer des serveurs. Il exécute votre code uniquement lorsque cela est nécessaire et évolue automatiquement, de sorte que vous ne payez que pour le temps de calcul que vous utilisez.

  • Amazon Simple Email Service (AmazonSES) vous aide à envoyer et à recevoir des e-mails en utilisant vos propres adresses e-mail et domaines.

  • Amazon Simple Notification Service (AmazonSNS) vous aide à coordonner et à gérer l'échange de messages entre les éditeurs et les clients, y compris les serveurs Web et les adresses e-mail.

  • Amazon Simple Storage Service (Amazon S3) est un service de stockage d'objets basé sur le cloud qui vous permet de stocker, de protéger et de récupérer n'importe quel volume de données.

Outils nécessaires au déploiement

Code

Le code de ce modèle est disponible dans le référentiel GitHub Compte AWS d'e-mails d'usine.

Épopées

TâcheDescriptionCompétences requises

Identifiez ou créez un Compte AWS.

Identifiez une solution existante ou nouvelle Compte AWS à laquelle vous disposez d'un accès administratif complet, afin de déployer la solution de messagerie.

AWSadministrateur, administrateur du cloud

Configurez un environnement de déploiement.

Configurez un environnement de déploiement facile à utiliser et configurez les dépendances en suivant ces étapes :

  1. Configurez votre environnement de développement à l'aide des outils répertoriés dans la section Outils.

  2. Clonez la base de code du référentiel de courrier électronique d' GitHub Compte AWS usine dans votre environnement de développement à l'aide de la commande :

    git clone https://github.com/aws-samples/aws-account-factory-email
  3. Dans le requirements.txt fichier (à la racine du référentiel), mettez à jour la ligne commençant par aws-cdk-lib== pour qu'elle corresponde à la AWS CDK version exécutée dans votre environnement. Pour identifier la version, utilisez la cdk --version commande.

AWS DevOps, Développeur d'applications
TâcheDescriptionCompétences requises

Identifiez et attribuez un domaine.

La fonctionnalité de transfert d'e-mails nécessite un domaine dédié. Identifiez et attribuez un domaine ou un sous-domaine que vous pouvez vérifier auprès d'AmazonSES. Ce domaine doit être disponible pour recevoir les e-mails entrants dans l' Compte AWS endroit où la solution de transfert d'e-mails est déployée.

Exigences relatives au domaine :

  • Le domaine doit être un domaine ou un sous-domaine standard.

  • Le domaine doit pouvoir être DNS résolu en externe, car il sera utilisé pour recevoir des e-mails provenant de l'extérieur de l'organisation.

Administrateur cloud, administrateur réseau, DNS administrateur

Vérifiez le domaine.

Vérifiez que le domaine identifié peut être utilisé pour accepter les e-mails entrants.

Suivez les instructions de la section Vérification de votre domaine pour la réception d'SESe-mails Amazon dans la SES documentation Amazon. Cela nécessitera une coordination avec la personne ou l'équipe responsable des DNS enregistrements du domaine.

Développeur d'applications, AWS DevOps

Configurez des enregistrements MX.

Configurez votre domaine avec des enregistrements MX qui pointent vers les SES points de terminaison Amazon de votre Compte AWS région. Pour plus d'informations, consultez la section Publication d'un enregistrement MX pour la réception d'SESe-mails Amazon dans la SES documentation Amazon.

Administrateur cloud, administrateur réseau, DNS administrateur
TâcheDescriptionCompétences requises

Modifiez les valeurs par défaut danscdk.json.

Modifiez certaines des valeurs par défaut dans le cdk.json fichier (à la racine du référentiel) afin que la solution fonctionne correctement après son déploiement.

  1. Modifiez la SES_DOMAIN_NAME valeur pour qu'elle corresponde au nom de domaine que vous avez vérifié précédemment.

  2. Modifiez la ADDRESS_FROM valeur pour inclure le même domaine que celui dansSES_DOMAIN_NAME. La partie locale de l'adresse doit être déterminée par votre équipe cloud. Cette adresse devient l'FROMadresse de chaque e-mail transféré par le biais de la solution.

  3. Modifiez la ADDRESS_ADMIN valeur pour qu'elle corresponde à l'adresse e-mail vers laquelle les messages entrants non correspondants seront transférés. Cette valeur doit être une adresse e-mail valide et fonctionnelle.

Développeur d'applications, AWS DevOps

Déployez la solution de distribution et de transfert d'e-mails.

  1. Créez un environnement virtuel Python :

    python -m venv .venv
  2. Activez l'environnement virtuel Python :

    source .venv/bin/activate

    Ou, sur la plate-forme Windows, utilisez :

    % .venv\Scripts\activate.bat
  3. Installez toutes les exigences de Python sans erreur :

    pip install -r requirements.txt
  4. Synthétisez le CloudFormation modèle :

    cdk synth

    Vérifiez qu'il n'y a aucune erreur et que le CloudFormation modèle complet contient le résultat attendu.

  5. (Facultatif) Si vous déployez le AWS CDK code dans l'environnement actuel Compte AWS ou dans la région pour la première fois, amorcez l'environnement. Pour plus d'informations, consultez AWS CDK Bootstrapping dans la AWS CDK documentation.

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

    Remplacez AWS-ACCOUNT-NUMBER et REGION par les valeurs réelles.

  6. Déployez la solution :

    cdk bootstrap cdk deploy

    Les commandes devraient s'exécuter sans erreur.

Développeur d'applications, AWS DevOps

Vérifiez que la solution a été déployée.

Vérifiez que la solution a été déployée avec succès avant de commencer les tests :

  1. Ouvrez la AWS CloudFormation console et recherchez une CloudFormation pile contenant le nomAwsMailFwdStack.

  2. Vérifiez que cette AwsMailFwdStack pile possède les ressources suivantes :

    • Fonctions Lambda

    • SESRègle Amazon et ensemble de règles

    • Rôles et stratégies IAM

    • Politique relative aux compartiments et aux compartiments Amazon S3

    • AWS KMS politique clé et clé

    • SNSRubriques Amazon et règles relatives aux rubriques

    • Tableau DynamoDB

Développeur d'applications, AWS DevOps
TâcheDescriptionCompétences requises

Vérifiez que le API fonctionne.

Au cours de cette étape, vous soumettez les données de test à la solution API et vous confirmez que celle-ci produit le résultat attendu et que les opérations de backend ont été effectuées comme prévu.

Exécutez manuellement la fonction Lambda Vend Email en utilisant une entrée de test. (Pour un exemple, consultez le fichier sample_vend_request.json.) PourOwnerAddress, utilisez une adresse e-mail valide. Le API doit renvoyer un nom de compte et un e-mail de compte avec les valeurs attendues.

Développeur d'applications, AWS DevOps

Vérifiez que l'e-mail est transféré.

Au cours de cette étape, vous envoyez un e-mail de test via le système et vous vérifiez qu'il est transféré au destinataire attendu.

  1. Obtenez l'adresse e-mail du compte à la dernière étape.

  2. Envoyez un e-mail à cette adresse avec le sujet du test et le corps du texte.

  3. Confirmez que vous avez reçu l'e-mail à l'adresse e-mail du propriétaire du compte.

  4. Vérifiez que l'FROMadresse de l'e-mail que vous avez reçu correspond aux ADDRESS_FROM paramètres définis danscdk.json.

  5. Vérifiez que l'objet et le corps de l'e-mail reçu sont identiques à ceux du message envoyé d'origine.

Développeur d'applications, AWS DevOps

Résolution des problèmes

ProblèmeSolution

Le système ne transmet pas les e-mails comme prévu.

Vérifiez que votre configuration est correcte :

  1. Vous devez avoir terminé le processus SES de vérification Amazon pour votre domaine.

  2. Votre domaine doit être correctement configuré avec des enregistrements MX pointant vers les SES points de terminaison Amazon de votre Compte AWS région. Pour plus d'informations, consultez la section Publication d'un enregistrement MX pour la réception d'SESe-mails Amazon dans la SES documentation Amazon.

Après avoir vérifié la configuration de votre domaine, procédez comme suit :

  1. Ouvrez la CloudWatch console Amazon correspondant au compte et à la région dans lesquels vous avez déployé la solution, puis accédez aux groupes de CloudWatch journaux dans le volet de navigation.

  2. Recherchez dans la liste des groupes de journauxSesMailForwardLogGroup.

  3. Examinez les journaux de ce groupe pour voir si des erreurs sont générées lors du processus de vente et de transfert d'e-mails.

Lorsque vous essayez de déployer la AWS CDK pile, vous recevez un message d'erreur similaire au message suivant :

« Erreur de format du modèle : types de ressources non reconnus »

Dans la plupart des cas, ce message d'erreur signifie que la région que vous ciblez ne dispose pas de tous les AWS services disponibles. Si vous utilisez une EC2 instance Amazon pour déployer la solution, vous ciblez peut-être une région différente de celle dans laquelle l'instance est exécutée.

Remarque : Par défaut, les AWS CDK déploiements sont effectués dans la région et le compte que vous avez configurés dans le AWS CLI.

Solutions possibles :

  1. Vérifiez si tous les services nécessaires à cette solution (voir la section relative à la pile technologique cible plus haut dans ce modèle) se trouvent dans la catégorie Région AWS que vous ciblez en passant en revue les AWSservices par région.

  2. Si vous utilisez une EC2 instance et que vous ciblez une région différente de celle dans laquelle votre instance est exécutée, assurez-vous de définir la variable d'AWS_DEFAULT_REGIONenvironnement ou de définir une région avec le AWS CLI avant de déployer la solution. Pour plus d'informations, consultez la section Configuration des variables d'environnement AWS CLI dans la AWS CLI documentation. Vous pouvez également modifier le app.py fichier situé à la racine du référentiel pour inclure un identifiant de compte et une région codés en dur en suivant les instructions de la AWS CDK documentation relative aux environnements.

Lorsque vous déployez la solution, vous recevez le message d'erreur suivant :

« Échec du déploiement AwsMailFwdStack : erreur : SSM parameter /cdk-bootstrap/hnb659fds/version introuvable. L'environnement a-t-il été amorcé ? Veuillez exécuter 'cdk bootstrap' »

Si vous n'avez jamais déployé de AWS CDK ressources dans la région Compte AWS et que vous ciblez, vous devez d'abord exécuter la cdk bootstrap commande comme l'indique l'erreur. Si cette erreur persiste après avoir exécuté la commande d'amorçage, il se peut que vous tentiez de déployer la solution dans une région différente de celle dans laquelle votre environnement de développement est exécuté.

Pour résoudre ce problème, définissez la variable d'AWS_DEFAULT_REGIONenvironnement ou définissez une région avec le AWS CLI avant de déployer la solution. Vous pouvez également modifier le app.py fichier situé à la racine du référentiel pour inclure un identifiant de compte et une région codés en dur en suivant les instructions de la AWS CDK documentation relative aux environnements.

Ressources connexes

Informations supplémentaires

Coûts

Lorsque vous déployez cette solution, le Compte AWS titulaire peut encourir des coûts liés à l'utilisation des services suivants.  Il est important que vous compreniez comment ces services sont facturés afin de connaître les éventuels frais. Pour plus d'informations sur les tarifs, consultez les pages suivantes :