2017-01-10 9 views
0

この質問は複数回尋ねられたかもしれませんが、私はこれらの解決策を試してみました。したがって、明確な解決のために新しいスレッドでそれを尋ねる。Amazon S3エラーコード403 EMRクラスタからの禁止

S3読み取り専用アクセス権(すべてのS3リソースでGetとList)を使用してIAMユーザーを作成しましたが、HDFSコマンドを使用してEMRクラスターからS3にアクセスしようとすると、特定のフォルダーに対して "エラーコード403禁止"例外が発生します。他の投稿の人が許可の問題であると回答しました。それは "アクセスが拒否されました"の代わりに "禁止されている"ので正しい解決策を見つけられませんでした。このエラーの動作は、バケット内の特定のフォルダ(オブジェクトを含む)と特定の空のフォルダに対してのみ発生しています。それは私がネイティブAPI呼び出しを使用する場合、以下のように、それが正常に動作していることが観察された:

S3A呼び出しを使用している場合

例外「禁断」:

hdfs dfs -ls s3a://<bucketname>/<folder>

S3のネイティブを使用すると、s3ns3を呼び出し、エラーなし:

hdfs dfs -ls s3://<bucketname>/<folder>

hdfs dfs -ls s3n://<bucketname>/<folder>

空のフォルダでも同様の動作が確認されています.3Sだけのオブジェクトは物理ファイルですが、残りの「バケットとフォルダ」はプレースホルダです。しかし、私が新しい空のフォルダを作成した場合、s3a呼び出しはこの例外をスローしません。

P.S. - ルートIAMアクセスキーがこの例外を超えました。

答えて

0

issues.apache.org、HADOOPプロジェクト、コンポーネントfs/s3 には、使用している正確なhadoopバージョンのJIRAをファイルすることをお勧めします。スタックトレースを最初のコメントとして追加します。これが、何が起こっているのかを理解するための唯一の方法です。

FWIWでは、単純な読み取り専用とR/W以外のアクセス許可をテストしていません。クライアントコードがHEADにできることを期待しているので、パスの下でのパーミッションを混在させることは避けられないことです。&はバケット内の何かをリストします。

ところで、Hadoop S3のクライアントはすべて、 "/"という接尾辞を持つ0バイトのオブジェクトを作成することで空のディレクトリを模倣します。その上でHEADを使用して空のバケットを調べます。データが空のディレクトリの下に追加されると、模擬の親ディレクトリはDELETE-dになります。

+0

ありがとうございました。私はJIRAを開きます。 –

関連する問題