该文件 azure.yaml 是 Azure 开发人员 CLI (azd) 项目的配置文件。 将其置于项目的根目录中,以定义构成应用程序的服务、Azure 资源、基础结构、挂钩和 CI/CD 管道。 运行命令(或 azd upazd provisionazd deployCLI)时,会读取此文件以了解应用的结构以及如何将其部署到 Azure。
本文是 azure.yaml 架构的完整参考。 有关模板入门 azd ,请参阅 Azure 开发人员 CLI 模板概述。
样本
下面是模板文件的azure.yaml一般示例azd。 有关实际示例,请参阅 azure.yamlToDo NodeJs Mongo 模板:
name: yourApp
metadata:
template: yourApp@0.0.1-beta
services:
web:
project: ./src/web
dist: build
language: js
host: appservice
api:
project: ./src/api
language: js
host: appservice
顶级属性
| 元素名称 | 必填 | 类型 | 描述 |
|---|---|---|---|
name |
Y | 字符串 | 应用程序名称。 只允许小写字母、数字和连字符 (-) 。 名称必须以字母或数字开头和结尾。 |
resourceGroup |
N | 字符串 | Azure 资源组的名称。 指定后,重写用于基础结构预配的资源组名称。 支持环境变量替换。 |
metadata |
N | 对象 | 有关应用程序模板的元数据。 |
infra |
N | 对象 | 为 Azure 基础结构预配提供其他配置。 |
services |
N | 对象 | 构成应用程序的服务的定义。 |
resources |
N | 对象 | 应用程序使用的 Azure 资源的定义。 |
pipeline |
N | 对象 | 持续集成管道的定义。 |
hooks |
N | 对象 | 命令的命令级别挂钩 azd 。 |
requiredVersions |
N | 对象 | 为所需的版本 azd 和扩展提供其他配置。 |
state |
N | 对象 | 为状态管理提供其他配置。 |
platform |
N | 对象 | 为特定于平台的功能(例如 Azure 开发人员中心)提供其他配置。 |
workflows |
N | 对象 | 为工作流提供其他配置,例如重写 azd up 行为。 |
cloud |
N | 对象 | 提供用于部署到主权云的其他配置。 默认云为 AzureCloud. |
name
(字符串,必需) 应用程序名称。 只允许小写字母、数字和连字符 (-) 。 名称必须以字母或数字开头和结尾。 最小长度:2 个字符。
name: my-app
resourceGroup
(string) Azure 资源组的名称。 指定后,重写用于基础结构预配的资源组名称。 支持环境变量替换。 必须介于 3 到 64 个字符之间。
resourceGroup: rg-my-app-${AZURE_ENV_NAME}
metadata
(对象) 有关应用程序模板的元数据。
| 财产 | 必填 | 类型 | 描述 |
|---|---|---|---|
template |
N | 字符串 | 从中创建应用程序的模板的标识符。 |
metadata:
template: todo-nodejs-mongo@0.0.1-beta
infra
(对象) 为 Azure 基础结构预配提供其他配置。
| 财产 | 必填 | 类型 | 描述 |
|---|---|---|---|
provider |
N | 字符串 | 用于为应用程序预配 Azure 资源的基础结构预配提供程序。 默认值:bicep。 允许的值:bicep、terraform。 |
path |
N | 字符串 | 指定提供程序的 Azure 预配模板的相对文件夹路径。 默认值:infra。 |
module |
N | 字符串 | Azure 预配模板中默认模块的名称。 默认值:main。 |
layers |
N | 数组 | Azure 基础结构预配的层。 请参阅 infra.layers。 |
注释
如果 layers 指定了至少一个项, path 则无法使用和 module 属性。 请改用特定于 path 层的值和 module 值。
infra.layers
(对象数组) 定义 Azure 基础结构的预配层。 每个层表示独立的预配单元。
| 财产 | 必填 | 类型 | 描述 |
|---|---|---|---|
name |
Y | 字符串 | 预配层的名称。 |
path |
Y | 字符串 | 指定提供程序的 Azure 预配模板的相对文件夹路径。 |
module |
N | 字符串 | 预配资源时使用的 Azure 预配模块的名称。 默认值:main。 |
dependsOn |
N | 字符串数组 | 此层所依赖的其他层的名称。 用于声明挂钩中介依赖项(例如,postprovision当另一层中的挂钩写入此层的 bicepparam 在预配时读取的 env var 时),azd静态分析器无法从.parameters.json.bicep / .bicepparam / 内容推断。 |
hooks |
N | 对象 | 预配层挂钩。 支持 preprovision 和 postprovision 挂钩。 指定路径时,它们应相对于层路径。 请参阅 Hook 定义。 |
infra:
provider: bicep
layers:
- name: core
path: ./infra/core
- name: services
path: ./infra/services
dependsOn:
- core
hooks:
postprovision:
shell: sh
run: ./scripts/post-provision.sh
Terraform 作为 IaC 提供程序示例
若要使用 Terraform 而不是 Bicep,请将它 provider 设置为 terraform。 有关详细信息,请参阅 将 Terraform 用作 IaC 提供程序。
name: yourApp-terraform
metadata:
template: yourApp-terraform@0.0.1-beta
services:
web:
project: ./src/web
dist: build
language: js
host: appservice
api:
project: ./src/api
language: js
host: appservice
infra:
provider: terraform
services
(object) 构成应用程序的服务的定义。 每个密钥都是服务名称,值是服务配置对象。
服务属性
| 财产 | 必填 | 类型 | 描述 |
|---|---|---|---|
host |
Y | 字符串 | 用于服务实现的 Azure 资源的类型。 请参阅 主机类型。 |
project |
Conditional | 字符串 | 服务源代码目录的路径。 大多数主机类型都是必需的。 |
image |
Conditional | 字符串 | 要用于容器映像的源映像,而不是从源生成。 支持环境变量替换。 仅对 containerapp 主机有效。 |
language |
N | 字符串 | 服务实现语言。 允许的值:dotnet, csharp, fsharp, pypython, js, tsjava, , , 。 docker |
module |
N | 字符串 | 用于部署服务相对于根基础结构文件夹的基础结构模块的路径。 如果省略,CLI 假定模块名称与服务名称相同。 |
dist |
N | 字符串 | 服务部署项目的相对路径。 |
resourceName |
N | 字符串 | 实现服务的 Azure 资源的名称。 默认情况下,CLI 会发现已设置为当前服务名称的标记 azd-service-name 的 Azure 资源。 支持环境变量替换。 |
resourceGroup |
N | 字符串 | 包含资源的 Azure 资源组的名称。 指定后,CLI 将查找指定资源组中的 Azure 资源。 支持环境变量替换。 |
remoteBuild |
N | 布尔 | 是否对函数应用部署使用远程生成。 仅当 host 为 function. 设置为该部署 true包时,将使用 Oryx 远程生成部署包。
true默认为 JavaScript、TypeScript 和 Python 函数应用。 |
docker |
N | 对象 | Docker 配置。 仅适用于基于容器的主机。 请参阅 docker。 |
k8s |
N | 对象 | AKS 配置选项。 仅当 host 为 aks. 请参阅 k8s。 |
config |
N | 对象 | 服务的额外配置选项。 |
uses |
N | 数组 | 此服务依赖的服务名称和资源名称的列表。 |
env |
N | 对象 | 环境变量名称映射到值。 支持环境变量替换。 |
apiVersion |
N | 字符串 | 部署的资源提供程序 API 版本。 仅当 host 为 containerapp. |
hooks |
N | 对象 | 服务级别挂钩。 请参阅 服务挂钩。 |
Tip
有关不同服务配置的完整 YAML 示例,请参阅 服务示例 。
主机类型
该 host 属性确定用于服务实现的 Azure 资源的类型,并控制哪些其他属性有效。
| 主机值 | 描述 | 需要 project |
支持 image |
支持 docker |
支持 k8s |
支持 env |
支持 apiVersion |
|---|---|---|---|---|---|---|---|
appservice |
Azure App 服务 | Y | N | N | N | N | N |
containerapp |
Azure 容器应用 |
project 或 image (不是两者) |
Y | Y | N | Y | Y |
function |
Azure Functions | Y | N | N | N | N | N |
staticwebapp |
Azure Static Web Apps | Y | N | N | N | N | N |
springapp |
Azure Spring Apps | Y | N | N | N | N | N |
aks |
Azure Kubernetes 服务 | N | N | Y | Y | N | N |
ai.endpoint |
Azure AI 联机终结点 | Y | N | Y | N | N | N |
azure.ai.agent |
Azure AI 代理 | Y | N | Y | N | N | N |
注释
springapp 支持需要选择加入 alpha 功能。 有关详细信息,请参阅 Alpha 功能。
注释
如果host为containerapp,则必须提供或imageproject,但不能同时提供这两者。 如果 image 已设置,则从指定的映像部署容器。 如果 project 已设置,则从源生成容器映像。
ai.endpoint 配置
(对象,需要何时hostai.endpoint) 为 Azure AI 联机终结点部署提供其他配置。
| 财产 | 必填 | 类型 | 描述 |
|---|---|---|---|
workspace |
N | 字符串 | AI Studio 项目工作区的名称。 如果省略, azd 请使用环境变量中指定的 AZUREAI_PROJECT_NAME 值。 支持环境变量替换。 |
flow |
N | 对象 | Azure AI Studio Prompt Flow 配置。 省略时,不会创建提示流。 请参阅 AI 组件配置。 |
environment |
N | 对象 | Azure AI Studio 自定义环境配置。 省略时,不会创建自定义环境。 请参阅 AI 组件配置。 |
model |
N | 对象 | Azure AI Studio 模型配置。 省略时,不会创建模型。 请参阅 AI 组件配置。 |
deployment |
Y | 对象 | Azure AI Studio 联机终结点部署配置。 创建新的联机终结点部署,并在成功完成后自动将流量转移到新部署。 请参阅 AI 部署配置。 |
注释
何时hostai.endpoint为这两者project,并且config均是必需的。 请参阅ai.endpoint所需配置属性的配置。
AI 组件配置
| 财产 | 必填 | 类型 | 描述 |
|---|---|---|---|
name |
N | 字符串 | AI 组件的名称。 省略时, azd 根据组件类型和服务名称生成名称。 支持环境变量替换。 |
path |
Y | 字符串 | AI 组件配置文件或源代码的路径。 |
overrides |
N | 对象 | 用于替代 AI 组件配置的键值对的映射。 支持环境变量替换。 |
AI 部署配置
从 AI 组件配置继承所有属性,以及:
| 财产 | 必填 | 类型 | 描述 |
|---|---|---|---|
environment |
N | 对象 | 要设置为部署环境变量的键/值对的映射。 值支持 OS 和 azd 环境变量替换。 |
services:
myendpoint:
project: ./src/endpoint
host: ai.endpoint
config:
workspace: my-ai-project
deployment:
path: ./deployment
environment:
MODEL_NAME: ${AZURE_OPENAI_MODEL}
docker
(对象) 服务的 Docker 配置。 仅适用于支持容器(containerapp、、 aks、 ai.endpoint) azure.ai.agent的主机。
| 财产 | 必填 | 类型 | 描述 |
|---|---|---|---|
path |
N | 字符串 | Dockerfile 的路径,相对于服务。 默认值:./Dockerfile。 |
context |
N | 字符串 | docker 生成上下文。 指定后,重写默认上下文。 默认值:.。 |
platform |
N | 字符串 | 平台目标。 默认值:amd64。 |
registry |
N | 字符串 | 要将映像推送到的容器注册表。 如果省略,则默认为环境变量的值 AZURE_CONTAINER_REGISTRY_ENDPOINT 。 支持环境变量替换。 |
image |
N | 字符串 | 应用于生成的容器映像的名称。 如果省略,则默认为 {appName}/{serviceName}-{environmentName}. 支持环境变量替换。 |
tag |
N | 字符串 | 应用于生成的容器映像的标记。 如果省略,则默认为 azd-deploy-{unix time (seconds)}. 支持环境变量替换。 |
buildArgs |
N | 字符串数组 | 要传递给 docker 生成命令的生成参数。 |
network |
N | 字符串 | Docker 生成期间 RUN 指令的网络模式。
--network传递给 docker 生成。 例如,用于 host 允许生成容器访问主机网络。 |
remoteBuild |
N | 布尔 | 是否远程生成映像。 如果设置为 true该映像,则使用 Azure 容器注册表远程生成功能远程生成映像。 如果远程生成失败, azd 请使用 Docker 或 Podman 自动回退到本地生成(如果可用)。 |
k8s
(对象) Azure Kubernetes 服务 (AKS) 配置选项。 仅当 host 为 aks.
| 财产 | 必填 | 类型 | 描述 |
|---|---|---|---|
deploymentPath |
N | 字符串 | 从服务路径到 k8s 部署清单的相对路径。 默认值:manifests。 |
namespace |
N | 字符串 | 已部署资源的 k8s 命名空间。 指定后,将创建一个新的 k8s 命名空间(如果尚不存在)。 默认值:项目名称。 |
deployment |
N | 对象 | k8s 部署配置。 请参阅 部署配置。 |
service |
N | 对象 | k8s 服务配置。 请参阅 服务配置。 |
ingress |
N | 对象 | k8s 入口配置。 请参阅 入口配置。 |
helm |
N | 对象 | helm 配置。 请参阅 Helm 配置。 |
kustomize |
N | 对象 | kustomize 配置。 请参阅 Kustomize 配置。 |
部署配置
| 财产 | 必填 | 类型 | 描述 |
|---|---|---|---|
name |
N | 字符串 | 部署期间要使用的 k8s 部署资源的名称。 如果未设置,请搜索包含服务名称的同一命名空间中的部署资源。 默认值:服务名称。 |
服务配置
| 财产 | 必填 | 类型 | 描述 |
|---|---|---|---|
name |
N | 字符串 | 用作默认服务终结点的 k8s 服务资源的名称。 如果未设置,请搜索包含服务名称的同一命名空间中的服务资源。 默认值:服务名称。 |
入口配置
| 财产 | 必填 | 类型 | 描述 |
|---|---|---|---|
name |
N | 字符串 | 要用作默认服务终结点的 k8s 入口资源的名称。 如果未设置,则搜索包含服务名称的同一命名空间中的入口资源。 默认值:服务名称。 |
relativePath |
N | 字符串 | 入口控制器根目录中的服务的相对路径。 设置后,它会追加到入口资源路径的根目录。 |
Helm 配置
| 财产 | 必填 | 类型 | 描述 |
|---|---|---|---|
repositories |
N | 数组 | 要添加的 helm 存储库。 |
releases |
N | 数组 | 要安装的 helm 版本。 |
repositories 数组项:
| 财产 | 必填 | 类型 | 描述 |
|---|---|---|---|
name |
Y | 字符串 | helm 存储库的名称。 |
url |
Y | 字符串 | helm 存储库的 URL。 |
releases 数组项:
| 财产 | 必填 | 类型 | 描述 |
|---|---|---|---|
name |
Y | 字符串 | helm 版本的名称。 |
chart |
Y | 字符串 | helm 图表的名称。 |
version |
N | 字符串 | helm 图表的版本。 |
namespace |
N | 字符串 | 要安装 helm 图表的 k8s 命名空间。 默认为服务命名空间。 |
values |
N | 字符串 | 从服务到要 values.yaml 传递到 helm 图表的相对路径。 |
Kustomize 配置
| 财产 | 必填 | 类型 | 描述 |
|---|---|---|---|
dir |
N | 字符串 | kustomize 目录的相对路径。 支持环境变量替换。 |
edits |
N | 字符串数组 | 在部署之前要应用的 kustomize 编辑。 支持环境变量替换。 |
env |
N | 对象 | 用于在 kustomize 目录中生成 .env 文件的环境键/值对。 值支持环境变量替换。 |
服务挂钩
服务级别挂钩在服务生命周期事件期间执行。 挂钩应与前缀为 pre 或 post. 指定路径时,它们应相对于服务路径。 有关详细信息,请参阅 使用命令和事件挂钩自定义 Azure 开发人员 CLI 工作流。
支持的服务挂钩:prerestore、、、postrestoreprebuildpostbuildprepackagepostpackageprepublish、。 postpublishpredeploypostdeploy
每个挂钩都使用 挂钩定义 格式。
服务示例
使用 Docker 选项的容器应用
services:
api:
project: ./src/api
language: js
host: containerapp
docker:
path: ./Dockerfile
context: ../
web:
project: ./src/web
language: js
host: containerapp
docker:
remoteBuild: true
预生成的映像中的容器应用
services:
api:
image: myregistry.azurecr.io/myapp:latest
host: containerapp
具有服务级别挂钩的 AKS
services:
web:
project: ./src/web
dist: build
language: js
host: aks
hooks:
postdeploy:
shell: sh
run: azd env set REACT_APP_WEB_BASE_URL ${SERVICE_WEB_ENDPOINT_URL}
api:
project: ./src/api
language: js
host: aks
k8s:
ingress:
relativePath: api
hooks:
postdeploy:
shell: sh
run: azd env set REACT_APP_API_BASE_URL ${SERVICE_API_ENDPOINT_URL}
resources
(对象) 应用程序使用的 Azure 资源的定义。 每个键都是资源名称,值是资源配置对象。 可以通过属性由服务 uses 引用资源。
常见资源属性
| 财产 | 必填 | 类型 | 描述 |
|---|---|---|---|
type |
Y | 字符串 | 资源的类型。 请参阅 资源类型。 |
uses |
N | 数组 | 此资源依赖的其他资源。 |
existing |
N | 布尔 | 设置为 true此资源时,不会创建此资源,而是用于引用目的。 默认值:false。 |
Tip
有关合并多个资源类型的完整 YAML 示例,请参阅 “资源”示例 。
资源类型
该 type 属性确定 Azure 资源的类型,并控制哪些附加属性可用。
| 类型值 | 描述 | 其他属性 |
|---|---|---|
host.appservice |
Azure 应用服务 Web 应用 | 请参阅 host.appservice 属性。 |
host.containerapp |
基于 Docker 的容器应用 | 请参阅 host.containerapp 属性。 |
ai.openai.model |
已部署的现成 AI 模型 | 请参阅 ai.openai.model 属性。 |
ai.project |
具有模型的 Microsoft Foundry 项目 | 请参阅 ai.project 属性。 |
ai.search |
Azure AI 搜索 | 请参阅 ai.search 属性。 |
db.postgres |
Azure Database for PostgreSQL | 没有额外的属性。 |
db.mysql |
Azure Database for MySQL | 没有额外的属性。 |
db.redis |
Azure Cache for Redis | 没有额外的属性。 |
db.mongo |
Azure Cosmos DB for MongoDB | 没有额外的属性。 |
db.cosmos |
Azure Cosmos DB for NoSQL | 请参阅 db.cosmos 属性。 |
messaging.eventhubs |
Azure 事件中心命名空间 | 请参阅 messaging.eventhubs 属性。 |
messaging.servicebus |
Azure 服务总线命名空间 | 请参阅 messaging.servicebus 属性。 |
storage |
Azure 存储 帐户 | 请参阅 storage 属性。 |
keyvault |
Azure 密钥保管库 | 请参阅 keyvault 属性。 |
host.appservice 属性
| 财产 | 必填 | 类型 | 描述 |
|---|---|---|---|
port |
N | 整数 | Web 应用侦听的端口。 默认值:80。 |
runtime |
Y | 对象 | 语言运行时配置。 请参阅下文。 |
env |
N | 数组 | 环境变量。 每个项都有 name (必需) value和 secret 属性。 支持环境变量替换。 |
startupCommand |
N | 字符串 | 作为 Web 应用启动的一部分运行的启动命令。 |
uses |
N | 字符串数组 | 此资源使用的其他资源。 |
runtime 对象:
| 财产 | 必填 | 类型 | 描述 |
|---|---|---|---|
stack |
Y | 字符串 | 语言运行时堆栈。 允许的值:node、python。 |
version |
Y | 字符串 | 语言运行时版本。 格式因堆栈而异(例如, 22-lts 对于 Node, 3.13 对于 Python)。 |
resources:
web:
type: host.appservice
port: 8080
runtime:
stack: node
version: 22-lts
uses:
- db
host.containerapp 属性
| 财产 | 必填 | 类型 | 描述 |
|---|---|---|---|
port |
N | 整数 | 容器应用侦听的端口。 默认值:80。 |
env |
N | 数组 | 环境变量。 每个项都有 name (必需) value和 secret 属性。 支持环境变量替换。 |
uses |
N | 字符串数组 | 此资源使用的其他资源。 |
ai.openai.model 属性
| 财产 | 必填 | 类型 | 描述 |
|---|---|---|---|
model |
Conditional | 对象 | 基础 AI 模型。 当 existing 是 false 时为必需项。 |
existing |
N | 布尔 | 设置为 true此资源时,不会创建此资源,而是用于引用目的。 默认值:false。 |
model 对象:
| 财产 | 必填 | 类型 | 描述 |
|---|---|---|---|
name |
Y | 字符串 | AI 模型的名称。 |
version |
Y | 字符串 | AI 模型的版本。 |
resources:
chatModel:
type: ai.openai.model
model:
name: gpt-4o
version: "2024-08-06"
ai.project 属性
| 财产 | 必填 | 类型 | 描述 |
|---|---|---|---|
models |
N | 数组 | 要作为 AI 项目的一部分部署的 AI 模型。 |
existing |
N | 布尔 | 设置为 true此资源时,不会创建此资源,而是用于引用目的。 默认值:false。 |
models 数组项:
| 财产 | 必填 | 类型 | 描述 |
|---|---|---|---|
name |
Y | 字符串 | AI 模型的名称。 |
version |
Y | 字符串 | AI 模型的版本。 |
format |
Y | 字符串 | AI 模型的格式(例如 Microsoft, OpenAI)。 |
sku |
Y | 对象 | AI 模型的 SKU 配置。 |
sku 对象:
| 财产 | 必填 | 类型 | 描述 |
|---|---|---|---|
name |
Y | 字符串 | SKU 的名称(例如 GlobalStandard)。 |
usageName |
Y | 字符串 | 用于计费目的的 SKU 的使用名称(例如 OpenAI.GlobalStandard.gpt-4o-mini)。 |
capacity |
Y | 整数 | SKU 的容量。 |
ai.search 属性
| 财产 | 必填 | 类型 | 描述 |
|---|---|---|---|
existing |
N | 布尔 | 设置为 true此资源时,不会创建此资源,而是用于引用目的。 默认值:false。 |
db.cosmos 属性
| 财产 | 必填 | 类型 | 描述 |
|---|---|---|---|
containers |
N | 数组 | 用于存储数据的容器。 每个容器存储一组项。 |
containers 数组项:
| 财产 | 必填 | 类型 | 描述 |
|---|---|---|---|
name |
Y | 字符串 | 容器的名称。 |
partitionKeys |
Y | 数组 | 用于跨分区分布数据的分区键(s)。 最多 3 个键。 默认值:/id。 |
messaging.eventhubs 属性
| 财产 | 必填 | 类型 | 描述 |
|---|---|---|---|
hubs |
N | 字符串数组 | 在事件中心命名空间中创建的中心名称。 |
existing |
N | 布尔 | 设置为 true此资源时,不会创建此资源,而是用于引用目的。 默认值:false。 |
messaging.servicebus 属性
| 财产 | 必填 | 类型 | 描述 |
|---|---|---|---|
queues |
N | 字符串数组 | 在服务总线命名空间中创建的队列名称。 |
topics |
N | 字符串数组 | 在服务总线命名空间中创建的主题名称。 |
existing |
N | 布尔 | 设置为 true此资源时,不会创建此资源,而是用于引用目的。 默认值:false。 |
storage 属性
| 财产 | 必填 | 类型 | 描述 |
|---|---|---|---|
containers |
N | 字符串数组 | Azure 存储帐户容器名称。 |
existing |
N | 布尔 | 设置为 true此资源时,不会创建此资源,而是用于引用目的。 默认值:false。 |
keyvault 属性
| 财产 | 必填 | 类型 | 描述 |
|---|---|---|---|
existing |
N | 布尔 | 设置为 true此资源时,不会创建此资源,而是用于引用目的。 默认值:false。 |
资源示例
resources:
db:
type: db.postgres
cache:
type: db.redis
chatModel:
type: ai.openai.model
model:
name: gpt-4o
version: "2024-08-06"
web:
type: host.containerapp
port: 3100
uses:
- db
- chatModel
pipeline
(对象) 持续集成管道的定义。
| 财产 | 必填 | 类型 | 描述 |
|---|---|---|---|
provider |
N | 字符串 | 要用于持续集成的管道提供程序。 默认值:github。 允许的值:github、azdo。 |
variables |
N | 字符串数组 |
azd在管道中用作变量的环境变量列表。 |
secrets |
N | 字符串数组 |
azd在管道中用作机密的环境变量列表。 |
pipeline:
provider: azdo
variables:
- CUSTOM_SETTING
secrets:
- API_KEY
hooks
(对象) 命令级别挂钩。 挂钩应与前缀为 azd 或 pre 的 post 命令名称匹配,具体取决于脚本的执行时间。 指定路径时,它们应相对于项目路径。 有关详细信息,请参阅 使用命令和事件挂钩自定义 Azure 开发人员 CLI 工作流。
支持的命令挂钩:preprovision、、postprovision、preinfracreatepostinfracreate、。 preinfradeletepostinfradeletepredownpostdownpreuppostupprepackagepostpackageprepublishpostpublishpredeploypostdeployprerestorepostrestore
每个挂钩都使用 挂钩定义 格式。
Tip
有关完整的 YAML 示例,请参阅 Hook 示例 ,包括特定于平台的挂钩、类型化执行程序以及每个事件的多个挂钩。
hooks:
preprovision:
shell: sh
run: ./scripts/setup.sh
postdeploy:
shell: sh
run: azd env set APP_URL ${SERVICE_WEB_ENDPOINT_URL}
挂钩定义
挂钩可以是单个挂钩对象或挂钩对象的数组。 每个挂钩对象具有以下属性:
| 财产 | 必填 | 类型 | 描述 |
|---|---|---|---|
run |
Conditional | 字符串 | 脚本的内联脚本或相对路径。 指定shell、、kind、dir、interactive、continueOnError或secretsconfig时必需。 指定内联脚本时,还必须指定 shell 要使用的脚本。 使用文件路径时,会自动推断 shell。 |
shell |
N | 字符串 | 要执行脚本的 shell 类型。 默认值:sh。 允许的值:sh、pwsh。 |
kind |
N | 字符串 | 挂钩脚本的执行程序类型。 省略时,将从路径的run文件扩展名(例如,.py变为,变为python.ps1)pwsh自动检测类型。 允许的值:sh、pwsh、js、ts、python、dotnet。 |
dir |
N | 字符串 | 用于挂钩执行的工作目录。 用作依赖项安装的项目根目录,并在运行脚本时用作工作目录。 从项目或服务根目录解析相对路径。 省略时,默认为包含脚本文件的目录。 |
continueOnError |
N | 布尔 | 脚本错误是否停止 azd 命令。 默认值:false。 |
interactive |
N | 布尔 | 脚本是否以交互模式运行、绑定到stdinstdoutstderr和正在运行的控制台。 默认值:false。 |
windows |
N | 对象 | 指定后,在 Windows 环境中执行时重写挂钩配置。 使用相同的挂钩对象格式。 |
posix |
N | 对象 | 指定后,在 POSIX(Linux 和 macOS)环境中执行时重写挂钩配置。 使用相同的挂钩对象格式。 |
secrets |
N | 对象 | 用于挂钩机密的 azd 环境变量映射。 如果变量在环境中设置为机密,则会将机密值传递给挂钩。 |
config |
N | 对象 | 执行程序特定的配置。 可用属性取决于 kind 值。 请参阅 Hook 执行程序配置。 |
注释
windows当同时指定和posix指定时,run不能在顶级使用 、、shellkinddirinteractivecontinueOnError、 secrets和config属性。 请改用特定于平台的对象。
挂钩执行程序配置
该 config 属性接受不同的属性,具体取决于 kind 值。
JavaScript 和 TypeScript (js, ts) 配置
| 财产 | 必填 | 类型 | 描述 |
|---|---|---|---|
packageManager |
N | 字符串 | 用于依赖项安装的包管理器。 替代锁定文件中的自动检测。 允许的值:npm、pnpm、yarn。 |
Python 配置
| 财产 | 必填 | 类型 | 描述 |
|---|---|---|---|
virtualEnvName |
N | 字符串 | Python 虚拟环境的目录名称。 默认为自动检测(.venv,或venv{baseName}_env)。 |
.NET (dotnet) 配置
| 财产 | 必填 | 类型 | 描述 |
|---|---|---|---|
configuration |
N | 字符串 | 用于生成挂钩脚本的 MSBuild 配置(例如,DebugRelease)。 |
framework |
N | 字符串 | 用于生成和运行挂钩脚本的目标框架名字对象(例如,net8.0)。 net10.0 |
Shell (sh, pwsh) 配置
Shell 执行程序目前 config 不支持属性。
挂钩示例
特定于平台的挂钩
hooks:
preprovision:
windows:
shell: pwsh
run: ./scripts/setup.ps1
posix:
shell: sh
run: ./scripts/setup.sh
具有种类的 Python 挂钩
hooks:
postprovision:
kind: python
run: ./scripts/seed-data.py
dir: ./scripts
config:
virtualEnvName: .venv
单个事件的多个挂钩
hooks:
postprovision:
- shell: sh
run: ./scripts/step1.sh
- shell: sh
run: ./scripts/step2.sh
requiredVersions
(对象) 为所需的版本 azd 和扩展提供其他配置。
| 财产 | 必填 | 类型 | 描述 |
|---|---|---|---|
azd |
N | 字符串 | 此项目的一系列受支持的 azd 版本。
azd如果版本超出此范围,则项目无法加载。 支持 semver 范围语法。 |
extensions |
N | 对象 | 此项目所需的扩展和版本约束的映射。 支持 semver 约束。 如果省略版本,则安装最新版本。 |
requiredVersions:
azd: ">= 0.6.0-beta.3"
extensions:
azure.ai.agents: ">=1.0.0"
my-extension: latest
state
(对象) 为状态管理提供其他配置。
| 财产 | 必填 | 类型 | 描述 |
|---|---|---|---|
remote |
N | 对象 | 为远程状态管理提供其他配置。 请参阅 state.remote。 |
state.remote
| 财产 | 必填 | 类型 | 描述 |
|---|---|---|---|
backend |
Y | 字符串 | 远程状态后端类型。 默认值:AzureBlobStorage。 允许的值: AzureBlobStorage. |
config |
Conditional | 对象 | 特定于后端的配置。 当 backend 是 AzureBlobStorage 时为必需项。 请参阅 Azure Blob 存储配置。 |
Azure Blob 存储配置
| 财产 | 必填 | 类型 | 描述 |
|---|---|---|---|
accountName |
Y | 字符串 | Azure 存储账户名称。 |
containerName |
N | 字符串 | Azure 存储容器名称。 如果未指定,则默认为项目名称。 |
endpoint |
N | 字符串 | Azure 存储终结点。 默认值:blob.core.windows.net。 |
state:
remote:
backend: AzureBlobStorage
config:
accountName: mystorageaccount
containerName: azd-state
platform
(对象) 为特定于平台的功能(例如 Azure 开发人员中心)提供其他配置。
| 财产 | 必填 | 类型 | 描述 |
|---|---|---|---|
type |
Y | 字符串 | 平台类型。 允许的值: devcenter. |
config |
N | 对象 | 特定于平台的配置。 请参阅 开发人员中心配置。 |
开发人员中心配置
在以下type情况下devcenter可用:
| 财产 | 必填 | 类型 | 描述 |
|---|---|---|---|
name |
N | 字符串 | Azure 开发人员中心的名称。 用作此项目的默认开发人员中心。 |
project |
N | 字符串 | Azure 开发人员中心项目的名称。 |
catalog |
N | 字符串 | Azure 开发人员中心目录的名称。 |
environmentDefinition |
N | 字符串 | 开发人员中心目录环境定义的名称。 |
environmentType |
N | 字符串 | 用于部署环境的开发人员中心项目环境类型。 |
platform:
type: devcenter
config:
name: my-devcenter
project: my-project
catalog: my-catalog
environmentDefinition: my-env-def
environmentType: dev
workflows
(对象) 为工作流提供其他配置,例如重写 azd up 行为。
| 财产 | 必填 | 类型 | 描述 |
|---|---|---|---|
up |
N | 对象或数组 | 指定后,重写工作流的默认行为 azd up 。 |
工作流步骤
工作流 up 接受 steps 数组(也可以直接指定为数组)。 每个步骤都运行一个 azd 命令。
| 财产 | 必填 | 类型 | 描述 |
|---|---|---|---|
azd |
Y | 字符串或对象 | 要 azd 执行的命令。 可以是字符串(例如), provision也可以是具有 args 数组的对象。 |
配置工作流步骤顺序
以下azure.yaml文件更改了在步骤后azd up移动azd package步骤的默认行为azd provision。 在生成或打包过程中需要知道资源的 URL 的情况下,请使用此方法。
name: todo-nodejs-mongo
metadata:
template: todo-nodejs-mongo@0.0.1-beta
workflows:
up:
steps:
- azd: provision
- azd: package
- azd: deploy --all
cloud
(对象) 提供用于部署到主权云(例如 Azure 政府)的其他配置。 默认云为 AzureCloud.
| 财产 | 必填 | 类型 | 描述 |
|---|---|---|---|
name |
N | 字符串 | 云环境名称。 允许的值:AzureCloud、AzureChinaCloud、AzureUSGovernment。 |
cloud:
name: AzureUSGovernment
请求帮助
有关如何提交 bug、请求帮助或为 Azure 开发人员 CLI 提出新功能的信息,请访问 故障排除和支持 页。