

AWS 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`、`build``post-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`、`build``post-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"
  ```