You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

通过批处理脚本上传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账户配置

  1. 找到S3 Browser的配置存储位置:
    • 配置文件通常在C:\Users\<你的本地用户名>\AppData\Roaming\S3 Browser目录下
    • 注册表项在HKEY_CURRENT_USER\Software\S3 Browser
  2. 如果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配置:

  1. 安装AWS CLI(免费官方工具)
  2. 配置凭证:
    • 可以用aws configure命令输入Access Key和Secret Key
    • 或者直接在Informatica的命令任务中设置环境变量AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEY(更适合自动化场景)
  3. 上传命令替换为:
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

火山引擎 最新活动