

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 對 Amazon SQS 網路錯誤進行故障診斷
<a name="troubleshooting-network-errors"></a>

下列主題涵蓋 Amazon SQS 中網路問題的最常見原因，以及如何進行故障診斷。

## ETIMEOUT error
<a name="etimeout-error"></a>

當用戶端無法建立與 Amazon SQS 端點的 TCP 連線時，ETIMEOUT就會發生錯誤。

**故障診斷：**
+ **檢查網路連線**

  透過執行 等命令來測試您與 Amazon SQS 的網路連線`telnet`。

  Example: telnet sqs.us-east-1.amazonaws.com 443
+ **檢查網路設定**
  + 請確定您的本機防火牆規則、路由和存取控制清單 (ACLs) 允許您使用的連接埠上的流量。
  + 安全群組傳出 （傳出） 規則必須允許流向連接埠 80 或 443 的流量。
  + 網路 ACL 傳出 （輸出） 規則必須允許 TCP 連接埠 80 或 443 的流量。
  + 網路 ACL 傳入 （傳入） 規則必須允許 TCP 連接埠 1024-65535 上的流量。
  + 連線至公有網際網路的 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體必須具備[網際網路連線](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Internet_Gateway.html#vpc-igw-internet-access)能力。
+ **Amazon Virtual Private Cloud (Amazon VPC) 端點**

   如果您透過 Amazon VPC 端點存取 Amazon SQS，則端點安全群組必須允許連接埠 443 上用戶端安全群組的傳入流量。與 VPC 端點子網路相關聯的網路 ACL 必須具有此組態：
  + 網路 ACL 傳出 （輸出） 規則必須允許 TCP 連接埠 1024-65535 （暫時性連接埠） 上的流量。
  + 網路 ACL 傳入 （傳入） 規則必須允許連接埠 443 上的流量。

 此外，Amazon SQS VPC 端點 AWS Identity and Access Management (IAM) 政策必須允許存取。下列範例 VPC 端點政策指定允許 IAM 使用者 {{MyUser}} 傳送訊息至 Amazon SQS 佇列 {{MyQueue}}。其他動作、IAM 使用者和 Amazon SQS 資源會被拒絕透過 VPC 端點存取。

```
{
    "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
<a name="unknownhostexception-error"></a>

無法判斷主機 IP 地址時，會發生此UnknownHostException錯誤。

**故障診斷：**

使用 nslookup公用程式來傳回與主機名稱相關聯的 IP 地址：
+ Windows and Linux OS

  ```
  nslookup sqs.<region>.amazonaws.com 
  ```
+ AWS CLI 或適用於 Python 舊版端點的 SDK：

  ```
  nslookup <region>.queue.amazonaws.com
  ```

如果您收到失敗的輸出，請遵循 *AWS 知識中心指南*中的 [DNS 如何運作，以及如何疑難排解部分或間歇性 DNS 失敗？](https://repost.aws/knowledge-center/sqs-connection-error)中的指示。

如果您收到有效的輸出，則可能是應用程式層級的問題。若要解決應用程式層級問題，請嘗試下列方法：
+ 重新啟動您的應用程式。
+ 確認您的 Java 應用程式沒有錯誤的 DNS 快取。如果可能，請設定您的應用程式以遵守 DNS TTL。如需詳細資訊，請參閱[設定 DNS 名稱查詢的 JVM TTL](https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/jvm-ttl-dns.html)。

如需有關如何疑難排解網路錯誤的其他資訊，請參閱 *AWS 知識中心指南*中的[如何疑難排解 Amazon SQS “ETIMEOUT” 和 “UnknownHostException” 連線錯誤？](https://repost.aws/knowledge-center/sqs-connection-error)。