News: PWA Kit 3.0.0 现已推出,并支持 Node 18。升级您的项目 和环境以维护功能。您_无法_使用旧版本部署您的站点。
Managed Runtime 概述
Managed Runtime 提供部署、托管和监控 PWA Kit 网店的基础架构。
Managed Runtime 仅支持通过 PWA Kit 模板创建的应用程序。可用模板的源代码可以在 GitHub 上的 PWA Kit 存储库的 template-*
文件夹中找到。
本指南介绍 Managed Runtime 的主要部分以及如何访问它。
在使用 Managed Runtime 和 Runtime Admin 之前必须启用它们,并且您必须请求访问它们。要为您的组织启用 Managed Runtime 和 Runtime Admin,请联系您的 Salesforce 帐户团队。要获得访问权限,请让您的 Commerce Cloud 管理员使用 Account Manager 将以下角色之一添加到您的帐户:Managed Runtime User(托管运行时用户)或 Managed Runtime Admin(托管运行时管理员)。
环境是用于描述 Managed Runtime 托管的特定网店的所有云基础架构和配置值的术语。环境用于将您的生产环境 (Production) 网店与为其他目的(例如开发或测试)部署的网店分开。
在 Managed Runtime API 中,环境称为“目标”,但两个术语指的是同一事物。
由于环境在可自动扩展和缩减的高效微服务上运行,因此您可以根据需要创建任意数量的环境,而无需额外费用。例如,您可以创建一个短期环境,专门用于单个敏捷开发冲刺或该冲刺中的单个用户故事。当您不再需要某个环境时,我们建议您将其删除。
标记为生产的环境优先由 Salesforce 的支持团队监控。对于生产环境,您还可以使用 Log Center 调试。要将环境标记为生产环境 (Production),您有两种选择:
- 使用 Runtime Admin 工具。有关创建环境或编辑现有环境的分步说明,请参见管理指南的环境部分。
- 使用 Managed Runtime API。projects_target_create 和 projects_target_partial_update 端点都具有
is_production
参数。要使用这些端点将环境标记为生产环境 (Production),请将is_production
设置为true
。
默认情况下,您最多可以将 10 个环境标记为生产环境 (Production)。要增加您的限度,请联系支持部门。
在环境中运行的网店代码称为捆绑包。使用 PWA Kit 中包含的开发人员工具生成一个捆绑包并将其推送到 Managed Runtime。
捆绑包是您的代码在特定时间点的快照。它是_不可变的_:创建捆绑包后,将无法更改。拥有完整且准确的捆绑包历史记录可以更轻松地解决部署问题。
推送捆绑包后,您可以使用 Runtime Admin(运行时管理员)或 Managed Runtime API 将该产品指定为“已部署”。每个项目可以有多个捆绑包,但每个环境只能有一个指定为已部署的捆绑包。您可以随时更改指定为已部署的捆绑包。有关更多信息,请参阅推送和部署捆绑包。
为了帮助您管理多个环境,每个环境也属于一个项目,每个项目都属于一个组织。一个组织可以包含多个网店的多个项目,每个项目可以包含多个环境。Managed Runtime 用户可以属于多个组织以分隔不同的工作流。
每个组织最多总计可以有 100 个环境和最多 10 个生产环境。如果您需要提高这些限度,请联系您的 Salesforce 支持代表。
组织和用户组织成员资格由 Account Manager 中的设置确定。用户可以作为成员或管理员属于组织。成员只能与分配了项目角色的 Managed Runtime 中的项目进行交互。管理员可以与组织内的所有项目进行交互。
要为用户分配管理员组织成员资格,请联系 Salesforce Support。
对于 Managed Runtime 项目,用户可以具有以下能力:
- **浏览:**在 Runtime Admin 中查看项目。
- **管理重定向:**管理项目的重定向。请查看重定向文档以了解更多信息。
- **部署:**部署新捆绑包或将部署恢复为旧捆绑包。
- **管理团队:**查看、添加、邀请、删除和编辑项目团队成员的角色。
- 访问日志: 跟踪全部环境的日志。
每个用户均被分配项目角色,该角色决定他们拥有哪些能力。(一个用户只能有_一个_角色。)项目角色可以分配给组织内的任何用户。
下表显示了与每个角色相关的能力:
角色 | 浏览 | 管理重定向 | 部署 | 管理团队 | 访问日志 |
---|---|---|---|---|---|
管理员 | 是 | 是 | 是 | 是 | 是 |
开发人员 | 是 | 是 | 是 | 否 | 是 |
营销人员 | 是 | 是 | 否 | 否 | 否 |
只读 | 是 | 否 | 否 | 否 | 否 |
在每个 Managed Runtime 环境中,已发布捆绑包中的 React 应用程序在 Node.js 环境中运行。为了响应页面请求并渲染结果,我们在 PWA Kit 的渲染和路由系统的帮助下使用 Express Web 框架。我们称这种 React、Node 和 Express 的组合为应用服务器。(尽管从技术上讲,应用服务器在“无服务器”技术上运行。)应用服务器经过优化,可在提供低计算成本、高可用性、快速渲染和大规模扩展能力的云基础架构上运行。
因为 PWA Kit 的渲染和路由系统处理本地开发环境和 Managed Runtime 环境之间的差异,所以您的代码在部署时以可预测的方式运行。这种可预测性鼓励开发团队更频繁地部署捆绑包,从而提高开发团队的生产力。
目前,应用服务器支持 Transport Layer Security (TLS) 版本 1.2 及更高版本。
在 App Server 上运行的代码可以访问以下环境变量:
DEPLOY_TARGET
:环境的 ID。EXTERNAL_DOMAIN_NAME
:在环境中设置的域名。MOBIFY_PROPERTY_ID
:环境所属项目的 ID。
支持应用服务器的是几个边缘服务,包括:
- 用于保护您的环境免受攻击的 Web 应用程序防火墙 (WAF)
- 加速 API 请求的代理服务器
- 用于缓存请求并加快页面加载的内容交付网络 (CDN)
- 处理请求和处理重定向的 Edge 函数
我们的代理请求指南中详细介绍代理服务器和 CDN。我们的最大化缓存命中率指南中介绍称为请求处理器的边缘函数。
Managed Runtime 的边缘服务战略性地分布在我们的公共云基础架构中。每个服务都尽可能靠近用户,以获得更快的性能。
为了管理您的组织、项目、环境和捆绑包的设置,我们提供两种不同的工具:
- Managed Runtime Admin,基于 Web 的 UI。
- Managed Runtime API,这是一种 REST API,提供与基于 Web 的工具相同的功能和一些附加功能。
将 Runtime Admin 工具用于日常任务,例如将新代码捆绑包部署到环境。在您需要编程控制时使用 API,例如自动创建作为持续集成脚本一部分的环境。
管理工具为您提供了一种自助方式来配置许多设置,包括:
- 允许的 IP 地址
- 允许的访问控制标头
- 当前部署的捆绑包
- 部署区域
- 代理
- 重定向
- 用户权限
- 生产环境标记
对管理工具的访问由 Account Manager 角色和 API 密钥控制。对于持续集成 (CI) 和持续交付 (CD) 流程,具有自己 API 密钥的专用机器人用户通常由您的组织设置。
有趣的事实:与您的网店一样,Runtime Admin 工具是部署到 Managed Runtime 的无标头 React 应用程序。
在构建网店时,请牢记 Managed Runtime 环境的以下限制条件:
- 环境仅响应其 HTTP
Host
标头与 Runtime Admin 中设置的“外部主机名”匹配的请求。 - 路径
/
仅接受 HTTP GET 请求。 - 请求和响应大小不能超过 6 MB。
- HTTP 请求行和标头的最大大小为 10240 字节。超过此大小的请求将返回 HTTP 413 内容过大。
- 默认情况下不支持 Cookie,包括 HTTP 请求
Cookie
和 HTTP 响应Set-Cookie
标头。可以通过在具有 projects_target_partial_update 端点的环境中设置allow_cookies
属性来启用它们。您还可以在 Runtime Admin 的环境设置中启用 Cookie。PWA Kit 版本 3.1.0 或更高版本支持 Cookie。请参阅使用 Cookie 进行个性化设置。 - 不支持以
_
开头的标头请求。这些请求将被丢弃。 - 源自 Managed Runtime 环境的 HTTP 请求不使用固定 IP 地址。要允许来自 App Server 的列表请求,请使用
EC2
的 AWS IP 范围。要允许来自代理的列表请求,请使用CLOUDFRONT_ORIGIN_FACING
。 - 路径前缀
/mobify
是为受管端点保留的。这些端点包括:/mobify/ping
:当环境正常运行时,返回 HTTP 200 响应代码。/mobify/redirect/$path
:返回与 projects_target_redirect_retrieve 类似的响应。/mobify/proxy/$name
:返回来自代理的响应。
- 您可以使用 HTTP 请求标头绕过 CDN 缓存:
x-mobify-cachebreaker: 1
- 环境 IP 允许列表最多支持 250 个 IP 地址。无法提高此限制。
- 环境访问控制标头最多支持 2 个标头。每个标头:
- 最多可包含 128 个字符。
- 可以是字母数字字符和 - 和 _ 字符的组合
- 请参阅访问控制标头。
- App Server 请求的执行时间限制为 20 秒。
- 未处理的承诺拒绝会破坏应用程序渲染。
- 捆绑包的最大大小为 400 MB,捆绑包内所有
ssr_only
和ssr_shared
文件的最大大小为 249 MB。 - 可以上传和提供的静态资源仅限于以下内容类型:
application/javascript
、application/json
、image/png
、image/gif
、image/jpeg
、image/svg+xml
、image/webp
、text/css
、text/plain
和字体(ttf
、woff
、woff2
、otf
等)。所有其他内容类型都需要由外部系统提供服务。
Managed Runtime 代理有不同的 约束条件。
您可以在 Salesforce Status 上订阅有关 Managed Runtime 服务可用性的更新。
现在您已经了解了 Managed Runtime 的主要部分,是时候动手实践了!推送并部署捆绑包指南就是很好的起点。
在使用 Managed Runtime 和 Runtime Admin 之前必须启用它们,并且您必须请求访问它们。要为您的组织启用 Managed Runtime 和 Runtime Admin,请联系您的 Salesforce 帐户团队。要获得访问权限,请让您的 Commerce Cloud 管理员使用 Account Manager 将以下角色之一添加到您的帐户:Managed Runtime User(托管运行时用户)或 Managed Runtime Admin(托管运行时管理员)。