在使用 CloudFormation for ElastiCache 时,如何排查错误“Status Code: 400; Error Code: xxx(状态代码:400;错误代码:xxx)”?

3 分钟阅读
0

调用我的 AWS CloudFormation 堆栈或对 Amazon ElastiCache 使用 AWS API 调用时,请求失败,我收到以下错误: “Status Code: 400; Error Code: xxx(状态代码:400;错误代码:xxx)” 如何排查此错误?

简短描述

当您直接或使用 CloudFormation 堆栈启动 AWS API 请求时,AWS 会执行初始语法检查。这些检查验证请求是否已完成并具有所有必需参数。以下是发送 Amazon ElastiCache 的 API 请求时出现 400 错误的常见原因:

  • 由于 API 请求节流,您的请求被拒绝。
  • AWS 没有足够的可用容量来完成您的请求。
  • 您的请求中指定的区域或可用区不支持缓存节点。
  • 您使用了无效的参数组合。
  • 您对输入参数使用了无效或超出范围的值。
  • API 缺少必需的参数或操作。
  • 您正在尝试移除另一个 ElastiCache 资源或 AWS 服务当前正在使用的资源。

解决方法

识别您收到的特定 ElastiCache Invoke API 错误。然后,按照该错误对应的问题排查步骤操作。

**注意:**有关可能的错误列表及其描述,请参阅 ElastiCache Invoke API 参考中的常见错误

错误代码:Throttling

错误:“Rate exceeded (Service: AmazonElastiCache; Status Code: 400; Error Code: Throttling; Request ID: xxx)(超出速率(服务:AmazonElastiCache;状态代码:400;错误代码:Throttling;请求编号:xxx))”

此错误表示您的请求因 API 请求节流而被拒绝。这些账户级 API 调用限制并非特定于任何服务。

**注意:**您不能增加或修改特定调用的限制。AWS 会确保 API 调用不会超过最大允许 API 请求速率。这包括来自应用程序的 API 调用、对命令行界面或 AWS 管理控制台的调用。

使用以下方法避免此错误:

  • 使用指数回退和抖动重试调用。
  • 在一段时间内均匀分配您的 API 调用,而不是在短时间内进行多个 API 调用。

错误代码:InsufficientCacheClusterCapacity

错误:“cache.xxx (VPC) is not currently supported in the availability zone xxx.Retry the launch with no availability zone or target: xxx.(Service: AmazonElastiCache; Status Code: 400; Error Code: InsufficientCacheClusterCapacity; Request ID: xxx)(当前可用区 xxx 不支持 cache.xxx(VPC)。在没有可用区或目标的情况下重试启动:xxx。(服务:AmazonElastiCache;状态代码:400;错误代码:InsufficientCacheClusterCapacity;请求编号:xxx))”。

此错误表明 AWS 当前没有足够的可用按需容量来完成您的请求。有关更多信息,请参阅错误消息:InsufficidentCacheClusterCapacity

如果遇到此错误,请执行以下操作:

  1. 等待几分钟,然后再次提交请求。容量频繁变化。
  2. 使用其他缓存节点类型,然后再次提交请求。
  3. 使用其他子网和可用区,然后再次提交请求。

错误代码:SubnetInUse

错误:“The subnet ID subnet-xxx is in use (Service: AmazonElastiCache; Status Code: 400; Error Code: SubnetInUse; Request ID: xxx)(子网编号 subnet-xxx 正在使用(服务:AmazonElastiCache;状态代码:400;错误代码:SubnetInUse;请求编号:xxx))”。

如果您尝试从当前具有关联实例的 Elasticache 子网组中移除子网,则会出现此错误。您必须从子网中移除所有相关资源,然后再次提交请求。有关更多信息,请参阅 DeleteCacheSubnetGroup

错误代码:InvalidParameterValue

此错误表示参数值无效、不受支持或无法在请求中使用。检查请求调用的每个参数。例如,如果您使用了不受支持的参数值,则可能会看到以下某条错误消息:

  • “Invalid AuthToken provided.(Service: AmazonElastiCache; Status Code: 400; Error Code: InvalidParameterValue"; Request ID: xxx)(提供的 AuthToken 无效。(服务:AmazonElastiCache;状态代码:400;错误代码:InvalidParameterValue;请求编号:xxx))”。
    此错误表示将 AUTH 与 ElastiCache for Redis 一起使用时,auth-token 设置不符合约束条件。有关更多信息,请参阅使用 Redis AUTH 命令对用户进行身份验证
  • “The snapshot window and maintenance window must not overlap.(Service: AmazonElastiCache; Status Code: 400; Error Code: InvalidParameterValue; Request ID: xxx)(快照时段和维护时段不得重叠。(服务:AmazonElastiCache;状态代码:400;错误代码:InvalidParameterValue;请求编号:xxx))”。
    无法同时设置快照时段和维护时段。将操作时段调整到另一个时间段以避免此错误。
  • “The number of replicas per node group must be within 0 and 5.(Service: AmazonElastiCache; Status Code: 400; Error Code: InvalidParameterValue; Request ID: xxx)(每个节点组的副本数量必须在 0 和 5 之间。(服务:AmazonElastiCache;状态代码:400;错误代码:InvalidParameterValue;请求编号:xxx))”。
    ElastiCache Redis 支持一个主分片和每个分片 0 到 5 个副本。如果添加的副本节点超过 5 个,则会收到此错误。有关更多信息,请参阅了解 Redis 复制

错误代码:InvalidParameterCombination

此错误表示您的请求调用包含不正确的参数组合或缺少参数。如果发生这种情况,您可能会看到以下某条错误消息:

  • “Cannot find version 5.0.0 for redis (Service: AmazonElastiCache; Status Code: 400; Error Code: InvalidParameterCombination; Request ID: xxx)(找不到 redis 的 5.0.0 版(服务:AmazonElastiCache;状态代码:400;错误代码:InvalidParameterCombination;请求编号:xxx))”。
    此错误表示您的请求调用中指示的 Redis 版本不受支持。有关更多信息,请参阅支持的 ElastiCache for Redis 版本支持的 ElastiCache for Memcached 版本
  • “Cannot restore redis from 6.0.5 to 5.0.6.(Service: AmazonElastiCache; Status Code: 400; Error Code: InvalidParameterCombination; Request ID: xxx)(无法将 redis 从 6.0.5 恢复到 5.0.6。(服务:AmazonElastiCache;状态代码:400;错误代码:InvalidParameterCombination;请求编号:xxx))”。
    当使用备份创建新的 Redis 集群时,ElastiCache for Redis 不支持降级的 Redis 引擎版本。ElastiCache for Redis 也不支持在正在运行的 Redis 集群上降级 Redis 引擎。使用备份创建新 Redis 集群时,Redis 引擎版本必须高于或等于当前引擎版本。
  • “When using automatic failover, there must be at least 2 cache clusters in the replication group.(Service: AmazonElastiCache; Status Code: 400; Error Code: InvalidParameterCombination; Request ID: xxx)(使用自动失效转移时,复制组中必须至少有 2 个缓存群集。(服务:AmazonElastiCache;状态代码:400;错误代码:InvalidParameterCombination;请求编号:xxx))”。
    您可以在至少有一个可用只读副本的 Redis 集群中启用自动失效转移选项。确认您的 Redis 复制组具有多个副本节点,然后再次提交请求。有关更多信息,请参阅利用多可用区最大限度地减少 ElastiCache for Redis 停机时间

相关信息

ElastiCache 的限额

Amazon ElastiCache 错误消息

问题排查 - Amazon ElastiCache for Redis

排查 AWS CLI 错误

AWS 官方
AWS 官方已更新 2 年前