地区 ID
REGION_ID
是 Google 根据您在创建应用时选择的区域分配的缩写代码。此代码不对应于国家/地区或省,尽管某些区域 ID 可能类似于常用国家/地区代码和省代码。对于 2020 年 2 月以后创建的应用,REGION_ID.r
包含在 App Engine 网址中。对于在此日期之前创建的现有应用,网址中的区域 ID 是可选的。
详细了解区域 ID。
您可以在 app.yaml
文件中配置 App Engine 应用的设置。app.yaml
文件还包含应用代码、PHP 运行时和 entrypoint 的相关信息。
应用中的每项服务都有其专属的 app.yaml
文件,该文件充当其部署的描述符。您必须先为应用中的 default
服务创建 app.yaml
文件,然后才能为其他服务创建和部署 app.yaml
文件。
对于 PHP 7+,app.yaml
必须至少包含一个 runtime
条目。如需查看简要概览,请参阅定义运行时设置。
目录结构
如需详细了解如何在应用中设计多个服务的结构,请参阅在 App Engine 中设计网络服务的结构。示例
以下是 PHP 7+ 应用的 app.yaml
文件示例:
runtime: php81 # Replace with php74 to use PHP 7.4 handlers: # Serve a directory as a static resource. - url: /stylesheets static_dir: stylesheets # Serve images as static resources. - url: /(.+\.(gif|png|jpg))$ static_files: \1 upload: .+\.(gif|png|jpg)$ # Serve your app through a front controller at index.php or public/index.php. - url: .* script: auto
在此示例中,App Engine 提供扩展名为 gif
、png
或 jpg
的文件作为静态资源。应用代码在运行时读取配置的文件。
语法
app.yaml
的语法采用 YAML 格式。
YAML 格式支持注释。系统会忽略以井号 (#
) 字符开头的行:
# This is a comment.
网址和文件路径格式使用 POSIX 扩展正则表达式语法,但排序元素和排序类除外。支持对分组匹配项的反向引用(例如 \1
),另外还支持以下 Perl 扩展:\w \W \s \S \d \D
。
运行时和应用元素
元素 | 说明 |
---|---|
app_engine_apis
|
可选。如果要使用适用于第二代运行时的 App Engine 旧版捆绑服务,请将此字段设置为 |
build_env_variables
|
可选。如果您使用的是支持 buildpack 的运行时,则可以在 如需了解详情,请参阅使用构建环境变量。 |
default_expiration |
可选。为应用的所有静态文件处理程序设置全局默认缓存期限。您还可以配置特定静态文件处理程序的缓存时长。该值是一个由数字和单位组成并以空格分隔的字符串,其中,单位可以是 d(表示天)、h(表示小时)、m(表示分钟)和 s(表示秒)。例如, runtime: php81 # Replace with php74 to use PHP 7.4 default_expiration: "4d 5h" handlers: # ... 如需了解详情,请参阅缓存到期时间。 |
entrypoint |
可选。通过在应用启动时执行 |
env_variables
|
可选。您可以在 以 env_variables: MY_VAR: "my value" MY_VAR 和 my value 是您要定义的环境变量的名称和值,每个环境变量条目在 env_variables 元素下缩进两个空格。 未分配值的环境变量默认为 "None" 。
然后,您可以使用 echo getenv('MY_VAR'); echo $_SERVER['MY_VAR']; 另请参阅不能覆盖的运行时环境变量列表。 |
error_handlers |
可选。用于配置针对不同错误类型返回的自定义错误页面。 此元素可以包含以下元素:
error_handlers: - file: default_error.html - error_code: over_quota file: over_quota.html |
handlers |
可选。一组网址格式及其处理方式说明。App Engine 可以通过执行应用代码,或通过传送与代码一起上传的静态文件(例如图片、CSS 或 JavaScript)来处理网址。 如果您已定义任何静态 例如: url: .* script: auto |
inbound_services |
可选。应用必须先启用这些服务,然后才能接收入站请求。您可以通过在
inbound_services: - mail - warmup |
instance_class |
可选。此服务的实例类。 根据服务的扩缩设置,可用的值如下:
|
runtime |
必需。应用使用的运行时环境的名称。例如,如需指定 PHP 8.1,请使用: runtime: php81 |
service |
如果创建服务,此元素是必需的。
对于 service: service-name |
service_account |
可选。借助 service_account: [SERVICE_ACCOUNT_NAME]@[PROJECT_ID].iam.gserviceaccount.com |
vpc_access_connector |
可选。将应用配置为使用 Serverless VPC Access 连接器,使应用能够将请求发送到 VPC 网络中的内部资源。如需了解详情,请参阅连接到 VPC 网络。
vpc_access_connector: name: "projects/PROJECT_ID/locations/REGION/connectors/CONNECTOR_NAME" egress_setting: all-traffic |
处理程序元素
handlers
元素提供了一组网址格式及其处理方式的说明。App Engine 可以通过执行应用代码,或通过提供与代码一起上传的静态文件(例如图片、CSS 或 JavaScript)来处理网址。
格式评估按照格式在 app.yaml
文件中出现的顺序(即从上到下)依次进行。格式与网址匹配的第一个映射将用于处理请求。
下表列出了控制脚本、静态文件、静态目录和其他设置行为的 handlers
元素的子元素。
元素 | 说明 |
---|---|
expiration
|
可选。Web 代理和浏览器应缓存由此处理程序传送的静态文件的时长。该值是一个用空格分隔的数字和单位字符串,其中,单位可以是 d (表示天)、h (表示小时)、m (表示分钟)和 s (表示秒)。例如,"4d 5h" 表示将缓存到期时间设置为首次请求文件后的 4 天 5 小时。如果省略此元素,则系统会使用应用的 default_expiration 。如需了解详情,请参阅缓存到期时间。 |
http_headers |
可选。您可以设置静态文件或目录处理程序响应的 HTTP 标头。如果您需要在 handlers: - url: /images static_dir: static/images http_headers: X-Foo-Header: foo X-Bar-Header: bar value vary: Accept-Encoding # ... CORS 支持此功能的一个重要用途是支持跨域资源共享 (CORS),例如,访问由其他 App Engine 应用托管的文件。
例如,假设您有一个游戏应用 下面演示了如何让静态文件处理程序返回这个必需的响应标头值: handlers: - url: /images static_dir: static/images http_headers: Access-Control-Allow-Origin: https://mygame.uc.r.appspot.com # ... 注意:如果要让所有人都能访问您的资源,可以使用通配符 |
mime_type |
可选。如果指定此元素,则由此处理程序传送的所有文件均将使用指定的 MIME 类型进行传送。如果未指定,将根据文件的文件扩展名确定文件的 MIME 类型。如果上传多个扩展名不同的同一文件,则生成的扩展名可能由上传的顺序决定。 如需详细了解可能的 MIME 媒体类型,请参阅 IANA MIME 媒体类型网站 |
redirect_http_response_code |
可选。
handlers: - url: /youraccount/.* script: auto secure: always redirect_http_response_code: 301
重定向用户请求时,HTTP 状态代码将设置为 |
script |
可选。指定发送到特定处理程序的请求应以您的应用为目标。 handlers: - url: /images static_dir: static/images - url: /.* script: myapp.php |
secure |
可选。任何网址处理程序(包括脚本处理程序和静态文件处理程序)均可使用 secure 设置。secure 元素可用的值如下:
handlers: - url: /youraccount/.* script: auto secure: always 如需使用 如需将自定义网域与 HTTPS 搭配使用,您必须先为该网域激活并配置 SSL 证书。 Google 帐号的登录和退出始终是通过安全连接执行的,与应用网址配置为何种格式无关。 |
static_dir
|
可选。应用根目录中包含静态文件的目录的路径。所匹配的
静态目录中的每个文件都使用与其文件扩展名对应的 MIME 类型提供,除非被目录的 handlers: # All URLs beginning with /stylesheets are treated as paths to # static files in the stylesheets/ directory. - url: /stylesheets static_dir: stylesheets # ... |
static_files
|
可选。静态文件格式处理程序会将网址格式与随应用一并上传的静态文件的路径相关联。网址格式正则表达式可以定义用来构建文件路径的正则表达式分组。您可以使用它而非 handlers: # All URLs ending in .gif .png or .jpg are treated as paths to # static files in the static/ directory. The URL pattern is a # regular expression, with a grouping that is inserted into the # path to the file. - url: /(.*\.(gif|png|jpg))$ static_files: static/\1 upload: static/.*\.(gif|png|jpg)$ # ... 静态文件不能与应用代码文件相同。 |
upload |
可选。一个正则表达式,它会与将由此处理程序引用的所有文件的文件路径进行匹配。系统必须执行此操作,否则处理程序将无法确定应用目录中的哪些文件与指定的 |
url |
与以下元素一起使用时,网址格式在行为上有一些差异:
|
扩缩元素
下表中的元素用于配置应用的扩缩方式。如需详细了解 App Engine 应用的扩缩方式,请参阅扩缩类型。
元素 | 说明 |
---|---|
automatic_scaling |
可选。仅适用于使用 F1 或更高级别的实例类的应用。 指定此元素可以更改自动扩缩的默认设置,例如设置最小和最大实例数、延迟时间和服务的并发连接数。 此元素可以包含以下元素:
automatic_scaling: target_cpu_utilization: 0.65 min_instances: 5 max_instances: 100 min_pending_latency: 30ms max_pending_latency: automatic max_concurrent_requests: 50 |
basic_scaling |
使用 B1 或更高级别的实例类的应用必须指定此元素或 此元素用于启用实例类 B1 及更高级别的基本扩缩,并且可以包含以下元素:
basic_scaling: max_instances: 11 idle_timeout: 10m |
manual_scaling |
使用 B1 或更高级别的实例类的应用必须指定此元素或 此元素用于启用实例类 B1 及更高级别的手动扩缩,并且可以包含以下元素:
manual_scaling: instances: 5 |