App Runner 組態檔案參考 - AWS App Runner

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

App Runner 組態檔案參考

注意

組態檔案僅適用於以原始程式碼為基礎的服務。您無法搭配映像型服務使用組態檔案。

本主題是 AWS App Runner 組態檔案語法和語意的完整參考指南。如需 App Runner 組態檔案的概觀,請參閱 使用組態檔案設定 App Runner 服務選項

App Runner 組態檔案是 YAML 檔案。將其命名為 apprunner.yaml,並將其放置在應用程式儲存庫的來源目錄中

結構概觀

App Runner 組態檔案是 YAML 檔案。將其命名為 apprunner.yaml,並將其放置在應用程式儲存庫的來源目錄中

App Runner 組態檔案包含下列主要部分:

  • 頂端區段 – 包含頂層金鑰

  • 建置區段 – 設定建置階段

  • 執行區段 – 設定執行階段

頂端區段

檔案頂端的金鑰提供有關檔案和服務執行時間的一般資訊。可使用下列金鑰:

  • version必要。App Runner 組態檔案版本。理想情況下,請使用最新版本。

    語法

    version: version
    範例
    version: 1.0
  • runtime必要。您的應用程式使用的執行時間名稱。若要了解 App Runner 提供的不同程式設計平台的可用執行時間,請參閱 以原始程式碼為基礎的 App Runner 服務

    注意

    受管執行時間的命名慣例為 <language-name><major-version>

    語法

    runtime: runtime-name
    範例
    runtime: python3

組建區段

建置區段會設定 App Runner 服務部署的建置階段。您可以指定建置命令和環境變數。組建命令是必要的。

區段以 build:金鑰開頭,並具有下列子金鑰:

  • commands必要。指定 App Runner 在各種建置階段執行的命令。包括下列子索引鍵:

    • pre-build選用。App Runner 在建置之前執行的命令。例如,安裝npm相依性或測試程式庫。

    • build必要。App Runner 執行以建置應用程式的命令。例如,使用 pipenv

    • post-build選用。App Runner 在建置之後執行的命令。例如,使用 Maven 將建置成品封裝到 JAR 或 WAR 檔案中,或執行測試。

    語法

    build: commands: pre-build: - command - build: - command - post-build: - command -
    範例
    build: commands: pre-build: - yum install openssl build: - pip install -r requirements.txt post-build: - python manage.py test
  • env選用。指定建置階段的自訂環境變數。定義為名稱值純量映射。您可以在建置命令中依名稱參考這些變數。

    注意

    此組態檔案中的兩個不同位置有兩個不同的env項目。一組位於建置區段,另一組位於執行區段。

    • 在建置過程中, pre-buildpost-buildbuildpre-run命令可以參考建置區段中的env集合。

      重要 - 請注意,pre-run命令位於此檔案的執行區段中,即使它們只能存取組建區段中定義的環境變數。

    • 執行階段環境中的 run命令可以參考執行階段區段中的 env 集合。

    語法

    build: env: - name: name1 value: value1 - name: name2 value: value2 -
    範例
    build: env: - name: DJANGO_SETTINGS_MODULE value: "django_apprunner.settings" - name: MY_VAR_EXAMPLE value: "example"

執行區段

執行區段會設定 App Runner 應用程式部署的容器執行階段。您可以指定執行時間版本、執行前命令 (僅限修訂版格式)、啟動命令、網路連接埠和環境變數。

區段以 run:金鑰開頭,並具有下列子金鑰:

  • runtime-version選用。指定您要為 App Runner 服務鎖定的執行時間版本。

    根據預設,只會鎖定主要版本。App Runner 會在每次部署或服務更新時,使用可供執行時間使用的最新次要和修補程式版本。如果您指定主要和次要版本,這兩個版本都會遭到鎖定,而 App Runner 只會更新修補程式版本。如果您指定主要、次要和修補程式版本,您的服務會鎖定在特定執行時間版本,而且 App Runner 永遠不會更新它。

    語法

    run: runtime-version: major[.minor[.patch]]
    注意

    某些平台的執行時間具有不同的版本元件。如需詳細資訊,請參閱特定平台主題。

    範例
    runtime: python3 run: runtime-version: 3.7
  • pre-run選用。 修訂組建用量。指定 App Runner 在將應用程式從建置映像複製到執行映像之後執行的命令。您可以在此處輸入命令,以修改 /app目錄外的執行映像。例如,如果您需要安裝位於 /app目錄以外的其他全域相依性,請在此子區段中輸入所需的命令來執行此操作。如需 App Runner 建置程序的詳細資訊,請參閱 受管執行期版本和 App Runner 組建

    注意
    • 重要 – 即使pre-run命令列在執行區段中,它們只能參考此組態檔案的建置區段中定義的環境變數。他們無法參考此執行區段中定義的環境變數。

    • 只有修訂後的 App Runner 組建才支援 pre-run 參數。如果您的應用程式使用原始 App Runner 組建支援的執行時間版本,請勿將此參數插入您的組態檔案中。如需詳細資訊,請參閱受管執行期版本和 App Runner 組建

    語法

    run: pre-run: - command -
  • command必要。App Runner 在完成應用程式建置後用來執行應用程式的命令。

    語法

    run: command: command
  • network選用。指定應用程式接聽的連接埠。其包括以下內容:

    • port選用。如果指定,這是您的應用程式接聽的連接埠號碼。預設值為 8080

    • env選用。如果指定,App Runner 會將連接埠號碼傳遞至此環境變數中的容器,以及 (而不是) 在預設環境變數 中傳遞相同的連接埠號碼PORT。換句話說,如果您指定 env,App Runner 會在兩個環境變數中傳遞連接埠號碼。

    語法

    run: network: port: port-number env: env-variable-name
    範例
    run: network: port: 8000 env: MY_APP_PORT
  • env選用。執行階段的自訂環境變數定義。定義為名稱值純量映射。您可以在執行時間環境中依名稱參考這些變數。

    注意

    此組態檔案中的兩個不同位置有兩個不同的env項目。一組位於建置區段,另一組位於執行區段。

    • 在建置過程中, pre-buildpost-buildbuildpre-run命令可以參考建置區段中的env集合。

      重要 - 請注意,pre-run命令位於此檔案的執行區段中,即使它們只能存取組建區段中定義的環境變數。

    • 執行階段環境中的 run命令可以參考執行階段區段中的 env 集合。

    語法

    run: env: - name: name1 value: value1 - name: name2 value: value2 secrets: - name: name1 value-from: arn:aws:secretsmanager:region:aws_account_id:secret:secret-id - name: name2 value-from: arn:aws:ssm:region:aws_account_id:parameter/parameter-name -
    範例
    run: env: - name: MY_VAR_EXAMPLE value: "example" secrets: - name: my-secret value-from: "arn:aws:secretsmanager:us-east-1:123456789012:secret:testingstackAppRunnerConstr-kJFXde2ULKbT-S7t8xR:username::" - name: my-parameter value-from: "arn:aws:ssm:us-east-1:123456789012:parameter/parameter-name" - name: my-parameter-only-name value-from: "parameter-name"