Azure上SSIS Runtime读取Blob存储JSON密钥文件报错问题
在Visual Studio中使用KingswaySoft SSIS Productivity Pack运行本地SSIS集成任务,目标是从Google Analytics拉取数据并存入SQL数据库。本地使用本地JSON密钥文件时运行正常,但将该文件上传至Azure Blob存储并通过SAS URL访问时,出现以下报错:
SSIS Productivity Pack (v23.2.0.25101)
KingswaySoft.IntegrationToolkit.ProductivityPack.GoogleServices.GoogleAnalyticsServiceException: An error occurred when attempting to retrieve tokens.Invalid JSON Key file. (SSIS Productivity Pack, v23.2.0.25101 - devenv, v17.7.34031.279)System.Exception
: Invalid JSON Key file.
- 本地JSON密钥文件验证正常,重新上传并下载后确认文件未损坏
- 尝试使用共享文件存储代替Azure Blob,仍出现相同报错
- 验证SAS URL返回的内容为无效JSON,但本地文件本身JSON格式合法
- 通过Python脚本检测下载后的文件编码为UTF-8,排除编码问题
1. 检查SAS URL的权限与有效性
确保生成SAS URL时授予了Blob的读取(Read)权限,且URL未过期。权限不足或过期会导致返回权限错误页面而非JSON内容,被识别为无效JSON。
2. 修正Blob的内容类型
上传JSON文件到Azure Blob时,默认内容类型可能为application/octet-stream,部分工具解析时会出现异常。在Azure Portal中找到对应Blob,进入「属性」页面,将内容类型修改为application/json后重试。
3. 直接验证SAS URL返回内容
通过浏览器或curl命令访问SAS URL,查看返回的是否为完整的JSON文本。如果返回HTML错误页面(如权限提示、资源不存在),需重新生成正确的SAS URL。
4. 调整密钥文件的加载方式
若KingswaySoft组件对远程SAS URL的JSON解析存在兼容问题,可尝试两种替代方案:
- 将JSON密钥存入Azure Key Vault,通过KingswaySoft的Azure Key Vault组件读取密钥内容,再传递给Google Analytics数据源
- 在SSIS包中添加Azure Blob Source组件,先将Blob中的JSON文件下载到本地临时路径,再让Google Analytics组件读取本地临时文件
5. 检查文件换行符格式
本地Windows系统的JSON文件使用CRLF换行符,上传到Blob后可能被转换为LF,部分严格解析器可能受影响。可将本地文件转换为LF换行符后重新上传测试。
内容的提问来源于stack exchange,提问作者MnLsVt

