跳到主要内容

部署前配置

关于

本文介绍了部署 RainMaker 前的配置工作,是私有 RainMaker 四个部署阶段中的第二阶段。🚀
由于中国与全球区域的私有 RainMaker 部署存在差异,下文提供了全球区域和中国区域两个选项卡。请根据你的部署区域,选择相应的选项卡。

配置简单电子邮件服务 (SES)

亚马逊提供简单电子邮件服务 (Simple Email Service, SES),用于向终端用户发送事务性邮件、营销信息或任何其他类型的高质量内容,是一项经济实惠的电子邮件服务。
请参照以下步骤,在你的部署中启用 SES。点击此处,了解更多有关 SES 的内容。


电子邮件验证

提示

你需要配置一个电子邮件账号,用于向终端用户发送邮件通知。

信息

请在 AWS SES 控制台中执行以下步骤。

  1. 打开 AWS 管理面板并搜索 SES 服务,如下图所示:

    SES 1

  2. 在左侧导航栏中,点击 Verified identities

  3. 点击 Create identity

    SES Verify Email

  4. Identity type 中,选择 Email address

  5. 输入新的电子邮件地址,用于发送电子邮件通知。

  6. 输入邮件地址后,点击 Create identity

    SES 创建身份

  7. 你的邮箱将收到一封验证邮件,请点击邮件中的链接来验证邮件地址。确认后,该邮件地址将得到验证。

  8. 点击 Refresh 即可查看更新状态和邮件验证请求。

    SES 3


配置域名密钥识别邮件

用例

当用户注册 RainMaker 或与 RainMaker 应用程序进行交互时,通常会收到有关账号验证或密码重置的邮件。如果没有恰当的身份验证机制,这些邮件可能会被邮件服务标记为垃圾邮件,导致用户错过重要通知,影响使用体验。

因此,我们配置了域名密钥识别邮件 (Domain Key Identified Mail, DKIM) 来对发送的邮件进行身份验证,确保邮件服务提供商将其识别为合法邮件,避免邮件被标记为垃圾邮件,并确保在找回密码或注册账号等重要场景中,用户能够顺利接收通知,提升用户的参与度和留存率。

信息

请在 AWS SES 控制台中执行以下步骤。

  1. 参照以下文档创建并验证域名身份:
    AWS SES DKIM 创建和验证域名
注意事项

该域名应与已通过 SES 验证的电子邮件域名相同。

  1. 参照以下 AWS 文档进行 Easy DKIM 配置:
    AWS SES DKIM 配置文档

脱离 SES 沙盒

用例

什么是 SES 沙盒?
Amazon SES 默认以沙盒模式启动,在该模式下,邮件只能发送给已验证的收件人(特定的邮箱地址、域名或 AWS 测试邮箱)。此限制有助于防止垃圾邮件,并确保邮件服务的合规使用。



为什么要脱离 SES 沙盒?
若想向任意收件人(例如使用 RainMaker 的用户)发送邮件,则必须申请生产访问权限。这样,RainMaker 就可以无限制地发送一次性密码 (OTP)、欢迎邮件和部署通知等重要邮件。

注意事项

SES 沙盒适用于特定的 AWS 区域,请在 RainMaker 部署所在的 AWS 区域申请 SES 生产访问权限。

按照以下步骤,将 AWS 账号移出 SES 沙盒:

  1. 登录 AWS 控制台,选择 RainMaker 的部署区域。

  2. 前往 SES 服务控制台。

  3. 点击左侧菜单栏中的 Account dashboard

  4. 点击 Request production access

    SES Sandbox message

  5. 填写详细信息。

    Request Production access

    • 选择 Transactional 作为 Mail type
    • 输入应用的 URL 或 RainMaker 的 URL。
    • Use case description 一栏中,复制并粘贴以下用例描述模板中的内容(复制英文部分即可)。
用例描述模板

We are requesting Amazon SES production access for our ESP RainMaker platform, a serverless IoT solution listed on the AWS Marketplace: ESP RainMaker on AWS Marketplace.(我们正在为 ESP RainMaker 平台请求 Amazon SES 生产访问权限。ESP RainMaker 是一个在 AWS Marketplace 中列出的无服务器 IoT 解决方案:AWS Marketplace 中的 ESP RainMaker。)

Use Case Description(用例描述)

Amazon SES will be used exclusively for transactional emails that are critical for user authentication, and account management, which includes:(Amazon SES 将用于有关用户身份验证和账号管理的重要事务性邮件,包括:)

  1. Login OTPs and verification codes for user authentication(用于用户身份验证的 OTP 和验证码)
  2. Password reset and account recovery notifications(密码重置和账号找回通知)
  3. Security alerts and account notifications(安全警告和账号通知)

These emails are triggered by user actions within the RainMaker platform and are not promotional or marketing-related.这些邮件通过用户在 RainMaker 平台上的操作触发,与推广和营销无关。

Compliance with AWS Policies(遵守 AWS 政策)

We fully adhere to AWS Service Terms and Acceptable Use Policy, which includes:(我们严格遵守 AWS 服务条款和可接受使用政策,包括:)

  • No bulk marketing or unsolicited emails (Only user-initiated transactional emails)(不发送批量营销邮件或未经请求的邮件(仅限用户触发的事务性邮件))
  • Bounce and complaint management (Automatic suppression lists enabled)(退信和投诉管理(已启用自动抑制列表))
  • DKIM and SPF authentication (Implemented for better email deliverability)(DKIM 和 SPF 身份验证(已实施,以提高邮件送达率))
  • User consent and compliance (All emails comply with CAN-SPAM, GDPR, and other relevant regulations)(用户同意和合规性(所有邮件均符合 CAN-SPAM、GDPR 及其他相关法规))

Request for Production Access(请求生产访问)

Case: SES sandbox restrictions allow sending emails only to verified addresses or the SES mailbox simulator. Since new user sign-ups require emails to unverified addresses, we are unable to use RainMaker effectively.(案例:SES 沙盒仅允许向已验证的地址或 SES 邮箱模拟器发送邮件。由于新用户注册需要向未验证的地址发送邮件,我们无法有效使用 RainMaker。)

Request: We kindly request approval for SES production access in [Region] with an initial sending limit of 500 emails per day to enable seamless communication with our users.(请求:我们恳请批准 [Region]SES 生产访问权限,并设置初始发送数配额为 500 封邮件/天,以实现与用户的无缝通信。)

For additional verification, our AWS Partner Manager, Anton Shmagin (antonsh@amazon.com), can provide further details.(为进一步验证,我们的 AWS 合作伙伴经理 Anton Shmagin (antonsh@amazon.com) 可以提供更多详细信息。)

Please let us know if any additional information is required to process our request. Thank you.(如果需要其他额外信息,请告知我们。谢谢!)

提醒

请将 [Region] 更改为你部署私人 RainMaker 的特定区域。

  1. 点击 Acknowledgement 并提交请求。

    SES production access submit request

  2. AWS 支持团队将会启用支持案例,并在处理完后向你发送电子邮件。一般来说,AWS 支持团队会在一天内回复该请求。

    提示

    也可以通过 AWS SES 控制台检查你账号的沙盒状态。
    具体步骤见参见检查账号的沙盒状态

    生产阶段需要生产访问权限 [待审核]

    只有在请求获得批准并且邮件账号成功退出 SES 沙盒模式后,才能开始部署私有 RainMaker。

    评估阶段不需要生产访问权限 [待审核]

    如果处于测试私有 RainMaker 的评估阶段,则无需在内测期间请求生产访问权限。


增加 SES 电子邮件发送配额

用例

如果收到的注册请求或邮件通知预计将多于目前的限额,则需要增加每日邮件发送总量和发送速率的限额。当前的限额可能不足以处理增加的流量,导致发送重要邮件(例如欢迎邮件、OTP)时出现延迟或失败。增加发送配额可确保系统能处理更多邮件,且不会达到最大配额,从而改善用户体验并防止邮件通信中断。

想要查看当前配额,请参考 AWS 文档中的检查 SES 发送配额

按照以下步骤,增加电子邮件发送配额:

  1. 登录 AWS 控制台,搜索并打开 Service Quotas

    Quota

  2. 选择 RainMaker 的部署区域。

  3. 在导航栏中,点击 AWS services

  4. 搜索 "Amazon SES"。

    SES service Quota

  5. 选择 Sending quota

    SES service Quota

  6. 点击 Request quota increase

    SES service Quota

  7. 输入所需的配额值(即该账号 24 小时内在当前区域可发送的最大邮件数)。

  8. 点击 Request

    SES Sending Quota

备注

AWS 支持团队会审核你的请求,并且通过电子邮件通知进展。你也可以按照检查 SES 发送配额中的步骤查看发送配额。


配置 SMS 发送服务 (SNS)

亚马逊简单通知服务 (AWS SNS) 是一项完全托管的消息传递服务,可以通过短信、邮件或其他协议发送通知。企业可以通过 SNS 中的短信发送服务 (SMS) 向全球用户发送可定量、效益高的短信。默认情况下,SNS 提供短信沙盒。下文介绍了如何退出沙盒及增加发送配额。
点击此处,了解更多有关 SNS 的信息。


获取 Cognito 使用的 SNS 区域

用例

如果你想通过 AWS Cognito 支持基于手机号码的身份验证,则需要将账号移出 SMS 沙盒模式提高 AWS SNS 的每月短信发送配额。SMS 沙盒模式限制了短信的发送范围,仅允许向已验证的目标号码发送短信,并且受限于账号所在的 SMS 沙盒区域。如果要向任意手机号发送短信,则必须完成此步骤。

此外,RainMaker 使用区域特定的 AWS SNS 服务来发送短信。为确保系统正常运行,你需要在 AWS Cognito 向用户发送验证码短信的区域中,将账号移出 SMS 沙盒模式,并提高 SMS 消费限额。

除了以下列出的特殊情况,大多数情况下,上述 AWS 区域与私有 RainMaker 部署的区域一致。如果你不使用手机号进行身份验证,或不需要向未验证的电话号码发送短信,则无需移出 SMS 沙盒模式。

信息

如果你选择的私有 RainMaker 区域包含在以下特例中,请使用相应的 Amazon SNS 区域将账号移出 SMS 沙盒模式。若非特例,则部署私有 RainMaker 的区域就是将账号移出 SMS 沙盒模式的区域。上述两种情况都是 Cognito 使用的 SNS 区域。

私有 RainMaker 区域Amazon SNS 区域
Asia Pacific (Seoul)Asia Pacific (Tokyo)

更多信息,请参阅 AWS SMS 设置文档


脱离 SMS 沙盒

参照上述说明,如果你需要移出 SMS 沙盒,请按照以下步骤进行操作:

提醒

你需要在 Cognito 向用户发送短信的区域将你的账号移出 SMS 沙盒。

  1. 登录 AWS 控制台,进入 SNS 服务控制台。

  2. 选择 Text messaging (SMS)

SMS

  1. 向下滚动,查看账号的 SMS 沙盒状态。

    Sandbox SMS

  2. 如果你的账号处于沙盒状态,点击 Exit SMS Sandbox

  3. Case details 中填写相关信息。

  4. 输入应用的 URL 或 RainMaker 的 URL (https://rainmaker.espressif.com)。

  5. What type of messages do you plan to send 问题下,选择 One Time Password

  6. Which AWS Region will you be sending messages from 问题下,选择最接近 RainMaker 部署区域的区域。

  7. Which countries do you plan to send messages to 问题下,列出你的终端用户所在的国家。

  8. How do your customers opt to receive messages from you? Provide specific information about the opt-in process 问题下,请输入以下描述(填写英文部分即可):

    We are using SNS text messaging with AWS Cognito to send verification code to the user for sign up and forgot password requests.(我们正在使用 AWS Cognito SNS 向用户发送注册和找回密码请求的验证码。)

    Messages are sent only when user provides the mobile number for sign up or forgot password requests.(只有当用户在注册或找回密码过程中提供手机号码时,系统才会向用户发送信息。)

  9. Please provide the message template that you plan to use to send messages to your customers 问题下,请提供你需要使用的信息模板。如果你想使用默认模板,请输入以下内容(填写英文部分即可):

    Your verification code is (####).(你的验证码是{####}。)

  10. 向下滚动页面,找到 Requests 部分。

  11. 选择 Cognito 将使用的 SNS 区域。
    请参考获取 Cognito 使用的 SNS 区域小节。

  12. 将资源类型选为 General Limits

  13. Limit 一栏中,选择 Exit SMS Sandbox

  14. 在用例描述框中,复制并粘贴以下内容(填写英文部分即可):

    Our application uses AWS Cognito for user authentication/We are using mobile number-based authentication.(我们的应用程序使用 AWS Cognito 进行用户认证/我们正在使用基于手机号码的身份认证。)
    Cognito uses AWS SNS text messaging to send verification code to users.(Cognito 使用 AWS SNS 短信向用户发送验证码。)
    For this use case, please move the account out of SMS sandbox. Thank you.(对于此用例,请将账号移出 SMS 沙盒,谢谢。)

  15. 点击 Submit

注意事项

AWS 支持团队将在 2~3 天处理完你的请求,并通过电子邮件告知进展。
此外,请阅读下一节的操作说明,通过 SNS 控制台提高短信发送配额。


增加 SMS 发送配额

提醒

如果你想基于手机号码进行身份认证,则需要增加 AWS SNS 的每月短信发送配额。

指定 SMS 发送配额

AWS SNS 的默认短信消费限额是每月 1 美元。你可以根据预估的每月发送短信数来确定所需的支出限额。详情请参阅 AWS SNS 定价

按照以下步骤,创建支持案例以增加短信发送配额:

  1. 登录 AWS 控制台,点击 Support Center

Support Center

  1. 点击 Create case,输入所需的细节描述。

    SNS text messaging

    • 选择 Service limit increase 选项。
    • Case details 中搜索 SNS Text Messaging 选项。
    • 信息类型:选择 One Time Password
    • AWS 区域:选择 Cognito 中将会使用的 SNS 区域。
      如果你尚未获取该区域,请参考获取 Cognito 使用的 SNS 区域
    • 其他字段可以不填写。

SNS Support Case Details

  1. Request 部分,选择 RainMaker 的部署区域。

    region

  2. 请添加以下案例描述(复制粘贴英文部分即可):

    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 支持团队将在 2~3 天处理完你的请求,并通过电子邮件告知进展。
此外,请阅读下一节的操作说明,通过 SNS 控制台提高短信发送配额。

参照以下步骤,增加 SMS 发送配额:

  1. 登录 AWS 控制台,进入 SNS 服务控制台。

  2. 点击左侧菜单中的 Text messaging (SMS)

Text Messaging(SMS)

  1. 向下滚动翻页至 Delivery status logs,点击 Edit preferences

    SNS delivery status logs

  2. Default message type 一栏中选择 Transactional

  3. Account spend limit 一栏中输入所需的支出限额。

    注意

    帐户支出限额不应超过上一步中在支持中心设置的消费限额。

  4. 其他字段可不填写。点击 Save changes

    Message Preference

至此,你已成功增加 SMS 发送配额!🎉


提升 Lambda 并发数配额

用例

通过增加 AWS Lambda 的并发数配额,从而确保应用程序能够处理预期的负载,而不会发生限流或失败。当前默认的并发数较低(例如 10),无法部署像 RainMaker 这样高需求的应用程序。将配额增加到至少 1000,可以确保顺利执行 Lambda 函数,从而高效处理更多的并发请求,防止服务中断。

提醒

在部署前,需要检查 Lambda 并发数配额。

按照以下步骤检查 Lambda 并发数:

  1. 登录 AWS 控制台并搜索 Lambda 服务。

  2. 点击左侧导航栏处的 Dashboard

  3. 你可以在这个页面找到账户的 Lambda 并发数。

    lambda_concurrency

注意

如果默认值小于 1000,你需要向 AWS 发送支持请求,要求增加该值。

请参阅以下步骤,向 AWS 发送支持请求:

  1. 登录 AWS 控制台,搜索 "support"。

    support_1

  2. 点击 Create Case

  3. 选择 Service limit increase,并在 Limit Type 下拉菜单中选择 Lambda,如下图所示:

    support_2

  4. 填写详细信息,并在 Requests 部分添加如下请求:

    • Region:选择你的部署地区
    • Limit:Concurrent Requests (Expected Duration * Expected Requests per Second)
    • New Limit Value:1000

    support_4

  5. 为创建的案例添加描述(填写英文部分即可)。

    We are trying to deploy our product: https://rainmaker.espressif.com/. Since the current concurrency limit is 10, we cannot deploy our product. May I request to set the concurrency limit to 1000? Thank you.(我们正在部署我们的产品:https://rainmaker.espressif.com/。由于当前的并发数配额为 10,我们无法完成部署。请问可以将并发数配额提高到 1000 吗?谢谢。)

  6. 提交请求。

备注

AWS 支持团队将在 2~3 天处理完你的请求,并通过电子邮件告知进展。

至此,你已成功增加了 Lambda 的并发数配额!🎉