在生成新的Azure开发人员 CLI (azd) 模板或从现有模板开始后,可以随着需求的变化来扩展和发展其应用程序和基础结构。 本教程演示如何在不依赖模板提供的模块的情况下向模板添加新的Azure服务。
你将从 hello-azd 模板 开始,创建一个用于定义 Azure 翻译器资源的 Bicep 模块,从模板的基础设施入口点引用该模块,并将其输出公开为 azd 环境值。 本教程重点介绍如何扩展基础结构,不会修改应用程序代码。
Note
可以直接进行以下更改,也可以通过 AI 编码助手提供帮助。 无论创作方法如何,在部署前查看生成的文件并验证模板。
Prerequisites
若要完成本教程,需要:
- 已安装Azure开发人员 CLI。
- 一份 Azure 订阅。
- 在订阅中创建Azure资源的权限。
- 初始化模板的空目录。
初始化模板
在空目录中打开终端,然后初始化该目录中的 hello-azd 模板:
azd init --template hello-azd .
模板包括:
- 一个 C# 应用程序,作为
azure.yaml中的aca服务部署到 Azure 容器应用。 - 应用程序的用户分配的托管标识。
- 具有 Blob 容器和表的 Azure 存储帐户。
- Azure 容器注册表和Azure 容器应用环境。
-
infra/core下的可重用 Bicep 模块
有关在初始化之前选择和查看模板的指导,请参阅 从现有模板开始。
创建翻译器模块
手动创建一个名为 的文件,或在 AI 编码助手的帮助下创建。 此新模块是自包含的,不依赖于起始模板中的模块:
@description('Name of the Azure Translator resource.')
param name string
@description('Azure region for the resource.')
param location string
@description('Tags to apply to the resource.')
param tags object = {}
@description('Pricing tier for Azure Translator.')
@allowed([
'F0'
'S1'
])
param sku string = 'F0'
resource translator 'Microsoft.CognitiveServices/accounts@2023-05-01' = {
name: name
location: location
kind: 'TextTranslation'
sku: {
name: sku
}
properties: {
customSubDomainName: name
disableLocalAuth: true
publicNetworkAccess: 'Enabled'
}
tags: tags
}
output name string = translator.name
output endpoint string = translator.properties.endpoint
该模块使用 TextTranslation 资源类型并禁用本地密钥身份验证。 该 F0 层可用于评估,但每个订阅只允许一个免费的 Translator 资源。 如果订阅已包含F0资源,或者项目需要付费层,请使用S1。
Important
此介绍性示例启用公共终结点,以便无需添加网络基础结构即可预配资源。 在生产环境中使用此模式之前,请评估专用终结点、网络访问控制、监视和组织的安全要求。
从 引用模块
hello-azd 模板在infra/main.bicep中定义了 rg 资源组以及 location、tags 和 resourceToken 值。 可以手动进行此编辑,或提示 AI 助手添加它。 在 rg 资源声明之后添加以下模块:
module translator './translator.bicep' = {
name: 'translator'
scope: rg
params: {
name: 'translator-${resourceToken}'
location: location
tags: tags
}
}
该 scope 属性将模块部署到模板创建的资源组中。
resourceToken现有值使翻译器资源名称对于每个环境都不同。
导出翻译器输出
在 infra/main.bicep 的末尾添加以下输出:
output AZURE_TRANSLATOR_NAME string = translator.outputs.name
output AZURE_TRANSLATOR_ENDPOINT string = translator.outputs.endpoint
完成预配后,azd 会在当前环境中捕获这些非机密输出。 稍后的应用程序代码更改可以使用这些值来查找 Translator 资源。
预配和验证基础结构
预配模板的基础结构,而无需部署其应用程序代码:
azd provision
运行 azd env get-values 并确认输出包括 AZURE_TRANSLATOR_NAME 和 AZURE_TRANSLATOR_ENDPOINT。 在Azure门户中,验证资源组是否包含Azure 翻译器资源。
此时,模板会预配 AI 服务,但不会将示例应用程序连接到它。 若要完成该集成,请为应用程序的托管标识配置最低特权访问权限,将终结点传递给应用程序,并将 Translator 客户端添加到应用程序代码。 有关详细信息,请参阅Azure 翻译器文档。
清理资源
不再需要资源时,请将其删除以避免持续收费:
azd down --purge
相关内容
请求帮助
有关如何提交 bug、请求帮助或为 Azure 开发人员 CLI 提出新功能的信息,请访问 troubleshooting and support 页。