部署前配置
设置邮件发送服务
您需要首先配置区域,即选择 RainMaker 的部署区域。请参考 使用 AWS 控制台改变区域设置 章节。
1. 电子邮件验证
您需要配置一个电子邮件账号,该账号将用于向终端用户发送邮件通知。
您需要先在 AWS Simple Email Service (SNS) 控制台中配置邮件 ID,才能向用户发送邮件通知。
- 打开 AWS 管理界面并搜索 SES 服务,如下图所示:
在导航栏中,点击
Verified identities
。点击
Create identity
。
在
Identity type
中,选择Email address
。输入新的电子邮件地址,该地址将被用于发送电子邮件通知。
输入邮件地址后,点击
Create identity
。
系统将会发送一封验证邮件至您的邮箱,请点击邮件中的链接来验证。确认后,该邮件地址将得到验证。
点击
Refresh
即可看到更新状态或检查邮件验证请求。
2. 脱离 SES 沙盒
AWS 账户默认处于 SES 沙盒环境中。当 AWS 账户处于 SES 沙盒环境中时,您只能向已通过验证的电子邮件地址、域名或 SES 邮箱模拟器发送邮件。 如果需要向任何人发送邮件,您必须将 AWS 账户移出沙盒。
SES 沙盒在不同 AWS 区域限制有所不同,因此您应该在 RainMaker 的部署区域申请 SES 生产权限。
将 AWS 账户移出 SES 沙盒,请参考以下步骤:
- 登录 AWS 控制台,选择 RainMaker 的部署区域。
- 前往 SES 服务控制台。
- 在左侧菜单中栏,点击
Account dashboard
。 - 点击
Request production access
。
- 填写详细信息。
选择邮件类型为
Transactional
。输入应用的 URL 或 RainMaker 的 URL (https://rainmaker.espressif.com)。
完成其他修改后,在
Use case description
框中输入以下内容:
We are deploying Espressif’s RainMaker product (https://rainmaker.espressif.com/) into our AWS account. This product is based on a serverless architecture. RainMaker uses the SES service for sending various email notifications, including welcome emails, OTPs, details of deployment, and new RainMaker releases. So we need to move SES out of the sandbox in region <rainmaker_region>. We plan to use SES to send OTPs, details of deployment, and new RainMaker releases.(我们正在部署乐鑫的产品 RainMaker (https://rainmaker.espressif.com/) 到我们的 AWS 账户。RainMaker 基于无服务器架构,使用 SES 服务发送电子邮件通知,包括欢迎邮件、OTP、部署细节、新版本通知。我们现在需要将 SES 从区域 <rainmaker_region> 的沙盒中移出。我们计划使用 SES 来发送 OTPs、部署细节和新版本通知。)
- What is the nature of your business, and how do you plan to use Amazon SES to meet the needs of your business?(您的业务性质是什么,您打算如何使用 Amazon SES 来满足您的业务需求?)
- We are <your_company_name> deploying the RainMaker platform as a device and user management platform for our connected products that we launched in 2022.(我们是 <your_company_name>,我们计划部署 RainMaker 平台,作为 2022 年推出的互联产品的设备和用户管理平台。)
- How do you collect the email addresses that are on your mailing list?(您计划如何获取您的邮件列表?)
- In order to use our connected products, users registering themselves utilizing Cognito user pool. We are not creating mass-mailing lists from the Cognito User Pool.(为了使用我们的联网产品,用户需要在 Cognito 用户池进行注册。我们不会从 Cognito 用户池中创建群发邮件列表。)
- How do the processes for subscribing and unsubscribing work? Include links to your opt-in and opt-out pages.(如何订阅和取消订阅?请附上选择加入和选择退出页面的链接。)
- Not applicable because we do not use mailing lists.(该问题不适用,因为我们不使用邮件列表。)
- How do you plan to handle bounces and complaints?(您计划如何处理退信和投诉?)
- It is in the user's best interest to enter a valid email address.(建议用户输入有效的电子邮件地址。)
- The account-level suppression list is enabled to prevent sending emails to the users for whom bounces and complaints had occurred earlier.(启用账户级黑名单,以确保系统不再向发生退信和投诉的电子邮件地址发送邮件。)
- The end user receives mail only for signup and forgotten password-related use cases.(最终用户只会收到与注册、忘记密码等用例有关的邮件。)
- DKIM is enabled to avoid mail bounces.(启用 DKIM 以避免邮件拒收。)
- How can recipients opt out of receiving emails from you?(用户可以通过何种方式不接收你们的邮件?)
- Users can report mail as spam. This will put the user's email address in the account-level suppression list. Emails will not be sent to email IDs in the suppression list.(用户可以将邮件报告为垃圾邮件。此操作将导致该用户的电子邮件地址被列入账户级黑名单,系统不会再向该地址发送任何邮件。)
- What type of email (for example, transactional notifications, marketing content, or system notifications) do you plan to send with Amazon SES?(您计划用 Amazon SES 发送什么类型的电子邮件(例如交易通知、营销内容或系统通知)?)
- Account registration verification(账户注册验证)
- Forgot password functionality(找回密码功能)
- Email change for the account(账号绑定邮箱更改)
- What is the URL of your website?(您的网站的 URL 是什么?)
- <your_company_name> (<company_domain_com>) (<company_full_domain_name>)
- 例如 Espressif Systems (espressif.com)(https://www.espressif.com/)
如果您想在另一邮箱中收到回复,请额外添加新的电子邮件地址。
勾选下方知悉复选框,并提交请求。
- AWS 支持团队将会启用支持案例,并在处理完后向您发送电子邮件。一般来说,AWS 支持团队会在一天内回复该请求。
您也可以通过 AWS SES 控制台检查您账号的沙盒状态。具体步骤见参见 检查您账户的沙盒状态。
关于 AWS SES 沙盒的详细信息,请参考 AWS SES 沙盒文档。
3. 增加电子邮件发送限额
如果您预测收到的注册请求将多于目前的限额,您也许需要增加每日电子邮件发送和发送率配额。想要查看当前配额,请参考 AWS 文档中的 监控您的发送配额。
增加电子邮件发送限额,请参考以下步骤:
- 登录 AWS 控制台,搜索并打开
Service Quotas
。
选择 RainMaker 的部署区域。
在导航栏中,点击
AWS services
。搜索 "Amazon SES"。
- 选择
Sending Quota
。
- 点击
Request Increase
。
输入所需的配额值(也即该账户在当前区域在 24 小时内可发送的最大邮件数)。
点击
Request
。
- AWS 支持团队将对您的请求进行审核,并且通过电子邮件向您更新进展。您也可以按照 监控您的发送配额 中的步骤查看您的发送配额。
配置 SMS 发送服务
获取 Cognito 使用的 SNS 区域
RainMaker 使用 AWS SNS 服务来发送手机短信。使用此服务需要设置区域。您需要将您的账户移出 SMS 沙盒,并在 Cognito 用于向用户发送验证码短信的区域增加您的短信发送限额。一般来说,该区域即为 RainMaker 的部署区域。
如果 RainMaker 部署在下表中的区域之一,请选择与其相对应的 Amazon SNS 区域,并将账户移出 SMS 沙盒。其他情况下,直接使用 RainMaker 的部署区域即可。
RainMaker 部署区域 | Amazon SNS 区域 |
---|---|
Asia Pacific (Seoul) | Asia Pacific (Tokyo) |
更多信息,请参阅 AWS SMS 短信设置文档。
脱离 SMS 沙盒
如果您需要使用基于手机号码的认证功能,您需要脱离 SMS 沙盒。
当您的账号在某一区域中处于 SMS 沙盒环境中时,您只能向通过验证的电话号码发送 SMS 信息。若要设置为可以向任何电话号码发送短信,您需要将账户移出沙盒。
您需要在 Cognito 向用户发送短信的区域将您的账户移出 SMS 沙盒。
脱离 SMS 沙盒的步骤如下:
登录 AWS 控制台,进入 Simple Notification Service (SNS) 服务控制台。
选择
Text Messaging (SMS)
。
- 向下滚动,查看账户的 SMS 沙盒状态。
如果您的账户处于沙盒状态,点击
Exit SMS Sandbox
。在
Case details
中填写相关信息。输入应用的 URL 或 RainMaker 的 URL (https://rainmaker.espressif.com)。
在
What type of messages do you plan to send
问题下,选择One Time Password
。在
Which AWS Region will you be sending messages from
问题下,选择最接近 RainMaker 部署区域的区域。在
Which countries do you plan to send messages to
问题下,列出您的终端用户所在的国家。在
How do your customers opt to receive messages from you? Provide specific information about the opt-in process
问题下,请输入以下描述:
“我们正在使用 AWS Cognito SNS 向用户发送注册和找回密码请求的验证码。只有当用户在注册或找回密码过程中提供手机号码时,系统才会向用户发送信息。”
- 在
Please provide the message template that you plan to use to send messages to your customers
问题下,请提供您需要使用的信息模板。如果您希望使用默认模板,请输入以下文字:
“您的验证码是{####}。”
向下滚动页面,找到
Requests
部分。选择 Cognito 将使用的 SNS 区域。请参考 获取 Cognito 使用的 SNS 区域 小节。
将资源类型选为
General Limits
。在
Limit
一栏中,选择Exit SMS Sandbox
。在用例描述框中,输入——“我们的应用程序使用 AWS Cognito 进行用户认证/我们正在使用基于手机号码的认证。Cognito 使用 AWS SNS 短信向用户发送验证码。对于此用例,请将账户移出 SMS 沙盒”。
点击
Submit
。
AWS 团队将审核您的请求,并通过电子邮件向您通知案例进展。
增加短信发送限额
如果您想选择基于手机号码的认证,需要增加 AWS SNS 的每月短信发送限额。
AWS SNS 的默认短信消费限额是每月 1 美元。 您可以根据您预期每月发送的短信数量来决定所需的支出限额。 详情请参阅 AWS SNS 定价。
创建支持案例以增加短信发送限额:
- 登录 AWS 控制台,点击
Support Center
。
- 点击
Create case
,选择Service limit increase
。在Case details
中搜索SNS Text Messaging
。
- 输入所需的细节描述。
- 信息类型:选择
One Time Password
。 - AWS 区域:选择 Cognito 中将会使用的 SNS 区域。参考 获取 Cognito 使用的 SNS 区域 小节。
- 其他字段可以不填写。
- 信息类型:选择
- 在
Request
部分,选择 RainMaker 的部署区域。
- 请添加以下案例描述:
Please move the AWS account out of the SNS sandbox and increase the monthly spending limit to <desired_value>$.(请将 AWS 账户移出 SNS 沙盒,并将每月消费限额提高到<预期值>$。)
信息类型:One Time Password
- AWS 团队在处理该请求后会向您发送邮件。
请求受理后,您还需要从 SNS 控制台增加短信发送限额。 关于如何在 SNS 控制台中增加短信发送限额,请参考下一节。
增加短信发送限额:
登录 AWS 控制台,进入 Simple Notification Service (SNS) 控制台。
在左侧菜单点击
Text messaging (SMS)
。
- 向下滚动翻页至
Delivery status logs
,点击Edit preferences
。
Default message type
:请选择Transactional
。Account spend limit
:输入所需的支出限额。帐户支出限额不应超过您在上一步中在支持中心设置的支出限额。其他字段可不填写。
- 单击
Save changes
。
增加 CloudFront Web 分配限额
在部署 ESP-RainMaker-Dashboard 前需增加 CloudFront Web 的分配限额。 步骤如下:
- 登录 AWS 控制台,点击
Support Center
。
- 点击
Create case
,选择Service limit increase
。在Case details
中搜索CloudFront Distributions
。
- 在
Request
部分,选择限额为Web Distributions per Account
。
将New limit value
设置为 10(或其他更高值)。
请添加以下案例描述:
Can you please verify our account so that we can start creating CloudFront distribution?(能否请您验证我们的账户,以便我们开始创建 CloudFront Distribution?)点击
Submit
按钮。AWS 团队在处理该请求后会向您发送邮件,一般情况下,AWS 团队会在一天之内同意该请求。
一旦请求被接受,您就可以开始部署 ESP-RainMaker-Dashboard。
增加 lambda 并发数限制
在部署之前,需要检查 lambda 并发数限制。
- 以下为检查 lambda 并发数的具体步骤:
- 登录 AWS 控制台,搜索 Lambda 服务。
- 在左边的导航栏,点击
Dashboard
。 - 您可以在这个页面找到账户的 lambda 并发数。
如果默认值小于 1000,您需要向 AWS 发送支持请求,要求增加该值。
向 AWS 发送支持请求,请参阅以下步骤:
- 登录 AWS 控制台,搜索 "Support"。
- 点击
Create Case
。 - 选择
Service limit increase
,并在Limit Type
下拉菜单中选择Lambda
,如下图所示: - 然后填写详细信息,如下图所示:
在
Requests
部分添加请求。Region
:选择您的部署区域。Limit
: 选择Concurrent Requests (Expected Duration * Expected Requests per Second)
New Limit Value
:1000
为您创建的案例添加描述。
We are trying to deploy our product: https://rainmaker.espressif.com/. Since the current limit for concurrency is set to 10 we are not able to deploy our product. Can you please set the concurrency limit to 1000. (我们正在部署产品:https://rainmaker.espressif.com/ 。但由于当前的并发数限制为 10,我们无法进行正常部署。因此,能否请您将并发数限制设置为 1000?)
提交请求。
配置域名密钥识别邮件(可选)
用户在注册账号、找回密码,或进行其他操作时,系统发送的 SES 邮件经常会被用户邮箱归类为垃圾邮件,导致用户无法登录 RainMaker 应用程序和平台进行必要操作。
对此,可以采取的解决方法包括配置 域名密钥识别邮件 (DKIM)。
用户需要在 AWS SES 控制台进行以下操作:
- 参照 AWS SES DKIM 创建和验证域身份 文档创建和验证域身份。
该域名应与已通过 SES 验证的电子邮件的域名相同。
- 参照 AWS SES DKIM 配置文档 进行 Easy DKIM 配置。