跳到主要内容

部署后配置

关于本文

本文介绍了 RainMaker 的部署后配置环节,是私有 RainMaker 部署的最后一步。🚀 请先完成 RainMaker 服务的部署,再阅读此文。
由于中国与全球区域的私有 RainMaker 部署存在差异,下文提供了全球区域和中国区域两个选项卡。请根据你的部署区域,选择相应的选项卡。


配置 Amazon Cognito 电子邮件提供商为 SES,而非默认的 Cognito 发件人地址

提示

如果已配置经过验证的 SES 邮件地址后,终端用户仍然收到来自 no-reply@verificationemail.com 的邮件,请按照以下步骤解决该问题。

以下步骤将帮助你为 Cognito 用户池正确配置 SES 邮件提供商:

  1. 打开 Amazon Cognito。

    • 在 AWS 控制台 中打开 Amazon Cognito
    • 选择你的用户池(如 rainmaker-user-email-mobile-pool)。
    • 在菜单中点击 Messaging

    SES_mail_configure1

  2. 检查邮件提供商设置。

    • Email provider 部分,查看当前的配置以及用于发送邮件的邮箱地址。
    • 确保 Send email with Amazon SES(使用 Amazon SES 发送邮件)选项已启用。
  3. 配置 SES 电子邮件地址。

    • 选择一个已在 Amazon SES 通过验证的邮箱地址。
    • 点击 Save Changes 以应用新的配置。

    SES_mail_configure2

完成上述步骤后,所有发送的邮件都将使用指定的 SES 邮件地址,而不会再使用默认的 no-reply@verificationemail.com

配置 SES 以发送邮件

关于本节

在创建新用户时,RainMaker 会向终端用户发送电子邮件通知,邮件中包含验证码。默认情况下,系统使用 Amazon Cognito 服务向用户发送电子邮件通知。但 Amazon Cognito 的默认电子邮件服务每天可以发送的电子邮件数量不能超过 50 封,这包括了所有类型的电子邮件,如用户注册或找回密码时发送的验证码。因此,RainMaker 不依赖 Amazon Cognito,而是通过配置 Amazon SES 来发送电子邮件通知给用户。此外,SES 还支持自定义消息。

注意

OAuth-only RainMaker 尚未支持此功能。

按照以下步骤配置 SES 以发送电子邮件:

  1. 用超级管理员账号登录 RainMaker 管理面板。
  2. 打开 Deployment Settings 标签页。
  3. 点击 Email Configurations

message_template

  1. Subject 字段输入电子邮件的主题。
  2. From Email 字段选择用于发送邮件的电子邮箱。
  3. From User Name 字段中输入发件人的名字。
  4. Template 字段中输入电子邮件正文。
  5. 点击 Set Email Template
  6. 提示设置成功,如下图所示:

message_template3


配置验证信息的电子邮件模板

关于本节

用户注册 RainMaker 时,平台会向其发送一封包含验证码的电子邮件。用户使用移动设备登录时需使用这一验证码来验证账号。你需要具备管理员权限才可以在 RainMaker 管理面板上自定义验证邮件的模板。

按照以下步骤配置验证消息的电子邮件模板:

  1. 使用管理员帐户登录 RainMaker 管理面板。
  2. 点击 Deployment Settings
  3. 点击 Email Configurations

configure2

  1. Template Type 字段保持默认设置—— Welcome Email Notification
    • 对电子邮件主题 Subject 进行更改。
    • 根据需求更改邮件模板 Template,可以使用简单文本,也可以添加有效的 HTML。
    • 模板中应包含字符串 {####},该字符串由占位符组成,AWS 服务将会自动填充验证码。
  2. 完成更改后,点击 Set Email Template

configure3

信息

创建新账号时,用户收到的验证邮件将遵循这一模板。


配置 Cognito 域名

关于本节

若想要使用第三方身份提供商(例如谷歌、苹果)进行登录,并将 Alexa 和谷歌语音助手账号与 RainMaker 账号相关联,必须使用 Cognito 域。
Cognito 域名用于创建注册和登录网页的 URL,这些网页用于第三方身份提供商和语音助手集成。

信息

OAuth-only RainMaker 尚未支持此功能。

按照以下步骤配置 Cognito 域名:

  1. 用超级管理员账号登录 RainMaker 管理面板。
  2. 打开 Deployment Settings 标签页。
  3. 打开 Cognito Configurations 标签页。
  4. 输入自定义域名,如下图所示:

customdomain

备注

自定义域名中只能包含小写字母、数字和连字符。

  1. 如果链接未自动生成,请点击 Save 并刷新页面以查看完整的 URL。

customdomain_2


配置 Cognito 回调 URL(可选)

关于本节

若想要使用第三方认证服务,并将 Alexa 和谷歌语音助手账号与 RainMaker 账号相关联,需要使用回调 URL。用户使用第三方认证服务成功登录后,将被重定向至这些网页之一。

按照以下步骤配置回调 URL:

  1. 用超级管理员账号登录 RainMaker 管理面板。
  2. 打开 Deployment Settings 标签页。
  3. 打开 Cognito Configurations 标签页。
  4. 如下图所示,在 Callback URLs 字段中输入合适的 URL。多个回调 URL 可用逗号隔开。

appclient


配置自定义 Cognito 域名(可选)

注意

OAuth-only RainMaker 尚未支持此功能。

1. 创建 ACM 证书

AWS Certificate Manager (ACM) 负责处理公有与私有 SSL/TLS X.509 证书及密钥的创建、存储与更新等复杂流程,保障 AWS 网站与应用安全。你可以直接使用 ACM 签发证书,或将第三方证书导入 ACM 管理系统,以供集成的 AWS 服务使用。

  1. 登录 AWS 控制台并搜索 AWS Certificate Manager 服务。
  2. 点击 Request Certificate
  3. 选择 request a public certificate 并点击 Next
  4. 填写 Fully qualified domain name 字段并点击 Request

ACM_certificate

为证书验证添加 CNAME 记录

此步骤中,在 Route 53 中使用上一步的 CNAME 名称与 CNAME 值创建一条 CNAME 记录,以验证 SSL 证书。

  1. 登录 Route 53 控制台。
  2. 在导航窗格中选择 Hosted zones
  3. 选择你的域名对应的托管区域。
  4. 选择 Create record
  5. Record name 中输入 CNAME 名称(不包含你的域名,Route 53 会自动追加)。
  6. Record type 中选择 CNAME
  7. Value 中输入从 ACM 证书复制的 CNAME 值。
  8. TTL 保持默认值(300 秒)。
  9. 确保未选中 Alias
  10. 选择 Create records
  11. 等待约 30 分钟,证书状态将从 Pending validation 变为 Issued(已验证)。
注意

CNAME 记录类型用于证书验证,不应启用 Alias 选项。

2. 创建自定义域并将其添加到用户池

在此步骤中,你需要输入自定义域名,并从下拉列表选择我们在上一步创建的 ACM 证书。

  1. 登录 Amazon Cognito 控制台。

  2. 点击 User pools

  3. 选择要添加域名的 rainmaker-user-email-mobile-pool

  4. 点击 App integration 选项卡。

    create_custom_domain_1

  5. Domain 右侧选择 Actions,然后选择 Create custom domain

  6. Custom domain 中输入要在 Amazon Cognito 中使用的域名。域名只能包含小写字母、数字和连字符,且首尾不能是连字符。使用点号分隔子域名。

  7. ACM certificate 中选择要用于该域名的 SSL 证书。无论用户池位于哪个 AWS 区域,只有美国东部(弗吉尼亚北部)区域的 ACM 证书可用于配置 Amazon Cognito 自定义域。

  8. 点击 Create custom domain

    create_custom_domain_2

  9. Amazon Cognito 会返回到 App integration 选项卡,并显示标题为 "Create an alias record in your domain's DNS" 的消息。记下控制台中显示的域名和别名目标,在下一步中将使用它们把流量指向自定义域。

3. 添加别名目标与子域

此步骤将在你的域名服务器 (DNS) 服务商处设置一个别名,指向上一步得到的别名目标。

A) 在当前的 DNS 配置中添加别名目标与子域

如果你未使用 Route 53 解析 DNS,则必须使用你 DNS 服务商的配置工具,将上一步的别名目标添加到域名的 DNS 记录中。你的 DNS 服务商还需要为自定义域设置子域。

B) 使用 Route 53 添加别名目标与子域

如果你使用 Route 53 解析 DNS,则参照下列步骤进行配置:

  1. 登录 Route 53 控制台。

  2. 如果在 Route 53 中还没有托管区域,需要先按以下步骤创建;若已经有,则继续第 3 步。

    a) 选择 Create Hosted Zone
    b) 在 Domain Name 列表中输入自定义域(例如:myapp.auth.example.com)的上级域名(例如:auth.example.com)。
    c)(可选)在 Comment 中为该托管区域添加备注。
    d) 将托管区域类型设为公开,以允许公网客户端解析你自定义的域。不支持选择私有托管区域。
    e) 按需添加 Tags
    f) 选择 Create hosted zone

  3. Hosted Zones 页面,选择你托管区域的名称。

  4. 为上级域名添加一条 DNS 记录并点击 Create records

    域名 auth.example.com 的示例记录:auth.example.com. 60 IN A 198.51.100.1

    Amazon Cognito 会验证你的自定义域的上级域名是否存在 DNS 记录,以防误劫持生产域名。如果上级域名没有 DNS 记录,则在设置自定义域时 Amazon Cognito 会返回错误。

  5. 再次选择 Create record

  6. Record name 中输入与你的自定义域匹配的名称,例如输入 myapp 以创建 myapp.auth.example.com 的记录。

  7. Alias Target 中输入之前记录下的别名目标。

  8. 启用 Alias 选项。

  9. Route traffic to 处选择 CloudFront 分配的 Alias,输入创建自定义域时 Amazon Cognito 提供的别名目标。

  10. 选择 Create Records。

新的记录大约需要 60 秒才能在所有 Route 53 DNS 服务器上生效。可以使用 Route 53 的 GetChange API 方法验证更改是否已生效。

4. 验证登录页面

按以下步骤验证你的自定义域上的登录页面是否可用:

  1. 登录 Amazon Cognito 控制台。
  2. 选择用户池 rainmaker-user-email-mobile-pool
  3. 在左侧导航中点击 App clients
  4. 点击 rainmaker-user-email-mobile-pool-client
  5. 在客户端名称右侧点击 View login page

verify_custom_domain_1

参考链接:https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pools-add-custom-domain.html


配置自定义 IoT MQTT 域名(可选)

1. 创建 ACM 证书

AWS Certificate Manager (ACM) 负责处理公有与私有 SSL/TLS X.509 证书及密钥的创建、存储与更新等复杂流程,保障 AWS 网站与应用安全。你可以直接使用 ACM 签发证书,或将第三方证书导入 ACM 管理系统,以供集成的 AWS 服务使用。

  1. 登录 AWS 控制台并搜索 AWS Certificate Manager 服务。
  2. 点击 Request Certificate
  3. 选择 request a public certificate 并点击 Next
  4. 输入 Fully qualified domain name 字段。
  5. 保持默认设置,即 Validation Method 选择 DNS ValidationKey Algorithm 选择 RSA 2048,然后点击 Request
  6. 复制 CNAME 名称与 CNAME 值。
  7. 在 Route 53 中添加这些 CNAME 记录(详见下文步骤)。

ACM_certificate

为证书验证添加 CNAME 记录

参阅此处

2. 创建 IoT MQTT 自定义域

在此步骤中需要为 AWS IoT 创建自定义域配置,并选择我们在上一步中创建的 ACM 证书。

  1. 登录 AWS 控制台并搜索 AWS IoT Core 服务。
  2. 在导航窗格中选择 Domain configurations
  3. 选择 Create domain configuration
  4. Domain configuration properties 部分:
    • Domain configuration name 中输入唯一名称(例如,esp-rainmaker-<account_id>)。
    • Select security policy 中保持默认的 IoTSecurityPolicy_TLS13_1_2_2022_10
  5. Domain type 部分选择 Customer managed domain
  6. Domain name 中输入自定义的 MQTT 域名(例如,mqtt.example.com)。
  7. Server certificate 中,从下拉列表里选择上一步创建的 ACM 证书。
  8. Validation certificate 中,如使用私有证书则选择相应证书(可选)。
  9. Authentication configuration 部分,选择 Authentication typeDefault
  10. Custom authorizer 部分选择 No custom authorizer
  11. 点击 Create domain configuration

iot_custom_domain

  1. 创建完成后,可在 Domain configurations 页看到域配置列表。记录列表中的 Domain name(例如,********-ats.iot.<region>.amazonaws.com),这是 IoT Data‑ATS 终端节点,后续创建 CNAME 记录时会用到。

3. 为 MQTT 自定义域添加 CNAME 记录

此步骤将在 Route 53 中创建一条 CNAME 记录,将你的自定义 MQTT 域名指向 AWS IoT Data‑ATS 终端节点。

参阅为证书验证添加 CNAME 记录中的 Route 53 步骤,并且输入以下值:

  • Record name:输入 MQTT 自定义域的子域部分。例如,mqtt.example.com
  • Value:输入你的 AWS IoT Data‑ATS 终端节点。取自创建 IoT MQTT 自定义域小节的第 13 步,例如:********-ats.iot.<region>.amazonaws.com
注意
  • CNAME 记录会将自定义的 MQTT 域名映射到 AWS IoT Data‑ATS 终端节点。
  • 请确保使用与你的 AWS 区域相匹配的 IoT 终端节点。
  • DNS 传播可能需要几分钟完成。

新的 CNAME 记录将允许 MQTT 客户端连接到你的自定义域名(例如,mqtt.example.com),并路由到 AWS IoT 终端节点。


配置 MFA(可选)

关于本节

管理员用户可以设置多重要素验证 (Multi-factor authentication, MFA) 以提高安全性。配置该功能后,系统将在每次登录时向管理员的手机发送验证码。

在配置该功能前,请先增加 SNS 发送配额

信息

OAuth-only RainMaker 尚未支持此功能。

按照以下步骤配置 MFA:

  1. 用管理员账户登录 RainMaker 管理面板。
    前往 Deployment Settings > MFA Configuration

    configure4

  2. 要添加或更新收取验证码的手机号码,请输入新的国家地区号码和手机号码,并点击 Update

    configure4

    提示

    如果你已添加过电话号码,请直接跳过第二步和第三步。

  3. 收到新的验证短信后,输入该验证码。

    configure4

  4. 此时,验证电话号码已更新,你可以使用切换键启用 MFA。

    configure4

    提示

    你也可以随时使用切换键禁用 MFA。

  5. MFA 设置更新成功。

    提示

    设置将从下一次登录时启用。

    若启用 MFA,初始密码验证后会出现 MFA 提示。

    configure4


为天气 API 配置基于位置的触发器

关于本节

通过将 OpenWeather API 与 RainMaker 集成,可以启用基于位置的天气触发器以实现自动化操作。
通过配置 API 密钥并设置轮询间隔,设备或系统可以根据温度、湿度等气象条件自动触发响应机制,例如依据实时天气数据执行开关控制,从而提高自定义性和管理效率。通过动态响应天气变化,该触发系统能够构建便利、节能的智能调控环境。

按照以下步骤为天气 API 配置基于位置的触发器:


  1. 创建 Open-Weather 账号
    • 首先需在 https://home.openweathermap.org/users/sign_up 注册账号。
    • 注册后,查看电子邮件中的验证信息,并按照说明确认电子邮件地址。
    • 电子邮件通过验证后,你将收到一封包含 API 密钥的电子邮件,该密钥会在几个小时内激活。

  1. 在 RainMaker 中配置基于天气的自动化
    • Postman 中使用超级管理员账号登录 RainMaker。

      weather-API_1

    • 点击以下 Swagger 链接,访问并配置位置触发器的部署设置。

      https://swaggerapis.rainmaker.espressif.com/?urls.primaryName=RainMaker%20Superadmin%20APIs#/Deployment%20Setting/cofigureServiceConfiguration
    • Request body 下方,选择下拉菜单栏中的 Location Trigger Configurations,查看 JSON 请求示例。

      weather-API_2

    • 在 Postman 中创建新的 API 请求。

      PUT - {{url}}/v1/admin/deployment_settings/config/location_trigger

      按照获取 Base URL 中的步骤来获取 {{url}}

参数
servicelocation_trigger
头部
Authorization{{access_key}}
主体

选择 raw,选择下拉菜单栏中的 JSON。在主体部分添加以下 JSON 代码并点击 Send

 {
"weather_trigger_api_key": "<add_your_key>",

"weather_trigger_polling_interval": 30,

"weather_trigger_host_url": "https://api.openweathermap.org/data/2.5/weather?units=metric"

}
提示

请参考以下截图中的示例。

weather-API_3


  1. 测试触发器

    头部
Authorization{{access_key}}
主体

为需要应用自动化触发器的节点更改 node_id 值。

weather-API_5


将 Cognito 用户池从 Essentials 降级到 Lite 等级

关于

将 Cognito 用户池从 Essentials 等级降级到 Lite 等级时,必须先禁用 Essentials 专属的某些功能,以确保降级过程顺利。如果在仍启用高级功能的情况下尝试降级,将会收到 tierChangeNotAllowedException 错误报告。请按照下列步骤先禁用所有高级功能,然后再通过 API 确认降级。

注意

如果下列步骤中相应的高级功能已不存在或未配置,可跳过该部分。


1. 移除访问令牌自定义

  • 在 AWS 控制台打开用户池。

  • 在左侧边栏的 Authentication 部分进入 Extensions

  • 如果启用了 Pre token generation 的 Lambda 触发器,选择该触发器并点击 Delete

  • 如果没有此触发器,则无需操作。

    cognito-tier-disable-lambda-trigger


2. 禁用威胁防护

  • 在 AWS 控制台打开用户池。

  • 在左侧边栏的 Security 部分点击 Threat protection

  • 如果启用了任一威胁防护功能(如 Advanced SecurityCompromised Credentials CheckAdaptive Authentication),请将其关闭。

  • 如果所有选项均显示为禁用且有 Switch to Plus 的选项,则无需操作。

    cognito-tier-disable-threat-protection


3. 关闭日志流式传输(日志导出)

  • 在 AWS 控制台打开用户池。

  • 在左侧边栏的 Security 部分点击 Log streaming

  • 如果日志交付或流式传输已配置到 CloudWatch 或其他目标位置,请移除这些目标。

  • 如果所有选项均显示为禁用且有 Switch to Plus 的选项,则无需操作。

    cognito-tier-disable-log-streaming


4. 禁用基于邮箱的 MFA

  • 打开用户池控制台,在左侧边栏 Authentication 部分选择 Sign-in

  • Multi-factor authentication 处点击 Edit

  • 如果在 Require MFAOptional MFA 选项下,Email message 被选为 MFA methods,则取消选中并点击 Save changes 确认。

  • 如果未显示或未选择 Email message,则无需操作。

    cognito-tier-disable-email-mfa


5. 取消密码重复使用限制

  • 在左侧边栏选择 Authentication methods,然后进入 Password policy

  • 检查 Prevent use of previous passwords 的数值。

  • 如果数值大于 0,则将将其改为 0。

  • 保存更改,使其变为 Allow reuse of previous passwords

  • 如果页面已显示 Allow reuse of previous passwords,则无需操作。

    cognito-tier-disable-password-reuse


6. 还原托管登陆(托管 UI)

  • 在左侧边栏的 Branding 部分点击 Managed login

  • 如果启用了或自定义了 Managed login 或高级品牌设置,请还原为基础的托管 UI 品牌/设置,或删除自定义的 Managed login 页面。

  • 如果已使用标准托管 UI,则无需操作。

    cognito-tier-managed-login-ui


7. 禁用基于选择的登录方式

  • 在侧边栏选择 Sign-in,然后进入 Options for choice-based sign-in

  • 如果 Passwordless status 显示为 Active,则点击 Edit

  • 取消勾选以下三项:

    • Passkey
    • Email message one-time password
    • SMS message one-time password
  • 点击 Save Changes 确认。

  • 如果 Password based sign-in 显示为 Active,且 Passwordless status 显示为 Inactive,则无需操作。

    cognito-tier-disable-passwordless-sign-in


备注

重要
  • 如发现某功能已不存在或未配置,可跳过相应的停用步骤。
  • 在通过 API 执行等级降级前,务必确认所有高级功能均已禁用。
  • 变更完成后,检查用户池配置,确认所有高级功能已成功禁用。
  • 禁用全部高级功能后,可输入发送到邮箱的验证码以确认降级。

配置 DNS 域名

信息

此功能对于全球 RainMaker 是可选项,但对于中国区域的 RainMaker 来说是必选项。

关于本节

RainMaker 后端和前端的堆栈部署成功后,你可以使用生成的 URL 访问 API 端点和管理面板,或者通过配置 Route 53 服务来使用专属于你组织的域名。

请按照以下步骤配置 Route 53 服务:


  1. 在 Route 53 中创建托管区域

  1. 将托管区域映射至 DNS 注册商

  1. 将 API 网关端点与 DNS 域名进行映射

    • 完成托管区域与当前 DNS 供应商之间的映射后,你需要将 API 网关终端节点配置到 Route 53 托管区域。
    提示

    请按照获取 Base URL中的步骤来获取 API 网关端点。

    注意

    请将 API 终端节点类型设置为 Edge

    配置完成后,API 网关和自定义域名的配置页面将如下所示:

    dns1

    API 网关的 Route 53 配置页面将如下所示:

    dns2

    dns3


  1. 配置 Rainmaker 管理面板的域名映射

    • 部署 RainMaker 前端堆栈时,系统将同时部署所需的用户界面组件并创建 CloudFront 分配。

    • 这一过程设置了用于缓存用户界面的内容分发网络 (Content Delivery Network),并为用户管理面板提供了 SSL 连接。

    • 你可以为你的组织创建特定域名,管理员用户可使用该域名访问管理面板。

    • 查看 CloudFront 分配,请在 AWS 控制台搜索 CloudFront 服务。

      dns4 dns5

    • 为 CloudFront 分配配置 Route 53 DNS 映射,请参阅以下链接:

    为 CloudFront 分配配置 DNS 映射后,CloudFront 页面将如下所示:

    dns7

    用于创建 CloudFront 分配的 Route 53 页面将如下所示:

    dns8