在默认情况下,Flink 和 TOS 之间通过 ServiceRole 的方式进行打通,无需额外配置就可以进行账号内部,同个 Region 的 TOS 桶的读写。
但是在特殊场景下,Flink 任务访问另一个账号的 TOS 桶。比如一些配置文件专门放到某个账号的 TOS 桶下,另外账号的 Flink 任务需要获取这些配置文件等,这些特殊场景下需要参考本文档进行跨账号访问。
确保您已经:
操作路径:作业开发 - Flink SQL 作业 - 创建作业。
参考文档: TOS 存储桶授权控制
注意:这里需要填写主账号信息、不填子账号(Flink 任务通过 sts ak/sk 访问,但这个 ak/sk 是临时生成的,不是用户的,所以如果填了子账号就不会生效)
这里授权其他账号后,就可以授权账号的 ak/sk 去访问当前账号的 TOS 桶。
使用 API 密钥管理,获取 AccessKey / AccessKeySecret
增加作业自定义参数:如下图,增加作业自定义参数:
flink.plugins.filesystem.tos.proton.enabled: true flink.hadoop.fs.tos.credentials.provider: io.proton.common.object.tos.auth.SimpleCredentialsProvider flink.hadoop.fs.tos.access-key-id: ${access-key-id} flink.hadoop.fs.tos.secret-access-key: ${secret-access-key}
如果 SQL 没有其他错误之后,可以选择上线 SQL 任务,选择工具栏 - 上线,选择合适的资源池后。 跳过上线前的深度检查,可以上线任务。
上线成功后,在任务管理页面启动任务,并且检查任务进入运行中状态。
可以进入 TOS 桶管理界面(需要账户有相关访问权限),可以看到已经在数据表的 TOS 目录下,产生了相关的数据文件。则说明数据写入成功。