问题描述
为了保证用户的数据安全STS token会有一定的生命周期,系统会自动重新获取token。(后期会优化报错信息)
报错信息:
java.lang.RuntimeException: java.lang.RuntimeException: com.aliyun.datahub.exception.NoPermissionException: The sts token has been expired. (Status Code: 403; Error Code: NoPermission; Request ID: 201802230613304db99a0a76d8a13b)
at com.alibaba.blink.streaming.connectors.common.reader.ParallelReader.run(ParallelReader.java:131)
at com.alibaba.blink.streaming.connectors.common.source.AbstractParallelSource.run(AbstractParallelSource.java:107)
at org.apache.flink.streaming.api.operators.StreamSource.run(StreamSource.java:142)
at org.apache.flink.streaming.api.operators.StreamSource.run(StreamSource.java:78)
at org.apache.flink.streaming.runtime.tasks.SourceStreamTask.run(SourceStreamTask.java:56)
at org.apache.flink.streaming.runtime.tasks.StreamTask.invoke(StreamTask.java:307)
at org.apache.flink.runtime.taskmanager.Task.run(Task.java:762)
at java.lang.Thread.run(Thread.java:834)
Caused by: java.lang.RuntimeException: com.aliyun.datahub.exception.NoPermissionException: The sts token has been expired. (Status Code: 403; Error Code: NoPermission; Request ID: 201802230613304db99a0a76d8a13b)
at com.alibaba.blink.streaming.connectors.common.reader.ParallelReader.runImpl(ParallelReader.java:210)
at com.alibaba.blink.streaming.connectors.common.reader.ParallelReader.run(ParallelReader.java:126)
... 7 more
Caused by: com.aliyun.datahub.exception.NoPermissionException: The sts token has been expired. (Status Code: 403; Error Code: NoPermission; Request ID: 201802230613304db99a0a76d8a13b)
at com.aliyun.datahub.model.serialize.JsonErrorParser.parse(JsonErrorParser.java:44)
at com.aliyun.datahub.model.serialize.GetCursorResultJsonDeser.deserialize(GetCursorResultJsonDeser.java:19)
at com.aliyun.datahub.model.serialize.GetCursorResultJsonDeser.deserialize(GetCursorResultJsonDeser.java:14)
at com.aliyun.datahub.DatahubClient.getCursor(DatahubClient.java:627)
at com.aliyun.datahub.DatahubClient.getCursor(DatahubClient.java:699)
at com.alibaba.blink.streaming.connectors.datahub.input.RawDatahubRecordReader.seek(RawDatahubRecordReader.java:397)
at com.alibaba.blink.streaming.connectors.datahub.input.RawDatahubRecordReader.next(RawDatahubRecordReader.java:278)
at com.alibaba.blink.streaming.connectors.common.reader.ParallelReader$ReaderRunner.run(ParallelReader.java:341)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1147)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:622)
... 1 more
解决方案
为了保证用户的数据安全STS token会有一定的生命周期,系统会自动重新获取token。建议在with参数中设置stsUpdateSeconds=’3600’。
如下:
WITH (
type='datahub',
url='',
username='',
password='',
tableName='',
stsUpdateSeconds='3600'
)
说明:
stsUpdateSeconds主动更新roleArn的时间,时间单位为秒。
stsUpdateSeconds设置的值,需比各存储中,登录Session的过期时间值小。举例如下。
登录Session过期时间,设置为6小时。则stsUpdateSeconds参数建议设置为stsUpdateSeconds=‘10800’
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。