如何对使用 CloudFormation for ElastiCache 时出现的“Status Code: 400; Error Code”错误进行故障排除?

3 分钟阅读
0

当我调用 AWS CloudFormation 堆栈或对 Amazon ElastiCache 使用 AWS API 调用时,请求失败并收到类似于以下内容的错误: "Status Code: 400; Error Code: ###" 如何排查此错误?

简短描述

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

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

解决方法

确定您收到的具体的 ElastiCache 调用 API 错误。然后,按照针对该错误列出的故障排除步骤进行操作。

**注意:**有关可能的错误及其描述的列表,请参阅《ElastiCache 调用 API 参考》中的 Common errors

Error Code: Throttling

Error: "Rate exceeded (Service: AmazonElastiCache; Status Code: 400; Error Code: Throttling; Request ID: ###)"

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

**注意:**您无法提高或修改特定调用的限额。AWS 确保 API 调用不超过允许的最大 API 请求速率。这包括来自应用程序的 API 调用,是对命令行接口或 AWS 管理控制台的调用。

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

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

Error Code: InsufficientCacheClusterCapacity

Error: "cache.### (VPC) is not currently supported in the availability zone ###.Retry the launch with no availability zone or target: ###.(Service: AmazonElastiCache; Status Code: 400; Error Code: InsufficientCacheClusterCapacity; Request ID: ###)"。

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

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

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

Error Code: SubnetInUse

Error: "The subnet ID subnet-### is in use (Service: AmazonElastiCache; Status Code: 400; Error Code: SubnetInUse; Request ID: ###)"。

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

Error Code: InvalidParameterValue

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

  • "Invalid AuthToken provided.(Service: AmazonElastiCache; Status Code: 400; Error Code: InvalidParameterValue"; Request ID: ###)"。
    此错误表明,在使用 ElastiCache for Redis 的 AUTH 时,auth-token 设置不符合约束条件。有关更多信息,请参阅 Authenticating with the Redis AUTH command
  • "The snapshot window and maintenance window must not overlap.(Service: AmazonElastiCache; Status Code: 400; Error Code: InvalidParameterValue; Request ID: ###)"。
    不可将快照窗口和维护窗口设在同一时间段。将操作窗口调整到另一个时间段以避免此错误。
  • "The number of replicas per node group must be within 0 and 5.(Service: AmazonElastiCache; Status Code: 400; Error Code: InvalidParameterValue; Request ID: ###)"。
    ElastiCache Redis 每个分片支持一个主节点和 0 至 5 个副本节点。如果您添加超过 5 个副本节点,则会收到此错误。有关更多信息,请参阅 Understanding Redis replication

Error Code: InvalidParameterCombination

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

  • "Cannot find version 5.0.0 for redis (Service: AmazonElastiCache; Status Code: 400; Error Code: InvalidParameterCombination; Request ID: ###)"。
    此错误表示系统不支持您的请求调用中指定的 Redis 版本。有关更多信息,请参阅 Supported ElastiCache for Redis verisonsSupported ElastiCache for Memcached versions
  • "Cannot restore redis from 6.0.5 to 5.0.6.(Service: AmazonElastiCache; Status Code: 400; Error Code: InvalidParameterCombination; Request ID: ###)"。
    使用备份创建新的 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: ###)"。
    您可以在至少有一个可用只读副本的 Redis 集群中启用自动故障转移选项。验证您的 Redis 复制组是否有多个副本节点,然后再次提交您的请求。有关更多信息,请参阅 Minimizing downtime in ElastiCache for Redis with Multi-AZ

相关信息

Quotas for ElastiCache

Amazon ElastiCache error messages

Troubleshooting - Amazon ElastiCache for Redis

排查 AWS CLI 错误

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