对亚马逊 SQS API 错误进行故障排除 - Amazon Simple Queue Service

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

对亚马逊 SQS API 错误进行故障排除

以下主题涵盖调用 Amazon SQS API 时返回的最常见错误以及如何对其进行故障排除。

QueueDoesNotExist 错误

当亚马逊 SQS 服务找不到上述亚马逊 SQS 操作队列时,将返回此错误。

可能的原因和缓解措施:

  • 区域不正确:查看 Amazon SQS 客户端配置,确认您在客户端上配置的区域是否正确。当你没有在客户端上配置区域时,SDK 或从配置文件或环境变量 AWS CLI 中选择区域。如果 SDK 在配置文件中找不到区域,则默认情况下 SDK 会将该区域设置为 us-east-1。

  • 队列最近可能被删除:如果队列在 API 调用之前被删除,那么 API 调用将返回此错误。在错误发生之前检查是否 CloudTrail有任何DeleteQueue操作。

  • 权限问题:如果发出请求的 AWS Identity and Access Management (IAM) 用户或角色没有所需的权限,则您可能会收到以下错误:

    The specified queue does not exist or you do not have access to it.

    检查权限,然后使用正确的权限进行 API 调用。

有关排除QueueDoesNotExist错误的更多详细信息,请参阅在我的 Amazon SQS 队列发出 API 调用时如何解决 QueueDoesNotExist 错误?AWS 知识中心指南中。

InvalidAttributeValue 错误

更新 Amazon SQS 队列资源策略或使用错误策略或委托人的属性时,将返回此错误。

可能的原因和缓解措施:

  • 资源策略无效:检查资源策略是否包含所有必填字段。有关更多信息,请参阅 IAM JSON 策略元素参考验证 IAM 策略。您还可以使用 IAM 策略生成器来创建和测试 Amazon SQS 资源策略。确保策略采用 JSON 格式。

  • 委托人无效:确保该Principal元素存在于资源策略中并且该值有效。如果您的 Amazon SQS 资源策略Principal元素包含 IAM 实体,则在使用该策略之前,请确保该实体存在。Amazon SQS 会验证资源策略并检查 IAM 实体。如果 IAM 实体不存在,您将收到一条错误消息。要确认 IAM 实体,请使用GetRoleGetUserAPI。

有关如何解决InvalidAttributeValue错误的更多信息,请参阅在我的 Amazon SQS 队列发出 API 调用时如何解决 QueueDoesNotExist 错误?AWS 知识中心指南中。

ReceiptHandle 错误

发出 DeleteMessageAPI 调用时,如果收据句柄不正确ReceiptHandleIsInvalid或已过期,则InvalidParameterValue可能会返回错误或。

  • ReceiptHandleIsInvalid 错误:如果收据账号不正确,您将收到与以下示例类似的错误:

    An error occurred (ReceiptHandleIsInvalid) when calling the DeleteMessage operation: The input receipt handle <YOUR RECEIPT HANDLE> is not a valid receipt handle.
  • InvalidParameterValue 错误:如果收据账号已过期,您将收到与以下示例类似的错误:

    An error occurred (InvalidParameterValue) when calling the DeleteMessage operation: Value <YOUR RECEIPT HANDLE> for parameter ReceiptHandle is invalid. Reason: The receipt handle has expired.

可能的原因和缓解措施:

接收句柄是为每条收到的消息创建的,并且仅在可见性超时时间内有效。当可见性超时时间到期时,消息将在队列中对消费者可见。当你再次收到消费者发来的消息时,你会收到一个新的收据账号。为防止出现错误或过期的收据处理错误,请使用正确的收据句柄在 Amazon SQS 队列可见性超时时间内删除该消息。

有关如何解决ReceiptHandle错误的更多信息,请参阅在使用 Amazon SQS DeleteMessage API 调用时如何解决 “ReceiptHandleIsInvalid” 和 “InvalidParameter值” 错误?AWS 知识中心指南中。