Порядок цепочек разрешений Spark - исключение S3 запрещено - PullRequest
0 голосов
/ 14 февраля 2019

Я использую Spark 2.4 на экземпляре EC2.Я принимаю роль IAM и задаю ключ / секретный ключ / токен в sparkSession.sparkContext.hadoopConfiguration вместе с поставщиком учетных данных как «org.apache.hadoop.fs.s3a.TeilitaryAWSCredentialsProvider».

КогдаЯ пытаюсь прочитать набор данных из s3 (используя s3a, который также установлен в конфигурации hadoop), я получаю сообщение об ошибке

com.amazonaws.services.s3.model.AmazonS3Exception: StatusКод: 403, Сервис AWS: Amazon S3, Идентификатор запроса AWS: 7376FE009AD36330, Код ошибки AWS: ноль, Сообщение об ошибке AWS: Запрещено

Команда чтения:

val myData = sparkSession.read.parquet("s3a://myBucket/myKey")

I 'Мы неоднократно проверяли путь S3, и это правильно.Моя предполагаемая роль IAM имеет нужные привилегии для корзины S3.Единственное, что я могу понять на этом этапе, - это то, что у spark есть какой-то порядок скрытой цепочки учетных данных, и хотя я установил учетные данные в конфигурации hadoop, он все еще получает учетные данные откуда-то еще (мой профиль экземпляра ???).Но у меня нет возможности диагностировать это.

Любая помощь приветствуется.Рады предоставить более подробную информацию.

1 Ответ

0 голосов
/ 15 февраля 2019
  1. spark-submit подберет ваши env-переменные и установит их как fs.s3a access + secret + session key, перезаписывая любой, который вы уже установили.
  2. Если вы хотите использовать толькоучетные данные IAM, просто установите fs.s3a.aws.credentials.provider в com.amazonaws.auth.InstanceProfileCredentialsProvider;это будет единственный используемый

Дополнительная литература: Устранение неисправностей S3A

...