ฉันกำลังสร้างแอปใน AWS
ฉันได้ปรับใช้โครงการส่วนหน้า Reactjs ของฉันในอินสแตนซ์ EC2 แทนที่จะให้ผู้ใช้จากโลกอินเทอร์เน็ตภายนอกเข้าชมอินสแตนซ์ EC2 ของฉันโดยตรง ฉันต้องการวางไว้หลัง AWS API Gateway ดังนั้น AWS API Gateway จะเป็นจุดเริ่มต้นเดียวสำหรับบริการส่วนหน้าและส่วนหลังของแอปของฉัน นี่คือแผนการที่จะไปกับ:
โลกภายนอก ---> เกตเวย์ AWS API ---> Network Load Balancer ---> อินสแตนซ์ VPC Target Group / EC2 ของฉัน
นี่คือสิ่งที่ฉันได้ทำ:
โครงการ Reactjs Frontend ทำงานได้ดีในอินสแตนซ์ EC2; ฉันสามารถเยี่ยมชมหน้าเว็บด้วยที่อยู่ IP สาธารณะของอินสแตนซ์ EC2
กำหนดกลุ่มเป้าหมายและ Network Load Balancer อย่างดี ฉันยืนยันโดยการป้อนชื่อ DNS ของ NLB ในเบราว์เซอร์ เช่น http://myapp-frontend-NLB-c11112esd43524rw.elb.ap-northeast-1.amazonaws.com
และโหลด / เปิดหน้าเว็บส่วนหน้าของแอปสำเร็จ
ฉันได้สร้างเกตเวย์ AWS API ใหม่ (REST API) และกำหนดค่าชื่อโดเมนแบบกำหนดเองสำหรับเกตเวย์แล้ว (ด้วยใบรับรอง https ที่ดูแลใน AWS Certificate Manager)
เช่น โดเมนที่กำหนดเองคือ frontend.myapp.com
;
ชื่อโดเมน API Gateway คือ d-123sdf1234asd.execute-api.ap-northeast-1.amazonaws.com
และฉันได้สร้างใหม่ สวพ.FM91
บันทึกในผู้ให้บริการ DNS ของฉันสำหรับพวกเขา ดังนั้น frontend.myapp.com
ชี้ไปที่ d-123sdf1234asd.execute-api.ap-northeast-1.amazonaws.com
ฉันได้ติดตามเอกสาร aws นี้แล้ว: https://docs.aws.amazon.com/apigateway/latest/developerguide/getting-started-with-private-integration.html ทีละขั้นตอนและกำหนดค่าลิงก์ VPC, ทรัพยากร API, ประเภทการรวม ฯลฯ
หลังจากปรับใช้ API ที่สร้างขึ้นแล้ว เมื่อฉันคลิกเปิด Invoke URL (ในรูปแบบ https://123qwe123qe.execute-api.ap-northeast-1.amazonaws.com/[เวที]
) ฉันสามารถดูโค้ด HTML ที่ส่งคืนได้
ฉันคาดหวังว่าเมื่อฉันไป frontend.myapp.com
ในเบราว์เซอร์ ในที่สุด DNS จะนำทราฟฟิกไปยังชื่อโดเมนของ API Gateway d-123sdf1234asd.execute-api.ap-northeast-1.amazonaws.com
และ API Gateway จะส่งคำขอไปยัง NLB เป็นต้น และในที่สุดก็จะโหลดหน้าเว็บ / หรือส่งคืนรหัส HTML เดียวกัน
อย่างไรก็ตามเมื่อฉันไปเยี่ยม frontend.myapp.com
ในเบราว์เซอร์ไม่มีการตอบสนอง ฉันคิดว่าระเบียน DNS ไม่ทำงาน ขุด + ติดตาม docloud.iwg-inc.co.jp
ให้ผลลัพธ์ดังต่อไปนี้:
; <<>> DiG 9.10.6 <<>> +trace frontend.myapp.com
;; ตัวเลือกส่วนกลาง: +cmd
. 3240 ใน NS i.root-servers.net
. 3240 ใน NS d.root-servers.net
. 3240 IN NS b.root-servers.net
. 3240 IN NS m.root-servers.net
. 3240 ใน NS j.root-servers.net
. 3240 ใน NS h.root-servers.net
. 3240 IN NS f.root-servers.net
. 3240 IN NS g.root-servers.net
. 3240 IN NS k.root-servers.net
. 3240 IN NS c.root-servers.net
. 3240 IN NS a.root-servers.net
. 3240 IN NS l.root-servers.net
. 3240 IN NS e.root-servers.net
;; ได้รับ 811 ไบต์จาก 240d:1a:6a5:c900:e67e:66ff:fe1f:bf4c#53(240d:1a:6a5:c900:e67e:66ff:fe1f:bf4c) ใน 29 ms
...ผลลัพธ์อื่นๆ...
frontend.myapp.com 14400 ใน NS d-123sdf1234asd.execute-api.ap-northeast-1.amazonaws.com
;; ได้รับ 117 ไบต์จาก 54.68.111.244#53(ns4.jp-domains.jp) ใน 131 ms
;; หมดเวลาการเชื่อมต่อ; ไม่สามารถเข้าถึงเซิร์ฟเวอร์ได้
อย่างที่เห็น, frontend.myapp.com
แน่นอนชี้ไปที่ d-123sdf1234asd.execute-api.ap-northeast-1.amazonaws.com
ในฐานะที่เป็น สวพ.FM91
บันทึก.
อย่างไรก็ตามมันบอกว่า หมดเวลาการเชื่อมต่อ; ไม่สามารถเข้าถึงเซิร์ฟเวอร์ได้
.
d-123sdf1234asd.execute-api.ap-northeast-1.amazonaws.com
เป็นชื่อโดเมนที่กำหนดเองของเกตเวย์ API ของฉัน ซึ่งฉันได้ทดสอบด้วยการเรียกใช้ URL และเชื่อมต่อกับบริการต่างๆ
จะพูดทำไม ไม่สามารถเข้าถึงเซิร์ฟเวอร์ได้
?
สิ่งนี้หมายความว่า? ฉันจะแก้ปัญหาและทำให้โฟลว์สมบูรณ์ได้อย่างไร