

AWS App Runner 自 2026 年 4 月 30 日起，不再開放給新客戶。如果您想要使用 App Runner，請在該日期之前註冊。現有客戶可以繼續正常使用該服務。如需詳細資訊，請參閱[AWS App Runner 可用性變更](https://docs.aws.amazon.com/apprunner/latest/dg/apprunner-availability-change.html)。

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

# 開發 App Runner 的應用程式程式碼
<a name="develop"></a>

本章討論開發或遷移應用程式程式碼以進行部署時應考慮的執行期資訊和開發指導方針 AWS App Runner。

## 執行時間資訊
<a name="develop.considerations"></a>

無論您是提供容器映像，還是 App Runner 為您建置映像，App Runner 都會在容器執行個體中執行您的應用程式碼。以下是容器執行個體執行期環境的一些關鍵層面。
+ **架構支援** – App Runner 支援實作 Web 應用程式的任何映像。如果您使用任何程式設計語言，這與您選擇的程式設計語言和您使用的 Web 應用程式伺服器或架構無關。為了您的方便，我們為各種程式設計平台提供平台特定的受管執行期，以簡化應用程式建置程序和抽象映像建立。
+ **Web 請求** – App Runner 為容器執行個體提供 HTTP 1.0 和 HTTP 1.1 的支援。如需設定服務的詳細資訊，請參閱 [設定 App Runner 服務](manage-configure.md)。您不需要實作 HTTPS 安全流量的處理。App Runner 會將所有傳入的 HTTP 請求重新導向至對應的 HTTPS 端點。您不需要設定任何設定，即可啟用重新導向 HTTP Web 請求。App Runner 會在將請求傳遞至應用程式容器執行個體之前終止 TLS。
**注意**  
HTTP 請求的請求逾時限制總計為 120 秒。120 秒包含應用程式讀取請求所需的時間，包括內文，並完成寫入 HTTP 回應。
請求讀取和回應逾時限制取決於您使用的應用程式。這些應用程式可能有自己的內部逾時，例如適用於 Python 的 HTTP 伺服器 Gunicorn，具有 30 秒的預設逾時限制。在這種情況下，應用程式的逾時限制會覆寫 App Runner 120 秒的逾時限制。
您不需要設定 TLS 密碼套件或任何其他參數，因為 App Runner 是全受管服務， 會為您管理 TLS 終止。
+ **無狀態應用程式** – App Runner 目前不支援有狀態的應用程式。因此，App Runner 不保證狀態持久性超過處理單一傳入 Web 請求的持續時間。
+ **儲存** – App Runner 會根據傳入流量，為您的 App Runner 應用程式自動擴展或縮減執行個體。您可以為 App Runner 應用程式設定 [Auto Scaling 選項](manage-autoscaling.md)。由於處理 Web 請求的目前作用中執行個體數量是以傳入流量為基礎，App Runner 無法保證檔案可以持續超過單一請求的處理。因此，App Runner 會將容器執行個體中的檔案系統實作為暫時性儲存，這表示檔案是暫時性的。例如，當您暫停和繼續 App Runner 服務時，檔案不會保留。

  App Runner 為您提供 3 GB 的暫時性儲存，並使用 3 GB 的暫時性儲存的一部分，用於執行個體上的已提取、壓縮和未壓縮的容器映像。App Runner 服務可以使用剩餘的暫時性儲存。不過，由於其無狀態性質，*這不是永久的儲存*體。
**注意**  
在某些情況下，儲存檔案會在請求之間保留。例如，如果下一個請求落在同一個執行個體上，儲存檔案將會保留。在某些情況下，跨請求儲存檔案的持久性可能很有用。例如，在處理請求時，如果未來請求可能需要，您可以快取應用程式下載的檔案。這可能會加速未來的請求處理，但無法保證速度增加。您的程式碼不應假設先前請求中下載的檔案仍然存在。  
若要使用高輸送量、低延遲的記憶體內資料存放區進行保證快取，請使用 [Amazon ElastiCache](https://aws.amazon.com/elasticache/) 等服務。
+ **環境變數** – 根據預設，App Runner 會在您的容器執行個體中提供`PORT`環境變數。您可以使用連接埠資訊設定變數值，並新增自訂環境變數和值。您也可以參考存放在 *AWS Secrets Manager*或 *AWS Systems Manager 參數存放*區中的敏感資料做為環境變數。如需建立環境變數的詳細資訊，請參閱 [參考環境變數](env-variable.md)。
+ **執行個體角色** – 如果您的應用程式程式碼使用 AWS 服務 APIs 或其中一個 AWS SDKs 呼叫任何 服務，請使用 AWS Identity and Access Management (IAM) 建立執行個體角色。然後，在建立 App Runner 服務時將其連接到該服務。在執行個體角色中包含程式碼所需的所有 AWS 服務動作許可。如需詳細資訊，請參閱[執行個體角色](security_iam_service-with-iam.md#security_iam_service-with-iam-roles-service.instance)。

## 程式碼開發指導方針
<a name="develop.tips"></a>

為 App Runner Web 應用程式開發程式碼時，請考慮這些準則。
+ **修補容器映像** – 提供容器映像時，您必須負責定期更新和修補這些映像。App Runner 管理基礎設施時，您應該確保所提供容器映像的安全性和up-to-date狀態。如需詳細資訊，請參閱 [AWS App Runner 文件](security-shared-responsibility.md#security-shared-responsibility.patch-images)
+ **設計無狀態程式碼** – 將您部署至 App Runner 服務的 Web 應用程式設計為無狀態。您的程式碼應該假設沒有任何狀態持續超過處理單一傳入 Web 請求的持續時間。
+ **刪除暫存檔案** – 當您建立檔案時，這些檔案會存放在檔案系統上，並佔用您服務儲存配置的一部分。為了避免out-of-storage錯誤，請勿長時間保留暫存檔案。在進行檔案快取決策時，平衡儲存體大小與請求處理速度。
+ **執行個體啟動** – App Runner 提供五分鐘的執行個體啟動時間。您的執行個體必須在其設定的接聽連接埠上接聽請求，並在啟動後五分鐘內正常運作。在啟動期間，App Runner 執行個體會根據您的 vCPU 組態配置虛擬 CPU (vCPU)。如需可用 vCPU 組態的詳細資訊，請參閱 [App Runner 支援的組態](architecture.md#architecture.vcpu-memory)。

  執行個體成功啟動後，會進入閒置狀態並等待請求。您根據執行個體啟動持續時間付費，每個執行個體啟動的最低費用為一分鐘。如需定價的詳細資訊，請參閱 [AWS App Runner 定價。](https://aws.amazon.com/apprunner/pricing)