Azure Data Factory自定义活动报错:指定资源不存在,求解决方案
问题:Azure Data Factory自定义活动执行PowerShell修改Blob存储层报错ResourceNotFound
我在Azure Data Factory(ADF)中运行自定义活动,通过PowerShell脚本将Blob存储层改为hot。已创建Batch账户,脚本保存至存储账户,且两者均成功关联到自定义活动。但触发ADF管道时出现报错:

Batch账户输出文件中的错误信息:
<Error> <Code>ResourceNotFound</Code> <Message>The specified resource does not exist. RequestId:e5313310-001e-000b-269b-bd9c33000000 Time:2023-07-23T19:25:38.5391510Z</Message> </Error>
已尝试将容器访问级别从私有改为Blob,问题仍未解决,求可行解决方案。
排查与解决方案
1. 核对PowerShell脚本中的Blob路径信息
- 确认脚本里的存储账户名、容器名、Blob名称完全匹配(Azure存储对Blob名称大小写敏感,注意不要出现大小写错误)
- 若用通配符批量修改,检查通配符规则是否正确覆盖目标Blob,比如前缀、路径层级是否写错
2. 验证Batch账户的权限配置
- 确保Batch账户的托管身份(或使用的共享访问密钥/服务主体)拥有目标存储账户的
Storage Blob Data Contributor权限(仅容器级的Blob访问权限不足以完成存储层修改操作,需要数据操作权限) - 检查Batch账户关联的存储账户是否为目标Blob所在的存储账户,避免跨账户权限不匹配问题
3. 检查ADF自定义活动的参数传递
- 确认自定义活动传递给脚本的参数(如存储账户名、容器名、Blob路径)是否正确,排查是否存在参数拼接错误(比如多了斜杠、少了路径前缀)
- 可以在脚本中添加日志输出,打印实际使用的Blob路径,验证参数是否正确传递
4. 确认目标Blob的存在状态
- 手动登录Azure门户,核实目标Blob确实存在于指定容器中,未被删除或移动
- 若Blob处于归档层,需先执行解冻操作(
Set-AzStorageBlobTier -Tier Cool),等待解冻完成后再修改为Hot层
5. 检查脚本的认证逻辑
- 若使用连接字符串认证,确认连接字符串无多余字符、密钥正确
- 若使用托管身份认证,确保Batch账户的托管身份已在存储账户IAM中配置正确权限,且脚本中使用了正确的认证代码(比如
Connect-AzAccount -Identity)
内容的提问来源于stack exchange,提问作者Andrej
相关产品推荐
相关产品推荐

