Как определить, какие учетные данные AWS Spark использует для чтения файлов S3?

#apache-spark #amazon-s3 #oozie

#apache-spark #amazon-s3 #oozie

Вопрос:

Я запускаю задание Oozie, которое ранее выполнялось нормально. И теперь у меня ошибка отказа в разрешении при доступе к файлам S3. Я просто пытаюсь выяснить, какие учетные данные он использует и где их исправить.

Насколько я могу судить, учетные данные, похоже, поступают из нескольких мест и не уверены в порядке приоритета (например, ~/.aws/credentials, переменные среды, конфигурация hadoop, роль IAM и т.д.).

Есть ли способ определить, какие активные учетные данные используются? Можно ли распечатать активный идентификатор ключа учетной записи AWS в журнале spark?

Комментарии:

1. Используете ли вы EMR или устанавливаете свой собственный spark на EC2? Используете ли вы Oozie для запуска задания Spark?

2. Это кластер Cloudera. Да, Oozie запустил задание.

Ответ №1:

  1. Данные для входа в AWS на самом деле не регистрируются по соображениям безопасности.
  2. Spark submit получит переменные AWS_ env с вашего рабочего стола и установит значения fs.s3a, переопределяя любые из них.

В соединителе s3a порядок такой

  1. секреты в URI (плохие, избегать, удалены из последних выпусков)
  2. свойства fs.s3a
  3. env vars
  4. Учетные данные IAM, предоставленные виртуальной машине EC2

вы можете настроить список поставщиков аутентификации, чтобы изменить порядок, удалить их и т.д.

Ответ №2:

Поскольку вы используете Cloudera cluster, возможно, вы прочитали этот документ, создайте измененную копию файлов конфигурации

Лучше добавить следующее в core-site.xml файл внутри элемента:

 <property>
    <name>fs.s3a.access.key</name>
    <value>Amazon S3 Access Key</value>
</property>

<property>
    <name>fs.s3a.secret.key</name>
    <value>Amazon S3 Secret Key</value>
</property>