Я пытаюсь подключиться к корзине s3 другого аккаунта. Проблема в том, что я могу подключиться к корзине через s3 API
def listFilesAndRename(key : String) = {
val clientBucket = "test"
val credentials = new BasicAWSCredentials("access key", "secret key")
val s3 = AmazonS3ClientBuilder.standard.withRegion(Regions.US_EAST_1).withCredentials(new AWSStaticCredentialsProvider(credentials)).build
val result = s3.listObjectsV2(clientBucket, key)
val objects = result.getObjectSummaries.toArray
for {
os <- objects
fileName = os.asInstanceOf[S3ObjectSummary].getKey
if !fileName.endsWith("_SUCCESS")
} {
System.out.println("* " + os.asInstanceOf[S3ObjectSummary].getKey)
}
}
, но когда я хочу подключиться с помощью spark, он не работает. Я попробовал следующие настройки
spark.conf.set("spark.hadoop.fs.s3a.access.key", "access key")
spark.conf.set("spark.hadoop.fs.s3a.secret.key", "secret key")
spark.conf.set("spark.hadoop.fs.s3a.impl", "org.apache.hadoop.fs.s3a.S3AFileSystem")
Причины:
com.amazon.ws.emr.hadoop.fs.shaded.com.amazonaws.services.s3.model.AmazonS3Exception: Access Denied (Service: Amazon S3; Status Code: 403; Error Code: AccessDenied; Request ID: 799F611A3D7BB5E1; S3 Extended Request ID: USTzJmBtWt27ccvF+YuTogwDSknuvB2tBLHxqPySLwftHXfmPpPYVjqVubzeVnqjJS89fzIjJw8=)
at com.amazon.ws.emr.hadoop.fs.shaded.com.amazonaws.http.AmazonHttpClient$RequestExecutor.handleErrorResponse(AmazonHttpClient.java:1712)
at com.amazon.ws.emr.hadoop.fs.shaded.com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeOneRequest(AmazonHttpClient.java:1367)
at com.amazon.ws.emr.hadoop.fs.shaded.com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeHelper(AmazonHttpClient.java:1113)
at com.amazon.ws.emr.hadoop.fs.shaded.com.amazonaws.http.AmazonHttpClient$RequestExecutor.doExecute(AmazonHttpClient.java:770)
Так что очевидно, что это не ошибка подключения, но похоже, что spark не может подключиться к корзине s3