Amazon s3 来自一个AWS子帐户的流S3文件,Flink部署在另一个AWS帐户的Kubernetes群集上 我有两个AWS帐户,帐户A和帐户B 帐户A有一个EKS群集运行,上面有一个flink群集运行。为了管理IAM角色,我们使用Kube2iam 集群上的所有POD都分配了特定的角色。为简单起见,假设其中一个Pod的角色是Pod角色 K8s工作节点具有角色工作节点角色 Kube2iam已正确配置,可在需要时进行适当的EC2元数据调用 Account B有一个S3存储桶,托管在Account a工作节点中的Pod需要读取该存储桶
可能的解决办法:Amazon s3 来自一个AWS子帐户的流S3文件,Flink部署在另一个AWS帐户的Kubernetes群集上 我有两个AWS帐户,帐户A和帐户B 帐户A有一个EKS群集运行,上面有一个flink群集运行。为了管理IAM角色,我们使用Kube2iam 集群上的所有POD都分配了特定的角色。为简单起见,假设其中一个Pod的角色是Pod角色 K8s工作节点具有角色工作节点角色 Kube2iam已正确配置,可在需要时进行适当的EC2元数据调用 Account B有一个S3存储桶,托管在Account a工作节点中的Pod需要读取该存储桶,amazon-s3,kubernetes,apache-flink,amazon-iam,flink-streaming,Amazon S3,Kubernetes,Apache Flink,Amazon Iam,Flink Streaming,可能的解决办法: 在Account B中创建一个角色,比如说,AccountB\u Bucket\u access\u role,策略允许读取Bucket。将Pod角色作为受信任的实体添加到其中 在Pod role中添加一个策略,允许切换到AccountB\u Bucket\u access\u role,基本上就是STS AssumeRole操作 在Pod中创建AWS配置文件,例如,custom\u profile,将role\u arn设置为AccountB\u Bucket\u acces
Account B
中创建一个角色,比如说,AccountB\u Bucket\u access\u role
,策略允许读取Bucket。将Pod角色
作为受信任的实体添加到其中Pod role
中添加一个策略,允许切换到AccountB\u Bucket\u access\u role
,基本上就是STS AssumeRole
操作custom\u profile
,将role\u arn
设置为AccountB\u Bucket\u access\u role
role's arnAccountB\u bucket\u access\u角色,并且能够读取S3 bucket。但是设置AWS_PROFILE
实际上会切换flink app的角色,因此所有POD-role
权限都会丢失,并且它们是flink app正常运行所必需的
有没有办法,这个AWS自定义_配置文件只能在读取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
)
这就是我在flink job中用来读取S3文件的内容。Nvm,我们可以配置一个帐户的角色,从另一个帐户访问特定的bucket