Ok, Denis. I found the issue. Could you, please, create the corresponding
JIRA issue for Apache Ignite project (it looks I don't have enough rights to
do it myself).

The issue is the following (at least for Apache Ignite 1.7.0, but I guess
1.8.0 will not be any different):

- when you deploy Ignite on AWS (in clustered) you need to use
/TcpDiscoveryS3IpFinder/
- /TcpDiscoveryS3IpFinder/ only has /setAwsCredentials/ which accepts
/AWSCredentials/
- If you check the source code this is how then credentials is used 
/s3 = cfg != null ? new AmazonS3Client(cred, cfg) : new
AmazonS3Client(cred);/
 inside /TcpDiscoveryS3IpFinder/
- /AmazonS3Client/ has also another way to construct the client by passing
/AWSCredentialsProvider/
/
public AmazonS3Client(AWSCredentialsProvider credentialsProvider) {
        this(credentialsProvider, new ClientConfiguration());
}
/
- If you pass /AWSCredentials/ in the S3 client instead it wraps in into
/StaticCredentialsProvider/ instead, i.e.
/public AmazonS3Client(AWSCredentials awsCredentials, ClientConfiguration
clientConfiguration) {
        super(clientConfiguration);
        this.awsCredentialsProvider = new
StaticCredentialsProvider(awsCredentials);
        init();
}/
- S3 Amazon client (as all other AWS clients), never use credentials
directly, but instead call /awsCredentialsProvider.getCredentials()/ every
time credentials are required

One of the available /AWSCredentialsProvider/ is
/InstanceProfileCredentialsProvider/ which /getCredentials()/ implementation
refresh the AWS credentials if required (following EC2 instance profile
workflow):
/public AWSCredentials getCredentials() {
        if (needsToLoadCredentials())
            loadCredentials();
        if (expired()) {
            throw new AmazonClientException(
                    "The credentials received from the Amazon EC2 metadata
service have expired");
        }
        return credentials;
    }/

So, the suggestion is to add support for /TcpDiscoveryS3IpFinder/ to accept
/AWSCredentialsProvider/ in addition to just only /AWSCredentials/, and then
passing it into underlying /AmazonS3Client/ (actually you can even wrap
/AWSCredentials/ into  /StaticCredentialsProvider/ and always pass
/AWSCredentialsProvider/ into S3 client).





--
View this message in context: 
http://apache-ignite-users.70518.x6.nabble.com/Old-AWS-SDK-version-why-tp9824p9932.html
Sent from the Apache Ignite Users mailing list archive at Nabble.com.

Reply via email to