HADOOP-17951. Improve S3A checking of S3 Access Point existence (#3516)
Follow-on to HADOOP-17198. Support S3 Access Points Contributed by Bogdan Stolojan
This commit is contained in:
parent
68c2accc20
commit
33608c3bd4
@ -216,6 +216,7 @@
|
|||||||
import static org.apache.hadoop.fs.s3a.impl.CallableSupplier.waitForCompletionIgnoringExceptions;
|
import static org.apache.hadoop.fs.s3a.impl.CallableSupplier.waitForCompletionIgnoringExceptions;
|
||||||
import static org.apache.hadoop.fs.s3a.impl.ErrorTranslation.isObjectNotFound;
|
import static org.apache.hadoop.fs.s3a.impl.ErrorTranslation.isObjectNotFound;
|
||||||
import static org.apache.hadoop.fs.s3a.impl.ErrorTranslation.isUnknownBucket;
|
import static org.apache.hadoop.fs.s3a.impl.ErrorTranslation.isUnknownBucket;
|
||||||
|
import static org.apache.hadoop.fs.s3a.impl.InternalConstants.AP_INACCESSIBLE;
|
||||||
import static org.apache.hadoop.fs.s3a.impl.InternalConstants.AP_REQUIRED_EXCEPTION;
|
import static org.apache.hadoop.fs.s3a.impl.InternalConstants.AP_REQUIRED_EXCEPTION;
|
||||||
import static org.apache.hadoop.fs.s3a.impl.InternalConstants.AP_S3GUARD_INCOMPATIBLE;
|
import static org.apache.hadoop.fs.s3a.impl.InternalConstants.AP_S3GUARD_INCOMPATIBLE;
|
||||||
import static org.apache.hadoop.fs.s3a.impl.InternalConstants.ARN_BUCKET_OPTION;
|
import static org.apache.hadoop.fs.s3a.impl.InternalConstants.ARN_BUCKET_OPTION;
|
||||||
@ -785,7 +786,8 @@ protected void verifyBucketExistsV2()
|
|||||||
s3.getBucketAcl(bucket);
|
s3.getBucketAcl(bucket);
|
||||||
} catch (AmazonServiceException ex) {
|
} catch (AmazonServiceException ex) {
|
||||||
int statusCode = ex.getStatusCode();
|
int statusCode = ex.getStatusCode();
|
||||||
if (statusCode == SC_404 || (statusCode == SC_403 && accessPoint != null)) {
|
if (statusCode == SC_404 ||
|
||||||
|
(statusCode == SC_403 && ex.getMessage().contains(AP_INACCESSIBLE))) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -154,6 +154,11 @@ private InternalConstants() {
|
|||||||
public static final String AP_REQUIRED_EXCEPTION = "Access Points usage is required" +
|
public static final String AP_REQUIRED_EXCEPTION = "Access Points usage is required" +
|
||||||
" but not configured for the bucket.";
|
" but not configured for the bucket.";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Error message to indicate Access Points are not accessible or don't exist.
|
||||||
|
*/
|
||||||
|
public static final String AP_INACCESSIBLE = "Could not access through this access point";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* AccessPoint ARN for the bucket. When set as a bucket override the requests for that bucket
|
* AccessPoint ARN for the bucket. When set as a bucket override the requests for that bucket
|
||||||
* will go through the AccessPoint.
|
* will go through the AccessPoint.
|
||||||
|
Loading…
Reference in New Issue
Block a user