Registra più AWS account con un unico indirizzo e-mail utilizzando Amazon SES - Prontuario AWS

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Registra più AWS account con un unico indirizzo e-mail utilizzando Amazon SES

Creato da Joe Wozniak () e Shubhangi Vishwakarma () AWS AWS

Deposito di codici: GitHub aws-account-factory-email

Ambiente: PoC o pilota

Tecnologie: infrastruttura; gestione e governance; messaggistica e comunicazioni

AWSservizi: AWS Lambda; AmazonSES; Amazon DynamoDB

Riepilogo

Questo modello descrive come è possibile disaccoppiare gli indirizzi e-mail reali dall'indirizzo e-mail associato a un. Account AWS Account AWS richiede che venga fornito un indirizzo email univoco al momento della creazione dell'account. In alcune organizzazioni, il team che gestisce Account AWS deve assumersi l'onere di gestire molti indirizzi e-mail univoci con il proprio team di messaggistica. Questo può essere difficile per le grandi organizzazioni che ne gestiscono molti Account AWS. Inoltre, se il sistema di posta elettronica non consente l'indirizzamento positivo o secondario, come definito in Sieve Email Filtering: Subaddress Extension (RFC5233), aggiungendo un segno più (+) e un identificatore alla fine della parte locale dell'indirizzo e-mail, ad esempio, questo schema può aiutare a superare questa limitazioneadmin+123456789123@example.com.

Questo modello fornisce una soluzione di vendita di indirizzi e-mail unica che consente Account AWS ai proprietari di associare un indirizzo e-mail a più indirizzi e-mail. Account AWS Gli indirizzi e-mail reali dei Account AWS proprietari vengono quindi associati a questi indirizzi e-mail generati in una tabella. La soluzione gestisce tutte le e-mail in arrivo per gli account e-mail univoci, cerca il proprietario di ciascun account e quindi inoltra i messaggi ricevuti al proprietario.  

Prerequisiti e limitazioni

Prerequisiti

  • Accesso amministrativo a un. Account AWS

  • Accesso a un ambiente di sviluppo.

  • (Facoltativo) La familiarità con AWS Cloud Development Kit (AWS CDK) i flussi di lavoro e il linguaggio di programmazione Python ti aiuterà a risolvere eventuali problemi o apportare modifiche.

Limitazioni

  • Lunghezza complessiva dell'indirizzo e-mail fornito di 64 caratteri. Per i dettagli, vedi CreateAccountnel AWS Organizations APIriferimento.

Versioni del prodotto

  • Node.js versione 12.7.0 o successiva

  • Python 3.9 o successivo

  • Pacchetti Python pip e virtualenv

  • AWS CDK versione 2.23.0 o successiva

  • Docker 20.10.x o versione successiva

Architettura

Stack tecnologico Target

  • AWS CloudFormation pila

  • AWS Lambda funzioni

  • Regole e set di regole di Amazon Simple Email Service (AmazonSES)

  • AWS Identity and Access Management (IAM) ruoli e politiche

  • Politica relativa ai bucket e ai bucket di Amazon Simple Storage Service (Amazon S3)

  • AWS Key Management Service (AWS KMS) chiave e politica chiave

  • Argomento e policy tematica di Amazon Simple Notification Service (AmazonSNS)

  • Tabella Amazon DynamoDB

Architettura di Target

Architettura Target per la registrazione di più AWS account con un unico indirizzo e-mail

Questo diagramma mostra due flussi:

  • Flusso di vendita degli indirizzi e-mail: nel diagramma, il flusso di vendita degli indirizzi e-mail (sezione inferiore) inizia in genere con una soluzione di vendita di account o un'automazione esterna, oppure viene richiamato manualmente. Nella richiesta, viene chiamata una funzione Lambda con un payload che contiene i metadati necessari. La funzione utilizza queste informazioni per generare un nome account e un indirizzo e-mail univoci, li archivia in un database DynamoDB e restituisce i valori al chiamante. Questi valori possono quindi essere utilizzati per crearne uno nuovo Account AWS (in genere utilizzando). AWS Organizations

  • Flusso di inoltro delle e-mail: questo flusso è illustrato nella sezione superiore del diagramma precedente. Quando Account AWS viene creato un indirizzo e-mail utilizzando l'account, l'e-mail generata dal flusso di distribuzione degli indirizzi e-mail, AWS invia diverse e-mail, come la conferma della registrazione dell'account e le notifiche periodiche, a tale indirizzo e-mail. Seguendo i passaggi indicati in questo schema, Account AWS configuri Amazon SES per ricevere e-mail per l'intero dominio. Questa soluzione configura regole di inoltro che consentono a Lambda di elaborare tutte le e-mail in arrivo, verificare se l'indirizzo TO è nella tabella DynamoDB e inoltrare invece il messaggio all'indirizzo e-mail del proprietario dell'account. L'utilizzo di questo processo offre ai proprietari degli account la possibilità di associare più account a un unico indirizzo e-mail.

Automazione e scalabilità

Questo modello utilizza il AWS CDK per automatizzare completamente l'implementazione. La soluzione utilizza servizi AWS gestiti che scaleranno automaticamente (o possono essere configurati per) soddisfare le vostre esigenze. Le funzioni Lambda potrebbero richiedere una configurazione aggiuntiva per soddisfare le tue esigenze di scalabilità. Per ulteriori informazioni, consulta Understanding Lambda Function Scaling nella documentazione di Lambda.

Strumenti

AWSservizi

  • AWS CloudFormationti aiuta a configurare AWS le risorse, fornirle in modo rapido e coerente e gestirle durante tutto il loro ciclo di vita in tutte Account AWS le regioni.

  • AWS Command Line Interface (AWS CLI) è uno strumento open source che consente di interagire con i AWS servizi tramite comandi nella shell della riga di comando.

  • Amazon DynamoDB è un servizio di database SQL No completamente gestito che offre prestazioni veloci, prevedibili e scalabili.

  • AWS Identity and Access Management (IAM) ti aiuta a gestire in modo sicuro l'accesso alle tue AWS risorse controllando chi è autenticato e autorizzato a utilizzarle.

  • AWS Key Management Service (AWS KMS) consente di creare e controllare chiavi crittografiche per proteggere i dati.

  • AWS Lambdaè un servizio di elaborazione che consente di eseguire codice senza dover effettuare il provisioning o gestire server. Esegue il codice solo quando necessario e si ridimensiona automaticamente, quindi paghi solo per il tempo di elaborazione che utilizzi.

  • Amazon Simple Email Service (AmazonSES) ti aiuta a inviare e ricevere e-mail utilizzando i tuoi indirizzi e-mail e domini.

  • Amazon Simple Notification Service (AmazonSNS) ti aiuta a coordinare e gestire lo scambio di messaggi tra editori e clienti, inclusi server Web e indirizzi e-mail.

  • Amazon Simple Storage Service (Amazon S3) è un servizio di archiviazione degli oggetti basato sul cloud che consente di archiviare, proteggere e recuperare qualsiasi quantità di dati.

Strumenti necessari per la distribuzione

Codice

Il codice per questo pattern è disponibile nell'archivio di posta elettronica di GitHub Account AWS fabbrica.

Epiche

AttivitàDescrizioneCompetenze richieste

Identifica o crea un Account AWS.

Identifica una soluzione di posta elettronica esistente o nuova Account AWS a cui hai pieno accesso amministrativo per implementare la soluzione di posta elettronica.

AWSamministratore, amministratore del cloud

Configura un ambiente di distribuzione.

Configura un ambiente di distribuzione facile da usare e imposta le dipendenze seguendo questi passaggi:

  1. Configura il tuo ambiente di sviluppo con gli strumenti elencati nella sezione Strumenti.

  2. Clona il codice base del repository di posta elettronica di GitHub Account AWS fabbrica nel tuo ambiente di sviluppo utilizzando il comando:

    git clone https://github.com/aws-samples/aws-account-factory-email
  3. Nel requirements.txt file (nella radice del repository), aggiorna la riga che inizia con in modo che aws-cdk-lib== corrisponda alla versione del AWS CDK file in esecuzione nel tuo ambiente. Per identificare la versione, usa il cdk --version comando.

AWS DevOps, Sviluppatore di app
AttivitàDescrizioneCompetenze richieste

Identifica e assegna un dominio.

La funzionalità di inoltro delle e-mail richiede un dominio dedicato. Identifica e assegna un dominio o sottodominio che puoi verificare con Amazon. SES Questo dominio dovrebbe essere disponibile per ricevere e-mail in arrivo all'interno del Account AWS luogo in cui è implementata la soluzione di inoltro della posta elettronica.

Requisiti del dominio:

  • Il dominio deve essere un dominio o un sottodominio standard.

  • Il dominio deve essere DNS risolvibile esternamente, poiché verrà utilizzato per ricevere e-mail dall'esterno dell'organizzazione.

Amministratore cloud, amministratore di rete, amministratore DNS

Verifica il dominio.

Verifica che il dominio identificato possa essere utilizzato per accettare la posta elettronica in arrivo.

Completa le istruzioni in Verifica del tuo dominio per la ricezione di SES e-mail da Amazon nella SES documentazione di Amazon. Ciò richiederà il coordinamento con la persona o il team responsabile dei DNS record del dominio.

Sviluppatore di app, AWS DevOps

Configura i record MX.

Configura il tuo dominio con record MX che puntano agli SES endpoint Amazon nella tua regione Account AWS e. Per ulteriori informazioni, consulta Pubblicazione di un record MX per la ricezione di SES e-mail da Amazon nella SES documentazione di Amazon.

Amministratore cloud, amministratore di rete, DNS amministratore
AttivitàDescrizioneCompetenze richieste

Modificare i valori predefiniti incdk.json.

Modifica alcuni dei valori predefiniti nel cdk.json file (nella radice del repository) in modo che la soluzione funzioni correttamente dopo la distribuzione.

  1. Modifica il SES_DOMAIN_NAME valore in modo che corrisponda al nome di dominio verificato in precedenza.

  2. Modifica il ADDRESS_FROM valore per includere lo stesso dominio in cui si trovaSES_DOMAIN_NAME. La parte locale dell'indirizzo deve essere determinata dal tuo team cloud. Questo indirizzo diventa l'FROMindirizzo di ogni e-mail inoltrata tramite la soluzione.

  3. Modifica il ADDRESS_ADMIN valore in modo che corrisponda all'indirizzo e-mail a cui verranno inoltrati tutti i messaggi in arrivo non corrispondenti. Questo valore deve essere un indirizzo e-mail valido e operativo.

Sviluppatore di app, AWS DevOps

Implementa la soluzione di vendita e inoltro della posta elettronica.

  1. Crea un ambiente virtuale Python:

    python -m venv .venv
  2. Attiva l'ambiente virtuale Python:

    source .venv/bin/activate

    Oppure, sulla piattaforma Windows, usa:

    % .venv\Scripts\activate.bat
  3. Installa tutti i requisiti di Python senza errori:

    pip install -r requirements.txt
  4. Sintetizza il modello: CloudFormation

    cdk synth

    Verificate che non vi siano errori e che il CloudFormation modello completo contenga l'output previsto.

  5. (Facoltativo) Se state distribuendo il AWS CDK codice nella regione corrente Account AWS o nella regione per la prima volta, avviate l'ambiente. Per ulteriori informazioni, consulta AWS CDK Bootstrap nella documentazione. AWS CDK

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

    Sostituisci AWS-ACCOUNT-NUMBER e REGION con valori effettivi.

  6. Implementa la soluzione:

    cdk bootstrap cdk deploy

    I comandi devono essere completati senza errori.

Sviluppatore di app, AWS DevOps

Verifica che la soluzione sia stata implementata.

Verifica che la soluzione sia stata implementata correttamente prima di iniziare i test:

  1. Apri la AWS CloudFormation console e cerca uno CloudFormation stack che contenga il nome. AwsMailFwdStack

  2. Verifica che questo AwsMailFwdStack stack contenga le seguenti risorse:

    • Funzioni Lambda

    • SESRegole e set di regole di Amazon

    • Ruoli e policy IAM

    • Politica relativa ai bucket e ai bucket di Amazon S3

    • AWS KMS chiave e politica chiave

    • SNSArgomento e policy tematica di Amazon

    • DynamoDB tabella

Sviluppatore di app, AWS DevOps
AttivitàDescrizioneCompetenze richieste

Verificare API che funzioni.

In questo passaggio, inviate i dati di test alla soluzione API e confermate che la soluzione produca l'output previsto e che le operazioni di backend siano state eseguite come previsto.

Esegui manualmente la funzione Vend Email Lambda utilizzando l'input di test. (Per un esempio, vedete il file sample_vend_request.json.) Per, utilizza un indirizzo email valido. OwnerAddress APIDovrebbe restituire il nome dell'account e l'indirizzo e-mail dell'account con i valori previsti.

Sviluppatore di app, AWS DevOps

Verifica che l'email venga inoltrata.

In questo passaggio, invii un'e-mail di prova tramite il sistema e verifichi che l'e-mail venga inoltrata al destinatario previsto.

  1. Ottieni l'e-mail dell'account dall'ultimo passaggio.

  2. Invia un'e-mail a questo indirizzo con l'oggetto del test e il corpo del testo.

  3. Conferma di aver ricevuto l'e-mail all'indirizzo e-mail del proprietario dell'account.

  4. Verifica che l'e-mail che hai ricevuto abbia un FROM indirizzo che corrisponde all'ADDRESS_FROMimpostazione incdk.json.

  5. Verifica che l'oggetto e il corpo dell'email ricevuta coincidano con il messaggio originale inviato.

Sviluppatore di app, AWS DevOps

Risoluzione dei problemi

ProblemaSoluzione

Il sistema non inoltra le email come previsto.

Verifica che la configurazione sia corretta:

  1. Dovresti aver completato la procedura di SES verifica Amazon per il tuo dominio.

  2. Il tuo dominio deve essere configurato correttamente con record MX che puntano agli SES endpoint Amazon nella tua regione Account AWS e nella tua regione. Per ulteriori informazioni, consulta Pubblicazione di un record MX per la ricezione di SES e-mail da Amazon nella SES documentazione di Amazon.

Dopo aver verificato la configurazione del dominio, segui questi passaggi:

  1. Apri la CloudWatch console Amazon per l'account e la regione in cui hai distribuito la soluzione e vai ai gruppi di CloudWatch log nel riquadro di navigazione.

  2. Cerca nell'elenco dei gruppi di log perSesMailForwardLogGroup.

  3. Esamina i log di questo gruppo per vedere se vengono generati errori durante il processo di vendita e inoltro delle e-mail.

Quando tenti di distribuire lo AWS CDK stack, ricevi un errore simile a:

«Errore di formato del modello: tipi di risorse non riconosciuti»

Nella maggior parte dei casi, questo messaggio di errore indica che la regione scelta come target non dispone di tutti i servizi disponibili. AWS Se utilizzi un'EC2istanza Amazon per distribuire la soluzione, potresti scegliere come target una regione diversa da quella in cui è in esecuzione l'istanza.

Nota: per impostazione predefinita, viene AWS CDK distribuito nella regione e nell'account configurati in. AWS CLI

Possibili soluzioni:

  1. Verifica se tutti i servizi necessari per questa soluzione (vedi la sezione dedicata allo stack tecnologico di Target all'inizio di questo schema) rientrano tra quelli a Regione AWS cui ti rivolgi consultando la sezione AWSServizi per regione.

  2. Se utilizzi un'EC2istanza e hai come target una regione diversa da quella in cui è in esecuzione, assicurati di impostare la variabile di AWS_DEFAULT_REGION ambiente o di impostare una regione con la AWS CLI prima di distribuire la soluzione. Per ulteriori informazioni, consulta la sezione Configurazione delle variabili di ambiente AWS CLI nella documentazione. AWS CLI In alternativa, è possibile modificare il app.py file nella radice del repository per includere un ID account e una regione codificati seguendo le istruzioni contenute nella documentazione relativa agli ambienti.AWS CDK

Quando si distribuisce la soluzione, viene visualizzato il messaggio di errore:

«Distribuzione non riuscita: Errore: AwsMailFwdStack: SSM parameter /cdk-bootstrap/hnb659fds/version non trovato. L'ambiente è stato avviato? Per favore esegui 'cdk bootstrap'»

Se non hai mai distribuito AWS CDK risorse nella regione Account AWS and che hai scelto come target, dovrai prima eseguire il comando come indicato dall'errore. cdk bootstrap Se continui a ricevere questo errore dopo aver eseguito il comando bootstrap, potresti provare a distribuire la soluzione in una regione diversa da quella in cui è in esecuzione il tuo ambiente di sviluppo.

Per risolvere questo problema, imposta la variabile di AWS_DEFAULT_REGION ambiente o imposta una regione con la AWS CLI prima di distribuire la soluzione. In alternativa, puoi modificare il app.py file nella radice del repository per includere un ID account e una regione codificati seguendo le istruzioni nella documentazione per gli ambienti.AWS CDK

Risorse correlate

Informazioni aggiuntive

Costi

Quando si implementa questa soluzione, il Account AWS titolare potrebbe sostenere costi associati all'uso dei seguenti servizi.  È importante comprendere come vengono fatturati questi servizi in modo da essere a conoscenza di eventuali addebiti. Per informazioni sui prezzi, consulta le pagine seguenti: