開發應用程式執行程式碼 - AWS App Runner

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

開發應用程式執行程式碼

本章討論在開發或移轉用於部署的應用程式程式碼時,應考慮的執行階段資訊和開發準則 AWS App Runner。

運行時信息

無論您是提供容器映像還是 App Runner 為您構建一個,App Runner 都會在容器實例中運行您的應用程序代碼。以下是容器執行個體執行階段環境的幾個關鍵層面。

  • 框架支持-應用程序運行器支持實現 Web 應用程序的任何圖像。它與您選擇的編程語言以及您使用的 Web 應用程序服務器或框架(如果您使用任何)無關。為了您的方便,我們為各種編程平台提供特定於平台的託管運行時間,以簡化應用程序構建過程和抽象圖像創建。

  • 網絡請求 — 應用程序運行器為容器實例提供 HTTP 1.0 和 HTTP 1.1 的支持。如需有關設定服務的詳細資訊,請參閱設定 App Runner 服務。您不需要實現 HTTPS 安全流量的處理。應用程序運行器將所有傳入的 HTTP 請求重定向到相應的 HTTPS 端 您不需要配置任何設置即可重定向 HTTP Web 請求。應用程序運行器將請求傳遞給您的應用程序容器實例之前終止 TLS。

    注意
    • HTTP 要求總共有 120 秒的要求逾時限制。120 秒包括應用程式讀取要求 (包括主體) 所花費的時間,以及完成寫入 HTTP 回應。

    • 請求讀取和響應超時限制取決於您使用的應用程序。這些應用程序可能有自己的內部超時,例如 HTTP 服務器的 Python,Gunicorn,有一個 30 秒的默認超時限制。在這種情況下,應用程式的逾時限制會覆寫應用程式執行器 120 秒逾時限制。

    • 您不需要將 TLS 加密套件或任何其他參數配置為應用程序運行器是完全託管的服務,可以為您管理 TLS 終止。

  • 無狀態應用程式 — 目前 App Runner 不支援可設定狀態的應用程式。因此,App Runner 不保證超過處理單個傳入 Web 請求的持續時間的狀態持久性。

  • 存儲-應用程序運行器會根據傳入的流量自動擴展或縮小應用程序應用程序的實例。您可以為應用程式執行器應用程式設定自動縮放選項。由於處理 Web 要求的目前作用中執行個體數量是以傳入流量為基礎,因此 App Runner 無法保證檔案在處理單一要求之外仍可持續存在。因此,App Runner 在容器實例中實現了文件系統作為臨時存儲,這需要文件是暫時的。例如,當您暫停和繼續 App Runner 服務時,檔案不會持續存在。

    App Runner 為您提供 3 GB 的臨時存儲空間,並將 3 GB 臨時存儲的一部分用於其提取,壓縮和實例上未壓縮的容器映像。剩餘的臨時存儲可以由您的應用程序運行器服務使用。但是,由於其無狀態性質,這不是永久存儲

    注意

    在某些情況下,存儲文件確實持續存在於請求之間。例如,如果下一個請求落在同一個實例上,則存儲文件將保留。在某些情況下,存儲文件在請求之間的持久性可能很有用。例如,在處理要求時,如果 future 的要求可能需要,您可以快取應用程式下載的檔案。這可能會加快 future 的請求處理速度,但無法保證速度的提高。您的程式碼不應假設先前要求中已下載的檔案仍然存在。

    若要使用高輸送量、低延遲的記憶體內資料存放區保證快取,請使用 Amazon ElastiCache 之類的服務。

  • 環境變數 — 預設情況下,App Runner 會讓PORT環境變數在容器執行個體中可用。您可以使用連接埠資訊設定變數值,並新增自訂環境變數和值。您也可以參考儲存在AWS Secrets ManagerAWS Systems Manager 參數存放區中的機密資料做為環境變數。如需建立環境變數的詳細資訊,請參閱〈〉參考環境變數

  • 執行個體角色 — 如果您的應用程式程式碼使用服務 API 或其中一個 AWS SDK 呼叫任何 AWS 服務,請使用 AWS Identity and Access Management (IAM) 建立執行個體角色。然後,在創建它時將其附加到您的應用程序運行器服務。在執行個體角色中包含程式碼所需的所有 AWS 服務動作權限。如需詳細資訊,請參閱 執行個體角色

程式碼開發指南

開發應用程式執行器 Web 應用程式的程式碼時,請考慮下列準則

  • 設計無狀態代碼 — 將部署到 App Runner 服務的 Web 應用程序設計為無狀態。您的代碼應該假設在處理單個傳入 Web 請求的持續時間之外,沒有狀態仍然存在。

  • 刪除暫存檔案 — 建立檔案時,檔案會儲存在檔案系統中,並佔用服務儲存空間配置的一部分。為了避免 out-of-storage 錯誤,請不要長時間保留臨時文件。在做出檔案快取決策時,平衡儲存體大小與要求處理速度。

  • 執行個體啟動 — App Runner 提供五分鐘的執行個體啟動時間。您的執行個體必須在其設定的監聽連接埠上接聽要求,並在啟動後的五分鐘內維持正常狀態。在啟動期間,應用程式執行器執行個體會根據您的 vCPU 組態來配置虛擬 CPU (vCPU)。如需有關可用 vCPU 組態的詳細資訊,請參閱應用程序運行器支持

    執行個體成功啟動後,會進入閒置狀態並等待要求。您可以根據執行個體啟動持續時間付費,每次執行個體啟動的最低費用為一分鐘。如需定價的詳細資訊,請參閱 AWS App Runner 定價。