所有していない Amazon S3 バケットにデータを書き込む方法 - Amazon EMR

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

所有していない Amazon S3 バケットにデータを書き込む方法

Amazon Simple Storage Service (Amazon S3) バケットにファイルを書き込むと、デフォルトではお客様以外はそのファイルを読むことができません。これは、自分専用のバケットにファイルを書き込むことが前提になっており、このデフォルト設定によってファイルのプライバシーを保護しています。

ただし、クラスターを実行し、出力を別の の Amazon S3 バケットに書き込む場合 AWS ユーザー、および他のユーザー AWS ユーザーがその出力を読み取るには、次の 2 つの操作を行う必要があります。

  • もう 1 つ AWS ユーザーは、Amazon S3 バケットの書き込みアクセス許可を付与します。起動するクラスターは、 で実行されます。 AWS 認証情報。起動したクラスターは、他のクラスターにも書き込むことができます。 AWS ユーザーのバケット。

  • 他の の読み取りアクセス許可を設定する AWS ユーザーまたはクラスターが Amazon S3 バケットに書き込むファイル上の ユーザー。これらの読み取りアクセス許可を設定する最も簡単な方法は、Amazon S3 で定義された一連の定義済みアクセスポリシーである既定アクセスコントロールリスト (ACLs) を使用することです。 Amazon S3

他の の AWS ユーザーは、他のユーザーの Amazon S3 バケットにファイルを書き込むアクセス許可を付与できます。Amazon Simple Storage Service ユーザーガイド「バケットのアクセス許可の編集」を参照してください。

クラスターが Amazon S3 にファイルを書き込むACLsときに 既定を使用するには、fs.s3.canned.aclクラスター設定オプションを 既定ACLに設定して使用します。次の表に、現在定義されている既定 を示しますACLs。

既定 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 ACLsで既定 を使用してファイルを書き込むには
  • Hive コマンドプロンプトから、fs.s3.canned.acl設定オプションを、Amazon S3 に書き込むファイルにACLクラスターを設定する既定に設定します。Hive コマンドプロンプトにアクセスするには、 を使用してマスターノードに接続しSSH、Hadoop コマンドプロンプトで Hive と入力します。詳細については、「を使用してプライマリノードに接続する SSH」を参照してください。

    次の例では、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://acltestbucket/acl/'; insert overwrite table acl select count(*) from acl;

    例の最後の 2 行では、Simple Storage Service (Amazon S3) に保存されるテーブルを作成し、そのテーブルにデータを書き込みます。

Pig ACLsで既定 を使用してファイルを書き込むには
  • Pig コマンドプロンプトから、fs.s3.canned.acl設定オプションを、Amazon S3 に書き込むファイルにACLクラスターを設定する既定に設定します。Pig コマンドプロンプトにアクセスするには、 を使用してマスターノードに接続しSSH、Hadoop コマンドプロンプトで Pig と入力します。詳細については、「を使用してプライマリノードに接続する SSH」を参照してください。

    次の例では、 fs.s3.canned.acl設定オプションを に設定し BucketOwnerFullControl、Amazon S3 バケットの所有者に ファイルに対する完全な制御を許可します。set コマンドには、既定ACL名の前にスペースが 1 つ含まれ、引用符は含まれないことに注意してください。

    pig> set fs.s3.canned.acl BucketOwnerFullControl; store some data into 's3://acltestbucket/pig/acl';
カスタムACLsで既定 を使用してファイルを書き込むには JAR
  • -D フラグを指定して Hadoop を使用して、fs.s3.canned.acl 設定オプションを設定します。これを次の例に示します。

    hadoop jar hadoop-examples.jar wordcount -Dfs.s3.canned.acl=BucketOwnerFullControl s3://mybucket/input s3://mybucket/output