本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 Amazon 註冊具有單一電子郵件地址的多個AWS帳戶 SES
由 Joe Wozniak (AWS) 和 Shubhangi Vishwakarma (AWS) 建立
程式碼儲存庫: GitHub aws-account-factory-email | 環境:PoC 或試行 | 技術:基礎設施;管理與治理;傳訊與通訊 |
AWS 服務:AWSLambda;Amazon SES;Amazon DynamoDB |
Summary
此模式說明如何從與 相關聯的電子郵件地址取消真實電子郵件地址的耦合 AWS 帳戶。 AWS 帳戶 建立帳戶時需要提供唯一的電子郵件地址。在某些組織中,管理 的團隊 AWS 帳戶 必須承擔與其訊息團隊管理許多唯一電子郵件地址的負擔。對於管理許多 的大型組織來說,這可能很困難 AWS 帳戶。此外,如果您的電子郵件系統不允許 Sieve Email Filtering: Subaddress Extension ( 5233) 中定義的加號地址或子地址,請在電子郵件地址的本機部分結尾加上加號 (+) 和識別符,例如admin+123456789123@example.com
:此模式有助於克服此限制。 RFC
此模式提供唯一的電子郵件地址販賣解決方案,讓 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。 可能的解決方案:
|
部署解決方案時,您會收到錯誤訊息: “部署失敗:SSMparameter /cdk-bootstrap/hnb659fds/version找不到錯誤 AwsMailFwdStack::。環境是否已開機? 請執行「cdk 引導」 | 如果您從未將任何 AWS CDK 資源部署到要鎖定的 AWS 帳戶 和 區域,則您必須先執行錯誤指示的 若要解決此問題,請在部署解決方案 AWS CLI 之前設定 |
相關資源
如需安裝 的協助 AWS CLI,請參閱安裝或更新至最新版本的 AWS CLI。
如需 AWS CLI 使用IAM存取憑證設定 的說明,請參閱設定 的設定 AWS CLI。
如需 的說明 AWS CDK,請參閱 入門 AWS CDK。
其他資訊
成本
部署此解決方案時, AWS 帳戶 持有人可能會產生與使用下列服務相關聯的成本。 了解這些服務的收費方式非常重要,以便您了解任何潛在的費用。如需定價資訊,請參閱下列頁面: