Hi,

I am trying to use Flink 1.2.1 with RockDB as statebackend and S3 for 
checkpoints.
I am using Flink 1.2.1 docker images and running them in Kubernetes cluster.

I have followed the steps documented in the Flink documentation -
https://ci.apache.org/projects/flink/flink-docs-release-1.2/setup/aws.html#s3-simple-storage-service

I am using AWS IAM roles to setup access for S3.
The role has actions "s3:GetObject","s3:ListBucket", "s3:PutObject", 
"s3:DeleteObject" on the bucket.

When I run a job, the jobmanager logs below exception –

java.io.IOException: The given file URI (s3://$MY_TEST_BUCKET/checkpoints) 
points to the HDFS NameNode at $MY_TEST_BUCKET, but the File System could not 
be initialized with that address: Unable to load AWS credentials from any 
provider in the chain
      at 
org.apache.flink.runtime.fs.hdfs.HadoopFileSystem.initialize(HadoopFileSystem.java:334)
      at 
org.apache.flink.core.fs.FileSystem.getUnguardedFileSystem(FileSystem.java:265)
      at org.apache.flink.core.fs.FileSystem.get(FileSystem.java:304)
      at org.apache.flink.core.fs.Path.getFileSystem(Path.java:293)
      at 
org.apache.flink.runtime.state.filesystem.FsCheckpointStreamFactory.<init>(FsCheckpointStreamFactory.java:105)
      at 
org.apache.flink.runtime.state.filesystem.FsStateBackend.createStreamFactory(FsStateBackend.java:172)
      at 
org.apache.flink.contrib.streaming.state.RocksDBStateBackend.createStreamFactory(RocksDBStateBackend.java:219)
      at 
org.apache.flink.streaming.runtime.tasks.StreamTask.createCheckpointStreamFactory(StreamTask.java:803)
      at 
org.apache.flink.streaming.api.operators.AbstractStreamOperator.initializeState(AbstractStreamOperator.java:220)
      at 
org.apache.flink.streaming.runtime.tasks.StreamTask.initializeOperators(StreamTask.java:655)
      at 
org.apache.flink.streaming.runtime.tasks.StreamTask.initializeState(StreamTask.java:643)
      at 
org.apache.flink.streaming.runtime.tasks.StreamTask.invoke(StreamTask.java:246)
      at org.apache.flink.runtime.taskmanager.Task.run(Task.java:665)
      at java.lang.Thread.run(Thread.java:748)
Caused by: com.amazonaws.AmazonClientException: Unable to load AWS credentials 
from any provider in the chain
      at 
com.amazonaws.auth.AWSCredentialsProviderChain.getCredentials(AWSCredentialsProviderChain.java:117)
      at 
com.amazonaws.services.s3.AmazonS3Client.invoke(AmazonS3Client.java:3521)
      at 
com.amazonaws.services.s3.AmazonS3Client.headBucket(AmazonS3Client.java:1031)
      at 
com.amazonaws.services.s3.AmazonS3Client.doesBucketExist(AmazonS3Client.java:994)
      at 
org.apache.hadoop.fs.s3a.S3AFileSystem.initialize(S3AFileSystem.java:297)
      at 
org.apache.flink.runtime.fs.hdfs.HadoopFileSystem.initialize(HadoopFileSystem.java:320)
      ... 13 more

I checked if the jobmanager pod in the K8s cluster has the correct IAM role 
applied.
“curl http://169.254.169.254/latest/meta-data/iam/security-credentials/” 
returned the correct role.

After this, I installed aws cli on the jobmanager pod and could download/upload 
to $MY_TEST_BUCKET.
This confirmed that the jobmanager pod has the correct IAM role associated with 
it.

So, I am not sure why the AWS library in Flink is not able to load the 
credentials.
Any thoughts or suggestions to fix or troubleshoot?

Appreciate the help.

Regards,
Abhinav Bajaj


[cid:image001.png@01D3C5FF.E9E41E50]

Abhinav Bajaj
Lead Engineer
Open Location Platform
Mobile: +1 708 329 9516

HERE Seattle
701 Pike Street, suite 2000
Seattle, WA 98101 USA
47° 36' 41" N 122° 19' 57" W

[cid:image002.png@01D3C5FF.E9E41E50]<http://360.here.com/>    
[cid:image003.png@01D3C5FF.E9E41E50] <https://www.twitter.com/here>    
[cid:image004.png@01D3C5FF.E9E41E50] <https://www.facebook.com/here>     
[cid:image005.png@01D3C5FF.E9E41E50] 
<https://www.linkedin.com/company/heremaps>     
[cid:image006.png@01D3C5FF.E9E41E50] <https://www.instagram.com/here/>


Reply via email to