2016-12-19 9 views
0

Hadoop環境で複数のAWSキーを使用する場合の回避策を教えてください。私のハープ・ジョブは、2つの異なるS3バケット(2つの異なるキー)にアクセスする必要があります。 "資格"プロバイダで試してみましたが、かなり限られているようです。すべてのキーを小文字で保存するため、あるジョブでは「s3a」、他のジョブでは「s3n」を使用できません。たとえば:Hadoop環境で複数のAWSキーを操作する

fs.s3n.awsAccessKeyId 
fs.s3n.awsSecretAccessKey 

しかし、私は "fs.s3n.awsAccessKeyId" とプロバイダを作成した場合、それはfs.s3n」として保存する:

fs.s3a.access.key 
fs.s3a.secret.key 

そしてS3N用:S3Aのために、それが検索されます。その結果、実行時に予想されるキーが読み込まれません。回避策として

、私は2つの異なる資格情報プロバイダを生成して渡そうとしました:

--Dhadoop.security.credential.provider.path=key1,key2 

しかし、キーの両方がfs.s3a.access.key & FSを持っているとして、それはtogherを動作しませんでした。 s3a.secrety.keyペア。

表示されているとおり、-Dオプションを使用してアクセスと秘密鍵を渡したくありません。このシナリオを処理するためのよりよい方法はありますか?

+0

両方のバケットにアクセスできるIAMクレデンシャルのセットが1つもないのはなぜですか? – jarmod

+0

ええ、クロスアカウントであっても、アクセスできるアカウントから両方のバケットへのアクセスを許可するポリシーを作成することができます。 EC2でこれを実行している場合は、ec2インスタンスプロファイルを使用して、インスタンスとそのアクセスポリシーの両方の資格情報を指定します。 –

答えて

1

Hadoop 2.8にアップグレードする場合は、per-bucket configurationsを使用してこの問題に対処できます。 fs.s3a.bucket。$ BUCKETNAMEですべてが異なる地域内のバケットに話しため、他のコンフィグ

fs.s3a.bucket.engineering.access.key=AAID.. fs.s3a.bucket.logs.access.key=AB14...

私たちは、このロット使用をオーバーライドし、そのバケットのためのFSインスタンスの設定にパッチされ、暗号化、 他のもの。これまでのところうまくいきます。しかし、 I would say thatです。

例外:JCECKSファイルの秘密鍵を暗号化する場合。ドキュメントはこれをカバーしています。

関連する問題