

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

# Amazon S3 内の EMRFS データへのアクセスを許可する
<a name="emr-plan-credentialsprovider"></a>

デフォルトでは、EC2 の EMR ロールが、Amazon S3 内の EMRFS データにアクセスする権限を決定します。EMRFS 経由でリクエストを行うユーザーまたはグループに関係なく、このロールにアタッチされている IAM ポリシーが適用されます。デフォルトは `EMR_EC2_DefaultRole` です。詳細については、「[クラスター EC2 インスタンスのサービスロール (EC2 インスタンスプロファイル)](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-iam-role-for-ec2.html)」を参照してください。

Amazon EMR リリースバージョン 5.10.0 からは、セキュリティ設定を使用して、EMRFS の IAM ロールを指定できます。これにより、複数のユーザーを持つクラスターについて、Amazon S3 への EMRFS リクエストの権限をカスタマイズできます。Amazon S3 内のプレフィックスに基づいて、異なるユーザーとグループ、および異なる Amazon S3 バケットの場所に対して、異なる IAM ロールを指定できます。EMRFS が Amazon S3 に対して、指定したユーザー、グループ、または場所と一致するリクエストを行うと、クラスターは EC2 の EMR ロールの代わりに、ユーザーが指定した対応するロールを使用します。詳細については、「[Amazon S3 への EMRFS リクエストの IAM ロールを設定する](https://docs.aws.amazon.com//emr/latest/ManagementGuide/emr-emrfs-iam-roles)」を参照してください。

また、Amazon EMR ソリューションの要求が EMRFS の IAM ロールで提供される権限を超える場合、カスタムの認証情報プロバイダークラスを定義して Amazon S3 内の EMRFS データへのアクセス権限をカスタマイズできます。

## Amazon S3 内の EMRFS データに対してカスタムの認証情報プロバイダーを作成する
<a name="emr-create-credentialsprovider"></a>

カスタム認証情報プロバイダーを作成するには、[AWSCredentialsProvider](https://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/auth/AWSCredentialsProvider.html) クラスと Hadoop [Configurable](https://hadoop.apache.org/docs/stable/api/org/apache/hadoop/conf/Configurable.html) クラスを実装します。

このアプローチの詳細については、ビッグデータブログの[「EMRFS を使用して別の AWS アカウントのデータを安全に分析](https://aws.amazon.com/blogs/big-data/securely-analyze-data-from-another-aws-account-with-emrfs)する AWS 」を参照してください。このブログ投稿には、IAM ロールの作成からクラスターの起動まで、エンドツーエンドのプロセスを順を追って説明するチュートリアルが含まれています。また、カスタム認証情報プロバイダークラスを実装する Java コードの例も提供しています。

基本的なステップは次のとおりです。

**カスタム認証情報プロバイダーを指定するには**

1. JAR ファイルとしてコンパイルされる、カスタム認証情報プロバイダークラスを作成します。

1. ブートストラップアクションとしてスクリプトを実行し、カスタム認証情報プロバイダーの JAR ファイルを、クラスターのマスターノードの `/usr/share/aws/emr/emrfs/auxlib` の場所にコピーします。ブートストラップアクションの詳細については、「[(オプション) 追加のソフトウェアをインストールするためのブートストラップアクションの作成](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-plan-bootstrap.html)」を参照してください。

1. `emrfs-site` 分類をカスタマイズして、JAR ファイルで実装するクラスを指定します。アプリケーションをカスタマイズするための設定オブジェクトの指定に関する詳細は、「*Amazon EMR リリース ガイド*」の「[アプリケーションの設定](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-configure-apps.html)」を参照してください。

   次の例では、共通設定パラメータを使って Hive クラスターを起動する `create-cluster` コマンドを示しています。さらに次のものが含まれています。
   + Amazon S3 の `{{amzn-s3-demo-bucket}}` に保存されるスクリプト `{{copy_jar_file.sh}}` を実行するブートストラップアクション。
   + JAR ファイルで `emrfs-site` として定義されたカスタム認証情報プロバイダーを指定する `{{MyCustomCredentialsProvider}}` 分類
**注記**  
読みやすくするために、Linux 行連続文字 (\\) が含まれています。Linux コマンドでは、これらは削除することも、使用することもできます。Windows の場合、削除するか、キャレット (^) に置き換えてください。

   ```
   aws emr create-cluster --applications Name=Hive \
   --bootstrap-actions '[{"Path":"{{s3://amzn-s3-demo-bucket/copy_jar_file.sh}}","Name":"Custom action"}]' \
   --ec2-attributes '{"KeyName":"{{MyKeyPair}}","InstanceProfile":"EMR_EC2_DefaultRole",\
   "SubnetId":"subnet-xxxxxxxx","EmrManagedSlaveSecurityGroup":"sg-xxxxxxxx",\
   "EmrManagedMasterSecurityGroup":"sg-xxxxxxxx"}' \
   --service-role EMR_DefaultRole_V2 --enable-debugging --release-label {{emr-7.13.0}} \
   --log-uri 's3n://{{amzn-s3-demo-bucket}}/' --name 'test-awscredentialsprovider-emrfs' \
   --instance-type=m5.xlarge --instance-count 3  \
   --configurations '[{"Classification":"emrfs-site",\
   "Properties":{"fs.s3.customAWSCredentialsProvider":"MyAWSCredentialsProviderWithUri"},\
   "Configurations":[]}]'
   ```