疑難排解一般 Amplify 問題 - AWS Amplify 託管

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

疑難排解一般 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階段與應用程式的分支建立關聯。

  1. 登入 Amplify 主控台

  2. 在所有應用程式頁面上,選擇您要更新的應用程式。

  3. 在導覽窗格中,選擇應用程式設定,然後選擇分支設定

  4. 分支設定區段中,選擇編輯

  5. 針對生產分支,選擇您要使用的分支名稱。

  6. 選擇儲存

  7. 返回所有應用程式頁面。現在應該為您的應用程式顯示建置狀態和上次更新時間。

未針對新的提取請求建立 Web 預覽

Web 預覽功能可讓您在將請求合併到整合分支之前,從提取請求預覽變更。Web 預覽會將對儲存庫提出的每個提取請求部署到唯一的預覽 URL,這與主要網站使用的 URL 不同。

如果您已開啟應用程式的 Web 預覽,但未為新 PRs建立,請調查下列其中一項是否為問題的原因。

  1. 檢查您的應用程式是否已達到Branches per app服務配額上限。如需配額的詳細資訊,請參閱 Amplify Hosting 服務配額

    若要保持在每個應用程式 50 個分支的預設配額內,請考慮在您的應用程式中啟用自動分支刪除。這將防止您在帳戶中累積不再存在於儲存庫中的分支。

  2. 如果您使用公有 GitHub 儲存庫,且您的 Amplify 應用程式已連接 IAM 服務角色,則 Amplify 不會基於安全考量建立預覽。例如,具有後端的應用程式和部署到WEB_COMPUTE託管平台的應用程式需要 IAM 服務角色。因此,如果這些類型的應用程式儲存庫是公有的,則您無法啟用這些類型的 Web 預覽。

    若要讓 Web 預覽適用於您的應用程式,您可以取消與服務角色的關聯 (如果應用程式沒有後端或不是WEB_COMPUTE應用程式),或者您可以將 GitHub 儲存庫設為私有。

我的手動部署停滯在 Amplify 主控台中的待定狀態

手動部署可讓您使用 Amplify Hosting 發佈 Web 應用程式,而無需連接 Git 供應商。您可以使用下列四個部署選項之一。

  1. 在 Amplify 主控台中拖放應用程式資料夾。

  2. 在 Amplify 主控台中拖放 .zip 檔案 (包含您網站的建置成品)。

  3. 將 .zip 檔案 (包含您網站的建置成品) 上傳至 Amazon S3 儲存貯體,並將儲存貯體連接至 Amplify 主控台中的應用程式。

  4. 在 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 版本 20node-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 版本。