使用Azure Compute API生成快照SAS URI遇202响应求助
快照SAS URI生成请求返回202响应的排查与解决
202 Accepted是Azure异步API的标准返回状态,说明请求已被后台接受处理,并非错误,但你需要通过异步轮询获取最终的SAS URI结果。以下是具体处理步骤和排查点:
1. 处理异步请求结果
从响应头中提取异步操作的URL,轮询直到操作完成:
# 提取异步操作地址 async_url = accessSAS.headers.get('Location') or accessSAS.headers.get('Azure-AsyncOperation') # 轮询获取结果 import time while True: poll_response = requests.get(async_url, headers=headers, params=params, verify=False) poll_data = poll_response.json() status = poll_data.get('status') if status == 'Succeeded': # 获取最终SAS URI sas_uri = poll_data.get('accessSAS') print(f"生成的SAS URI: {sas_uri}") break elif status == 'Failed': print(f"操作失败: {poll_data.get('error', {}).get('message', '未知错误')}") break # 间隔5秒重试,避免高频请求 time.sleep(5)
2. 关键排查点
- 权限验证:确保你的Bearer Token对应的身份拥有
Microsoft.Compute/snapshots/beginGetAccess/action权限,以及快照的读取权限(如Disk Snapshot Reader角色)。 - 参数合法性:
- 确认
durationInSeconds在Azure允许范围(300秒到86400秒之间),你的3000秒是合法值,但超出范围会导致异步操作失败。 - 检查
snap_name、subscription_id、target_resource_group的拼写和大小写完全匹配(Azure资源名称区分大小写)。
- 确认
- SSL验证注意:生产环境请移除
verify=False,避免安全风险;内网环境需配置可信证书链。
内容的提问来源于stack exchange,提问作者wasif hussain
相关产品推荐
相关产品推荐

