AWS EMRでIAMで権限設定できないS3バケットをソースにしたい

実現したいこと

お世話になります。

EMRで、他の会社名義のS3バケットにあるログファイルを処理させたいです。
その会社からは、S3バケットの認証情報(アクセスキー・シークレットキー)は提供されますが、IAMは変更してもらえないです。

発生している問題・分からないこと

EMRは自社のAWSアカウントで構築しているので、S3を含めて全てのリソースにアクセスできます。

ソースデータが格納しているS3には、アクセスキー・シークレットキーしか提供されないです。

その認証情報をEMRのEC2インスタンスにaws configureで権限を設定すればソースのS3にアクセスできるのですが、EMRで利用するS3バケットにアクセスできなくなり、EMRの処理がエラーとなりました。

今は、いったん自社のS3バケットにデータをコピーしてからEMRに処理させているのですが、もっと処理を効率化させたいです。(S3バケット間で直接コピーできないので、EC2のローカルディスクを介してコピーしています)

該当のソースコード

Python

1### PysparkでS3バケットを指定して読み込み2df = spark.read.csv("s3//my-backet/file")3

試したこと・調べたこと

上記の詳細・結果

boto3を使えば認証情報をパラメータで指定してS3にアクセスできましたが、ファイル数が多いので処理に時間がかかりすぎます。
https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/emr.html

s3DistCpコマンドでHDFSにコピーしようとすると、時間が異様にかかる・エラーが発生するでうまくいかないです。
https://docs.aws.amazon.com/emr/latest/ReleaseGuide/UsingEMR_s3distcp.html

補足

特になし

コメントを投稿

0 コメント