Help us improve the AWS re:Post Knowledge Center by sharing your feedback in a brief survey. Your input can influence how we create and update our content to better support your AWS journey.
如何對在 Amazon S3 儲存貯體上執行 “cp” 或 “sync” 命令時出現的連線錯誤進行疑難排解?
我想在我的 Amazon Simple Storage Service (Amazon S3) 儲存貯體上執行 “cp” 或 “sync” AWS Command Line Interface (AWS CLI) 命令。但收到錯誤。
解決方法
**注意:**如果您在執行 AWS CLI 命令時收到錯誤,請參閱對 AWS CLI 錯誤進行疑難排解。此外,請確定您使用的是最新的 AWS CLI 版本。
若要執行 AWS CLI 上的 cp 或 sync 命令,您的機器必須連線至正確的 Amazon S3 端點。否則,您會收到錯誤訊息,顯示服務無法連線至端點網址或連線逾時。根據您收到的錯誤,採取以下疑難排解動作。
「無法連線至端點網址」錯誤
確認您擁有正確的區域和 Amazon S3 端點
當您執行 AWS CLI 中的命令時,它會向該 AWS 區域的預設 Amazon S3 端點傳送 API 請求。當您指定區域時,AWS CLI 會向特定區域的 Amazon S3 端點傳送 API 請求。然後,AWS CLI 可以將請求重新導向至儲存貯體的區域 Amazon S3 端點。
如果指定的區域或端點中出現錯字或錯誤,您可能會收到「Could not connect to the endpoint URL」錯誤。例如,以下命令因為端點名稱中多了一個e而傳回錯誤:
aws s3 cp filename s3://DOC-EXAMPLE-BUCKET/ --endpoint-url https://s3-acceleratee.amazonaws.com
在您執行 cp 或 sync 命令時,請確認相關聯的區域和 Amazon S3 端點正確。在執行 AWS CLI 命令時,使用 --debug 旗標來識別 AWS CLI 所使用的端點。命令範例:
aws s3 cp filename s3://DOC-EXAMPLE-BUCKET/ --debug
**注意:**如果您使用 Amazon S3 Transfer Acceleration,請為該儲存貯體將其啟用。使用端點 bucket-name.s3-accelerate.amazonaws.com。或者,使用雙堆疊端點 bucket-name.s3-accelerate.dualstack.amazonaws.com 來透過 IPv6 連線至該儲存貯體。將 bucket-name 替換為您的儲存貯體名稱。
確認您的 DNS 可以解析到 Amazon S3 端點
若要確認您的 DNS 可以解析到該 Amazon S3 端點,請使用 DNS 查詢工具,例如 nslookup, dig 或 ping。命令範例:
nslookup s3.amazonaws.com
dig s3.amazonaws.com
ping s3.amazonaws.com
如果您的 DNS 無法解析到 Amazon S3 端點,請對您的 DNS 組態進行疑難排解。如果您使用 Amazon Route 53 做為 DNS 提供者,請參閱疑難排解 Amazon Route 53。
「Connect timeout on endpoint URL」錯誤
確認您的網路可以連線至 Amazon S3 端點
確認您的網路防火牆允許流量傳輸到您用於 Amazon S3 流量的連接埠上的 Amazon S3 端點。
例如,以下 telnet 命令會測試連接埠 443 上 ap-southeast-2 Amazon S3 端點的連線情況:
telnet s3.ap-southeast-2.amazonaws.com 443
若要擷取並分析網路封包,並確認您的機器能成功與 Amazon S3 端點完成 TCP 交握,請執行以下 tcpdump 命令:
sudo tcpdump -i eth0 'host s3.ap-southeast-2.amazonaws.com and port 443' -s0 -w samplecapture.pcap
注意:將 eth0 替換為您的彈性網路介面,將 ap-southeast-2 替換為您的 Amazon S3 端點區域,並將 443 替換為您的連接埠。-s0 旗標會擷取完整封包,-w samplecapture.pcap 將擷取寫入檔案。您可以使用像 Wireshark 這類工具分析檔案中的資訊。
尋找 TCP 三向交握 (SYN, SYN-ACK, ACK) 以確認連線。如果您只看到 SYN 封包而沒有 SYN-ACK 回應,則可能存在防火牆或路由問題。
若要偵測到通往 Amazon S3 端點路徑上的路由問題或封包遺失,請執行以下 mtr 命令:
mtr -n -T -c 200 s3.ap-southeast-2.amazonaws.com -P 443 --report
注意:將 ap-southeast-2 替換為您的區域,將 443 替換為您的連接埠。-n 旗標會停用 DNS 解析以加速測試,-T 旗標會使用 TCP 封包,比網際網路控制訊息協定 (ICMP) 更精確。上述命令會執行 200 個測試週期以提高統計精確度,並生成報告。
在 Windows 上,您可以使用 WinMTR 進行類似的路由測試。尋找可能影響與 Amazon S3 端點連線的高延遲、封包遺失或路由迴圈。
對於 Amazon EC2 執行個體,檢查 VPC 組態
如果在 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體上看到「連線逾時」錯誤,請檢查您的虛擬私有雲端 (VPC) 組態。
如果 EC2 執行個體位於公共子網路,請檢查以下設定:
- 確認您在執行個體的 VPC 的 網路存取控制清單 (網路 ACL) 中,為連接埠 443 設定了 ALLOW 傳出規則。
- 如果網路 ACL 限制存取特定區域的 Amazon S3 IP 位址範圍,請檢查 AWS CLI 組態檔。確認您指定了正確的區域。
如果 EC2 執行個體位於私有子網路,請檢查以下設定:
- 確保您已將 NAT 閘道與子網路的子網路路由表關聯。
- 如果您使用 VPC 端點存取 Amazon S3,請確認 AWS CLI 組態檔設定了正確的區域。
**注意:**Amazon S3 的 VPC 端點為區域特定。例如,您執行 sync 並使用 --region us-west-1,但 VPC 端點位於不同區域。結果,您會收到「Could not connect to the endpoint URL」錯誤。
當您在 VPC 中使用 AWS PrivateLink 存取 Amazon S3 時,請使用 Reachability Analyzer。此工具可協助您識別安全群組、網路 ACL 或路由表中的錯誤設定,這些錯誤可能會阻礙連線。例如,建立 Reachability Analyzer 分析以檢查您的執行個體與介面端點之間的路徑。
相關內容
- 已提問 1 年前
- 已提問 2 年前
- 已提問 1 年前

