本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
授權存取 Amazon S3 中的 EMRFS 資料
依預設,EC2 的 EMR 角色會決定存取 Amazon S3 中的 EMRFS 資料的許可。附接至此角色 (無論是使用者或群組) IAM 政策套用會透過 EMRFS 來發出請求。預設值為 EMR_EC2_DefaultRole
。如需詳細資訊,請參閱叢集 EC2 執行個體的服務角色 (EC2 執行個體設定檔)。
從 Amazon EMR 發行版本 5.10.0 開始,您也可以使用安全組態來為 EMRFS 指定 IAM 角色。這可讓您為有多個使用者的叢集將 EMRFS 請求的許可自訂為 Amazon S3。您可以為不同使用者和群組,並根據 Amazon S3 中的字首為不同的 Amazon S3 儲存貯體指定不同 IAM 角色。當 EMRFS 對 Amazon S3 發出請求,以符合您指定的使用者、群組或位置,叢集會使用您指定的對應角色,而不是適用於 EC2 的 EMR 角色。如需詳細資訊,請參閱設定向 Amazon S3 請求使用 EMRFS 的 IAM 角色。
或者,如果您的 Amazon EMR 解決方案所要求的已超出 EMRFS 的 IAM 角色所能提供的,您可以定義自訂登入資料供應商類別,其可讓您自訂 Amazon S3 中 EMRFS 資料的存取權。
為 Amazon S3 中的 EMRFS 資料建立自訂憑證提供者
若要建立自訂登入資料供應商,您實作 AWSCredentialsProvider 和 Hadoop 可設定的
如需此方法的詳細說明,請參閱大數據部落格中的 AWS 使用 EMRFS 安全地分析來自另一個 AWS 帳戶
基本步驟如下:
若要指定自訂登入資料供應商
建立自訂登入資料供應商類別 (編譯為 JAR 檔案)。
執行指令碼做為引導操作來將自訂登入資料供應商 JAR 檔案複製到在叢集主節點的
/usr/share/aws/emr/emrfs/auxlib
位置。如需有關引導操作的詳細資訊,請參閱 (選用) 建立引導操作以安裝其他軟體。-
自訂
emrfs-site
分類以指定您在 JAR 檔案中實作的類別。如需有關指定組態物件以自訂應用程式的詳細資訊,請參閱《Amazon EMR 版本指南》中的設定應用程式。以下範例示範
create-cluster
命令,其會啟動 Hive 叢集與常見的組態參數,而且還包括:執行指令碼
的引導操作,此指令碼會儲存至 Amazon S3 中的copy_jar_file.sh
。amzn-s3-demo-bucket
emrfs-site
分類,其會指定在 JAR 檔中定義做為
的自訂登入資料供應商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-labelemr-7.6.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":[]}]'