Azure API Management 与 ARM 模板的集成:实现基础设施即代码
作者:xiaoxin.gao · 2025-06-26 · 阅读时间:6分钟
在本次演讲中,我们将探讨如何将 Azure API Management 与 ARM 模板 集成,以实现基础设施即代码(Infrastructure as Code, IaC)的开发方法。这种集成可以帮助我们自动化部署,确保环境之间的一致性,并简化管理与扩展。
1. ARM 模板简介
ARM 模板 是 JSON 文件,用于定义和部署 Azure 基础设施。通过 ARM 模板,我们可以实现基础设施即代码(IaC),将配置作为代码进行版本控制、重用和维护。ARM 模板的主要优势包括:
- 声明式语法:只需描述最终状态,Azure 将负责其余部分。
- 一致性:确保开发、测试和生产环境之间的一致性。
- 版本控制:将配置文件存储在 Git 等版本控制系统中,便于跟踪变更。
- 自动化:完全自动化 API Management 实例的配置和部署。
2. ARM 模板的结构
ARM 模板包含以下主要部分:
- $schema:指定模板的 JSON 架构版本。
- contentVersion:用户定义的版本号,用于内部版本控制。
- parameters:输入参数,用于在部署时提供动态值。
- variables:在模板内部计算的值,用于简化模板并避免重复。
- resources:定义要部署的资源,如 API Management 实例、API、策略等。
- outputs:部署后返回的有用值,如 API 名称或 URL。
3. 创建 ARM 模板
- 创建新模板:
- 登录到 Azure 门户。
- 导航到“模板部署”部分。
- 选择“在编辑器中构建自己的模板”。
- 清除默认内容,开始定义自己的模板。
-
定义参数:
- 在模板中添加
parameters
部分,定义必要的输入值,如服务名称、发布者邮箱等。 - 示例:
""parameters"": { ""apiManagementServiceName"": { ""type"": ""string"", ""defaultValue"": ""myApiManagementService"" }, ""publisherEmail"": { ""type"": ""string"", ""defaultValue"": ""publisher@example.com"" }, ""publisherName"": { ""type"": ""string"", ""defaultValue"": ""My Company"" } }
- 在模板中添加
-
定义资源:
- 在
resources
部分,定义要部署的资源。例如,创建一个 API Management 实例:{ ""type"": ""Microsoft.ApiManagement/service"", ""apiVersion"": ""2021-08-01"", ""name"": ""[parameters('apiManagementServiceName')]"", ""location"": ""[resourceGroup().location]"", ""properties"": { ""publisherEmail"": ""[parameters('publisherEmail')]"", ""publisherName"": ""[parameters('publisherName')]"" }, ""sku"": { ""name"": ""Developer"", ""capacity"": 1 } }
- 在
- 保存模板:
- 点击“保存”按钮,保存模板。
4. 部署 ARM 模板
-
输入参数:
- 在部署界面中,输入实际的参数值,如服务名称、发布者邮箱等。
-
启动部署:
- 点击“审核 + 创建”,然后点击“创建”开始部署。
-
验证部署:
- 部署完成后,导航到资源组,验证 API Management 实例是否已成功创建。
5. 扩展模板
-
添加 API:
- 在现有模板中添加新的资源定义,例如 Pet Store API。
- 使用
dependsOn
属性确保 API 在 API Management 实例创建后部署。 - 示例:
{ ""type"": ""Microsoft.ApiManagement/service/apis"", ""apiVersion"": ""2021-08-01"", ""name"": ""[concat(parameters('apiManagementServiceName'), '/PetStore')]"", ""dependsOn"": [ ""[resourceId('Microsoft.ApiManagement/service', parameters('apiManagementServiceName'))]"" ], ""properties"": { ""displayName"": ""Pet Store"", ""protocol"": ""https"", ""path"": ""petstore"", ""serviceUrl"": ""https://petstore.swagger.io/v2"" } }
-
完整模板示例:
{ ""$schema"": ""https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#"", ""contentVersion"": ""1.0.0.0"", ""parameters"": { ""apiManagementServiceName"": { ""type"": ""string"", ""defaultValue"": ""myApiManagementService"" }, ""publisherEmail"": { ""type"": ""string"", ""defaultValue"": ""publisher@example.com"" }, ""publisherName"": { ""type"": ""string"", ""defaultValue"": ""My Company"" } }, ""resources"": [ { ""type"": ""Microsoft.ApiManagement/service"", ""apiVersion"": ""2021-08-01"", ""name"": ""[parameters('apiManagementServiceName')]"", ""location"": ""[resourceGroup().location]"", ""properties"": { ""publisherEmail"": ""[parameters('publisherEmail')]"", ""publisherName"": ""[parameters('publisherName')]"" }, ""sku"": { ""name"": ""Developer"", ""capacity"": 1 } }, { ""type"": ""Microsoft.ApiManagement/service/apis"", ""apiVersion"": ""2021-08-01"", ""name"": ""[concat(parameters('apiManagementServiceName'), '/PetStore')]"", ""dependsOn"": [ ""[resourceId('Microsoft.ApiManagement/service', parameters('apiManagementServiceName'))]"" ], ""properties"": { ""displayName"": ""Pet Store"", ""protocol"": ""https"", ""path"": ""petstore"", ""serviceUrl"": ""https://petstore.swagger.io/v2"" } } ], ""outputs"": {} }
6. 验证部署
-
检查 API Management 实例:
- 导航到 API Management 实例,确保 Pet Store API 已成功添加。
-
验证操作:
- 确保所有操作已从 Swagger 文件中正确导入。
7. 总结
通过 ARM 模板,我们可以实现基础设施即代码,确保开发、测试和生产环境之间的一致性。ARM 模板的主要优势包括:
- 一致性:确保不同环境之间的一致性。
- 版本控制:将配置文件存储在版本控制系统中。
- 自动化:完全自动化部署过程,减少手动错误。
- 标准化:确保团队遵循最佳实践。
原文引自YouTube视频:https://www.youtube.com/watch?v=1F6uvXQDcPI
热门推荐
一个账号试用1000+ API
助力AI无缝链接物理世界 · 无需多次注册
3000+提示词助力AI大模型
和专业工程师共享工作效率翻倍的秘密
热门API
- 1. AI文本生成
- 2. AI图片生成_文生图
- 3. AI图片生成_图生图
- 4. AI图像编辑
- 5. AI视频生成_文生视频
- 6. AI视频生成_图生视频
- 7. AI语音合成_文生语音
- 8. AI文本生成(中国)
热门推荐
一个账号试用1000+ API
助力AI无缝链接物理世界 · 无需多次注册