Wählen Sie Ihre Cookie-Einstellungen aus

Wir verwenden essentielle Cookies und ähnliche Tools, die für die Bereitstellung unserer Website und Services erforderlich sind. Wir verwenden Performance-Cookies, um anonyme Statistiken zu sammeln, damit wir verstehen können, wie Kunden unsere Website nutzen, und Verbesserungen vornehmen können. Essentielle Cookies können nicht deaktiviert werden, aber Sie können auf „Anpassen“ oder „Ablehnen“ klicken, um Performance-Cookies abzulehnen.

Wenn Sie damit einverstanden sind, verwenden AWS und zugelassene Drittanbieter auch Cookies, um nützliche Features der Website bereitzustellen, Ihre Präferenzen zu speichern und relevante Inhalte, einschließlich relevanter Werbung, anzuzeigen. Um alle nicht notwendigen Cookies zu akzeptieren oder abzulehnen, klicken Sie auf „Akzeptieren“ oder „Ablehnen“. Um detailliertere Entscheidungen zu treffen, klicken Sie auf „Anpassen“.

Zugreifen auf S3-Daten in einem anderen AWS Konto von EMR Serverless - Amazon EMR

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.

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.

Zugreifen auf S3-Daten in einem anderen AWS Konto von EMR Serverless

Sie können Amazon EMR Serverless-Jobs von einem AWS Konto aus ausführen und sie so konfigurieren, dass sie auf Daten in Amazon S3 S3-Buckets zugreifen, die zu einem anderen Konto gehören. AWS Auf dieser Seite wird beschrieben, wie Sie den kontenübergreifenden Zugriff auf S3 von EMR Serverless aus konfigurieren.

Jobs, die auf EMR Serverless ausgeführt werden, können eine S3-Bucket-Richtlinie oder eine angenommene Rolle verwenden, um von einem anderen AWS Konto aus auf Daten in Amazon S3 zuzugreifen.

Voraussetzungen

Um den kontoübergreifenden Zugriff für Amazon EMR Serverless einzurichten, müssen Sie Aufgaben erledigen, während Sie bei zwei Konten angemeldet sind: AWS

  • AccountA— Dies ist das AWS Konto, in dem Sie eine serverlose Amazon EMR-Anwendung erstellt haben. Bevor Sie den kontoübergreifenden Zugriff einrichten, müssen Sie für dieses Konto Folgendes bereithalten:

    • Eine serverlose Amazon EMR-Anwendung, in der Sie Jobs ausführen möchten.

    • Eine Rolle zur Auftragsausführung, die über die erforderlichen Berechtigungen zum Ausführen von Jobs in der Anwendung verfügt. Weitere Informationen finden Sie unter Job-Runtime-Rollen für Amazon EMR Serverless.

  • AccountB— Dies ist das AWS Konto, das den S3-Bucket enthält, auf den Ihre Amazon EMR Serverless-Jobs zugreifen sollen.

Verwenden Sie eine S3-Bucket-Richtlinie, um auf kontoübergreifende S3-Daten zuzugreifen

Um auf den S3-Bucket zuzugreifen in account B from account A, hängen Sie die folgende Richtlinie an den S3-Bucket in an account B.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "Example permissions 1", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::AccountA:root" }, "Action": [ "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::bucket_name_in_AccountB" ] }, { "Sid": "Example permissions 2", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::AccountA:root" }, "Action": [ "s3:PutObject", "s3:GetObject", "s3:DeleteObject" ], "Resource": [ "arn:aws:s3:::bucket_name_in_AccountB/*" ] } ] }

Weitere Informationen zum kontoübergreifenden S3-Zugriff mit S3-Bucket-Richtlinien finden Sie unter Beispiel 2: Bucket-Besitzer, der kontoübergreifende Bucket-Berechtigungen gewährt im Amazon Simple Storage Service-Benutzerhandbuch.

Verwenden Sie eine angenommene Rolle, um auf kontoübergreifende S3-Daten zuzugreifen

Eine weitere Möglichkeit, den kontenübergreifenden Zugriff für Amazon EMR Serverless einzurichten, ist die AssumeRole Aktion von (). AWS Security Token Service AWS STS AWS STS ist ein globaler Webservice, mit dem Sie temporäre Anmeldeinformationen mit eingeschränkten Rechten für Benutzer anfordern können. Mit den temporären Sicherheitsanmeldedaten, die Sie erstellen, können Sie API-Aufrufe an EMR Serverless und Amazon S3 tätigen. AssumeRole

Die folgenden Schritte veranschaulichen, wie Sie eine angenommene Rolle verwenden, um von EMR Serverless aus auf kontoübergreifende S3-Daten zuzugreifen:

  1. Erstellen Sie einen Amazon-S3-Bucket,cross-account-bucket, in AccountB. Weitere Informationen finden Sie unter Erstellen eines Buckets im Amazon Simple Storage Service-Benutzerhandbuch. Wenn Sie kontenübergreifenden Zugriff auf DynamoDB haben möchten, können Sie auch eine DynamoDB-Tabelle in AccountB erstellen. Weitere Informationen finden Sie unter Erstellen einer DynamoDB-Tabelle im Amazon DynamoDB DynamoDB-Entwicklerhandbuch.

  2. Erstellen Sie eine Cross-Account-Role-B IAM-Rolle in AccountB, die auf das cross-account-bucket zugreifen kann.

    1. Melden Sie sich bei der an AWS Management Console und öffnen Sie die IAM-Konsole unter. https://console.aws.amazon.com/iam/

    2. Wählen Sie Rollen und anschließend Neue Rolle Cross-Account-Role-Berstellen aus. Weitere Informationen zum Erstellen von IAM-Rollen finden Sie unter Erstellen von IAM-Rollen im IAM-Benutzerhandbuch.

    3. Erstellen Sie eine IAM-Richtlinie, die die Berechtigungen für den Cross-Account-Role-B Zugriff auf den cross-account-bucket S3-Bucket festlegt, wie die folgende Richtlinienerklärung zeigt. Fügen Sie die IAM-Richtlinie an Cross-Account-Role-B an. Weitere Informationen finden Sie unter Erstellen von IAM-Richtlinien im IAM-Benutzerhandbuch.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "s3:*", "Resource": [ "arn:aws:s3:::cross-account-bucket", "arn:aws:s3:::cross-account-bucket/*" ] } ] }

    Wenn Sie DynamoDB-Zugriff benötigen, erstellen Sie eine IAM-Richtlinie, die Berechtigungen für den Zugriff auf die kontoübergreifende DynamoDB-Tabelle festlegt. Fügen Sie die IAM-Richtlinie an Cross-Account-Role-B an. Weitere Informationen finden Sie unter Amazon DynamoDB: Ermöglicht den Zugriff auf eine bestimmte Tabelle im IAM-Benutzerhandbuch.

    Die folgende Richtlinie ermöglicht den Zugriff auf die DynamoDB-Tabelle. CrossAccountTable

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "dynamodb:*", "Resource": "arn:aws:dynamodb:MyRegion:AccountB:table/CrossAccountTable" } ] }
  3. So bearbeiten Sie die Vertrauensbeziehung für die Cross-Account-Role-B-Rolle.

    1. Um die Vertrauensstellung für die Rolle zu konfigurieren, wählen Sie in der IAM-Konsole die Registerkarte Trust Relationships für die Rolle ausCross-Account-Role-B, die Sie in Schritt 2 erstellt haben.

    2. Wählen Sie Vertrauensbeziehungen bearbeiten aus.

    3. Fügen Sie das folgende Richtliniendokument hinzu. Dies ermöglicht es Job-Execution-Role-A unsAccountA, die Cross-Account-Role-B Rolle zu übernehmen.

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::AccountA:role/Job-Execution-Role-A" }, "Action": "sts:AssumeRole" } ] }
  4. Job-Execution-Role-AErteilen AccountA Sie die AWS STS AssumeRole Erlaubnis zur ÜbernahmeCross-Account-Role-B.

    1. Wählen Sie in der IAM-Konsole für das AWS Konto AccountA die Option ausJob-Execution-Role-A.

    2. Fügen Sie die folgende Richtlinienanweisung zu Job-Execution-Role-A hinzu, um die AssumeRole-Aktion in der Rolle Cross-Account-Role-B zu verweigern.

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "sts:AssumeRole", "Resource": "arn:aws:iam::AccountB:role/Cross-Account-Role-B" } ] }

Beispiele für angenommene Rollen

Sie können eine einzelne angenommene Rolle verwenden, um auf alle S3-Ressourcen in einem Konto zuzugreifen, oder mit Amazon EMR 6.11 und höher können Sie mehrere IAM-Rollen konfigurieren, die beim Zugriff auf verschiedene kontoübergreifende S3-Buckets übernommen werden sollen.

Greifen Sie mit einer angenommenen Rolle auf S3-Ressourcen zu

Anmerkung

Wenn Sie einen Job so konfigurieren, dass er eine einzelne angenommene Rolle verwendet, verwenden alle S3-Ressourcen des Jobs diese Rolle, einschließlich des entryPoint Skripts.

Wenn Sie eine einzige angenommene Rolle für den Zugriff auf alle S3-Ressourcen in Konto B verwenden möchten, geben Sie die folgenden Konfigurationen an:

  1. Geben Sie die EMRFS-Konfiguration fs.s3.customAWSCredentialsProvider für an. spark.hadoop.fs.s3.customAWSCredentialsProvider=com.amazonaws.emr.AssumeRoleAWSCredentialsProvider

  2. Verwenden Sie für Spark spark.emr-serverless.driverEnv.ASSUME_ROLE_CREDENTIALS_ROLE_ARN und, spark.executorEnv.ASSUME_ROLE_CREDENTIALS_ROLE_ARN um die Umgebungsvariablen für Treiber und Executoren anzugeben.

  3. Verwenden Sie für Hive, und hive.emr-serverless.launch.env.ASSUME_ROLE_CREDENTIALS_ROLE_ARNtez.am.emr-serverless.launch.env.ASSUME_ROLE_CREDENTIALS_ROLE_ARN, tez.task.emr-serverless.launch.env.ASSUME_ROLE_CREDENTIALS_ROLE_ARN um die Umgebungsvariablen in den Hive-Treibern, dem Tez-Anwendungsmaster und den Tez-Task-Containern anzugeben.

Die folgenden Beispiele zeigen, wie eine angenommene Rolle verwendet wird, um eine serverlose EMR-Auftragsausführung mit kontenübergreifendem Zugriff zu starten.

Spark

Das folgende Beispiel zeigt, wie eine angenommene Rolle verwendet wird, um einen EMR Serverless Spark-Job mit kontenübergreifendem Zugriff auf S3 zu starten.

aws emr-serverless start-job-run \ --application-id application-id \ --execution-role-arn job-role-arn \ --job-driver '{ "sparkSubmit": { "entryPoint": "entrypoint_location", "entryPointArguments": [":argument_1:", ":argument_2:"], "sparkSubmitParameters": "--conf spark.executor.cores=4 --conf spark.executor.memory=20g --conf spark.driver.cores=4 --conf spark.driver.memory=8g --conf spark.executor.instances=1" } }' \ --configuration-overrides '{ "applicationConfiguration": [{ "classification": "spark-defaults", "properties": { "spark.hadoop.fs.s3.customAWSCredentialsProvider": "spark.hadoop.fs.s3.customAWSCredentialsProvider=com.amazonaws.emr.AssumeRoleAWSCredentialsProvider", "spark.emr-serverless.driverEnv.ASSUME_ROLE_CREDENTIALS_ROLE_ARN": "arn:aws:iam::AccountB:role/Cross-Account-Role-B", "spark.executorEnv.ASSUME_ROLE_CREDENTIALS_ROLE_ARN": "arn:aws:iam::AccountB:role/Cross-Account-Role-B" } }] }'
Hive

Das folgende Beispiel zeigt, wie eine angenommene Rolle verwendet wird, um einen EMR Serverless Hive-Auftrag mit kontenübergreifendem Zugriff auf S3 zu starten.

aws emr-serverless start-job-run \ --application-id application-id \ --execution-role-arn job-role-arn \ --job-driver '{ "hive": { "query": "query_location", "parameters": "hive_parameters" } }' \ --configuration-overrides '{ "applicationConfiguration": [{ "classification": "hive-site", "properties": { "fs.s3.customAWSCredentialsProvider": "com.amazonaws.emr.serverless.credentialsprovider.AssumeRoleAWSCredentialsProvider", "hive.emr-serverless.launch.env.ASSUME_ROLE_CREDENTIALS_ROLE_ARN": "arn:aws:iam::AccountB:role/Cross-Account-Role-B", "tez.am.emr-serverless.launch.env.ASSUME_ROLE_CREDENTIALS_ROLE_ARN": "arn:aws:iam::AccountB:role/Cross-Account-Role-B", "tez.task.emr-serverless.launch.env.ASSUME_ROLE_CREDENTIALS_ROLE_ARN": "arn:aws:iam::AccountB:role/Cross-Account-Role-B" } }] }'

Das folgende Beispiel zeigt, wie eine angenommene Rolle verwendet wird, um einen EMR Serverless Spark-Job mit kontenübergreifendem Zugriff auf S3 zu starten.

aws emr-serverless start-job-run \ --application-id application-id \ --execution-role-arn job-role-arn \ --job-driver '{ "sparkSubmit": { "entryPoint": "entrypoint_location", "entryPointArguments": [":argument_1:", ":argument_2:"], "sparkSubmitParameters": "--conf spark.executor.cores=4 --conf spark.executor.memory=20g --conf spark.driver.cores=4 --conf spark.driver.memory=8g --conf spark.executor.instances=1" } }' \ --configuration-overrides '{ "applicationConfiguration": [{ "classification": "spark-defaults", "properties": { "spark.hadoop.fs.s3.customAWSCredentialsProvider": "spark.hadoop.fs.s3.customAWSCredentialsProvider=com.amazonaws.emr.AssumeRoleAWSCredentialsProvider", "spark.emr-serverless.driverEnv.ASSUME_ROLE_CREDENTIALS_ROLE_ARN": "arn:aws:iam::AccountB:role/Cross-Account-Role-B", "spark.executorEnv.ASSUME_ROLE_CREDENTIALS_ROLE_ARN": "arn:aws:iam::AccountB:role/Cross-Account-Role-B" } }] }'

Greifen Sie auf S3-Ressourcen mit mehreren angenommenen Rollen zu

Mit den Versionen 6.11.0 und höher von EMR Serverless können Sie mehrere IAM-Rollen konfigurieren, die beim Zugriff auf verschiedene kontoübergreifende Buckets übernommen werden sollen. Wenn Sie auf verschiedene S3-Ressourcen mit unterschiedlichen angenommenen Rollen in Konto B zugreifen möchten, verwenden Sie die folgenden Konfigurationen, wenn Sie die Jobausführung starten:

  1. Geben Sie die EMRFS-Konfiguration fs.s3.customAWSCredentialsProvider für an. com.amazonaws.emr.serverless.credentialsprovider.BucketLevelAssumeRoleCredentialsProvider

  2. Geben Sie die EMRFS-Konfiguration fs.s3.bucketLevelAssumeRoleMapping an, um die Zuordnung vom S3-Bucket-Namen zur IAM-Rolle in Konto B zu definieren, die angenommen werden soll. Der Wert sollte das Format von haben. bucket1->role1;bucket2->role2

Sie können beispielsweise für den Zugriff auf arn:aws:iam::AccountB:role/Cross-Account-Role-B-1 den Bucket bucket1 und für den arn:aws:iam::AccountB:role/Cross-Account-Role-B-2 Zugriff auf den Bucket verwendenbucket2. Die folgenden Beispiele zeigen, wie ein serverloser EMR-Job mit kontenübergreifendem Zugriff über mehrere angenommene Rollen gestartet wird.

Spark

Das folgende Beispiel zeigt, wie mehrere angenommene Rollen verwendet werden, um eine EMR Serverless Spark-Jobausführung zu erstellen.

aws emr-serverless start-job-run \ --application-id application-id \ --execution-role-arn job-role-arn \ --job-driver '{ "sparkSubmit": { "entryPoint": "entrypoint_location", "entryPointArguments": [":argument_1:", ":argument_2:"], "sparkSubmitParameters": "--conf spark.executor.cores=4 --conf spark.executor.memory=20g --conf spark.driver.cores=4 --conf spark.driver.memory=8g --conf spark.executor.instances=1" } }' \ --configuration-overrides '{ "applicationConfiguration": [{ "classification": "spark-defaults", "properties": { "spark.hadoop.fs.s3.customAWSCredentialsProvider": "com.amazonaws.emr.serverless.credentialsprovider.BucketLevelAssumeRoleCredentialsProvider", "spark.hadoop.fs.s3.bucketLevelAssumeRoleMapping": "bucket1->arn:aws:iam::AccountB:role/Cross-Account-Role-B-1;bucket2->arn:aws:iam::AccountB:role/Cross-Account-Role-B-2" } }] }'
Hive

Die folgenden Beispiele zeigen, wie mehrere angenommene Rollen verwendet werden, um eine EMR Serverless Hive-Jobausführung zu erstellen.

aws emr-serverless start-job-run \ --application-id application-id \ --execution-role-arn job-role-arn \ --job-driver '{ "hive": { "query": "query_location", "parameters": "hive_parameters" } }' \ --configuration-overrides '{ "applicationConfiguration": [{ "classification": "hive-site", "properties": { "fs.s3.customAWSCredentialsProvider": "com.amazonaws.emr.serverless.credentialsprovider.AssumeRoleAWSCredentialsProvider", "fs.s3.bucketLevelAssumeRoleMapping": "bucket1->arn:aws:iam::AccountB:role/Cross-Account-Role-B-1;bucket2->arn:aws:iam::AccountB:role/Cross-Account-Role-B-2" } }] }'

Das folgende Beispiel zeigt, wie mehrere angenommene Rollen verwendet werden, um eine EMR Serverless Spark-Jobausführung zu erstellen.

aws emr-serverless start-job-run \ --application-id application-id \ --execution-role-arn job-role-arn \ --job-driver '{ "sparkSubmit": { "entryPoint": "entrypoint_location", "entryPointArguments": [":argument_1:", ":argument_2:"], "sparkSubmitParameters": "--conf spark.executor.cores=4 --conf spark.executor.memory=20g --conf spark.driver.cores=4 --conf spark.driver.memory=8g --conf spark.executor.instances=1" } }' \ --configuration-overrides '{ "applicationConfiguration": [{ "classification": "spark-defaults", "properties": { "spark.hadoop.fs.s3.customAWSCredentialsProvider": "com.amazonaws.emr.serverless.credentialsprovider.BucketLevelAssumeRoleCredentialsProvider", "spark.hadoop.fs.s3.bucketLevelAssumeRoleMapping": "bucket1->arn:aws:iam::AccountB:role/Cross-Account-Role-B-1;bucket2->arn:aws:iam::AccountB:role/Cross-Account-Role-B-2" } }] }'
DatenschutzNutzungsbedingungen für die WebsiteCookie-Einstellungen
© 2025, Amazon Web Services, Inc. oder Tochtergesellschaften. Alle Rechte vorbehalten.