针对 Amazon SQS 网络错误进行问题排查 - Amazon Simple Queue Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

针对 Amazon SQS 网络错误进行问题排查

以下主题介绍了 Amazon SQS 中的网络问题的最常见原因,以及如何进行问题排查。

ETIMEOUT error

当客户端无法建立与 Amazon SQS 端点的 TCP 连接时,就会发生 ETIMEOUT 错误。

故障排除

  • 检查网络连接

    运行 telnet 等命令来测试与 Amazon SQS 的网络连接。

    Example: telnet sqs.us-east-1.amazonaws.com 443

  • 检查网络设置

    • 确保您的本地防火墙规则、路由和访问控制列表(ACL)允许您使用的端口上的流量。

    • 安全组出站(出口)规则必须允许到端口 80 或 443 的流量。

    • 网络 ACL 出站(出口)规则必须允许到 TCP 端口 80 或 443 的流量。

    • 网络 ACL 入站(入口)规则必须允许 TCP 端口 1024-65535 上的流量。

    • 连接到公共互联网的 Amazon Elastic Compute Cloud(Amazon EC2)实例必须具有互联网连接

  • Amazon Virtual Private Cloud(Amazon VPC)端点

    
如果您通过 Amazon VPC 端点访问 Amazon SQS,则端点安全组必须允许通过端口 443 进入客户端安全组的入站流量。与 VPC 端点的子网关联的网络 ACL 必须具有以下配置:

    • 网络 ACL 出站(出口)规则必须允许 TCP 端口 1024-65535(临时端口)上的流量。

    • 网络 ACL 入站(入口)规则必须允许端口 443 上的流量。

此外,Amazon SQS VPC 端点 Amazon Identity and Access Management(IAM)策略必须允许访问。以下示例 VPC 端点策略指定允许 IAM 用户 MyUser 将消息发送到 Amazon SQS 队列 MyQueue。通过该 VPC 端点的其他操作、IAM 用户和 Amazon SQS 资源的访问请求都会被拒绝。

{ "Statement": [{ "Action": ["sqs:SendMessage"], "Effect": "Allow", "Resource": "arn:aws:sqs:us-east-2:123456789012:MyQueue", "Principal": { "AWS": "arn:aws:iam:123456789012:user/MyUser" } }] }

UnknownHostException error

当无法确定主机 IP 地址时,就会发生 UnknownHostException 错误。

故障排除

使用 nslookup 实用程序返回与主机名关联的 IP 地址:

  • Windows and Linux OS

    nslookup sqs.<region>.amazonaws.com 
  • Amazon CLI 或者适用于 Python 的 SDK 原有端点:

    nslookup <region>.queue.amazonaws.com

如果收到失败的输出,请按照《Amazon Knowledge Center 指南》中的“How does DNS work and how do I troubleshoot partial or intermittent DNS failures?”的说明进行操作。

如果收到有效的输出,则可能是应用程序级别的问题。要解决应用程序级别的问题,可以尝试以下方法:

  • 重启您的应用程序。

  • 确认您的 Java 应用程序没有错误的 DNS 缓存。如果可能,对您的应用程序进行配置,使其符合 DNS TTL。有关更多信息,请参阅 Setting the JVM TTL for DNS name lookups

有关如何针对网络错误进行问题排查的更多信息,请参阅《Amazon Knowledge Center 指南》中的“How do I troubleshoot Amazon SQS ‘ETIMEOUT’ and ‘UnknownHostException’ connection errors?”