本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
监控和管理成本
与其他任何方法一样 AWS 服务,了解您的 Amazon Cognito 配置和使用对账 AWS 单的影响非常重要。作为将用户池部署到生产环境的准备工作的一部分,请为活动和资源消耗设置监控和保护措施。当你知道去哪里看以及哪些行动会产生额外费用时,你可以设置预防措施,以防账单中出现意外。
Amazon Cognito 会根据您的以下使用量收费。
-
用户池每月活跃用户数 (MAUs)
-
使用OIDC或SAML联合身份MAUs登录的用户池
-
MAUs在具有高级安全功能的用户池中
-
活跃的用户池应用程序客户端和使用客户端凭证进行机器到机器 (M2M) 授权的请求量
-
某些类别的用户池的购买使用量超过了默认配额 APIs
此外,用户池的功能(如电子邮件、SMS消息和 Lambda 触发器)可能会在依赖服务中产生成本。有关完整概述,请参阅亚马逊 Cognito
查看和预测成本
诸如产品发布和向新用户群开放之类的大量活动可能会增加您的MAU数量并产生成本影响。提前估算新用户数量,并随时关注活动。您可能会发现想要通过购买额外的配额容量来容纳音量,或者通过额外的安全措施来控制音量。
您可以在AWS Billing and Cost Management 控制台Cognito
以查看您的使用情况。有关更多信息,请参阅 AWS Billing 用户指南中的查看您的账单。
要监控API请求速率,请在 Service Quotas 控制台中查看利用率指标。例如,客户端凭证请求显示为 ClientAuthentication 请求率。在您的账单中,这些请求与生成这些请求的应用程序客户端相关联。有了这些信息,您就可以公平地将成本分配给多租户架构中的租户。
要获取一段时间内的 M2M 请求数量,您还可以将AWS CloudTrail 事件发送到 CloudWatch Logs 进行分析。使用客户端凭证授予 CloudTrail Token_POST
的事件查询您的事件。以下 CloudWatch Insights 查询返回此计数。
filter eventName = "Token_POST" and @message like '"grant_type":["client_credentials"]' | stats count(*)
管理 成本
Amazon Cognito 根据用户数量、功能使用情况和请求量计费。以下是一些在 Amazon Cognito 中管理成本的技巧,
不要激活不活跃的用户
使用户处于活动状态的典型操作是登录、注册和密码重置。有关更详尽的列表,请参阅每月活跃用户。Amazon Cognito 不会将不活跃的用户计入您的账单。避免任何使用户处于活动状态的操作。取而代之AdminGetUserAPI的是使用该ListUsers操作查询用户。不要对非活跃用户的用户池操作进行大量管理测试。
链接联合用户
使用 SAML 2.0 或 OpenID Connect (OIDC) 身份提供商登录的用户的成本要高于本地用户。您可以将这些用户链接到本地用户配置文件。关联用户可以使用其联合用户附带的属性和访问权限以本地用户身份登录。来自SAML或OIDC IdPs 在一个月内仅使用关联的本地帐户登录的用户按本地用户计费。
管理请求费率
如果您的用户池已接近配额的上限,则可以考虑购买额外的容量来处理该容量。您也许可以减少应用程序中的请求量。有关更多信息,请参阅 优化配额限制的请求速率。
仅在需要新令牌时才申请新代币
使用客户端凭证授予的机器对机器 (M2M) 授权可以满足大量令牌请求。每个新的令牌请求都会影响您的请求速率配额和账单规模。为了优化成本,请在应用程序设计中包括令牌到期设置和令牌处理。
-
缓存访问令牌,以便当您的应用程序请求新令牌时,它会收到先前发布的令牌的缓存版本。当您实现此方法时,您的缓存代理可以防范那些在不知道先前获取的令牌已过期的情况下请求访问令牌的应用程序。缓存令牌非常适合于 Lambda 函数和 Docker 容器等短期微服务。
-
在您的应用程序中实现令牌处理机制,以考虑令牌过期。在之前的代币即将到期之前,请勿申请新令牌。最佳做法是,在代币生命周期的75%左右刷新代币。这种做法可以最大限度地延长令牌持续时间,同时确保应用程序中的用户连续性。
评估每个应用程序的机密性和可用性需求,并将用户池应用程序客户端配置为颁发具有适当有效期的访问令牌。自定义令牌持续时间最适合使用寿命较长的服务器APIs以及能够持续管理凭证请求频率的服务器。
删除未使用的客户端凭据应用程序客户端
M2M 授权账单基于两个因素:令牌请求率和授予客户凭证的应用程序客户端数量。如果未使用用于 M2M 授权的应用程序客户端,请将其删除或移除其颁发客户端凭据的授权。有关管理应用程序客户端配置的更多信息,请参阅使用应用程序客户端进行特定于应用程序的设置。
管理高级安全
在用户池中配置高级安全功能时,高级安全计费率适用于用户池MAUs中的所有功能。如果您的用户不需要高级安全功能,请将他们分成另一个用户池。