

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

# 疑難排解一般 Amplify 問題
<a name="troubleshooting-general"></a>

下列資訊可協助您疑難排解 Amplify 託管的一般問題。

**Topics**
+ [HTTP 429 狀態碼 （太多請求）](#429-request-error)
+ [Amplify 主控台不會顯示我的應用程式的建置狀態和上次更新時間](#build-status-not-displayed)
+ [未針對新的提取請求建立 Web 預覽](#pull-request-previews)
+ [我的手動部署在 Amplify 主控台中停滯待定狀態](#manual-deployment-pending)
+ [我需要更新應用程式的 Node.js 版本](#update-node-version)

## HTTP 429 狀態碼 （太多請求）
<a name="429-request-error"></a>

Amplify 會根據傳入請求使用的處理時間和資料傳輸，控制網站的每秒請求數 (RPS)。如果您的應用程式傳回 HTTP 429 狀態碼，傳入的請求會超過分配給應用程式的處理時間和資料傳輸量。此應用程式限制由 Amplify `REQUEST_TOKENS_PER_SECOND`的服務配額管理。如需配額的詳細資訊，請參閱 [Amplify 託管服務配額](quotas-chapter.md)。

若要修正此問題，我們建議您最佳化應用程式，以減少請求持續時間和資料傳輸，以增加應用程式的 RPS。例如，使用相同的 20，000 個字符，與延遲高於 200 毫秒的頁面相比，在 100 毫秒內回應的高度最佳化 SSR 頁面可以支援更高的 RPS。

同樣地，相較於傳回 250 KB 回應大小的應用程式，傳回 1 MB 回應大小的應用程式會耗用更多字符。

我們也建議您透過設定可將指定回應保留在快取中的時間最大化的Cache-Control標頭，來利用 Amazon CloudFront 快取。從 CloudFront 快取提供的請求不會計入速率限制。每個 CloudFront 分佈每秒最多可以處理 250，000 個請求，讓您可以使用快取來擴展應用程式。如需 CloudFront 快取的詳細資訊，請參閱《*Amazon CloudFront 開發人員指南*》中的[最佳化快取和可用性](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/ConfiguringCaching.html)。

## Amplify 主控台不會顯示我的應用程式的建置狀態和上次更新時間
<a name="build-status-not-displayed"></a>

當您導覽至 Amplify 主控台中的所有**應用程式**頁面時，會顯示目前區域中每個應用程式的圖磚。如果您沒有看到建置狀態，例如**已部署**，以及應用程式的**上次更新**時間，則應用程式沒有與其相關聯的`Production`階段分支。

若要列出 主控台中的應用程式，Amplify 會使用 `ListApps` API。Amplify `ProductionBranch.status` 使用 屬性來顯示建置狀態，並使用 `ProductionBranch.lastDeployTime` 屬性來顯示上次更新時間。如需此 API 的詳細資訊，請參閱 *Amplify Hosting API 文件*中的 [ProductionBranch](https://docs.aws.amazon.com/amplify/latest/APIReference/API_ProductionBranch.html)。

使用下列指示，將`Production`階段與應用程式的分支建立關聯。

1. 登入 [Amplify 主控台](https://console.aws.amazon.com/amplify/home)。

1. **在所有應用程式**頁面上，選擇您要更新的應用程式。

1. 在導覽窗格中，選擇**應用程式設定**，然後選擇**分支設定**。

1. 在**分支設定**區段中，選擇**編輯**。

1. 針對**生產分支**，選擇您要使用的分支名稱。

1. 選擇**儲存**。

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

## 未針對新的提取請求建立 Web 預覽
<a name="pull-request-previews"></a>

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

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

1. 檢查您的應用程式是否已達到`Branches per app`服務配額上限。如需配額的詳細資訊，請參閱 [Amplify 託管服務配額](quotas-chapter.md)。

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

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

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

## 我的手動部署在 Amplify 主控台中停滯待定狀態
<a name="manual-deployment-pending"></a>

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

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

1. 在 Amplify 主控台中拖放 .zip 檔案 （包含您網站的建置成品）。

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

1. 在 Amplify 主控台中使用指向 .zip 檔案的公有 URL （其中包含您網站的建置成品）。

在 Amplify 主控台中使用應用程式資料夾進行手動部署時，我們注意到拖曳功能的問題。這些部署可能會失敗，原因如下。
+ 發生暫時性網路問題。
+ 在上傳期間，檔案會有本機變更。
+ 瀏覽器工作階段會嘗試同時上傳大量靜態資產。

當我們努力改善拖放上傳的可靠性時，建議您使用 .zip 檔案，而不是拖放應用程式資料夾。

我們強烈建議將 .zip 檔案上傳至 Amazon S3 儲存貯體，因為這可避免從 Amplify 主控台上傳檔案，並為手動部署提供更高的可靠性。Amplify 與 Amazon S3 的整合可簡化此程序。如需詳細資訊，請參閱[從 Amazon S3 儲存貯體將靜態網站部署至 Amplify](deploy-website-from-s3.md)。

## 我需要更新應用程式的 Node.js 版本
<a name="update-node-version"></a>

使用 Node.js 版本 14、16 和 18 的應用程式 Amplify 支援將於 2025 年 9 月 15 日結束。此日期之後的行為取決於您的應用程式類型：
+ SSR 應用程式：使用已棄用 Node.js 版本時發生建置失敗。您必須先升級至 Node.js 20 或更新版本，才能部署更新。
+ 非 SSR 應用程式：如果您透過 buildspec 或即時套件更新手動安裝已取代的 Node.js 版本，則可以繼續使用。

無論 Node.js 版本為何，已部署的應用程式都會繼續執行。

如果您使用的是 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 版本。如需說明，請參閱[在建置映像中使用特定套件和相依性版本](custom-build-image.md#setup-live-updates)。

**自訂建置映像**  
如果您使用的是自訂建置映像，且映像上安裝 NVM，則可以將 `nvm install 20`新增至 Dockerfile。若要進一步了解自訂建置映像的需求和組態指示，請參閱 [自訂建置映像](custom-build-image.md)。

**組建設定**  
您可以將 `nvm use`命令新增至 preBuild 命令區段，以指定要在應用程式的`amplify.yml`建置設定中使用的 Node.js 版本。如需更新應用程式建置設定的說明，請參閱 [設定 Amplify 應用程式的建置設定](build-settings.md)。  
下列範例示範如何自訂建置設定，將名為 的測試分支上的預設 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 版本。