我正在嘗試將 Angular 客戶端和 Spring Boot 服務器應用程式部署到 AWS。我成功地將服務器應用程式作為 ECS 任務啟動,使用服務發現以防止在每次任務重啟時更改 Angular 應用程式代碼中的服務器 IP 地址。因此,我將路由器 53 DNS 設定為提到的任務,而不是任務的公共 IP 作為 Angular 應用程式中的服務器應用程式 URL,但這種方法不起作用。當我將任務的實際公共 IP 作為服務器 URL 時,一切正常。Angular 應用程式部署到 AWS S3。
問題示例:
find() {
return this.http.get<>(http://127.0.0.1:8080 '/all);
}
解決方案示例:
find() {
return this.http.get<>(http://test-service.test:8080 '/all);
}
其中test-service.test是 Route 53 記錄。
這種方法甚至可能嗎?如果沒有,你能建議我其他解決方案嗎?
我希望這個問題足夠清楚。如果您需要更多詳細資訊,請告訴我。
謝謝!
uj5u.com熱心網友回復:
是的,這種方法是可行的,但為了作業,您必須在 Route 53 中擁有一個公共托管區域,這意味著您已經購買了一個公共域。
我假設您已經創建了一個私有托管區域。私有托管區域可用于 VPC 內的 DNS 決議,但不能通過公共互聯網進行決議。
uj5u.com熱心網友回復:
我認為您需要解決兩件不同的事情。
你如何公開應用服務器?您這樣做的方式將不起作用,因為該 FQDN 是私有的。因此,您要么將應用程式服務器置于 ALB(它提供靜態公共 FQDN)之后,要么購買一個域并創建一個公共區域來公開您的任務(這可能有效,但任務是短暫的,您需要繼續追逐它們在域中注冊/注銷)。
您如何指向應用程式服務器端點(ALB 或 R53 域或您選擇公開它的任何內容?)。您要么將端點烘焙到 Angular 環境中(但隨后端點將靜態鏈接到 JS 編譯代碼中),要么使用 Angular 提供的工具來引數化端點。您可以創建一個
env.js與index.html包含應用服務器端點的檔案一起呼叫的檔案。這意味著,當從 S3 提供 JS 時,您可以配置env.js檔案以包含您的應用服務器端點,并且您的瀏覽器將動態指向它(無需重新編譯您的 Angular 應用。完整的操作方法故事在這里。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/362880.html
標籤:有角的 亚马逊网络服务 亚马逊-s3 亚马逊-ecs 亚马逊-route53
