

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# AWS AppConfig 浏览器和移动设备使用注意事项
<a name="appconfig-retrieving-mobile"></a>

功能标志使您能够动态更新网页和移动应用程序的体验，无需应用商店发布带来的开销、风险或僵化流程。通过功能标志，您可以在自行选择的时间向用户群逐步发布变更。如果遇到错误，您可以立即回滚变更，无需用户升级到新的软件版本。简而言之，功能标志为应用程序变更部署提供了更强的控制力和灵活性。

以下各节介绍在网页和移动设备上使用 AWS AppConfig 功能标志的重要注意事项。

**Topics**
+ [配置数据与标志检索](#appconfig-retrieving-mobile-configuration-data)
+ [身份验证和 Amazon Cognito](#appconfig-retrieving-mobile-authentication)
+ [缓存](#appconfig-retrieving-mobile-caching)
+ [客户细分](#appconfig-retrieving-mobile-segmentation)
+ [带宽（移动使用案例）](#appconfig-retrieving-mobile-experience-bandwidth)
+ [其他标志使用案例](#appconfig-retrieving-mobile-use-cases)

## 配置数据与标志检索
<a name="appconfig-retrieving-mobile-configuration-data"></a>

对于浏览器和移动端使用场景，许多客户选择在网页/移动应用与 AWS AppConfig之间设置代理层。这样做可以使您的 AWS AppConfig 通话量与用户群规模脱钩，从而降低成本。[它还使您能够利用[AWS AppConfig 代理](https://docs.aws.amazon.com/appconfig/latest/userguide/appconfig-agent-how-to-use.html)，它可以优化旗帜检索性能并支持多变体标志等功能。](https://docs.aws.amazon.com/appconfig/latest/userguide/appconfig-creating-multi-variant-feature-flags.html) AWS AppConfig 建议使用 AWS Lambda 来创建代理。与其直接从中检索标志 AWS AppConfig，不如配置 Lamb [AWS AppConfig da 扩展以在 Lambda 函数](https://docs.aws.amazon.com/appconfig/latest/userguide/appconfig-integration-lambda-extensions.html)中检索您的功能标志。编写函数以接受来自事件请求的 AWS AppConfig 检索参数并在 Lambda 响应中返回相应的配置数据。使用 [Lambda 函数 URL](https://docs.aws.amazon.com/lambda/latest/dg/urls-configuration.html) 将您的代理暴露到互联网。

配置代理后，考虑您检索数据的频率。移动使用案例通常不需要高频轮询间隔。将 AWS AppConfig Agent 配置为刷新数据的 AWS AppConfig 频率高于应用程序从代理刷新的频率。

## 身份验证和 Amazon Cognito
<a name="appconfig-retrieving-mobile-authentication"></a>

Lambda 函数 URL 支持[两种访问控制形式](https://docs.aws.amazon.com/lambda/latest/dg/urls-auth.html)，`AWS_IAM` 和 `NONE`。如果您希望在 Lambda 函数中实现自己的身份验证和授权，请使用 `NONE`。如果您的使用案例允许将端点暴露给公共，并且您的配置数据不包含敏感数据，`NONE` 也是推荐选项。对于所有其他使用案例，请使用 `AWS_IAM`。

**重要**  
如果您在没有身份验证的情况下将端点暴露到互联网，请确保您的配置数据不泄露敏感数据，包括个人身份信息 (PII)、用户 ID 或未发布的功能名称。

如果您选择使用 `AWS_IAM`，您将需要使用 [Amazon Cognito](https://docs.aws.amazon.com/cognito/latest/developerguide/what-is-amazon-cognito.html) 管理凭证。要开始使用 Amazon Cognito，您需要创建一个身份池。身份池允许您为经过身份验证的用户或访客用户向您的应用程序提供短期凭证。您需要在身份池中添加角色，允许用户使用 `InvokeFunctionUrl` 来访问您的 Lambda 函数。这样做使您的应用程序实例能够访问检索配置数据所需的凭证。

在您的应用程序中使用 Amazon Cognito 时，请考虑使用 [AWS Amplify](https://docs.aws.amazon.com/amplify/)。Amplify 简化了 mobile/web 应用程序与 Amazon Cognito 的交互 AWS 并提供了对 Amazon Cognito 的内置支持。

## 缓存
<a name="appconfig-retrieving-mobile-caching"></a>

使用时 AWS AppConfig，应始终在设备或浏览器中本地缓存配置数据。缓存具有以下优势：
+ 通过降低延迟和电量消耗提升性能
+ 消除网络访问依赖以增强稳定性
+ 降低数据检索频率以缩减成本

针对移动使用案例，建议实现内存缓存与设备端持久化缓存。配置应用程序优先从内存缓存获取配置，必要时再回退至代理获取。从代理成功获取配置后，立即更新内存缓存并将配置持久化至设备存储。通过后台进程遍历缓存并刷新各项配置。应用启动后首次获取配置时，若检索失败则应采用持久化配置（并用其初始化内存缓存）。

## 客户细分
<a name="appconfig-retrieving-mobile-segmentation"></a>

使用功能标志时，可能需要按客户群体划分功能体验。为此可在标志检索调用中提供上下文，并配置规则以根据上下文返回不同的[功能标志变体](https://docs.aws.amazon.com/appconfig/latest/userguide/appconfig-creating-multi-variant-feature-flags.html)。例如：可为 iOS 18.X 用户设置功能标志变体，为 iOS 17.X 用户设置另一变体，并为其他 iOS 版本设置默认标志。使用变体，您可以将应用程序的每个 iOS 版本配置为在同一环境中定位相同的配置，但是根据检索调用中提供的上下文（例如，“version”：OS18.1“i”），设备将收到相应的配置变体。

**注意**  
如果您在移动用例中使用 AWS AppConfig 功能标志变体，则必须使用代理和 AWS AppConfig 代理来检索功能标志。

如果您选择不使用 AWS AppConfig 代理来检索功能标志，则可以利用 AWS AppConfig [环境](https://docs.aws.amazon.com/appconfig/latest/userguide/appconfig-creating-environment.html)进行简单的低基数分割。环境是目标的逻辑部署组。除按开发、测试、生产环境划分配置外，还可通过创建移动特定环境（如设备类型、操作系统主版本）细分客户群。通过独立环境，可部署相同或不同的配置数据集以满足特定客户群需求。

## 带宽（移动使用案例）
<a name="appconfig-retrieving-mobile-experience-bandwidth"></a>

建议保持每个标志集的较小体积。移动使用案例通常面临低带宽限制。最小化数据体积有助于维持跨用户群的一致性体验。鉴于移动设备常在低带宽或无网络环境下运行，设备端缓存至关重要。还需确保应用代码在无法获取配置数据时具备优雅降级能力。

## 其他标志使用案例
<a name="appconfig-retrieving-mobile-use-cases"></a>

功能标志的力量不仅限于功能发布的便利性。长期存在的操作标志可用于改善应用程序的操作状态。例如，您可以创建一个性能监控开关，在事件期间发出额外的指标和调试数据。或者，您可能希望为一部分客户群维护和调整应用程序的刷新率。