Amazon S3 EMRFSのデータへのアクセスの許可 - Amazon EMR

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

Amazon S3 EMRFSのデータへのアクセスの許可

デフォルトでは、 のEMRロールは Amazon S3 EMRFSのデータにアクセスするためのアクセス許可EC2を決定します。このロールにアタッチされているIAMポリシーは、 を介してリクエストを行うユーザーまたはグループに関係なく適用されますEMRFS。デフォルトは EMR_EC2_DefaultRole です。詳細については、「クラスターEC2インスタンスのサービスロール (EC2 インスタンスプロファイル)」を参照してください。

Amazon EMRリリースバージョン 5.10.0 以降では、セキュリティ設定を使用して のIAMロールを指定できますEMRFS。これにより、複数のユーザーを持つクラスターの Amazon S3 へのEMRFSリクエストのアクセス許可をカスタマイズできます。Amazon S3 のプレフィックスに基づいて、ユーザーやグループ、Amazon S3 バケットの場所ごとに異なるIAMロールを指定できますAmazon S3。EMRFS が、ユーザー、グループ、または指定した場所に一致するリクエストを Amazon S3 に送信すると、クラスターは のロールの代わりに、指定した対応するEMRロールを使用しますEC2。詳細については、Amazon S3 へのEMRFSリクエストのIAMロールを設定する」を参照してください。

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

Amazon S3 EMRFSのデータ用のカスタム認証情報プロバイダーの作成

カスタム認証情報プロバイダーを作成するには、 AWSCredentialsProviderと Hadoop 設定可能クラスを実装します。

このアプローチの詳細な説明については、 ビッグデータブログの「 で別の AWS アカウントのデータを安全に分析EMRFSする AWS 」を参照してください。ブログ記事には、IAMロールの作成からクラスターの起動までend-to-end、プロセス を説明するチュートリアルが含まれています。また、カスタム認証情報プロバイダークラスを実装する Java コードの例も提供しています。

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

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

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

  3. emrfs-site 分類をカスタマイズして、 JAR ファイルで実装するクラスを指定します。アプリケーションをカスタマイズするための設定オブジェクトの指定の詳細については、「Amazon EMRリリースガイド」の「アプリケーションの設定」を参照してください。

    次の例では、共通設定パラメータを使って Hive クラスターを起動する create-cluster コマンドを示しています。さらに次のものが含まれています。

    • Amazon S3 の mybucket に保存されるスクリプト copy_jar_file.sh を実行するブートストラップアクション。

    • JAR ファイルで として定義されたカスタム認証情報プロバイダーを指定するemrfs-site分類 MyCustomCredentialsProvider

    注記

    読みやすくするために、Linux 行連続文字 (\) が含まれています。Linux コマンドでは、これらは削除することも、使用することもできます。Windows の場合、削除するか、キャレット (^) に置き換えてください。

    aws emr create-cluster --applications Name=Hive \ --bootstrap-actions '[{"Path":"s3://mybucket/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.2.0 \ --log-uri 's3n://my-emr-log-bucket/' --name 'test-awscredentialsprovider-emrfs' \ --instance-type=m5.xlarge --instance-count 3 \ --configurations '[{"Classification":"emrfs-site",\ "Properties":{"fs.s3.customAWSCredentialsProvider":"MyAWSCredentialsProviderWithUri"},\ "Configurations":[]}]'