|
@@ -328,13 +328,8 @@ of `com.amazonaws.auth.AWSCredentialsProvider` may also be used.
|
|
configuration of AWS access key ID and secret access key in
|
|
configuration of AWS access key ID and secret access key in
|
|
environment variables named AWS_ACCESS_KEY_ID and
|
|
environment variables named AWS_ACCESS_KEY_ID and
|
|
AWS_SECRET_ACCESS_KEY, as documented in the AWS SDK.
|
|
AWS_SECRET_ACCESS_KEY, as documented in the AWS SDK.
|
|
- 3. org.apache.hadoop.fs.s3a.SharedInstanceProfileCredentialsProvider:
|
|
|
|
- a shared instance of
|
|
|
|
- com.amazonaws.auth.InstanceProfileCredentialsProvider from the AWS
|
|
|
|
- SDK, which supports use of instance profile credentials if running
|
|
|
|
- in an EC2 VM. Using this shared instance potentially reduces load
|
|
|
|
- on the EC2 instance metadata service for multi-threaded
|
|
|
|
- applications.
|
|
|
|
|
|
+ 3. com.amazonaws.auth.InstanceProfileCredentialsProvider: supports use
|
|
|
|
+ of instance profile credentials if running in an EC2 VM.
|
|
</description>
|
|
</description>
|
|
</property>
|
|
</property>
|
|
|
|
|
|
@@ -407,13 +402,12 @@ AWS Credential Providers are classes which can be used by the Amazon AWS SDK to
|
|
obtain an AWS login from a different source in the system, including environment
|
|
obtain an AWS login from a different source in the system, including environment
|
|
variables, JVM properties and configuration files.
|
|
variables, JVM properties and configuration files.
|
|
|
|
|
|
-There are four AWS Credential Providers inside the `hadoop-aws` JAR:
|
|
|
|
|
|
+There are three AWS Credential Providers inside the `hadoop-aws` JAR:
|
|
|
|
|
|
| classname | description |
|
|
| classname | description |
|
|
|-----------|-------------|
|
|
|-----------|-------------|
|
|
| `org.apache.hadoop.fs.s3a.TemporaryAWSCredentialsProvider`| Session Credentials |
|
|
| `org.apache.hadoop.fs.s3a.TemporaryAWSCredentialsProvider`| Session Credentials |
|
|
| `org.apache.hadoop.fs.s3a.SimpleAWSCredentialsProvider`| Simple name/secret credentials |
|
|
| `org.apache.hadoop.fs.s3a.SimpleAWSCredentialsProvider`| Simple name/secret credentials |
|
|
-| `org.apache.hadoop.fs.s3a.SharedInstanceProfileCredentialsProvider`| Shared instance of EC2 Metadata Credentials, which can reduce load on the EC2 instance metadata service. (See below.) |
|
|
|
|
| `org.apache.hadoop.fs.s3a.AnonymousAWSCredentialsProvider`| Anonymous Login |
|
|
| `org.apache.hadoop.fs.s3a.AnonymousAWSCredentialsProvider`| Anonymous Login |
|
|
|
|
|
|
There are also many in the Amazon SDKs, in particular two which are automatically
|
|
There are also many in the Amazon SDKs, in particular two which are automatically
|
|
@@ -425,24 +419,13 @@ set up in the authentication chain:
|
|
| `com.amazonaws.auth.EnvironmentVariableCredentialsProvider`| AWS Environment Variables |
|
|
| `com.amazonaws.auth.EnvironmentVariableCredentialsProvider`| AWS Environment Variables |
|
|
|
|
|
|
|
|
|
|
-*EC2 Metadata Credentials with `SharedInstanceProfileCredentialsProvider`*
|
|
|
|
|
|
+*EC2 Metadata Credentials with `InstanceProfileCredentialsProvider`*
|
|
|
|
|
|
Applications running in EC2 may associate an IAM role with the VM and query the
|
|
Applications running in EC2 may associate an IAM role with the VM and query the
|
|
[EC2 Instance Metadata Service](http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-metadata.html)
|
|
[EC2 Instance Metadata Service](http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-metadata.html)
|
|
for credentials to access S3. Within the AWS SDK, this functionality is
|
|
for credentials to access S3. Within the AWS SDK, this functionality is
|
|
-provided by `InstanceProfileCredentialsProvider`. Heavily multi-threaded
|
|
|
|
-applications may trigger a high volume of calls to the instance metadata service
|
|
|
|
-and trigger throttling: either an HTTP 429 response or a forcible close of the
|
|
|
|
-connection.
|
|
|
|
-
|
|
|
|
-To mitigate against this problem, `hadoop-aws` ships with a variant of
|
|
|
|
-`InstanceProfileCredentialsProvider` called
|
|
|
|
-`SharedInstanceProfileCredentialsProvider`. Using this ensures that all
|
|
|
|
-instances of S3A reuse the same instance profile credentials instead of issuing
|
|
|
|
-a large volume of redundant metadata service calls. If
|
|
|
|
-`fs.s3a.aws.credentials.provider` refers to
|
|
|
|
-`com.amazonaws.auth.InstanceProfileCredentialsProvider`, S3A automatically uses
|
|
|
|
-`org.apache.hadoop.fs.s3a.SharedInstanceProfileCredentialsProvider` instead.
|
|
|
|
|
|
+provided by `InstanceProfileCredentialsProvider`, which internally enforces a
|
|
|
|
+singleton instance in order to prevent throttling problem.
|
|
|
|
|
|
*Session Credentials with `TemporaryAWSCredentialsProvider`*
|
|
*Session Credentials with `TemporaryAWSCredentialsProvider`*
|
|
|
|
|
|
@@ -542,7 +525,7 @@ This means that the default S3A authentication chain can be defined as
|
|
<value>
|
|
<value>
|
|
org.apache.hadoop.fs.s3a.SimpleAWSCredentialsProvider,
|
|
org.apache.hadoop.fs.s3a.SimpleAWSCredentialsProvider,
|
|
com.amazonaws.auth.EnvironmentVariableCredentialsProvider,
|
|
com.amazonaws.auth.EnvironmentVariableCredentialsProvider,
|
|
- org.apache.hadoop.fs.s3a.SharedInstanceProfileCredentialsProvider
|
|
|
|
|
|
+ com.amazonaws.auth.InstanceProfileCredentialsProvider
|
|
</value>
|
|
</value>
|
|
</property>
|
|
</property>
|
|
|
|
|
|
@@ -929,7 +912,7 @@ role information available when deployed in Amazon EC2.
|
|
```xml
|
|
```xml
|
|
<property>
|
|
<property>
|
|
<name>fs.s3a.aws.credentials.provider</name>
|
|
<name>fs.s3a.aws.credentials.provider</name>
|
|
- <value>org.apache.hadoop.fs.s3a.SharedInstanceProfileCredentialsProvider</value>
|
|
|
|
|
|
+ <value>com.amazonaws.auth.InstanceProfileCredentialsProvider</value>
|
|
</property>
|
|
</property>
|
|
```
|
|
```
|
|
|
|
|