如何使用Azure Web Apps的Create One Deploy Operation REST API部署到部署槽?
使用Web Apps - Create One Deploy Operation API部署到Azure Web App部署槽
核心操作步骤
要通过该API完成部署槽的应用部署,核心分为身份认证准备、请求参数配置、发送部署请求三个环节,以下是具体细节:
1. 获取Azure AD访问令牌
调用Azure管理API必须通过Azure AD认证,需获取具备目标Web App资源权限的访问令牌:
- 用Azure CLI快速获取:
az account get-access-token --resource https://management.azure.com - 令牌有效期约1小时,需确保请求时令牌未过期
2. 构造API请求
请求基础信息
- 请求方法:POST
- 请求URL:
替换占位符:https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{webAppName}/slots/{slotName}/deployments?api-version=2023-01-01{subscriptionId}:你的Azure订阅ID{resourceGroupName}:Web App所属资源组名称{webAppName}:目标Web App的名称{slotName}:要部署的槽名称(例如staging)
请求头
必须包含以下两个字段:
Authorization: Bearer {your-access-token}:替换为第一步获取的令牌Content-Type: application/json
请求体示例
Zip包部署(存储在Azure Blob)
{ "properties": { "format": "zip", "packageUri": "https://{storageAccount}.blob.core.windows.net/{container}/{packageName}.zip?{sasToken}" } }
packageUri需为带SAS令牌的Blob地址,确保API能访问到Zip包
Docker镜像部署
{ "properties": { "format": "docker", "image": "your-container-registry.azurecr.io/your-image:tag", "registryCredential": { "username": "registry-username", "password": "registry-password" } } }
3. 发送请求并验证结果
- curl命令示例:
curl -X POST "https://management.azure.com/subscriptions/xxxx/resourceGroups/xxx/providers/Microsoft.Web/sites/xxx/slots/staging/deployments?api-version=2023-01-01" \ -H "Authorization: Bearer xxxxx" \ -H "Content-Type: application/json" \ -d '{ "properties": { "format": "zip", "packageUri": "https://xxx.blob.core.windows.net/xxx/deploy.zip?xxx" } }'
- 请求成功会返回202 Accepted,可通过返回的
location头轮询部署状态,或直接在Azure门户查看部署槽的部署记录
关键注意事项
- 确保令牌拥有目标Web App的Contributor或更高权限
- 部署槽必须预先创建,否则API会返回404错误
- Zip包的SAS令牌需至少具备读取权限,有效期覆盖部署时长
- Docker部署需确保Web App部署槽已配置允许容器部署
内容的提问来源于stack exchange,提问作者Bertrand Pons
相关产品推荐
相关产品推荐

