通过批处理脚本上传JSON至S3 Browser遇Informatica执行错误求助
解决S3 Browser CLI在Informatica Cloud中执行的上传错误
针对你遇到的问题,我先拆解下错误根源,再给出几个可行的解决方案:
错误原因分析
本地运行批处理正常,但Informatica Cloud里报错:AccountManager::CurrentAccount::get::failed+NullReferenceException,核心问题不是免费版账户数量限制(毕竟本地能正常运行说明你的账户配置是合法的),而是Informatica的命令任务通常在无桌面的后台会话/服务账户中运行:
- S3 Browser的账户配置存储在当前登录用户的个人配置文件里(比如
AppData\Roaming下的文件或注册表项) - 后台会话无法读取到你手动配置的S3 Browser账户,于是尝试弹出"添加新账户"的GUI对话框,但后台环境不支持GUI交互,直接抛出空引用错误。
解决方案一:让Informatica能读取到S3 Browser账户配置
- 找到S3 Browser的配置存储位置:
- 配置文件通常在
C:\Users\<你的本地用户名>\AppData\Roaming\S3 Browser目录下 - 注册表项在
HKEY_CURRENT_USER\Software\S3 Browser
- 配置文件通常在
- 如果Informatica是用服务账户运行的,把上述配置复制到服务账户的对应路径:
- 比如服务账户是
INFORMATICA_SERVICE,就复制到C:\Users\INFORMATICA_SERVICE\AppData\Roaming\S3 Browser - 或者远程登录到Informatica所在服务器,切换到服务账户,手动打开一次S3 Browser,添加好目标账户(配置会自动保存到该账户的路径下)
- 比如服务账户是
解决方案二:绕过账户名的限制(解决不同用户账户名不同的问题)
如果不想指定<account_name>,有两个可选方向:
方法A:使用默认账户省略账户名
如果目标S3账户是你在S3 Browser里设置的默认账户,可以直接省略账户名参数,命令改为:
s3browser-con.exe upload <local directory\json file> <s3 bucket name and path>
先在本地测试这个命令是否能正常上传,没问题的话再放到Informatica里执行(前提是解决方案一的配置问题已经解决)。
方法B:改用AWS CLI(更稳定的无GUI方案)
S3 Browser CLI本质是依赖桌面应用的封装,而Informatica这类自动化工具更适合用纯命令行的AWS官方工具,完全不依赖GUI配置:
- 安装AWS CLI(免费官方工具)
- 配置凭证:
- 可以用
aws configure命令输入Access Key和Secret Key - 或者直接在Informatica的命令任务中设置环境变量
AWS_ACCESS_KEY_ID和AWS_SECRET_ACCESS_KEY(更适合自动化场景)
- 可以用
- 上传命令替换为:
aws s3 cp "<local directory\json file>" "s3://<s3 bucket name and path>/"
这种方式不需要关心账户名,跨用户/环境都能通用,可靠性更高。
最后验证:排除免费版账户数量限制
如果上述方案都没效果,可以检查下Informatica所用用户的S3 Browser账户数量:
- 登录到Informatica运行的服务器,切换到对应的用户,打开S3 Browser
- 查看已添加的账户是否超过2个(免费版上限),如果超了删除多余账户即可。
你的详细错误信息:
Unhandled Exception: System.NullReferenceException: Object reference not set to an instance of an object. at mg.b(String aty) at mk.a(String[] avx) at mg.Main(String[] args)
内容的提问来源于stack exchange,提问作者Rohit S




