View a markdown version of this page

排除 Parameter Store 问题 - Amazon Systems Manager
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

排除 Parameter Store 问题

使用以下信息来帮助解决与 Parameter Store 相关的问题。

排查吞吐量问题

以下信息有助您排查 Parameter Store 中的吞吐量问题。有关吞吐量配额以及节流原因的信息,请参阅优化 Parameter Store 中的吞吐量

应用程序收到 ThrottlingExceptionRateExceeded 错误

问题:调用 GetParameterGetParametersGetParametersByPath 时,应用程序日志或 CloudWatch Logs 显示如下错误:

An error occurred (ThrottlingException) when calling the GetParameters operation (reached max retries: 4): Rate exceeded
  • 解决方案:此错误表示您对这些 API 操作的总调用速率超过当前 Amazon Web Services 区域的账户吞吐量配额。执行以下一项或多项操作:

    • 减少应用程序调用 Parameter Store 的频率。在应用程序中缓存参数值,而不是在每次调用或每个请求中检索这些值。

      有关更多信息,请参阅参数和密钥 Lambda 扩展Using the Amazon Parameter and Secrets Lambda extension to cache parameters and secrets

    • 使用 GetParameters 在单个调用中检索多个已知参数名称,而不是发出单独的 GetParameter 调用或 GetParametersByPath 调用。

    • 当多个实例、容器或函数同时启动时(例如在部署或扩展事件期间)错开读取操作。

    • 如果应用程序使用高效的请求模式后继续产生节流错误,请为您的账户和 Amazon Web Services 区域启用更高的吞吐量。您可以随时启用和禁用更高的吞吐量。成本取决于使用量。有关更多信息,请参阅 Parameter Store 的 Amazon Systems Manager 定价

节流仅在进行 DescribeParameters 调用时发生

问题:尽管 GetParameterGetParametersGetParametersByPath 调用未超过配额,但应用程序在进行 DescribeParameters 调用时仍收到 ThrottlingException 错误。

  • 解决方案DescribeParameters 具有与其他参数检索操作分开的独立吞吐量限制:默认为 3 TPS,启用更高吞吐量时为 10 TPS。减少 GetParameterGetParametersGetParametersByPath 调用量不会影响此限制。

    一个常见的原因是在包含大量参数的账户上带筛选条件调用 DescribeParameters。在应用该筛选条件之前,API 会对账户中的所有参数进行分页。即使筛选后的结果集很小,具有大量参数的账户也可能会超过 DescribeParameters 配额。

    尽可能针对特定的层次结构使用 GetParametersByPath,而不是带筛选条件使用 DescribeParameters。此外还可以减少按计划运行的脚本和自动化中的 DescribeParameters 调用频率。

未出现节流错误,但部署期间延迟增加

问题:未在日志中看到 ThrottlingException 错误,但应用程序在部署、重启或扩展事件期间出现延迟增加或间歇性失败的问题。

  • 解决方案:如果应用程序或 SDK 会自动重试被节流的请求,则重试可能会成功,而永远不会出现节流错误。如果延迟增加,请在 SDK 的日志或指标中检查重试次数。如果出现这些事件时的 Parameter Store 调用重试次数不为零,则表示尽管操作未失败,但您也已接近吞吐量配额。按照优化 Parameter Store 中的吞吐量中介绍的相同优化方法减少重试次数,避免重试变为失败。

aws:ec2:image 参数创建问题排查

使用以下信息可帮助排查创建 aws:ec2:image 数据类型参数的问题。

没有创建实例的权限

问题:您尝试使用 aws:ec2:image 参数创建实例,但收到“You are not authorized to perform this operation.”这样的错误信息。

  • 解决方案:您不具备使用参数值创建 EC2 实例所需的所有权限,例如 ec2:RunInstancesec2:DescribeImagesssm:GetParameter 等所需的权限。请联系贵组织中拥有管理员权限的用户,以请求必要的权限。

EventBridge 报告失败消息“Unable to Describe Resource (无法描述资源)”

问题:您运行了一条命令来创建 aws:ec2:image 参数,但创建参数失败。您会从 Amazon EventBridge 收到一条通知,报告异常“Unable to Describe Resource (无法描述资源)”。

解决方案:此消息可指出以下问题:

  • 您没有 ec2:DescribeImages API 操作所需的所有权限,或者您缺少访问参数中引用的特定映像的权限。请联系贵组织中拥有管理员权限的用户,以请求必要的权限。

  • 作为参数值输入的 Amazon Machine Image (AMI) ID 无效。确保您所输入的 AMI ID 在您使用的当前 Amazon Web Services 区域和账户中可用。

aws:ec2:image 参数不可用

问题:您刚刚运行了一条命令来创建 aws:ec2:image 参数,并且系统报告了版本号,但该参数不可用。

  • 解决方案:当您运行命令来创建使用 aws:ec2:image 数据类型的参数时,将会立即为该参数生成版本号,但必须在该参数可用之前验证参数格式。此过程可能需要数分钟。要监控参数创建和验证过程,可以执行以下操作:

    • 使用 EventBridge 向您发送有关 createupdate 参数操作的通知。这些通知会报告参数操作是否成功。有关在 Eventbridge 中订阅 Parameter Store 事件的信息,请参阅 基于 Parameter Store 事件设置通知或触发操作

    • 在 Systems Manager 控制台的 Parameter Store 部分中,定期刷新参数列表以搜索新参数或更新的参数详细信息。

    • 使用 GetParameter 命令检查新参数或更新的参数。例如,可以使用 Amazon Command Line Interface (Amazon CLI) 执行以下操作:

      aws ssm get-parameter name MyParameter

      对于新参数,将返回一条 ParameterNotFound 消息,直到参数经过验证。对于要更新的现有参数,在参数经过验证之前不会包含有关新版本的信息。

    如果您在验证过程完成之前尝试再次创建或更新参数,系统将报告验证仍在进行中。如果未创建或更新参数,您可以在初始尝试结束 5 分钟后重试。