本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用 Amazon SES 通过单个电子邮件地址注册多个 Amazon Web Services account
由 Joe Wozniak(AWS) 和 Shubhangi Vishwakarma(AWS) 编写
环境:PoC 或试点 | 技术:基础设施、管理和治理、消息和通信 | |
Amazon Web Services:AWS Lambda、Amazon SES、Amazon DynamoDB |
Summary
此示例介绍了如何将真实电子邮件地址与与 Amazon Web Services account 关联的电子邮件地址分离。Amazon Web Services account 需要在创建账户时提供唯一的电子邮件地址。在某些组织中,管理 Amazon Web Services account 的团队必须承担与其消息传递团队一起管理许多唯一电子邮件地址的负担。对于管理多个 Amazon Web Services account 的大型组织来说,这可能很困难。
此模式提供了一种独特的电子邮件地址自动售货解决方案,让 Amazon Web Services account 拥有者能够将一个电子邮件地址与多个 Amazon Web Services account 关联起来。然后,Amazon Web Services account 拥有者的真实电子邮件地址将与表格中生成的这些电子邮件地址相关联。该解决方案处理唯一电子邮件账户的所有传入电子邮件,查找每个账户的拥有者,然后将收到的所有邮件转发给拥有者。
先决条件和限制
先决条件
Amazon Web Services account 的管理权限。
访问开发环境。我们建议您使用 AWS Cloud9,以免自己设置所需工具和访问密钥。
(可选)熟悉 AWS Cloud Development Kit (AWS CDK) 工作流和 Python 编程语言将帮助您解决任何问题或进行修改。
限制
出售的电子邮件地址的总长度为 64 个字符。有关详细信息,请参阅 AWS O CreateAccountrganizations 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 Address (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 数据库,然后将值返回给调用方。然后,可以使用这些值来创建新 Amazon Web Services account (通常使用 AWS Organizations)。
电子邮件转发流程:此流程如上图的上半部分所示。当使用从电子邮件地址销售流程生成的账户电子邮件创建 Amazon Web Services account 时,AWS 会向该电子邮件地址发送各种电子邮件,例如账户注册确认和定期通知。按照此模式中的步骤操作,您可使用 Amazon SES 配置您的 Amazon Web Services account,以接收整个域的电子邮件。此解决方案配置了转发规则,允许 Lambda 处理所有传入的电子邮件,检查该
TO
地址是否在 DynamoDB 表中,然后将邮件转发到账户拥有者的电子邮件地址。使用此流程,账户拥有者可以将多个账户与一个电子邮件地址相关联。
自动化和扩缩
此模式使用 AWS CDK 完全自动化部署。该解决方案使用 AWS 托管服务,这些服务将(或可以配置为)自动扩缩以满足您的需求。Lambda 函数可能需要额外配置才能满足您的扩缩需求。有关更多信息,请参见 Lambda 文档中的 Lambda 函数扩缩。
工具
Amazon Web Services
AWS Cloud9 是一种集成式开发环境(IDE),可帮助您编写、构建、运行、测试和调试软件。它还可以帮助您将软件发布到 Amazon Web Services Cloud。
AWS CloudFormation 可帮助您设置 AWS 资源,快速一致地配置这些资源,并在 AWS 账户和区域的整个生命周期中对其进行管理。
AWS 命令行界面(AWS CLI)是一种开源工具,它可帮助您通过命令行 Shell 中的命令与 Amazon Web Services 交互。
Amazon DynamoDB 是一项完全托管的 NoSQL 数据库服务,可提供快速、可预测和可扩展的性能。
AWS Identity and Access Management (AWS IAM) 通过控制验证和授权使用您 AWS 资源的用户,帮助您安全地管理对您 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 访问您的 Amazon Web Services account 的开发环境。 有关详细信息,请参阅相关资源部分中的链接。我们建议您使用 AWS Cloud9 简化设置过程。
如果您使用 AWS Cloud9,则将为您配置以下内容。 如果您选择不使用 AWS Cloud9,则需安装以下内容:
用于为 AWS CDK 配置访问凭证的 AWS CLI。有关更多信息,请参阅 AWS CLI 文档。
Python 版本 3.9 或更高版本
Python 软件包 pip 和 virtualenv
Node.js 版本 12.7.0 或更高版本
AWS CDK 版本 2.23.0 或更高版本
Docker 版本 20.10.x 或更高版本
代码
此模式的代码可在 GitHub AWS 账户工厂电子邮件
操作说明
任务 | 描述 | 所需技能 |
---|---|---|
确定或创建 Amazon Web Services account。 | 确定您拥有完全管理访问权限的现有或新 Amazon Web Services account,以部署电子邮件解决方案。 | AWS 管理员、云管理员 |
设置部署环境。 | 按照以下步骤配置易于使用的部署环境并设置依赖项:
| AWS DevOps,应用程序开发者 |
任务 | 描述 | 所需技能 |
---|---|---|
识别和分配域。 | 电子邮件转发功能需要专用域。识别并分配您可以使用 Amazon SES 验证的域或子域。该域应该可用于接收部署了电子邮件转发解决方案的 Amazon Web Services account 内的传入电子邮件。 域要求:
| 云管理员、网络管理员、DNS 管理员 |
验证域。 | 验证所识别的域是否可用于接受传入电子邮件。 完成 Amazon SES 文档中的验证您的域以接收 Amazon SES 电子邮件中的说明。这需要与负责域的 DNS 记录人员或团队进行协调。 | AWS 应用程序开发人员 DevOps |
设置 MX 记录。 | 使用指向您的 Amazon Web Services account 和区域中的 Amazon SES 端点的 MX 记录设置您的域。有关更多信息,请参阅 Amazon SES 文档中的发布 Amazon SES 电子邮件接收的 MX 记录。 | 云管理员、网络管理员、DNS 管理员 |
任务 | 描述 | 所需技能 |
---|---|---|
修改 cdk.json 中的默认值。 | 编辑
| AWS 应用程序开发人员 DevOps |
部署电子邮件自动售卖与转发解决方案。 |
| AWS 应用程序开发人员 DevOps |
验证解决方案是否已部署。 | 开始测试之前,验证解决方案是否成功部署:
| AWS 应用程序开发人员 DevOps |
任务 | 描述 | 所需技能 |
---|---|---|
验证该 API 是否正常运行。 | 在此步骤中,您将测试数据提交到解决方案的 API,并确认解决方案产生预期输出并且后端操作已按预期执行。 使用测试输入,手动运行 Vend Email Lambda 函数。(有关示例,请参阅 sample_vend_request.json 文件 | AWS 应用程序开发人员 DevOps |
确认电子邮件已转发。 | 在此步骤中,您通过系统发送测试电子邮件并验证电子邮件是否转发给预期收件人。
| AWS 应用程序开发人员 DevOps |
故障排除
问题 | 解决方案 |
---|---|
系统无法按预期转发电子邮件。 | 验证您的设置是否正确:
验证域设置后,请按下列步骤操作:
|
尝试部署 AWS CDK 堆栈时,以下类似错误信息: “模板格式错误:无法识别的资源类型” | 在大多数情况下,此错误消息意味着您所定位的区域没有所有可用的 Amazon Web Services。如您使用 AWS Cloud9 部署解决方案,则您的目标区域可能与运行 AWS Cloud9 实例的区域不同。 注意:默认情况下,AWS CDK 会部署至您在 AWS CLI 中配置的区域和账户。 可能的解决方案:
|
部署此解决方案时,您会收到错误消息: “部署失败:错误:: 找不到 SSM 参数 /cdk- AwsMailFwdStack bootstrap/hnb659fds/版本。是否已引导环境? 请运行 'cdk bootstrap' | 如您从未将任何 AWS CDK 资源部署到目标的 Amazon Web Services account 和区域,则必须先按照错误提示运行 若要解决此问题,请在部署解决方案之前使用 AWS CLI 设置 |
相关资源
有关帮助安装 AWS CLI,请参阅安装或更新 AWS CLI 的最新版本。
有关使用 IAM 访问凭证设置 AWS CLI 的帮助,请参阅 配置 AWS CLI。
要获得有关 AWS CDK 的帮助,请参见 AWS CDK 入门。
其他信息
成本
当您部署此解决方案时,Amazon Web Services account 持有者可能会产生与使用以下服务相关的费用。 对您来说,了解这些服务的计费方式非常重要,这样您就可以了解任何潜在的费用。有关定价信息,请参阅以下页面: