How to put records into a kinesis stream in another AWS account?

0

Is it possible to put records into a kinesis stream located in another AWS account?

I configured my kinesis producer with an STS assumed role, but I can't see how to specify a stream name in another account (it doesn't accept an ARN, only a stream name).

Init logic:

            AWSCredentialsProviderChain credentialsProvider = new AWSCredentialsProviderChain(
                    DefaultAWSCredentialsProviderChain.getInstance(),
                    new STSAssumeRoleSessionCredentialsProvider.Builder(
                            config.getKinesisStreamRoleArn(),
                            roleSessionName)
                                    .withExternalId(config.getKinesisStreamRoleExternalId())
                                    .build());

            Properties props = new Properties();
            props.load(getClass().getClassLoader().getResourceAsStream("kinesis_producer_config.properties"));
            KinesisProducerConfiguration producerConfig = KinesisProducerConfiguration.fromProperties(props)
                    .setCredentialsProvider(credentialsProvider);

            if (!Strings.isNullOrEmpty(config.getKinesisStreamRegion())) {
                producerConfig.setRegion(config.getKinesisStreamRegion());
            }

            return new KinesisProducer(producerConfig);

and the error:

Encountered AWSError
ResourceNotFoundException
Stream my-stream under account 111111111111 not found.:

(where 111111111111 is the other aws account)

已提问 5 年前2041 查看次数
1 回答
0

Figured it out; I was creating a AWSCredentialsProviderChain, and including the DefaultAWSCredentialsProviderChain first in the constructor. When I changed the order to include the STSAssumeRoleSessionCredentialsProvider first, it was then able to find the stream in the other AWS account successfully.

已回答 5 年前

您未登录。 登录 发布回答。

一个好的回答可以清楚地解答问题和提供建设性反馈,并能促进提问者的职业发展。

回答问题的准则