本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
疑難排解一般 Amplify 問題
以下資訊可協助您針對 Amplify 託管的一般問題進行疑難排解。
主題
HTTP 429 狀態碼 (太多請求)
Amplify 會根據傳入請求使用的處理時間和資料傳輸,控制您網站的每秒請求數 (RPS)。如果您的應用程式傳回 HTTP 429 狀態碼,傳入的請求會超過分配給應用程式的處理時間和資料傳輸量。此應用程式限制由 Amplify REQUEST_TOKENS_PER_SECOND
的服務配額管理。如需配額的詳細資訊,請參閱 Amplify Hosting 服務配額。
若要修正此問題,建議您最佳化應用程式,以減少請求持續時間和資料傳輸,以增加應用程式的 RPS。例如,使用相同的 20,000 個字符,與延遲高於 200 毫秒的頁面相比,在 100 毫秒內回應的高度最佳化 SSR 頁面可以支援更高的 RPS。
同樣地,與傳回 250 KB 回應大小的應用程式相比,傳回 1 MB 回應大小的應用程式會耗用更多字符。
我們也建議您透過設定可將指定回應保留在快取中的時間最大化的Cache-Control標頭,來利用 Amazon CloudFront 快取。從 CloudFront 快取提供的請求不會計入速率限制。每個 CloudFront 分佈每秒最多可以處理 250,000 個請求,讓您可以使用快取來擴展應用程式。如需 CloudFront 快取的詳細資訊,請參閱《Amazon CloudFront 開發人員指南》中的最佳化快取和可用性。
Amplify 主控台不會顯示我的應用程式的建置狀態和上次更新時間
當您導覽至 Amplify 主控台中的所有應用程式頁面時,會顯示目前區域中每個應用程式的圖磚。如果您沒有看到建置狀態,例如部署,以及應用程式的上次更新時間,則應用程式沒有與其相關聯的Production
階段分支。
若要列出主控台中的應用程式,Amplify 會使用 ListApps
API。Amplify ProductionBranch.status
使用 屬性來顯示建置狀態,並使用 ProductionBranch.lastDeployTime
屬性來顯示上次更新時間。如需此 API 的詳細資訊,請參閱 Amplify Hosting API 文件中的 ProductionBranch。
使用下列指示,將Production
階段與應用程式的分支建立關聯。
-
登入 Amplify 主控台
。 -
在所有應用程式頁面上,選擇您要更新的應用程式。
-
在導覽窗格中,選擇應用程式設定,然後選擇分支設定。
-
在分支設定區段中,選擇編輯。
-
針對生產分支,選擇您要使用的分支名稱。
-
選擇儲存。
-
返回所有應用程式頁面。現在應該為您的應用程式顯示建置狀態和上次更新時間。
未針對新的提取請求建立 Web 預覽
Web 預覽功能可讓您在將請求合併到整合分支之前,從提取請求預覽變更。Web 預覽會將對儲存庫提出的每個提取請求部署到唯一的預覽 URL,這與主要網站使用的 URL 不同。
如果您已開啟應用程式的 Web 預覽,但未為新 PRs建立,請調查下列其中一項是否為問題的原因。
-
檢查您的應用程式是否已達到
Branches per app
服務配額上限。如需配額的詳細資訊,請參閱 Amplify Hosting 服務配額。若要保持在每個應用程式 50 個分支的預設配額內,請考慮在您的應用程式中啟用自動分支刪除。這將防止您在帳戶中累積不再存在於儲存庫中的分支。
-
如果您使用公有 GitHub 儲存庫,且您的 Amplify 應用程式已連接 IAM 服務角色,則 Amplify 不會基於安全考量建立預覽。例如,具有後端的應用程式和部署到
WEB_COMPUTE
託管平台的應用程式需要 IAM 服務角色。因此,如果這些類型的應用程式儲存庫是公有的,則您無法啟用這些類型的 Web 預覽。若要讓 Web 預覽適用於您的應用程式,您可以取消與服務角色的關聯 (如果應用程式沒有後端或不是
WEB_COMPUTE
應用程式),或者您可以將 GitHub 儲存庫設為私有。
我的手動部署停滯在 Amplify 主控台中的待定狀態
手動部署可讓您使用 Amplify Hosting 發佈 Web 應用程式,而無需連接 Git 供應商。您可以使用下列四個部署選項之一。
-
在 Amplify 主控台中拖放應用程式資料夾。
-
在 Amplify 主控台中拖放 .zip 檔案 (包含您網站的建置成品)。
-
將 .zip 檔案 (包含您網站的建置成品) 上傳至 Amazon S3 儲存貯體,並將儲存貯體連接至 Amplify 主控台中的應用程式。
-
在 Amplify 主控台中使用指向 .zip 檔案的公有 URL (包含您網站的建置成品)。
我們在 Amplify 主控台中使用應用程式資料夾進行手動部署時,注意到拖曳功能的問題。這些部署可能會失敗,原因如下。
-
發生暫時性網路問題。
-
在上傳期間,檔案會有本機變更。
-
瀏覽器工作階段會嘗試同時上傳大量靜態資產。
當我們努力改善拖放上傳的可靠性時,建議您使用 .zip 檔案,而不是拖放應用程式資料夾。
我們強烈建議將 .zip 檔案上傳至 Amazon S3 儲存貯體,因為這可避免從 Amplify 主控台上傳檔案,並為手動部署提供更高的可靠性。Amplify 與 Amazon S3 的整合可簡化此程序。如需詳細資訊,請參閱從 Amazon S3 儲存貯體將靜態網站部署至 Amplify。
我需要更新應用程式的 Node.js 版本
使用 Node.js 版本 16 和 18 的應用程式 Amplify 支援將於 2025 年 9 月 15 日結束。已部署的應用程式將繼續執行。不過,在此日期之後,您必須先升級至 Node.js 第 20 版或更新版本,才能將更新部署到您的應用程式。
如果您使用的是 Amazon Linux 2023 建置映像,預設支援 Node.js 20 版。從 2025 年 9 月 15 日開始,AL2023 映像將自動支援 Node.js 22,並將其預設 Node.js 版本從 18 變更為 22。
Amazon Linux 2 (AL2) 不會自動支援 Node.js 第 20 版或更新版本。如果您目前正在使用 AL2,我們建議您切換到 AL2023。您可以在 Amplify 主控台中變更建置映像。您也可以使用支援您指定之 Node.js 版本的自訂建置映像。
升級之前,建議您在新的分支上測試應用程式,以確認其正常運作。
升級選項
- Amplify 主控台
您可以使用 Amplify 主控台中的即時套件更新功能來指定要使用的 Node.js 版本。如需說明,請參閱在建置映像中使用特定套件和相依性版本。
- 自訂建置映像
如果您使用的是自訂建置映像,且映像上安裝 NVM,則可以將
nvm install 20
新增至 Dockerfile。若要進一步了解自訂建置映像的需求和組態指示,請參閱 自訂建置映像。- 組建設定
您可以將
nvm use
命令新增至 preBuild 命令區段,以指定要在應用程式amplify.yml
建置設定中使用的 Node.js 版本。如需更新應用程式建置設定的指示,請參閱 設定 Amplify 應用程式的建置設定。下列範例示範如何自訂建置設定,將預設 Node.js 版本設定為 Node.js 18,並在名為 的測試分支上升級至 Node.js 版本 20
node-20
。frontend: phases: preBuild: commands: - nvm use 18 - if [ "${AWS_BRANCH}" = "node-20" ]; then nvm use 20; fi
警告
請注意,
preBuild
命令會在即時套件更新後執行。nvm use
命令指定的 Node.js 版本會覆寫即時套件更新設定的 Node.js 版本。