如何在spring-cloud-stream-binder-kinesis中使用STSAssumeRoleSessionCredentialsProvider进行配置

问题描述

我正在使用spring-cloud-stream-binder-kinesis,版本:2.0.2.RELEASE。

我能够成功使用活页夹,并使用KinesisBinderConfiguration中提到的认ContextCredentialsAutoConfiguration在本地访问它。

现在,我知道此设置对我不起作用,因为, Kinesis数据流在AWS账户1中 该服务正在AWS账户2中运行 (我已经完成了假定角色的设置,以便帐户2可以使用假定角色访问帐户1中的流)

但是我不确定如何覆盖活页夹中的凭据以使用STSAssumeRoleSessionCredentialsProvider

有人可以帮忙吗?

解决方法

%/%完全基于Spring Cloud AWS的自动配置,该配置为我们提供了suppressPackageStartupMessages({ library(dplyr) library(tidytext) library(stringi) library(stringr)}) df <- tibble::tribble(~'id',~'doc',~'doc_word_count',1,stringr::word(paste0(stringi::stri_rand_lipsum(1000),collapse = ' '),start = 1,end = 1439),1439,2,end = 10234),10234,3,end = 2000),2000) head(df) #> # A tibble: 3 x 3 #> id doc doc_word_count #> <dbl> <chr> <dbl> #> 1 1 Lorem ipsum dolor sit amet,litora sollicitudin enim eu.~ 1439 #> 2 2 Lorem ipsum dolor sit amet,sed viverra amet velit ut ve~ 10234 #> 3 3 Lorem ipsum dolor sit amet,auctor convallis tristique v~ 2000 df_split <- df %>% tidytext::unnest_tokens(word,doc) %>% dplyr::group_by(id) %>% dplyr::mutate(new_grp = ((row_number()-1) %/% 500)) %>% dplyr::group_by(id,new_grp) %>% dplyr::summarize(doc_word_count = n(),doc = paste0(word,collapse = ' ')) %>% dplyr::ungroup() %>% dplyr::select(id,doc,doc_word_count) #> `summarise()` regrouping output by 'id' (override with `.groups` argument) head(df_split) #> # A tibble: 6 x 3 #> id doc doc_word_count #> <dbl> <chr> <int> #> 1 1 lorem ipsum dolor sit amet litora sollicitudin enim eu i~ 500 #> 2 1 semper ullamcorper fames congue metus elementum condimen~ 500 #> 3 1 tincidunt magnis vehicula amet elementum quisque eu vita~ 439 #> 4 2 lorem ipsum dolor sit amet sed viverra amet velit ut vel~ 500 #> 5 2 non arcu netus aptent imperdiet lobortis eros in nulla i~ 500 #> 6 2 sem amet mattis sed feugiat ut arcu amet sed pellentesqu~ 500 并以KinesisBinderConfiguration名称公开了ContextCredentialsAutoConfiguration bean如果还不存在。

因此,可能您只需要在配置类中将AWSCredentialsProvider作为bean,并为其指定credentialsProvider bean名称即可。