Искра не может найти действительные источники данных S3 - возможная проблема с ролью IAM для разных учетных записей / предполагаемой ролью? - PullRequest
0 голосов
/ 12 октября 2018

Я использую Spark в кластере AWS EMR.Моя настройка заключается в том, что все интересующие файлы находятся в корзине S3 в учетной записи A, в то время как ключ KMS, который шифрует файлы, находится в учетной записи B. Для работы с этим я настроил роль IAM между учетными записями, которую должна выполнятьроль IAM кластера EC2 в учетной записи A, которая может получить доступ к корзине и ключу KMS.Однако, это не похоже на работу.

Журнал полон сообщений, подобных этому, для каждого найденного файла:

18/10/10 19:08:00 WARN InMemoryFileIndex: The directory s3://mybucket/subfolder/subfolder2/file.csv was not found. Was it deleted very recently?

Это загадочно, потому что я знаю путь /Файл существует в S3, и я даже дошёл до SSH к узлу EMR, взял на себя роль и сам выполнил команду загрузки S3 из CLI, и она работает без проблем, поэтому операция с предполагаемой ролью выглядит нормально.Я также могу загружать данные в том же контейнере, который был зашифрован с помощью ключа KMS, принадлежащего учетной записи A, но никогда не зашифрован ключом из учетной записи B.

Я использую очень похожие пользовательские учетные данныепоставщик роли IAM для нескольких учетных записей: https://github.com/zillow/aws-custom-credential-provider/blob/master/src/main/java/com/zillow/zda/data_lake/credential/RoleBasedAWSCredentialProvider.java на основании рекомендаций AWS: https://aws.amazon.com/blogs/big-data/securely-analyze-data-from-another-aws-account-with-emrfs/

Кто-нибудь когда-нибудь сталкивался с этой ошибкой Spark?Что это пытается сказать мне?На первый взгляд, это просто кажется неправильным: путь существует и доступен из самого экземпляра EC2 после выполнения операции предположительной роли в CLI.

...