第一章:MCP AZ-204 实践实验室环境准备
在开始 AZ-204 认证的实践学习前,搭建一个稳定且符合考试要求的开发与云环境至关重要。该环境需支持 Azure 服务部署、本地代码调试以及资源管理操作。
订阅与账户配置
确保拥有一个有效的 Microsoft Azure 免费试用账户或 MSDN 订阅。登录 Azure 门户后,创建一个新的资源组用于隔离实验资源,避免与其他项目冲突。
开发工具安装
推荐使用 Visual Studio Code 搭配以下扩展:
- Azure Account - 管理 Azure 登录和订阅
- Azure App Service - 直接部署 Web 应用
- Remote - SSH - 支持远程服务器连接
同时安装 Azure CLI,用于命令行操作。验证安装是否成功:
# 检查 Azure CLI 是否安装成功
az --version
# 登录 Azure 账户
az login
# 设置默认订阅(替换为实际的订阅 ID)
az account set --subscription "your-subscription-id"
上述命令依次验证 CLI 安装、触发浏览器登录流程,并设定操作所用的订阅上下文。
本地环境依赖
根据开发语言选择对应 SDK。若使用 .NET Core 开发函数应用,需安装 .NET SDK;若使用 Node.js,则安装 LTS 版本的 Node 并配置 npm。
| 工具 | 用途 | 最低版本 |
|---|
| Azure CLI | 资源管理和自动化 | 2.30.0 |
| Visual Studio Code | 代码编辑与调试 | 1.70+ |
| .NET SDK | 构建 C# 应用 | 6.0 |
最后,在本地初始化 Git 仓库以跟踪代码变更,便于后续集成 Azure DevOps 或 GitHub Actions 进行 CI/CD 实践。
第二章:Azure账户与开发环境配置
2.1 理解Azure订阅与服务配额限制
Azure订阅是资源管理的基本边界,决定了用户可访问的服务范围与使用上限。每个订阅均关联特定的配额与限制,例如虚拟机核心数、网络带宽及存储容量。
常见服务配额示例
| 服务 | 默认限制 | 可调整性 |
|---|
| VM vCPU(标准B系列) | 10 | 支持提升 |
| 公共IP地址 | 20 | 支持提升 |
| 虚拟网络网关 | 50 | 受限 |
查看当前配额
可通过Azure CLI查询指定区域的可用vCPU额度:
az vm list-usage --location eastus --output table
该命令返回当前订阅在“eastus”区域的资源使用情况与配额上限,
--output table提升可读性,便于快速识别瓶颈。 当资源部署失败并提示“quota exceeded”时,应优先检查对应区域的服务配额,并通过支持请求申请提升。
2.2 创建并配置Azure免费账户实践
注册Azure免费账户
访问
Azure 免费账户页面,点击“开始免费使用”。需要提供有效的电子邮件地址、手机号码和信用卡信息(仅用于身份验证,不会产生费用)。
- 提供个人基本信息并完成身份验证
- 选择“免费试用”计划,获得12个月的免费服务及200美元额度
- 验证通过后,系统自动创建Azure订阅
初始资源配置示例
登录 Azure 门户后,可通过脚本快速部署测试资源:
# 创建资源组
az group create --name MyFreeTierGroup --location eastus
# 部署一个免费层级的Web应用
az webapp up --name myfreewebapp --resource-group MyFreeTierGroup --plan free
上述命令使用 Azure CLI 创建资源组并部署免费 Web 应用。参数
--plan free 确保不产生额外费用,适用于学习和轻量级项目。
成本管理建议
启用预算告警,监控使用情况,避免超出免费额度。
2.3 安装Azure CLI与PowerShell模块详解
在管理Azure资源时,命令行工具是不可或缺的组成部分。Azure CLI 和 Azure PowerShell 模块提供了强大的自动化能力,适用于跨平台和Windows原生环境。
安装Azure CLI
Azure CLI 支持 Windows、macOS 和 Linux 系统。以 Ubuntu 为例,可通过以下命令安装:
# 更新包索引并安装Azure CLI
sudo apt-get update
sudo apt-get install -y ca-certificates curl apt-transport-https lsb-release gnupg
curl -sL https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/microsoft.gpg > /dev/null
echo "deb [arch=amd64] https://packages.microsoft.com/repos/azure-cli/ $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/azure-cli.list
sudo apt-get update
sudo apt-get install -y azure-cli
该脚本首先导入Microsoft GPG密钥并配置APT源,确保软件包来源可信。最后通过
apt-get install完成安装。安装后可执行
az --version验证版本。
安装Azure PowerShell模块
在PowerShell环境中,使用以下命令安装Az模块:
- Install-Module -Name Az -Scope CurrentUser -Repository PSGallery -Force
该命令从PowerShell Gallery下载并安装最新版Az模块,
-Force参数避免确认提示,适用于自动化部署场景。
2.4 配置Visual Studio Code开发环境
安装与基础配置
Visual Studio Code(VS Code)是一款轻量级但功能强大的代码编辑器,支持多种编程语言。首次启动后,建议安装常用扩展,如Python、Prettier、GitLens等,以增强开发体验。
关键扩展推荐
- Python:提供智能补全、调试和 linting 支持
- Prettier:统一代码格式化风格
- GitLens:增强 Git 版本控制可视化能力
配置调试环境
以 Python 为例,创建
.vscode/launch.json 文件:
{
"version": "0.2.0",
"configurations": [
{
"name": "Python: Module",
"type": "python",
"request": "launch",
"module": "main"
}
]
}
该配置指定调试启动方式为模块运行,
name 显示在调试面板中,
type 设为 python 以启用对应调试器。
2.5 使用Azure门户进行资源管理初探
Azure门户是管理云资源的核心控制台,提供直观的图形化界面,便于快速部署与监控资源。
导航与资源组创建
登录Azure门户后,可通过左侧导航栏访问“资源组”服务。点击“创建”并填写订阅、资源组名称及区域即可完成初始化。
常用操作快捷方式
- 通过搜索栏快速定位服务(如“虚拟机”、“存储账户”)
- 使用“快速启动模板”加速资源部署
- 在仪表板自定义常用资源卡片
部署虚拟机示例
{
"type": "Microsoft.Compute/virtualMachines",
"apiVersion": "2022-03-01",
"name": "myVM",
"location": "eastus",
"properties": {
"hardwareProfile": { "vmSize": "Standard_B2s" }
}
}
该ARM模板片段定义了一台位于东美区域的小型Linux虚拟机,
vmSize参数指定其为低成本基础型实例,适用于开发测试场景。
第三章:核心服务资源部署与集成
3.1 部署Azure App Service并发布Web应用
在Azure中部署Web应用的第一步是创建App Service资源。通过Azure门户或CLI均可完成资源配置,推荐使用Azure CLI进行自动化操作。
创建App Service的CLI命令
az webapp up \
--name my-web-app \
--resource-group my-rg \
--plan my-app-plan \
--location "East US"
该命令会自动创建应用服务计划、资源组(如未存在)并部署本地代码。参数`--name`指定全局唯一的应用名称,`--location`决定数据中心位置,影响延迟与合规性。
发布流程关键步骤
- 确保本地项目已构建为可部署结构(如.NET的
publish文件夹) - 使用
az webapp up推送代码,CLI将自动打包并上传至Kudu引擎 - 部署完成后,可通过
https://<name>.azurewebsites.net访问应用
此方式简化了传统发布流程,适合快速原型与持续交付场景。
3.2 配置Azure Storage Account及Blob数据操作
在Azure中配置Storage Account是实现云数据持久化的核心步骤。首先通过Azure门户或CLI创建Storage Account,需指定资源组、位置和性能层级(Standard或Premium)。
Blob容器的创建与管理
创建Storage Account后,需初始化Blob容器用于存储非结构化数据。可通过Azure CLI执行以下命令:
az storage container create \
--name mycontainer \
--account-name mystorageaccount \
--account-key "your-access-key"
该命令创建名为mycontainer的Blob容器,其中
--account-name指定存储账户名,
--account-key提供访问密钥以完成身份验证。
上传与下载Blob对象
使用Azure SDK可编程实现文件操作。例如,Python SDK上传文件示例:
- 安装依赖:
pip install azure-storage-blob - 使用
BlobServiceClient连接服务 - 调用
upload_blob()方法写入数据
3.3 实现Azure Cosmos DB数据库连接与CRUD操作
建立Cosmos DB客户端连接
在.NET应用中,首先通过
CosmosClient类建立与Azure Cosmos DB的连接。需提供账户终结点和主密钥。
var endpoint = "https://your-account.documents.azure.com:443/";
var key = "your-primary-key";
var client = new CosmosClient(endpoint, key);
上述代码初始化
CosmosClient实例,底层自动管理连接池与重试策略,适用于高并发场景。
执行CRUD操作
获取数据库和容器引用后,即可进行文档操作:
- Create: 使用
container.CreateItemAsync(item) - Read: 调用
container.ReadItemAsync<T>(id, partitionKey) - Update: 先读取再调用
ReplaceItemAsync - Delete: 使用
container.DeleteItemAsync<T>(id, partitionKey)
每个操作均基于分区键定位数据,确保低延迟访问。
第四章:身份验证、安全与自动化进阶
4.1 配置Azure Active Directory应用注册
在集成Azure AD进行身份验证时,首先需在Azure门户中注册应用。进入Azure Active Directory服务后,选择“应用注册”,点击“新注册”以创建客户端应用。
应用注册基础配置
填写应用名称,选择支持的账户类型,并设置重定向URI(如Web应用使用
https://localhost:5001/signin-oidc)。
获取关键认证信息
注册完成后,记录以下信息用于后续配置:
- 应用程序(客户端) ID:唯一标识注册的应用
- 目录(租户) ID:代表Azure AD租户的唯一标识
配置客户端密钥
在“证书与密码”中添加客户端密钥(Client Secret),并妥善保存其值。该密钥将用于OAuth 2.0流程中的身份验证。
{
"ClientId": "your-client-id",
"ClientSecret": "your-client-secret",
"Authority": "https://login.microsoftonline.com/your-tenant-id",
"Scopes": ["api://your-app-id/access_as_user"]
}
上述配置为实现安全的身份验证和API访问授权奠定基础,确保应用能正确与Azure AD交互。
4.2 使用Managed Identities实现无密访问
在Azure环境中,Managed Identities为云资源提供了安全的身份认证机制,避免了在代码或配置中硬编码凭据。通过系统或用户分配的托管身份,应用可直接获取访问密钥,如访问Key Vault、Blob存储等服务。
托管身份类型对比
- 系统分配托管身份:生命周期与资源绑定,创建资源时自动生成。
- 用户分配托管身份:独立资源,可跨多个服务复用。
代码示例:通过托管身份访问Key Vault
var credential = new DefaultAzureCredential();
var secretClient = new SecretClient(new Uri("https://myvault.vault.azure.net/"), credential);
KeyVaultSecret secret = await secretClient.GetSecretAsync("db-connection-string");
上述代码使用
DefaultAzureCredential自动尝试多种身份验证方式,优先使用托管身份。无需提供任何凭据,运行在启用了托管身份的Azure服务(如App Service)上即可成功调用。
4.3 设置Azure Key Vault保护敏感配置信息
在现代云原生应用中,安全地管理敏感信息如数据库连接字符串、API密钥至关重要。Azure Key Vault提供集中化密钥与机密管理,有效防止硬编码泄露。
创建Key Vault并存储机密
通过Azure CLI可快速部署Key Vault实例:
az keyvault create --name "my-app-vault" \
--resource-group "rg-production" \
--location "eastus"
az keyvault secret set --vault-name "my-app-vault" \
--name "DbConnectionString" \
--value "Server=db.example.com;Database=main;"
上述命令创建名为 `my-app-vault` 的保管库,并将数据库连接字符串以机密形式存入。参数 `--name` 指定机密标识符,`--value` 支持任意敏感文本。
为应用授予访问权限
应用需具备适当权限才能读取机密。使用托管身份提升安全性:
- 启用应用服务的系统分配托管身份
- 在Key Vault访问策略中授权该身份获取机密(get)权限
此后,应用可通过Azure SDK安全获取机密,无需暴露凭据。
4.4 编写ARM模板实现基础设施即代码部署
ARM(Azure Resource Manager)模板是声明式JSON文件,用于定义Azure资源的配置和依赖关系,实现基础设施即代码(IaC)的自动化部署。
模板结构解析
一个典型的ARM模板包含
$schema、
contentVersion、
parameters、
variables、
resources和
outputs五个核心部分。
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"storageAccountName": {
"type": "string",
"metadata": {
"description": "Name of the storage account"
}
}
},
"resources": [
{
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2021-04-01",
"name": "[parameters('storageAccountName')]",
"location": "[resourceGroup().location]",
"sku": { "name": "Standard_LRS" },
"kind": "StorageV2"
}
]
}
上述代码定义了一个存储账户的部署模板。其中
parameters允许外部传入参数,提升模板复用性;
resources块中通过
apiVersion指定资源提供程序的API版本,确保部署兼容性。
部署流程与最佳实践
使用Azure CLI或PowerShell可执行模板部署:
az deployment group create --resource-group <rg-name> --template-file template.json- 建议启用模板验证以提前发现语法错误
- 结合Azure DevOps实现CI/CD流水线集成
第五章:实验验证与AZ-204考点复盘
函数应用与事件驱动架构实战
在Azure Functions中实现事件驱动处理是AZ-204的核心考点之一。以下代码展示了如何通过HTTP触发器接收请求,并将消息发布到Service Bus队列:
[FunctionName("OrderProcessor")]
public static async Task
Run(
[HttpTrigger(AuthorizationLevel.Function, "post")] HttpRequest req,
[ServiceBus("orders")] IAsyncCollector
queueItems,
ILogger log)
{
string requestBody = await new StreamReader(req.Body).ReadToEndAsync();
var order = JsonConvert.DeserializeObject
(requestBody);
await queueItems.AddAsync(JsonConvert.SerializeObject(order));
log.LogInformation($"Order {order.Id} enqueued.");
return new OkResult();
}
身份认证与访问控制配置
使用Azure AD保护API需在门户中注册应用并启用OAuth2.0。开发人员应在Startup.cs中添加如下中间件配置:
- 启用JWT承载认证:services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
- 配置颁发机构和受众:options.Authority = "https://login.microsoftonline.com/{tenant-id}"
- 确保API作用域匹配:options.Audience = "api://your-api-app-id"
部署策略与监控集成
采用蓝色绿色部署可实现零停机更新。下表对比两种部署环境的关键指标:
| 指标 | 生产环境(蓝色) | 预发布环境(绿色) |
|---|
| 实例数量 | 3 | 1 |
| 平均响应时间 | 89ms | 76ms |
| 错误率 | 0.4% | 0.1% |
[用户请求] → 负载均衡器 → (蓝色实例) ✅
└→ (绿色实例) 🔧 流量镜像测试中