Hello there,

Good morning.

We are using Apache Beam (Java SDK 2.35.0) in our data pipeline to read from 
AWS Kinesis Stream using AWS KDA (Kinesis Data Analytics) and so far it’s 
working fine for few data pipelines.

Now we have got a new requirement that AWS KDA (running an application 
implemented using Apache Bean SDK 2.35.0) needs to read the data from AWS 
Kinesis Stream in different account.

I have followed AWS 
Documentation<https://docs.aws.amazon.com/kinesisanalytics/latest/java/examples-cross.html>
 to grant required permission and policies for the AWS KDA and in Apache Bean 
implementation we have something like below,

KinesisIO.read()
    .withStreamName(getInputPattern())
    .withAWSClientsProvider(
        new KinesisClientsProvider(
            Regions.fromName(getAwsRegion()),
            getAwsCredentialsProvider(),
            getAwsVerifyCertificate(),
            getAwsKinesisServiceEndpoint(),
            getAwsCloudwatchServiceEndpoint()))

Here, we could only set the Kinesis Stream and not the ARN. With the above 
implementation, this application couldn’t read from the stream and from the 
logs we are seeing it’s trying to connect to the stream in the same AWS 
Account. The ARN formed using streamName assumes it’s in the same AWS Account 
whereas we want to connect to Kinesis Stream in another AWS Account.

Note: We are using ‘DefaultAWSCredentialsProviderChain’.

With this situation, wondering am I missing something / doing incorrectly here. 
Could you please give us some pointers how to use Beam to read from a 
(Kinesis)Stream in different AWS Account. Thanks.

Regards,
Sankar

Reply via email to