Azure Logic App调用Graph API:手动成功Webhook触发失败排查
Azure Consumption Logic App调用Microsoft Graph API创建appRoleAssignment的问题
问题现象
- 外部Webhook触发Logic App时,向Graph API发起的
appRoleAssignmentPOST请求返回Request_BadRequest错误; - 手动重提交Logic App运行历史中的该操作时,请求可成功。
配置与错误详情
Logic App HTTP操作配置
{ "method": "POST", "uri": "https://graph.microsoft.com/v1.0/servicePrincipals/{appObjectId}/appRoleAssignments", "headers": { "Authorization": "Bearer <access_token>", "Content-Type": "application/json" }, "body": { "principalId": "user-or-service-principal-id", "resourceId": "resource-service-principal-id", "appRoleId": "app-role-id" }, "retryPolicy": { "type": "fixed", "interval": "PT5S", "count": 3 }, "timeout": "PT30S" }
错误响应信息
Webhook触发时返回的错误:
{ "error": { "code": "Request_BadRequest", "message": "Not a valid reference update.", "innerError": { "date": "2024-07-18T14:21:29", "request-id": "ac44f253-5bbf-48bf-8c8e-c81603fd1320", "client-request-id": "ac44f253-5bbf-48bf-8c8e-c81603fd1320" } } }
请求负载与头部
- 请求负载:
{ "principalId": "user-or-service-principal-id", "resourceId": "resource-service-principal-id", "appRoleId": "app-role-id" }
- 请求头部:
{ "Authorization": "Bearer <access_token>", "Content-Type": "application/json" }
关键观察与排查更新
- 已验证access token、负载、URI及请求头部均正确,且通过日志确认流程定义、Webhook触发时的请求负载和头部无误;
- 2024-07-18 18:00 更新:
- 失败场景:将
appRoleId(GUID)存储在变量中动态传入请求负载时,请求失败; - 成功场景:直接在负载中硬编码该GUID时,请求可成功(已复制变量中的值);
- 猜测:Logic App可能未正确解析变量值就发送了请求;
- 失败场景:将
- 2024-07-18 18:25 更新:
- 重试策略无效,因为错误为400(无效请求);
- 即使硬编码
appRoleId,也需要添加至少25秒延迟后重试才能成功。
疑问
为何该POST请求在Webhook触发时失败,但手动重提交可成功?
内容的提问来源于stack exchange,提问作者khanikar
相关产品推荐
相关产品推荐

