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命令位於此檔案的執行區段中,即使它們只能存取建置區段中定義的環境變數。

    • 執行區段中的 env 集合可由執行時間環境中的 run命令參考。

    語法

    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命令列在執行區段中,它們只能參考此組態檔案建置區段中定義的環境變數。他們無法參考此執行區段中定義的環境變數。

    • 參數pre-run僅受修訂的 App Runner 建置支援。如果您的應用程式使用原始 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命令位於此檔案的執行區段中,即使它們只能存取建置區段中定義的環境變數。

    • 執行區段中的 env 集合可由執行時間環境中的 run命令參考。

    語法

    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"