Danny Cranmer created FLINK-19716:
-------------------------------------
Summary: [Kinesis][EFO] Unable to use Assume Role with EFO record
publisher
Key: FLINK-19716
URL: https://issues.apache.org/jira/browse/FLINK-19716
Project: Flink
Issue Type: Bug
Components: Connectors / Kinesis
Reporter: Danny Cranmer
Fix For: 1.12.0
*Reproduction Steps*
* Setup an application to consume from a Kinesis Stream
* Use ASSUME_ROLE credential provider
{code:java}
consumerConfig.setProperty(AWSConfigConstants.AWS_CREDENTIALS_PROVIDER,
ASSUME_ROLE.name());
consumerConfig.setProperty(AWSConfigConstants.AWS_ROLE_ARN, "<role-arn>");
consumerConfig.setProperty(AWSConfigConstants.AWS_ROLE_SESSION_NAME,
"test-efo");
{code}
*Expected Result*
* Consumer is able to authorise and consume from the stream
*Actual Result*
* The following error is thrown (full stack attached)
** Caused by:
org.apache.flink.kinesis.shaded.software.amazon.awssdk.core.exception.SdkClientException:
Unable to load an HTTP implementation from any provider in the chain. You must
declare a dependency on an appropriate HTTP implementation or pass in an
SdkHttpClient explicitly to the client builder.
*Diagnosis*
This issue occurs because Assume Role credential provider requires a Sync HTTP
Client. The Apache HTTP Client is on the classpath but it is not detected due
to the shading relocation. It is looking for:
- {{org.apache.flink.kinesis.shaded.software.amazon.awssdk.http.SdkHttpService}}
However the service manifest is defining:
- {{software.amazon.awssdk.http.SdkHttpService}}
*Solution*
* Add a service manifest such that the shaded HTTP client is used
* Also needed to update the HTTP client/core version due to incompatibilities
*Testing*
Tested using EFO and POLLING record consumer
--
This message was sent by Atlassian Jira
(v8.3.4#803005)