调用Azure文本翻译批量API遇权限错误,源路径可浏览器访问
解决Azure批量翻译接口权限访问错误
调用Azure认知服务批量翻译接口https://alsntranslator1.cognitiveservices.azure.com/translator/text/batch/v1.0/batches发送POST请求时,反复返回无法使用当前权限访问源文档位置错误,但源Blob路径可直接通过浏览器访问。以下是排查方向和解决方法:
1. Blob容器权限不匹配服务要求
浏览器能访问大概率是因为容器开了匿名公共访问,但Azure批量翻译服务不依赖匿名访问,必须通过SAS令牌或托管身份授权:
- 给源、目标Blob生成带对应权限的SAS令牌:源Blob需要
读(r)权限,目标Blob需要写(w)+添加(a)权限,有效期要覆盖任务执行时长。 - 将SAS令牌附加到
sourceUrl和targetUrl末尾,格式示例:https://xxx.blob.core.windows.net/container/file.txt?sv=xxx&ss=xxx&srt=xxx&sp=xxx&se=xxx&st=xxx&spr=https&sig=xxx
2. 托管身份配置未完成(若不用SAS)
如果选择托管身份授权,需确认:
- 翻译服务的托管身份已被授予存储账户的**存储Blob数据读取者(源容器)和存储Blob数据参与者(目标容器)**角色。
- 存储账户防火墙允许翻译服务的IP或启用“允许受信任的Microsoft服务访问”选项。
3. 请求体参数检查
- 确认
storageSource值为AzureBlob无误。 - 检查
sourceUrl和targetUrl的拼写:Azure存储对账户名、容器名、文件名的大小写敏感,避免拼写错误。
4. 存储账户防火墙限制
若存储账户防火墙设置了IP白名单,翻译服务的IP可能不在允许范围内:
- 添加翻译服务所在区域的IP段到白名单,或开启“允许受信任的Microsoft服务访问此存储账户”开关。
请求体示例(需替换占位符)
{ "inputs":[ { "source":{ "sourceUrl":"<<替换为带SAS令牌的源Blob URL>>", "storageSource":"AzureBlob" }, "targets":[ { "targetUrl":"<<替换为带SAS令牌的目标Blob URL>>", "language":"fr", "storageSource":"AzureBlob" } ] } ] }
内容的提问来源于stack exchange,提问作者aeongt710
相关产品推荐
相关产品推荐

