

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="config-file-ref"></a>

**注意**  
組態檔案僅適用於[以原始程式碼為基礎的服務](service-source-code.md)。您無法搭配[映像型服務](service-source-image.md)使用組態檔案。

本主題是 AWS App Runner 組態檔案語法和語意的完整參考指南。如需 App Runner 組態檔案的概觀，請參閱 [使用組態檔案設定 App Runner 服務選項](config-file.md)。

App Runner 組態檔案是 YAML 檔案。將其命名為 `apprunner.yaml`，並將其放置在應用程式儲存庫的[來源目錄中](service-source-code.md#service-source-code.source-directory)。

## 結構概觀
<a name="config-file-ref.overview"></a>

App Runner 組態檔案是 YAML 檔案。將其命名為 `apprunner.yaml`，並將其放置在應用程式儲存庫的[來源目錄中](service-source-code.md#service-source-code.source-directory)。

App Runner 組態檔案包含下列主要部分：
+ *頂端區段* – 包含頂層金鑰
+ *建置區段* – 設定建置階段
+ *執行區段* – 設定執行階段

## 頂端區段
<a name="config-file-ref.top"></a>

檔案頂端的金鑰提供有關檔案和服務執行時間的一般資訊。可使用下列金鑰：
+ `version` – *必要。*App Runner 組態檔案版本。理想情況下，請使用最新版本。

  **語法**

  ```
  version: version
  ```  
**Example**  

  ```
  version: 1.0
  ```
+ `runtime` – *必要。*您的應用程式使用的執行時間名稱。若要了解 App Runner 提供的不同程式設計平台的可用執行時間，請參閱 [以原始程式碼為基礎的 App Runner 服務](service-source-code.md)。
**注意**  
 受管執行時間的命名慣例為 *<language-name><major-version>*。

  **語法**

  ```
  runtime: runtime-name
  ```  
**Example**  

  ```
  runtime: python3
  ```

## 組建區段
<a name="config-file-ref.build"></a>

建置區段會設定 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
        - …
  ```  
**Example**  

  ```
  build:
    commands:
      pre-build:
        - yum install openssl
      build:
        - pip install -r requirements.txt
      post-build:
        - python manage.py test
  ```
+ `env` – *選用。*指定建置階段的自訂環境變數。定義為名稱值純量映射。您可以在建置命令中依名稱參考這些變數。
**注意**  
此組態檔案中的兩個不同位置有兩個不同的`env`項目。一組位於**建置**區段，另一組位於**執行**區段。  
在建置過程中， `pre-build`、`post-build`、 `build`和 `pre-run`命令可以參考*建置*區段中的`env`集合。  
***重要 ***- 請注意，`pre-run`命令位於此檔案的執行區段中，即使它們只能存取組建區段中定義的環境變數。
執行階段環境中的 `run`命令可以參考執行階段區段中的 `env` 集合。

  **語法**

  ```
  build:
    env:
      - name: name1
        value: value1
      - name: name2
        value: value2
      - …
  ```  
**Example**  

  ```
  build:
    env:
      - name: DJANGO_SETTINGS_MODULE
        value: "django_apprunner.settings"
      - name: MY_VAR_EXAMPLE
        value: "example"
  ```

## 執行區段
<a name="config-file-ref.run"></a>

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

區段以 `run:`金鑰開頭，並具有下列子金鑰：
+ `runtime-version` – *選用。*指定您要為 App Runner 服務鎖定的執行時間版本。

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

  **語法**

  ```
  run:
    runtime-version: major[.minor[.patch]]
  ```
**注意**  
某些平台的執行時間具有不同的版本元件。如需詳細資訊，請參閱特定平台主題。  
**Example**  

  ```
  runtime: python3
  run:
    runtime-version: 3.7
  ```
+ `pre-run` – *選用。* ***僅[修訂組建](service-source-code.md#service-source-code.build-detail)用量***。指定 App Runner 在將應用程式從建置映像複製到執行映像之後執行的命令。您可以在此處輸入命令，以修改 `/app`目錄外的執行映像。例如，如果您需要安裝位於 `/app`目錄以外的其他全域相依性，請在此子區段中輸入所需的命令來執行此操作。如需 App Runner 建置程序的詳細資訊，請參閱 [受管執行期版本和 App Runner 組建](service-source-code.md#service-source-code.build-detail)。
**注意**  
***重要 ***– 即使`pre-run`命令列在執行區段中，它們只能參考此組態檔案的建置區段中定義的環境變數。他們無法參考此執行區段中定義的環境變數。
只有修訂後的 App Runner 組建才支援 `pre-run` 參數。如果您的應用程式使用原始 App Runner 組建支援的執行時間版本，請勿將此參數插入您的組態檔案中。如需詳細資訊，請參閱[受管執行期版本和 App Runner 組建](service-source-code.md#service-source-code.build-detail)。

  **語法**

  ```
  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
  ```  
**Example**  

  ```
  run:
    network:
      port: 8000
      env: MY_APP_PORT
  ```
+ `env` – *選用。*執行階段的自訂環境變數定義。定義為名稱值純量映射。您可以在執行時間環境中依名稱參考這些變數。
**注意**  
此組態檔案中的兩個不同位置有兩個不同的`env`項目。一組位於**建置**區段，另一組位於**執行**區段。  
在建置過程中， `pre-build`、`post-build`、 `build`和 `pre-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
      - …
  ```  
**Example**  

  ```
  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"
  ```