授權存取 Amazon S3 中的EMRFS資料 - Amazon EMR

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

授權存取 Amazon S3 中的EMRFS資料

根據預設, EMR的角色會EC2決定存取 Amazon S3 中EMRFS資料的許可。無論透過 提出請求的使用者或群組為何,連接到此角色IAM的政策都適用EMRFS。預設值為 EMR_EC2_DefaultRole。如需詳細資訊,請參閱叢集EC2執行個體的服務角色 (EC2 執行個體設定檔)

從 Amazon 5.10.0 EMR版開始,您可以使用安全組態來指定 IAM的角色EMRFS。這可讓您為具有多個使用者的叢集自訂 Amazon S3 EMRFS請求的許可。您可以根據 Amazon S3 中的字首,為不同的使用者和群組以及不同的 Amazon S3 儲存貯體位置指定不同的IAM角色。當 向 Amazon S3 EMRFS提出符合使用者、群組或指定位置的請求時,叢集會使用您指定的對應角色,而不是 EMR的角色EC2。如需詳細資訊,請參閱設定 Amazon S3 EMRFS請求IAM的角色

或者,如果您的 Amazon EMR解決方案的需求超過 EMRFS提供IAM的角色,您可以定義自訂憑證提供者類別,這可讓您自訂對 Amazon S3 中EMRFS資料的存取。

為 Amazon S3 中的EMRFS資料建立自訂憑證提供者

若要建立自訂憑證提供者,請實作 AWSCredentialsProvider和 Hadoop 可設定類別。

如需此方法的詳細說明,請參閱巨量資料部落格中的安全分析來自另一個 AWS 帳戶EMRFS的資料。 AWS 部落格文章包含教學課程,引導您完成end-to-end從建立IAM角色到啟動叢集的程序 。它還提供一個 Java 程式碼範例,其會實作自訂登入資料供應商類別。

基本步驟如下:

若要指定自訂登入資料供應商
  1. 建立編譯為 JAR 檔案的自訂憑證提供者類別。

  2. 執行指令碼作為引導動作,將自訂憑證提供者JAR檔案複製到叢集主節點上的/usr/share/aws/emr/emrfs/auxlib位置。如需有關引導操作的詳細資訊,請參閱 (選用) 建立引導操作以安裝其他軟體

  3. 自訂emrfs-site分類以指定您在JAR檔案中實作的類別。如需指定要自訂應用程式的組態物件的詳細資訊,請參閱 Amazon EMR版本指南 中的設定應用程式

    以下範例示範 create-cluster 命令,其會啟動 Hive 叢集與常見的組態參數,而且還包括:

    • 執行指令碼 copy_jar_file.sh 的引導操作,此指令碼會儲存至 Amazon S3 中的 amzn-s3-demo-bucket

    • 將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.3.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":[]}]'