amazons3—从一个aws子帐户流式传输s3文件,flink部署在另一个aws帐户的kubernetes集群上

slsn1g29  于 2021-06-24  发布在  Flink
关注(0)|答案(1)|浏览(446)

我有两个aws账户, Account A 以及 Account B . Account A 有一个eks集群在运行,一个flink集群在运行。为了管理iam角色,我们使用 Kube2iam .
集群上的所有pod都分配了特定的角色。为了简单起见,我们假设其中一个pod的角色是 Pod-Role k8s工作节点具有 Worker-Node-role kube2iam配置正确,可以在需要时进行适当的ec2元数据调用。 Account B 有一个s3桶 Pod 主办地 Account A 工作节点需要读取。
可能的解决方案:
在中创建角色 Account B ,比方说, AccountB_Bucket_access_role 一个允许读取bucket的策略。添加 Pod-Role 作为受信任的实体。
在中添加策略 Pod-role 允许切换到 AccountB_Bucket_access_role ,基本上是 STS AssumeRole 行动。
在pod中创建一个aws配置文件, custom_profile ,与 role_arn 设置为 AccountB_Bucket_access_role 角色是阿恩。
在部署flink吊舱时,设置 AWS_PROFILE=AccountB_Bucket_access_role .
问题:如上所述,每当flink应用程序需要与s3 bucket对话时,它首先假设 AccountB_Bucket_access_role 角色,并且能够读取s3 bucket。但是设置 AWS_PROFILE 实际上切换了flink应用程序的角色,因此 POD-ROLE 权限丢失,flink应用程序正常运行需要这些权限。
有没有办法,这是 custom_profile 只能在读取s3 bucket并切换到 POD-ROLE 之后。

val flinkEnv: StreamExecutionEnvironment = AppUtils.setUpAndGetFlinkEnvRef(config.flink)
val textInputFormat = new TextInputFormat(new Path(config.path))
env
 .readFile(
    textInputFormat,
    config.path,
    FileProcessingMode.PROCESS_CONTINUOUSLY,
    config.refreshDurationMs
 )

这是我在flinkjob中用来读取s3文件的。

3hvapo4f

3hvapo4f1#

nvm,我们可以将一个帐户的角色配置为从另一个帐户访问特定的bucket。从其他帐户访问bucket

相关问题