

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 使用 Amazon SES AWS 帳戶 向單一電子郵件地址註冊多個
<a name="register-multiple-aws-accounts-with-a-single-email-address-by-using-amazon-ses"></a>

*Joe Wozniak 和 Shubhangi Vishwakarma，Amazon Web Services*

## 總結
<a name="register-multiple-aws-accounts-with-a-single-email-address-by-using-amazon-ses-summary"></a>

此模式說明如何從與 相關聯的電子郵件地址分離真實電子郵件地址 AWS 帳戶。 AWS 帳戶 建立帳戶時需要提供唯一的電子郵件地址。在某些組織中， 管理的 團隊 AWS 帳戶 必須承擔與其簡訊團隊管理許多唯一電子郵件地址的負擔。對於管理許多的大型組織來說，這可能很困難 AWS 帳戶。此外，如果您的電子郵件系統不允許 *Sieve* [Email Filtering： Subaddress Extension (RFC 5233)](https://datatracker.ietf.org/doc/html/rfc5233) 中定義的加號地址或*子地址*，請在電子郵件地址的本機部分結尾加上加號 (＋) 和識別符，例如`admin+123456789123@example.com`：此模式有助於克服此限制。

此模式提供唯一的電子郵件地址販賣解決方案，可讓 AWS 帳戶 擁有者將一個電子郵件地址與多個電子郵件地址建立關聯 AWS 帳戶。然後， AWS 帳戶 擁有者的真實電子郵件地址會與資料表中這些產生的電子郵件地址相關聯。解決方案會處理唯一電子郵件帳戶的所有傳入電子郵件、查詢每個帳戶的擁有者，然後將任何收到的訊息轉送給擁有者。 

## 先決條件和限制
<a name="register-multiple-aws-accounts-with-a-single-email-address-by-using-amazon-ses-prereqs"></a>

**先決條件**
+ 對 的管理存取權 AWS 帳戶。
+ 存取開發環境。
+ （選用） 熟悉 AWS Cloud Development Kit (AWS CDK) 工作流程和 Python 程式設計語言，可協助您疑難排解任何問題或修改。

**限制**
+ 整體發佈的電子郵件地址長度為 64 個字元。如需詳細資訊，請參閱 *AWS Organizations API 參考*中的[CreateAccount](https://docs.aws.amazon.com/organizations/latest/APIReference/API_CreateAccount.html)。

**產品版本**
+ Node.js 22.x 版或更新版本
+ Python 3.13 或更新版本
+ Python 套件 **pip** 和 **virtualenv**
+ AWS CDK CLI 2.1019.2 版或更新版本
+ Docker 20.10.x 或更新版本

## Architecture
<a name="register-multiple-aws-accounts-with-a-single-email-address-by-using-amazon-ses-architecture"></a>

**目標技術堆疊**
+ 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 資料表 

**目標架構**

![\[使用單一電子郵件地址註冊多個 AWS 帳戶的目標架構\]](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/patterns/images/pattern-img/1be85b92-69e5-43b2-aeed-27b9509e145e/images/c7ae9d7a-d4e0-412e-97cb-0f3073e012e7.png)


此圖表顯示兩個流程：
+ **電子郵件地址販賣流程：**在圖表中，電子郵件地址販賣流程 （下節） 通常以帳戶販賣解決方案或外部自動化開始，或手動叫用。在請求中，呼叫 Lambda 函數時，承載會包含所需的中繼資料。函數會使用此資訊來產生唯一的帳戶名稱和電子郵件地址，將其存放在 DynamoDB 資料庫中，然後將值傳回給發起人。然後，這些值可用於建立新的 AWS 帳戶 （通常是使用 AWS Organizations)。
+ **電子郵件轉送流程：**此流程如上圖的上一節所示。使用從電子郵件地址販賣流程產生的帳戶電子郵件建立 AWS 帳戶 時， 會將各種電子郵件 AWS 傳送至該電子郵件地址，例如帳戶註冊確認和定期通知。透過遵循此模式中的步驟，您可以使用 AWS 帳戶 Amazon SES 設定您的 以接收整個網域的電子郵件。此解決方案會設定轉送規則，允許 Lambda 處理所有傳入電子郵件、檢查`TO`地址是否在 DynamoDB 資料表中，並將訊息改為轉送至帳戶擁有者的電子郵件地址。使用此程序可讓帳戶擁有者將多個帳戶與一個電子郵件地址建立關聯。

**自動化和擴展**

此模式使用 AWS CDK 來完全自動化部署。解決方案使用 AWS 受管服務，可自動擴展 （或設定為） 以符合您的需求。Lambda 函數可能需要額外的組態，才能滿足您的擴展需求。如需詳細資訊，請參閱 [Lambda 文件中的了解 Lambda 函數擴展](https://docs.aws.amazon.com/lambda/latest/dg/invocation-scaling.html)。

## 工具
<a name="register-multiple-aws-accounts-with-a-single-email-address-by-using-amazon-ses-tools"></a>

**AWS 服務**
+ [CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html) 可協助您設定 AWS 資源、快速且一致地佈建資源，以及在整個 AWS 帳戶 和 區域的生命週期中管理資源。
+ [AWS Command Line Interface (AWS CLI)](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) 是一種開放原始碼工具，可協助您透過命令列 shell 中的命令與 AWS 服務互動。
+ [Amazon DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Introduction.html) 是一項全受管 NoSQL 資料庫服務，可提供快速、可預期且可擴展的效能。
+ [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) 透過控制已驗證並獲授權使用的人員，協助您安全地管理對 AWS 資源的存取。
+ [AWS Key Management Service (AWS KMS)](https://docs.aws.amazon.com/kms/latest/developerguide/overview.html) 可協助您建立和控制密碼編譯金鑰，以協助保護您的資料。
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) 是一項運算服務，可協助您執行程式碼，無需佈建或管理伺服器。它只會在需要時執行程式碼並自動擴展，因此您只需按使用的運算時間付費。
+ [Amazon Simple Email Service (Amazon SES)](https://docs.aws.amazon.com/ses/latest/dg/Welcome.html) 可協助您使用自己的電子郵件地址和網域來傳送和接收電子郵件。
+ [Amazon Simple Notification Service (Amazon SNS)](https://docs.aws.amazon.com/sns/latest/dg/welcome.html) 可協助您協調和管理發佈者和用戶端之間的訊息交換，包括 Web 伺服器和電子郵件地址。
+ [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) 是一種雲端型物件儲存服務，可協助您儲存、保護和擷取任何數量的資料。

**部署所需的工具**
+ 具有 AWS CLI 和 IAM 存取您 的開發環境 AWS 帳戶。如需詳細資訊，請參閱[相關資源](#register-multiple-aws-accounts-with-a-single-email-address-by-using-amazon-ses-resources)區段中的連結。 
+ 在開發系統上，安裝下列項目：
  + Git 命令列工具，可從 [Git 下載網站](https://git-scm.com/downloads)取得。
  +  AWS CLI 設定 存取憑證的 AWS CDK。如需詳細資訊，請參閱 [AWS CLI 文件](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html)。
  + Python 3.13 版或更新版本，可從 [Python 下載網站](https://www.python.org/downloads/)取得。
  + UV for Python 套件管理。如需安裝說明，請參閱 [UV 安裝指南](https://docs.astral.sh/uv/getting-started/installation/)。
  + Node.js 22.x 版或更新版本。如需安裝說明，請參閱 [Node.js 文件。](https://nodejs.org/en/learn/getting-started/how-to-install-nodejs)
  + AWS CDK CLI 2.1019.2 版或更新版本。如需安裝說明，請參閱 [AWS CDK 文件](https://docs.aws.amazon.com/cdk/v2/guide/getting-started.html#getting-started-install)。
  + Docker 20.10.x 版或更新版本。如需安裝說明，請參閱 [Docker 文件](https://docs.docker.com/engine/install/)。

**Code**

此模式的程式碼可在 GitHub [AWS 帳戶 原廠電子郵件](https://github.com/aws-samples/aws-account-factory-email)儲存庫中使用。

## 史詩
<a name="register-multiple-aws-accounts-with-a-single-email-address-by-using-amazon-ses-epics"></a>

### 配置目標部署環境
<a name="allocate-a-target-deployment-environment"></a>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 識別或建立 AWS 帳戶。 | 識別您擁有完整管理存取權 AWS 帳戶 的現有或新 ，以部署電子郵件解決方案。 | AWS 管理員、雲端管理員 | 
| 設定部署環境。 | 請依照下列步驟，設定易於使用的部署環境並設定相依性：[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/patterns/register-multiple-aws-accounts-with-a-single-email-address-by-using-amazon-ses.html) | AWS DevOps，應用程式開發人員 | 

### 設定已驗證的網域
<a name="set-up-a-verified-domain"></a>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 識別和配置網域。 | 電子郵件轉送功能需要專用網域。識別並配置您可以使用 Amazon SES 驗證的網域或子網域。此網域應該可用於在部署電子郵件轉送解決方案 AWS 帳戶 的 內接收內送電子郵件。網域需求：[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/patterns/register-multiple-aws-accounts-with-a-single-email-address-by-using-amazon-ses.html) | 雲端管理員、網路管理員、DNS 管理員 | 
| 驗證網域。 | 確認已識別的網域可用於接受傳入電子郵件。完成 [Amazon SES 文件中驗證 Amazon SES 電子郵件接收網域](https://docs.aws.amazon.com/ses/latest/dg/receiving-email-verification.html)的指示。 Amazon SES 這將需要與負責網域 DNS 記錄的人員或團隊協調。 | 應用程式開發人員、AWS DevOps | 
| 設定 MX 記錄。 | 使用指向 AWS 帳戶 和 區域中 Amazon SES 端點的 MX 記錄來設定您的網域。如需詳細資訊，請參閱[《Amazon SES 文件》中的發佈 Amazon SES 電子郵件接收的 MX 記錄](https://docs.aws.amazon.com/ses/latest/dg/receiving-email-mx-record.html)。 Amazon SES  | 雲端管理員、網路管理員、DNS 管理員 | 

### 部署電子郵件販賣和轉送解決方案
<a name="deploy-the-email-vending-and-forwarding-solution"></a>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 修改 中的預設值`cdk.json`。 | 編輯 `cdk.json` 檔案 （在儲存庫根中） 中的一些預設值，讓解決方案在部署之後可以正常運作。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/patterns/register-multiple-aws-accounts-with-a-single-email-address-by-using-amazon-ses.html) | 應用程式開發人員、AWS DevOps | 
| 部署電子郵件販賣和轉送解決方案。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/patterns/register-multiple-aws-accounts-with-a-single-email-address-by-using-amazon-ses.html) | 應用程式開發人員、AWS DevOps | 
| 確認已部署解決方案。 | 開始測試之前，請確認已成功部署解決方案：[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/patterns/register-multiple-aws-accounts-with-a-single-email-address-by-using-amazon-ses.html) | 應用程式開發人員、AWS DevOps | 

### 驗證電子郵件販賣和轉送是否如預期般運作
<a name="verify-that-email-vending-and-forwarding-operate-as-expected"></a>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 驗證 API 是否正常運作。 | 在此步驟中，您將測試資料提交至解決方案的 API，並確認解決方案會產生預期的輸出，且後端操作已如預期般執行。使用測試輸入手動執行 **Vend Email** Lambda 函數。（如需範例，請參閱 [sample\$1vend\$1request.json 檔案](https://github.com/aws-samples/aws-account-factory-email/blob/main/src/events/sample_vend_request.json)。) 對於 `OwnerAddress`，請使用有效的電子郵件地址。API 應該如預期傳回具有值的帳戶名稱和帳戶電子郵件。 | 應用程式開發人員、AWS DevOps | 
| 確認電子郵件正在轉送。 | 在此步驟中，您會透過系統傳送測試電子郵件，並確認電子郵件已轉送給預期的收件人。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/patterns/register-multiple-aws-accounts-with-a-single-email-address-by-using-amazon-ses.html) | 應用程式開發人員、AWS DevOps | 

## 疑難排解
<a name="register-multiple-aws-accounts-with-a-single-email-address-by-using-amazon-ses-troubleshooting"></a>


| 問題 | 解決方案 | 
| --- | --- | 
| 系統未如預期轉送電子郵件。 | 確認您的設定正確：[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/patterns/register-multiple-aws-accounts-with-a-single-email-address-by-using-amazon-ses.html)驗證網域設定後，請依照下列步驟執行：[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/patterns/register-multiple-aws-accounts-with-a-single-email-address-by-using-amazon-ses.html) | 
| 當您嘗試部署 AWS CDK 堆疊時，您會收到類似以下的錯誤：「範本格式錯誤：無法辨識的資源類型」  | 在大多數情況下，此錯誤訊息表示您要鎖定的區域沒有所有可用的 AWS 服務。如果您使用 Amazon EC2 執行個體來部署解決方案，則可能是以與執行個體執行所在區域不同的區域為目標。根據預設， AWS CDK 會部署到您在 中設定的 區域和帳戶 AWS CLI。可能的解決方案：[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/patterns/register-multiple-aws-accounts-with-a-single-email-address-by-using-amazon-ses.html) | 
| 部署解決方案時，您會收到錯誤訊息：「部署失敗：錯誤：AwsMailFwdStack：找不到 SSM 參數 /cdk-bootstrap/hnb659fds/version。環境是否已引導？ 請執行「cdk 引導」 | 如果您從未將任何 AWS CDK 資源部署到您要鎖定的 AWS 帳戶 和 區域，您必須先執行錯誤指示的 `cdk bootstrap`命令。如果您在執行 bootstrapping 命令後繼續收到此錯誤，您可能會嘗試將解決方案部署到與開發環境執行所在區域不同的區域。若要解決此問題，請先設定`AWS_DEFAULT_REGION`環境變數或使用 設定區域， AWS CLI 再部署解決方案。或者，您可以依照[AWS CDK 環境文件中](https://docs.aws.amazon.com/cdk/v2/guide/environments.html)的指示，修改儲存庫根目錄中`app.py`的檔案，以包含硬式編碼的帳戶 ID 和區域。 | 

## 相關資源
<a name="register-multiple-aws-accounts-with-a-single-email-address-by-using-amazon-ses-resources"></a>
+ 如需安裝 的說明 AWS CLI，請參閱[安裝或更新至最新版本的 AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/install-cliv2.html)。
+ 如需 AWS CLI 使用 IAM 存取登入資料設定 的說明，請參閱[設定 的設定 AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html)。
+ 如需 的說明 AWS CDK，請參閱 [入門 AWS CDK](https://docs.aws.amazon.com/cdk/latest/guide/getting_started.html#getting_started_install)。

## 其他資訊
<a name="register-multiple-aws-accounts-with-a-single-email-address-by-using-amazon-ses-additional"></a>

**成本**

當您部署此解決方案時， AWS 帳戶 持有者可能會產生與使用下列服務相關的成本。 請務必了解這些服務的計費方式，以便了解任何潛在的費用。如需定價資訊，請參閱下列頁面：
+ [Amazon SES 定價](https://aws.amazon.com/ses/pricing/)
+ [Amazon S3 定價](https://aws.amazon.com/s3/pricing/)
+ [AWS KMS 定價](https://aws.amazon.com/kms/pricing/)
+ [AWS Lambda 定價](https://aws.amazon.com/lambda/pricing/)
+ [Amazon DynamoDB 定價](https://aws.amazon.com/dynamodb/pricing/)