วิธีแก้ปัญหา AWS CLI Error「Connect timeout on/Could not connect to the endpoint URL: ~」
ปัญหาที่เกิดขึ้น
ทำการรันคำสั่ง AWS CLI Command แล้วเจอกับ Error ตามด้านล่างนี้ครับ
Could not connect to the endpoint URL: "https://<ชื่อ Service>.<ชื่อ Region>.amazonaws.com/"
Connect timeout on endpoint URL: "https://<ชื่อ Service>.<ชื่อ Region>.amazonaws.com/"
รบกวนช่วยวิธีการแก้ไข Error นี้หน่อยครับ
วิธีแก้ปัญหา
ทำการตรวจสอบสภาพแวดล้อมที่ใช้ในการรันคำสั่ง AWS CLI Command ว่าตรงกับเงื่อนไขต่อไปนี้หรือไม่
- ได้ทำการตั้งค่าให้สามารถเชื่อมต่อไปยัง AWS Service Endpoint ด้วย internet ได้หรือไม่
แล้วให้ทำการตรวจสอบ AWS CLI Command ที่รันคำสั่งไปได้ทำการตั้งค่าด้านล่างนี้ถูกต้องหรือไม่
- Option การตั้งค่า
--region
มีข้อผิดพลาดหรือไม่
กรณีที่ 1: เชื่อมต่อไปยัง AWS Service Endpoint ด้วย internet ไม่ได้
เพื่อจำลองสถานกาารณ์ Error นี้ เราได้ทำการดังต่อไปนี้
- สร้าง Public Subnet
- สร้าง EC2 instance ใน Subnet ที่สร้างขึ้น
- ทำการติด IAM Role ที่มีสิทธิในการเขียนและอ่านไฟล์ใน S3 ให้กับ EC2 instance
ในสภาพนี้ เราทำการทดสอบเชื่อมต่อไปยัง Endpoint จะสังเกตได้ว่า CLI Command สามารถรันคำสั่งได้สำเร็จ
$ aws s3 ls
2023-06-19 06:23:13 testbucket0123456789
2023-06-20 04:06:12 <ย่อ>
- ทำการ Block(Deny) การเชื่อมต่อ Port 443 ผ่าน Access Control List(ACL) ของ Subnet
เนื่องจากการเชื่อมต่อไปยัง Endpoint ไม่สามารถใช้ Port 443 ได้ ทำให้ไม่สามารถเชื่อมต่อได้
$ aws s3 ls
Connect timeout on endpoint URL: "https://s3.amazonaws.com/"
กรณีที่ 2: Option --region มีข้อผิดพลาด
เมื่อเราลองทำการทดสอบรันคำสั่ง AWS CLI Command ไปยัง Region: ap-northeast-6 ที่ไม่มีอยู่ จะเห็นว่าเกิด Error เนื่องจากเราทำการเชื่อมต่อยัง Endpoint ที่ไม่มีอยู่จริง
$ aws s3 ls --region ap-northeast-6
Could not connect to the endpoint URL: "https://sts.ap-northeast-6.amazonaws.com/"
สรุป
หากท่านผู้อ่านที่พบปัญหา Connect timeout on/Could not connect to the endpoint URL เมื่อทำการเชื่อมต่อไปยัง Endpoint สามารถตรวจสอบวิธีแก้ไขปัญหาตามในหัวข้อ วิธีแก้ปัญหา เพื่อดูสาเหตุ และวิธีแก้ไขได้ครับ
บทความอ้างอิง
Troubleshoot endpoint URL connection error in Amazon S3 | AWS re:Post (English)