Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Zugriff auf EMRFS-Daten in Amazon S3 genehmigen
Standardmäßig EC2 bestimmt die EMR-Rolle für die EMRFS-Rolle für den Zugriff auf EMRFS-Daten in Amazon S3. Die IAM-Richtlinien, die dieser Rolle zugeordnet werden, gelten unabhängig von dem oder der Gruppe, die die Anforderung über EMRFS erstellen. Der Standardwert ist EMR_EC2_DefaultRole
. Weitere Informationen finden Sie unter Servicerolle für EC2 Cluster-Instances (EC2 Instance-Profil).
Ab Amazon-EMR-Version 5.10.0 können Sie mittels einer Sicherheitskonfiguration IAM-Rollen für EMRFS angeben. Auf diese Weise können Sie Berechtigungen für EMRFS-Anforderungen an Amazon S3 für Cluster mit mehreren Benutzern anpassen. Sie können verschiedene IAM-Rollen für verschiedene Benutzer und Gruppen und für verschiedene Amazon-S3-Bucket-Speicherorte angeben, basierend auf dem Präfix in Amazon S3. Wenn EMRFS eine Anforderung an Amazon S3 stellt, die mit Benutzern, Gruppen oder Standorten, die Sie angeben, übereinstimmt, verwendet der Cluster die entsprechende Rolle und nicht die EMR-Rolle. EC2 Weitere Informationen finden Sie unter Konfigurieren von IAM-Rollen für EMRFS-Anforderungen an Amazon S3.
Wenn die Anforderungen Ihrer Amazon-EMR-Lösung über die Möglichkeiten hinausgehen, die IAM-Rollen für EMRFS bereitstellen, können Sie alternativ eine benutzerdefinierte Anmeldeinformationsanbieter-Klasse definieren, mit der Sie den Zugriff auf EMRFS-Daten in Amazon S3 anpassen können.
Erstellen eines benutzerdefinierten Anmeldeinformationsanbieters für EMRFS-Daten in Amazon S3
Um einen Anbieter für benutzerdefinierte Anmeldeinformationen zu erstellen, implementieren Sie die Klassen AWSCredentialsProvider und Hadoop Configurable.
Eine detaillierte Beschreibung dieses Ansatzes finden Sie unter Sicheres Analysieren von Daten aus einem anderen AWS -Konto mit EMRFS im AWS
-Big-Data-Blog
Die grundlegenden Schritte sind wie folgt:
So definieren Sie einen benutzerdefinierten Anmeldeinformationsanbieter
Erstellen Sie eine benutzerdefinierte Anmeldeinformationsanbieter-Klasse als JAR-Datei.
Führen Sie ein Skript als Bootstrap-Aktion zum Kopieren der JAR-Datei mit dem benutzerdefinierten Anmeldeinformationsanbieter in
/usr/share/aws/emr/emrfs/auxlib
im Master-Knoten des Clusters aus. Weitere Informationen zu Bootstrap-Aktionen finden Sie unter (Optional) Erstellen von Bootstrap-Aktionen zum Installieren zusätzlicher Software.-
Passen Sie die
emrfs-site
-Klassifizierung an, um die in der JAR-Datei implementierte Klasse anzugeben. Weitere Informationen zur Angabe von Konfigurationsobjekten für die Anpassung von Anwendungen finden Sie unter Konfigurieren von Anwendungen im Amazon-EMR-Versionshandbuch.Das folgende Beispiel zeigt einen
create-cluster
-Befehl, der einen Hive-Cluster mit üblichen Konfigurationsparametern startet und außerdem Folgendes umfasst:Eine Bootstrap-Aktion, die das Skript
ausführt, das incopy_jar_file.sh
in Amazon S3 gespeichert wird.amzn-s3-demo-bucket
Eine
emrfs-site
-Klassifizierung, in der ein in der JAR-Datei als benutzerdefinierter Anmeldeinformationsanbieter als
definiert wird.MyCustomCredentialsProvider
Anmerkung
Linux-Zeilenfortsetzungszeichen (\) sind aus Gründen der Lesbarkeit enthalten. Sie können entfernt oder in Linux-Befehlen verwendet werden. Entfernen Sie sie unter Windows oder ersetzen Sie sie durch ein Caret-Zeichen (^).
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.9.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":[]}]'