Daftarkan beberapa Akun AWS dengan satu alamat email dengan menggunakan Amazon SES - AWS Prescriptive Guidance

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Daftarkan beberapa Akun AWS dengan satu alamat email dengan menggunakan Amazon SES

Joe Wozniak dan Shubhangi Vishwakarma, Amazon Web Services

Ringkasan

Pola ini menjelaskan bagaimana Anda dapat memisahkan alamat email asli dari alamat email yang terkait dengan alamat email. Akun AWS Akun AWS memerlukan alamat email unik yang akan diberikan pada saat pembuatan akun. Di beberapa organisasi, tim yang mengelola Akun AWS harus menanggung beban mengelola banyak alamat email unik dengan tim pesan mereka. Ini bisa sulit bagi organisasi besar yang mengelola banyak orang Akun AWS. Selain itu, jika sistem email Anda tidak mengizinkan pengalamatan plus atau sub-alamat seperti yang didefinisikan dalam Penyaringan Email Saringan: Ekstensi Subaddress (RFC 5233) —dengan menambahkan tanda plus (+) dan pengenal di akhir bagian lokal alamat email, seperti —pola ini dapat membantu mengatasi batasan ini. admin+123456789123@example.com

Pola ini memberikan solusi penjual alamat email unik yang memungkinkan Akun AWS pemilik untuk mengaitkan satu alamat email dengan beberapa Akun AWS alamat. Alamat email sebenarnya dari Akun AWS pemilik kemudian dikaitkan dengan alamat email yang dihasilkan ini dalam sebuah tabel. Solusi ini menangani semua email masuk untuk akun email unik, mencari pemilik setiap akun, dan kemudian meneruskan pesan yang diterima ke pemilik.  

Prasyarat dan batasan

Prasyarat

  • Akses administratif ke sebuah Akun AWS.

  • Akses ke lingkungan pengembangan.

  • (Opsional) Keakraban dengan AWS Cloud Development Kit (AWS CDK) alur kerja dan bahasa pemrograman Python akan membantu Anda memecahkan masalah atau membuat modifikasi.

Batasan

  • Panjang alamat email yang dijual secara keseluruhan 64 karakter. Untuk detailnya, lihat CreateAccountdi referensi AWS Organizations API.

Versi produk

  • Node.js versi 22.x atau yang lebih baru

  • Python 3.13 atau yang lebih baru

  • Paket Python pip dan virtualenv

  • AWS CDK CLI versi 2.1019.2 atau yang lebih baru

  • Docker 20.10.x atau yang lebih baru

Arsitektur

Tumpukan teknologi target

  • AWS CloudFormation tumpukan

  • AWS Lambda fungsi

  • Aturan dan aturan Amazon Simple Email Service (Amazon SES) dan aturan

  • AWS Identity and Access Management (IAM) peran dan kebijakan

  • Kebijakan bucket dan bucket Amazon Simple Storage Service (Amazon S3)

  • AWS Key Management Service (AWS KMS) kebijakan kunci dan kunci

  • Kebijakan topik dan topik Amazon Simple Notification Service (Amazon SNS)

  • Tabel Amazon DynamoDB

Arsitektur target

Arsitektur target untuk mendaftarkan beberapa akun AWS dengan satu alamat email

Diagram ini menunjukkan dua aliran:

  • Alur penjual alamat email: Dalam diagram, alur penjual alamat email (bagian bawah) biasanya dimulai dengan solusi penjual akun atau otomatisasi luar, atau dipanggil secara manual. Dalam permintaan, fungsi Lambda dipanggil dengan payload yang berisi metadata yang dibutuhkan. Fungsi ini menggunakan informasi ini untuk menghasilkan nama akun dan alamat email yang unik, menyimpannya dalam database DynamoDB, dan mengembalikan nilai ke pemanggil. Nilai-nilai ini kemudian dapat digunakan untuk membuat baru Akun AWS (biasanya dengan menggunakan AWS Organizations).

  • Alur penerusan email: Alur ini diilustrasikan di bagian atas diagram sebelumnya. Ketika Akun AWS dibuat dengan menggunakan email akun yang dihasilkan dari alur penjual alamat email, AWS mengirim berbagai email, seperti konfirmasi pendaftaran akun dan pemberitahuan berkala, ke alamat email tersebut. Dengan mengikuti langkah-langkah dalam pola ini, Anda mengonfigurasi Anda Akun AWS dengan Amazon SES untuk menerima email untuk seluruh domain. Solusi ini mengonfigurasi aturan penerusan yang memungkinkan Lambda memproses semua email yang masuk, periksa untuk melihat apakah alamatnya TO ada di tabel DynamoDB, dan meneruskan pesan ke alamat email pemilik akun. Menggunakan proses ini memberi pemilik akun kemampuan untuk mengaitkan beberapa akun dengan satu alamat email.

Otomatisasi dan skala

Pola ini menggunakan AWS CDK untuk sepenuhnya mengotomatiskan penerapan. Solusinya menggunakan layanan AWS terkelola yang akan (atau dapat dikonfigurasi untuk) menskalakan secara otomatis untuk memenuhi kebutuhan Anda. Fungsi Lambda mungkin memerlukan konfigurasi tambahan untuk memenuhi kebutuhan penskalaan Anda. Untuk informasi selengkapnya, lihat Memahami penskalaan fungsi Lambda dalam dokumentasi Lambda.

Alat

Layanan AWS

  • AWS CloudFormationmembantu Anda menyiapkan AWS sumber daya, menyediakannya dengan cepat dan konsisten, dan mengelolanya sepanjang siklus hidupnya di seluruh Akun AWS dan Wilayah.

  • AWS Command Line Interface (AWS CLI) adalah alat sumber terbuka yang membantu Anda berinteraksi dengan layanan AWS melalui perintah di shell baris perintah Anda.

  • Amazon DynamoDB adalah layanan database NoSQL yang dikelola sepenuhnya yang menyediakan kinerja yang cepat, dapat diprediksi, dan terukur.

  • AWS Identity and Access Management (IAM) membantu Anda mengelola akses ke AWS sumber daya dengan aman dengan mengontrol siapa yang diautentikasi dan diberi wewenang untuk menggunakannya.

  • AWS Key Management Service (AWS KMS) membantu Anda membuat dan mengontrol kunci kriptografi untuk membantu melindungi data Anda.

  • AWS Lambdaadalah layanan komputasi yang membantu Anda menjalankan kode tanpa perlu menyediakan atau mengelola server. Ini menjalankan kode Anda hanya bila diperlukan dan skala secara otomatis, jadi Anda hanya membayar untuk waktu komputasi yang Anda gunakan.

  • Amazon Simple Email Service (Amazon SES) membantu Anda mengirim dan menerima email dengan menggunakan alamat email dan domain Anda sendiri.

  • Amazon Simple Notification Service (Amazon SNS) membantu Anda mengoordinasikan dan mengelola pertukaran pesan antara penayang dan klien, termasuk server web dan alamat email.

  • Amazon Simple Storage Service (Amazon S3) adalah layanan penyimpanan objek berbasis cloud yang membantu Anda menyimpan, melindungi, dan mengambil sejumlah data.

Alat yang dibutuhkan untuk penyebaran

Kode

Kode untuk pola ini tersedia di repositori email GitHub Akun AWS pabrik.

Epik

TugasDeskripsiKeterampilan yang dibutuhkan

Identifikasi atau buat Akun AWS.

Identifikasi yang sudah ada atau baru Akun AWS di mana Anda memiliki akses administratif penuh, untuk menyebarkan solusi email.

Administrator AWS, Administrator cloud

Siapkan lingkungan penerapan.

Konfigurasikan lingkungan penerapan yang mudah digunakan dan atur dependensi dengan mengikuti langkah-langkah berikut:

  1. Siapkan lingkungan pengembangan Anda dengan alat yang tercantum di bagian Alat.

  2. Kloning basis kode repositori email GitHub Akun AWS pabrik ke lingkungan pengembangan Anda dengan menggunakan perintah:

    git clone https://github.com/aws-samples/aws-account-factory-email
  3. Dalam requirements.in file (di root repositori), perbarui baris yang dimulai dengan aws-cdk-lib== agar sesuai dengan versi terbaru dari file. AWS CDK Untuk mengidentifikasi apa versi terbaru, jalankan npm view aws-cdk-lib dan cari kata kunci “latest:”.

  4. Jika Anda membuat pembaruan ke versirequirements.in, jalankan perintah berikut untuk memperbarui requirements.txt file dengan menggunakan UV:

    uv pip compile requirements.in -o requirements.txt --python-version 3.13
AWS DevOps, Pengembang aplikasi
TugasDeskripsiKeterampilan yang dibutuhkan

Mengidentifikasi dan mengalokasikan domain.

Fungsionalitas penerusan email membutuhkan domain khusus. Identifikasi dan alokasikan domain atau subdomain yang dapat Anda verifikasi dengan Amazon SES. Domain ini harus tersedia untuk menerima email masuk di Akun AWS tempat solusi penerusan email digunakan.

Persyaratan domain:

  • Domain harus menjadi domain standar atau subdomain.

  • Domain harus dapat diselesaikan secara eksternal DNS, karena akan digunakan untuk menerima email dari luar organisasi.

Administrator cloud, Administrator jaringan, administrator DNS

Verifikasi domain.

Verifikasi bahwa domain yang diidentifikasi dapat digunakan untuk menerima email masuk.

Lengkapi petunjuk di Memverifikasi domain Anda untuk penerimaan email Amazon SES di dokumentasi Amazon SES. Ini akan membutuhkan koordinasi dengan orang atau tim yang bertanggung jawab atas catatan DNS domain.

Pengembang aplikasi, AWS DevOps

Siapkan catatan MX.

Siapkan domain Anda dengan data MX yang mengarah ke titik akhir Amazon SES di Wilayah Akun AWS dan Anda. Untuk informasi selengkapnya, lihat Menerbitkan data MX untuk penerimaan email Amazon SES di dokumentasi Amazon SES.

Administrator cloud, Administrator jaringan, administrator DNS
TugasDeskripsiKeterampilan yang dibutuhkan

Ubah nilai default dicdk.json.

Edit beberapa nilai default dalam cdk.json file (di root repositori) sehingga solusi akan beroperasi dengan benar setelah digunakan.

  1. Ubah SES_DOMAIN_NAME nilainya agar sesuai dengan nama domain yang Anda verifikasi sebelumnya.

  2. Ubah ADDRESS_FROM nilai untuk menyertakan domain yang sama yang ada diSES_DOMAIN_NAME. Bagian lokal dari alamat harus ditentukan oleh tim cloud Anda. Alamat ini menjadi FROM alamat untuk setiap email yang diteruskan melalui solusi.

  3. Ubah ADDRESS_ADMIN nilainya agar sesuai dengan alamat email tempat pesan masuk yang tidak cocok akan diteruskan. Nilai ini harus berupa alamat email yang valid dan beroperasi.

Pengembang aplikasi, AWS DevOps

Menyebarkan solusi penjual dan penerusan email.

  1. Buat lingkungan virtual Python:

    uv venv --python 3.13
  2. Aktifkan lingkungan virtual Python:

    source .venv/bin/activate

    Atau, pada platform Windows, gunakan:

    % .venv\Scripts\activate.bat
  3. Instal semua persyaratan Python tanpa kesalahan:

    uv pip install -r requirements.txt
  4. Sintesis CloudFormation template:

    cdk synth

    Konfirmasikan bahwa tidak ada kesalahan dan bahwa CloudFormation template lengkap berisi output yang diharapkan.

  5. (Opsional) Jika Anda menerapkan AWS CDK kode ke dalam saat ini Akun AWS atau Wilayah untuk pertama kalinya, bootstrap lingkungan. Untuk informasi selengkapnya, lihat AWS CDK Bootstrapping di dokumentasi. AWS CDK

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

    Ganti AWS-ACCOUNT-NUMBER dan REGION dengan nilai aktual.

  6. Terapkan solusinya:

    cdk bootstrap cdk deploy

    Perintah harus selesai tanpa kesalahan.

Pengembang aplikasi, AWS DevOps

Verifikasi bahwa solusi telah diterapkan.

Verifikasi bahwa solusi berhasil diterapkan sebelum Anda mulai menguji:

  1. Buka AWS CloudFormation konsol dan cari CloudFormation tumpukan yang berisi namaAwsMailFwdStack.

  2. Konfirmasikan bahwa AwsMailFwdStack tumpukan ini memiliki sumber daya berikut:

    • Fungsi Lambda

    • Aturan Amazon SES dan set aturan

    • Peran dan kebijakan IAM

    • Kebijakan bucket dan bucket Amazon S3

    • AWS KMS kebijakan kunci dan kunci

    • Kebijakan topik dan topik Amazon SNS

    • Tabel DynamoDB

Pengembang aplikasi, AWS DevOps
TugasDeskripsiKeterampilan yang dibutuhkan

Verifikasi bahwa API berfungsi.

Pada langkah ini, Anda mengirimkan data pengujian ke API solusi dan mengonfirmasi bahwa solusi menghasilkan output yang diharapkan dan operasi backend telah dilakukan seperti yang diharapkan.

Jalankan fungsi Vend Email Lambda secara manual dengan menggunakan input pengujian. (Sebagai contoh, lihat file sample_vend_request.json.) UntukOwnerAddress, gunakan alamat email yang valid. API harus mengembalikan nama akun dan email akun dengan nilai seperti yang diharapkan.

Pengembang aplikasi, AWS DevOps

Verifikasi bahwa email sedang diteruskan.

Pada langkah ini, Anda mengirim email pengujian melalui sistem dan memverifikasi bahwa email diteruskan ke penerima yang diharapkan.

  1. Dapatkan email akun dari langkah terakhir.

  2. Kirim email ke alamat ini dengan subjek tes dan teks isi.

  3. Konfirmasikan bahwa Anda menerima email di alamat email pemilik akun.

  4. Konfirmasikan bahwa email yang Anda terima memiliki FROM alamat yang cocok dengan ADDRESS_FROM pengaturancdk.json.

  5. Konfirmasikan bahwa subjek dan isi email yang diterima sama dengan pesan terkirim asli.

Pengembang aplikasi, AWS DevOps

Pemecahan Masalah

IsuSolusi

Sistem tidak meneruskan email seperti yang diharapkan.

Verifikasi bahwa pengaturan Anda sudah benar:

  1. Anda seharusnya telah menyelesaikan proses verifikasi Amazon SES untuk domain Anda.

  2. Domain Anda harus disiapkan dengan benar dengan catatan MX yang mengarah ke titik akhir Amazon SES di Wilayah dan Anda Akun AWS . Untuk informasi selengkapnya, lihat Menerbitkan data MX untuk penerimaan email Amazon SES di dokumentasi Amazon SES.

Setelah memverifikasi pengaturan domain, ikuti langkah-langkah berikut:

  1. Buka CloudWatch konsol Amazon untuk akun dan Wilayah tempat Anda menerapkan solusi, dan navigasikan ke grup CloudWatch log di panel navigasi.

  2. Cari daftar grup log untukSesMailForwardLogGroup.

  3. Selidiki log dalam grup ini untuk melihat apakah ada kesalahan yang dihasilkan selama proses penjual dan penerusan email.

Saat Anda mencoba menerapkan AWS CDK tumpukan, Anda menerima kesalahan yang mirip dengan:

“Kesalahan format templat: Jenis sumber daya yang tidak dikenal”

Dalam kebanyakan kasus, pesan kesalahan ini berarti bahwa Wilayah yang Anda targetkan tidak memiliki semua layanan AWS yang tersedia. Jika Anda menggunakan EC2 instans Amazon untuk menerapkan solusi, Anda mungkin menargetkan Wilayah yang berbeda dari Wilayah tempat instance berjalan.

catatan

Secara default, AWS CDK penyebaran ke Wilayah dan akun yang Anda konfigurasikan di. AWS CLI

Solusi yang mungkin:

  1. Selidiki apakah semua layanan yang diperlukan untuk solusi ini (lihat bagian tumpukan teknologi Target sebelumnya dalam pola ini) ada di tempat Wilayah AWS Anda menargetkan dengan meninjau AWS Services by Region.

  2. Jika Anda menggunakan EC2 instance dan menargetkan Wilayah yang berbeda dari Wilayah tempat instance Anda berjalan, pastikan untuk menyetel variabel AWS_DEFAULT_REGION lingkungan, atau setel Region dengan AWS CLI sebelum Anda menerapkan solusi. Untuk informasi selengkapnya, lihat Mengkonfigurasi variabel lingkungan untuk AWS CLI dokumentasi. AWS CLIAtau, Anda dapat memodifikasi app.py file di root repositori untuk menyertakan ID akun dan Wilayah dengan kode keras dengan mengikuti instruksi dalam dokumentasi untuk lingkungan.AWS CDK

Saat Anda menerapkan solusi, Anda menerima pesan galat:

“Penerapan gagal: Kesalahan:: Parameter SSM bootstrap/hnb659fds/version /cdk- tidak ditemukan. AwsMailFwdStack Apakah lingkungan telah di-bootstrap? Silakan jalankan 'cdk bootstrap'”

Jika Anda belum pernah menerapkan AWS CDK sumber daya apa pun ke Akun AWS dan Wilayah yang Anda targetkan, Anda harus terlebih dahulu menjalankan cdk bootstrap perintah seperti yang ditunjukkan oleh kesalahan. Jika Anda terus menerima kesalahan ini setelah menjalankan perintah bootstrap, Anda mungkin mencoba menerapkan solusi ke Wilayah yang berbeda dari Wilayah tempat lingkungan pengembangan Anda berjalan.

Untuk mengatasi masalah ini, atur variabel AWS_DEFAULT_REGION lingkungan atau atur Region dengan AWS CLI sebelum Anda menerapkan solusi. Atau, Anda dapat memodifikasi app.py file di root repositori untuk menyertakan ID akun dan Wilayah dengan kode keras dengan mengikuti instruksi dalam dokumentasi untuk lingkungan.AWS CDK

Sumber daya terkait

Informasi tambahan

Biaya

Ketika Anda menerapkan solusi ini, Akun AWS pemegang mungkin dikenakan biaya yang terkait dengan penggunaan layanan berikut.  Penting bagi Anda untuk memahami bagaimana layanan ini ditagih sehingga Anda mengetahui adanya potensi biaya. Untuk informasi harga, lihat halaman berikut: