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-buildbuildpost-build、和pre-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-buildbuildpost-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 -
    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"