排除 Parameter Store 问题
使用以下信息来帮助解决与 Parameter Store 相关的问题。
排查吞吐量问题
以下信息有助您排查 Parameter Store 中的吞吐量问题。有关吞吐量配额以及节流原因的信息,请参阅优化 Parameter Store 中的吞吐量。
应用程序收到 ThrottlingException 或 RateExceeded 错误
问题:调用 GetParameter、GetParameters 或 GetParametersByPath 时,应用程序日志或 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 调用时发生
问题:尽管 GetParameter、GetParameters 和 GetParametersByPath 调用未超过配额,但应用程序在进行 DescribeParameters 调用时仍收到 ThrottlingException 错误。
-
解决方案:
DescribeParameters具有与其他参数检索操作分开的独立吞吐量限制:默认为 3 TPS,启用更高吞吐量时为 10 TPS。减少GetParameter、GetParameters或GetParametersByPath调用量不会影响此限制。一个常见的原因是在包含大量参数的账户上带筛选条件调用
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:RunInstances、ec2:DescribeImages、ssm:GetParameter等所需的权限。请联系贵组织中拥有管理员权限的用户,以请求必要的权限。
EventBridge 报告失败消息“Unable to Describe Resource (无法描述资源)”
问题:您运行了一条命令来创建 aws:ec2:image 参数,但创建参数失败。您会从 Amazon EventBridge 收到一条通知,报告异常“Unable to Describe Resource (无法描述资源)”。
解决方案:此消息可指出以下问题:
-
您没有
ec2:DescribeImagesAPI 操作所需的所有权限,或者您缺少访问参数中引用的特定映像的权限。请联系贵组织中拥有管理员权限的用户,以请求必要的权限。 -
作为参数值输入的 Amazon Machine Image (AMI) ID 无效。确保您所输入的 AMI ID 在您使用的当前 Amazon Web Services 区域和账户中可用。
新 aws:ec2:image 参数不可用
问题:您刚刚运行了一条命令来创建 aws:ec2:image 参数,并且系统报告了版本号,但该参数不可用。
-
解决方案:当您运行命令来创建使用
aws:ec2:image数据类型的参数时,将会立即为该参数生成版本号,但必须在该参数可用之前验证参数格式。此过程可能需要数分钟。要监控参数创建和验证过程,可以执行以下操作:-
使用 EventBridge 向您发送有关
create和update参数操作的通知。这些通知会报告参数操作是否成功。有关在 Eventbridge 中订阅 Parameter Store 事件的信息,请参阅 基于 Parameter Store 事件设置通知或触发操作。 -
在 Systems Manager 控制台的 Parameter Store 部分中,定期刷新参数列表以搜索新参数或更新的参数详细信息。
-
使用 GetParameter 命令检查新参数或更新的参数。例如,可以使用 Amazon Command Line Interface (Amazon CLI) 执行以下操作:
aws ssm get-parameter nameMyParameter对于新参数,将返回一条
ParameterNotFound消息,直到参数经过验证。对于要更新的现有参数,在参数经过验证之前不会包含有关新版本的信息。
如果您在验证过程完成之前尝试再次创建或更新参数,系统将报告验证仍在进行中。如果未创建或更新参数,您可以在初始尝试结束 5 分钟后重试。
-