Flink CDC这个错误有人遇到过吗?文件已经存进阿里云OSS了但是清理策略删不掉2023-04-20 18:28:49,020 WARN org.apache.flink.runtime.blob.FileSystemBlobStore [] - Failed to delete blob at oss://xxxx/flink/jobmanager-ha/flink-application/blob/job_76b947e3de7c68abb1ae79196e99368b 2023-04-20 18:28:49,021 WARN org.apache.flink.runtime.dispatcher.cleanup.DefaultResourceCleaner [] - Cleanup of BlobServer failed for job 76b947e3de7c68abb1ae79196e99368b due to a CompletionException: java.io.IOException: java.io.IOException: Error while cleaning up the BlobStore for job 76b947e3de7c68abb1ae79196e99368b 2023-04-20 18:28:49,268 WARN org.apache.flink.fs.osshadoop.shaded.com.aliyun.oss [] - [Server]Unable to execute HTTP request: You have no right to access this object because of bucket acl. [ErrorCode]: AccessDenied
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
遇到您描述的错误,这通常意味着Flink CDC在尝试清理OSS上的某个blob(文件)时遇到了权限问题。错误信息中的“AccessDenied”明确指出是因为桶级别的ACL(访问控制列表)设置导致没有足够的权限去访问或删除该对象。这意味着Flink运行的账号或角色没有被授予对特定OSS bucket中对象的删除权限。
要解决这个问题,您可以按照以下步骤操作:
检查Bucket ACL设置:登录阿里云OSS管理控制台,查看出现问题的bucket的访问控制列表(Access Control List)。确保该bucket允许执行删除操作的角色或用户有相应的权限。对于生产环境,推荐使用RAM角色进行细粒度的权限管理。
配置正确的RAM角色:如果Flink作业是在ECS实例、Kubernetes集群或其他阿里云服务上运行的,确保为执行任务的角色绑定了一个具有足够权限的RAM角色。这个角色需要至少包含对目标OSS bucket的oss:DeleteObject
权限。可以通过创建并绑定一个自定义的RAM策略来实现这一点。
更新Flink配置:如果您使用的是阿里云的OSS FileSystem,确保在Flink的配置中正确设置了OSS相关的凭证信息,包括AccessKey ID、AccessKey Secret以及可能的STS Token(如果使用临时凭证)。这些凭证应与拥有适当权限的RAM用户或角色相关联。
验证权限:在修改权限后,可以尝试手动使用相同的凭证从OSS控制台或通过CLI工具删除一个测试文件,以验证权限是否已经正确设置。
重启Flink作业:在完成上述配置更改后,重启您的Flink作业,看是否还存在同样的权限问题。
如果问题依旧,建议检查Flink的日志中是否有更详细的错误信息,或者联系阿里云技术支持获取进一步的帮助。您可以复制页面截图提供更多信息,我可以进一步帮您分析问题原因。