本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 Amazon 以單一電子郵件地址註冊多個AWS帳戶 SES
由 Joe Wozniak (AWS) 和 Shubhangi Vishwakarma (AWS) 建立
Summary
此模式說明如何將實際電子郵件地址與與 相關聯的電子郵件地址分離 AWS 帳戶。 AWS 帳戶 建立帳戶時需要提供唯一的電子郵件地址。在某些組織中,管理 的團隊 AWS 帳戶 必須承擔管理其傳訊團隊許多唯一電子郵件地址的負擔。對於管理許多的大型組織來說,這可能很困難 AWS 帳戶。此外,如果您的電子郵件系統不允許 Sieve Email Filtering: Subaddress Extension (RFC 5233)admin+123456789123@example.com
- 此模式有助於克服此限制。
此模式提供唯一的電子郵件地址販賣解決方案,讓 AWS 帳戶 擁有者能夠將一個電子郵件地址與多個電子郵件地址建立關聯 AWS 帳戶。然後, AWS 帳戶 擁有者的真實電子郵件地址會與資料表中這些產生的電子郵件地址建立關聯。解決方案會處理唯一電子郵件帳戶的所有傳入電子郵件、查詢每個帳戶的擁有者,然後將任何收到的訊息轉送給擁有者。
先決條件和限制
先決條件
對 的管理存取權 AWS 帳戶。
存取開發環境。
(選用) 熟悉 AWS Cloud Development Kit (AWS CDK) 工作流程和 Python 程式設計語言,可協助您疑難排解任何問題或修改。
限制
整體修訂的電子郵件地址長度為 64 個字元。如需詳細資訊,請參閱CreateAccount AWS Organizations API 參考中的 。
產品版本
Node.js 12.7.0 版或更新版本
Python 3.9 或更新版本
Python 套件 pip 和 virtualenv
AWS CDK 2.23.0 版或更新版本
Docker 20.10.x 或更新版本
架構
目標技術堆疊
AWS CloudFormation 堆疊
AWS Lambda 函數
Amazon Simple Email Service (Amazon SES) 規則和規則集
AWS Identity and Access Management (IAM) 角色和政策
Amazon Simple Storage Service (Amazon S3) 儲存貯體和儲存貯體政策
AWS Key Management Service (AWS KMS) 金鑰和金鑰政策
Amazon Simple Notification Service (Amazon SNS) 主題和主題政策
Amazon DynamoDB 資料表
目標架構

此圖表顯示兩個流程:
電子郵件地址販賣流程:在圖表中,電子郵件地址販賣流程 (下節) 通常以帳戶販賣解決方案或外部自動化開始,或手動叫用。在請求中,呼叫 Lambda 函數時,承載會包含所需的中繼資料。函數會使用此資訊來產生唯一的帳戶名稱和電子郵件地址,將其存放在 DynamoDB 資料庫中,並將值傳回給發起人。然後,這些值可用來建立新的 AWS 帳戶 (通常使用 AWS Organizations)。
電子郵件轉送流程:此流程如上圖的上一節所示。使用從電子郵件地址販賣流程產生的帳戶電子郵件建立 AWS 帳戶 時, AWS 會將各種電子郵件傳送至該電子郵件地址,例如帳戶註冊確認和定期通知。遵循此模式中的步驟,即可 AWS 帳戶 使用 Amazon 設定 SES以接收整個網域的電子郵件。此解決方案會設定轉送規則,允許 Lambda 處理所有傳入電子郵件、檢查
TO
地址是否在 DynamoDB 資料表中,並將訊息改為轉送到帳戶擁有者的電子郵件地址。使用此程序可讓帳戶擁有者將多個帳戶與一個電子郵件地址建立關聯。
自動化和擴展
此模式使用 AWS CDK 來完全自動化部署。解決方案使用 受 AWS 管服務,該服務會自動擴展 (或可設定為) 以符合您的需求。Lambda 函數可能需要額外的組態,才能滿足您的擴展需求。如需詳細資訊,請參閱 Lambda 文件中的了解 Lambda 函數擴展。
工具
AWS 服務
AWS CloudFormation 可協助您設定 AWS 資源、快速且一致地佈建資源,以及在整個 AWS 帳戶 和 區域的生命週期中管理資源。
AWS Command Line Interface (AWS CLI) 是一種開放原始碼工具,可協助您透過命令列 shell 中的命令與 AWS服務互動。
Amazon DynamoDB 是全受管的無SQL資料庫服務,可提供快速、可預測且可擴展的效能。
AWS Identity and Access Management (IAM) 透過控制誰經過身分驗證並獲授權使用,協助您安全地管理對 AWS 資源的存取。
AWS Key Management Service (AWS KMS) 可協助您建立和控制密碼編譯金鑰,以協助保護您的資料。
AWS Lambda 是一項運算服務,可協助您執行程式碼,無需佈建或管理伺服器。它只會在需要時執行程式碼並自動擴展,因此您只需支付您使用的運算時間。
Amazon Simple Email Service (Amazon SES) 可協助您使用自己的電子郵件地址和網域來傳送和接收電子郵件。
Amazon Simple Notification Service (Amazon SNS) 可協助您協調和管理發佈者和用戶端之間的訊息交換,包括 Web 伺服器和電子郵件地址。
Amazon Simple Storage Service (Amazon S3) 是一種雲端型物件儲存服務,可協助您儲存、保護和擷取任何數量的資料。
部署所需的工具
具有 AWS CLI 和 IAM存取權的開發環境 AWS 帳戶。如需詳細資訊,請參閱相關資源區段中的連結。
在開發系統上,安裝下列項目:
Git 命令列工具,可從 Git 下載網站
取得。 AWS CLI 設定 存取憑證的 AWS CDK。如需詳細資訊,請參閱 AWS CLI 文件。
Python 3.9 版或更新版本,可從 Python 下載網站
取得。 Python 套件 pip 和 virtualenv。如需安裝說明,請參閱 pip 文件
和 virtualenv 文件 。 Node.js 12.7.0 版或更新版本。如需安裝說明,請參閱 Node.js 文件
。 AWS CDK 2.23.0 版或更新版本。如需安裝說明,請參閱 AWS CDK 文件。
Docker 20.10.x 版或更新版本。如需安裝說明,請參閱 Docker 文件
。
Code
此模式的程式碼可在 GitHub AWS 帳戶 原廠電子郵件
史詩
任務 | 描述 | 所需的技能 |
---|---|---|
識別或建立 AWS 帳戶。 | 識別您擁有完整管理存取權 AWS 帳戶 的現有或新 ,以部署電子郵件解決方案。 | AWS 管理員、雲端管理員 |
設定部署環境。 | 請依照下列步驟,設定易於使用的部署環境並設定相依性:
| AWS DevOps、應用程式開發人員 |
任務 | 描述 | 所需的技能 |
---|---|---|
識別並配置網域。 | 電子郵件轉送功能需要專用網域。識別並配置您可以使用 Amazon 進行驗證的網域或子網域SES。此網域應該可用於在部署電子郵件轉送解決方案 AWS 帳戶 的 內接收傳入的電子郵件。 網域需求:
| 雲端管理員、網路管理員、DNS管理員 |
驗證網域。 | 確認已識別的網域可用來接受傳入電子郵件。 完成 Amazon 文件中驗證 Amazon SES電子郵件接收網域的指示。 SES這將需要與負責網域DNS記錄的人員或團隊協調。 | 應用程式開發人員、 AWS DevOps |
設定 MX 記錄。 | 使用指向 AWS 帳戶 和 區域中 Amazon SES端點的 MX 記錄來設定您的網域。如需詳細資訊,請參閱《Amazon 文件》中的發佈 Amazon SES電子郵件接收的 MX 記錄。 SES | 雲端管理員、網路管理員、DNS管理員 |
任務 | 描述 | 所需的技能 |
---|---|---|
修改 中的預設值 | 編輯
| 應用程式開發人員、 AWS DevOps |
部署電子郵件販賣和轉送解決方案。 |
| 應用程式開發人員、 AWS DevOps |
確認解決方案已部署。 | 在開始測試之前,請確認已成功部署解決方案:
| 應用程式開發人員、 AWS DevOps |
任務 | 描述 | 所需的技能 |
---|---|---|
驗證 API 是否正常運作。 | 在此步驟中,您將測試資料提交至解決方案的 ,API並確認解決方案產生預期的輸出,且已如預期執行後端操作。 使用測試輸入手動執行 Vend Email Lambda 函數。(如需範例,請參閱 sample_vend_request.json 檔案 | 應用程式開發人員、 AWS DevOps |
確認電子郵件正在轉送。 | 在此步驟中,您會透過系統傳送測試電子郵件,並確認電子郵件已轉送給預期的收件人。
| 應用程式開發人員、 AWS DevOps |
故障診斷
問題 | 解決方案 |
---|---|
系統未如預期轉送電子郵件。 | 確認您的設定正確無誤:
驗證網域設定後,請依照下列步驟進行:
|
當您嘗試部署 AWS CDK 堆疊時,您會收到類似以下的錯誤: 「範本格式錯誤:無法辨識的資源類型」 | 在大多數情況下,此錯誤訊息表示您鎖定的區域沒有所有可用的AWS服務。如果您使用 Amazon EC2執行個體來部署解決方案,則可能是針對與執行個體執行所在區域不同的區域。 注意根據預設, AWS CDK 部署到您在 中設定的 區域和帳戶 AWS CLI。 可能的解決方案:
|
部署解決方案時,您會收到錯誤訊息: 「部署失敗:錯誤: AwsMailFwdStack: SSM parameter /cdk-bootstrap/hnb659fds/version 找不到。環境是否已開機? 請執行「cdk 引導」 | 如果您從未將任何 AWS CDK 資源部署到要鎖定的 AWS 帳戶 和 區域,您必須先執行 若要解決此問題,請先設定 |
相關資源
如需安裝 的協助 AWS CLI,請參閱安裝或更新至最新版本的 AWS CLI。
如需 AWS CLI 使用IAM存取登入資料設定 的說明,請參閱設定 的設定 AWS CLI。
如需 的說明 AWS CDK,請參閱 入門 AWS CDK。
其他資訊
成本
當您部署此解決方案時, AWS 帳戶 持有者可能會產生與使用下列服務相關的成本。 了解這些服務的計費方式非常重要,以便您了解任何潛在的費用。如需定價資訊,請參閱下列頁面: