翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Amazon EMR で所有していない Amazon S3 バケットにデータを書き込む方法
Amazon Simple Storage Service (Amazon S3) バケットにファイルを書き込むと、デフォルトではお客様以外はそのファイルを読むことができません。これは、自分専用のバケットにファイルを書き込むことが前提になっており、このデフォルト設定によってファイルのプライバシーを保護しています。
ただし、クラスターを実行していて、出力を別の AWS ユーザーの Amazon S3 バケットに書き込む場合、その AWS 他のユーザーがその出力を読み取れるようにするには、次の 2 つの操作を行う必要があります。
-
AWS 他のユーザーに Amazon S3 バケットの書き込みアクセス許可を付与してもらいます。起動するクラスターは AWS 認証情報で実行されるため、起動するクラスターは AWS 他のユーザーのバケットにも書き込むことができます。
-
ユーザーまたはクラスターが Amazon S3 バケットに書き込むファイルに、 AWS 他のユーザーの読み取りアクセス許可を設定します。この読み取りアクセス許可を設定する最も簡単な方法は、Simple Storage Service (Amazon S3) で事前定義されているアクセスポリシーのセットである既定アクセスコントロールリスト(ACL)を使用することです。
他のユーザーが AWS 他のユーザーの Amazon S3 バケットにファイルを書き込むアクセス許可を付与する方法については、「Amazon Simple Storage Service ユーザーガイド」の「バケットのアクセス許可の編集」を参照してください。
お客様のクラスターが Simple Storage Service (Amazon S3) へのファイル書き込み時に既定の ACL を使用するようにするには、fs.s3.canned.acl
クラスター設定オプションに、使用する既定の ACL を設定します。次の表に、現在定義されている既定 ACL のリストを示します。
既定 ACL | 説明 |
---|---|
AuthenticatedRead |
所有者には Permission.FullControl が、GroupGrantee.AuthenticatedUsers グループには Permission.Read アクセスが与えられるように指定します。 |
BucketOwnerFullControl |
バケットの所有者に Permission.FullControl が与えられるように指定します。バケットの所有者は、オブジェクトの所有者と同じであるとは限りません。 |
BucketOwnerRead |
バケットの所有者に Permission.Read が与えられるように指定します。バケットの所有者は、オブジェクトの所有者と同じであるとは限りません。 |
LogDeliveryWrite |
アクセスログを作成できるように、所有者には Permission.FullControl が、GroupGrantee.LogDelivery グループには Permission.Write アクセスが与えられるように指定します。 |
Private |
所有者に Permission.FullControl が与えられるように指定します。 |
PublicRead |
所有者には Permission.FullControl が、GroupGrantee.AllUsers グループには Permission.Read アクセスが与えられるように指定します。 |
PublicReadWrite |
所有者には Permission.FullControl が、GroupGrantee.AllUsers グループには Permission.Read および Permission.Write アクセスが与えられるように指定します。 |
クラスターの設定オプションを設定する方法は、実行するクラスターのタイプに応じてさまざまです。以下の手順では、一般的なケースでオプションを設定する方法を示します。
Hive で既定 ACL を使用してファイルを書き込むには
-
Hive のコマンドプロンプトで、クラスターが Simple Storage Service (Amazon S3) に書き込むファイルに対して設定する既定 ACL を
fs.s3.canned.acl
設定オプションに設定します。Hive のコマンドプロンプトにアクセスするには、SSH を使用してマスターノード接続し、Hadoop のコマンドプロンプトに "Hive" と入力します。詳細については、「SSH を使用して Amazon EMR クラスタープライマリノードに接続する」を参照してください。次の例では、
fs.s3.canned.acl
設定オプションをBucketOwnerFullControl
に設定することにより、Simple Storage Service (Amazon S3) バケットの所有者に対してファイルの完全なコントロールを許可しています。set コマンドでは大文字と小文字が区別され、引用符やスペースは使用できません。hive> set fs.s3.canned.acl=BucketOwnerFullControl; create table acl (n int) location 's3://amzn-s3-demo-bucket/acl/'; insert overwrite table acl select count(*) from acl;
例の最後の 2 行では、Simple Storage Service (Amazon S3) に保存されるテーブルを作成し、そのテーブルにデータを書き込みます。
Pig で既定 ACL を使用してファイルを書き込むには
-
Pig のコマンドプロンプトで、クラスターが Simple Storage Service (Amazon S3) に書き込むファイルに対して設定する既定 ACL を
fs.s3.canned.acl
設定オプションに設定します。Pig のコマンドプロンプトにアクセスするには、SSH を使用してマスターノード接続し、Hadoop のコマンドプロンプトに "Pig" と入力します。詳細については、「SSH を使用して Amazon EMR クラスタープライマリノードに接続する」を参照してください。次の例では、
fs.s3.canned.acl
設定オプションを BucketOwnerFullControl に設定することにより、Simple Storage Service (Amazon S3) バケットの所有者に対してファイルの完全なコントロールを許可しています。set コマンドでは、既定 ACL 名の前にスペースを 1 つ挿入し、引用符は使用しません。pig> set fs.s3.canned.acl BucketOwnerFullControl; store some data into 's3://amzn-s3-demo-bucket/pig/acl';
カスタム JAR で既定 ACL を使用してファイルを書き込むには
-
-D フラグを指定して Hadoop を使用して、
fs.s3.canned.acl
設定オプションを設定します。これを次の例に示します。hadoop jar hadoop-examples.jar wordcount -Dfs.s3.canned.acl=BucketOwnerFullControl s3://amzn-s3-demo-bucket/input s3://amzn-s3-demo-bucket/output