Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Accesso ai dati S3 in un altro AWS account di EMR Serverless
Puoi eseguire job Amazon EMR Serverless da un unico AWS account e configurali per accedere ai dati nei bucket Amazon S3 che appartengono a un altro AWS conto. Questa pagina descrive come configurare l'accesso tra account a S3 da EMR Serverless.
I lavori eseguiti su EMR Serverless possono utilizzare una policy di bucket S3 o un ruolo assunto per accedere ai dati in Amazon S3 da un altro AWS conto.
Prerequisiti
Per configurare l'accesso tra più account per Amazon EMR Serverless, devi completare le attività dopo aver effettuato l'accesso a due AWS account:
-
AccountA
— Questa è la AWS account in cui hai creato un'applicazione Amazon EMR Serverless. Prima di configurare l'accesso tra più account, devi avere a disposizione quanto segue in questo account:-
Un'applicazione Amazon EMR Serverless in cui eseguire lavori.
-
Un ruolo di esecuzione del lavoro che dispone delle autorizzazioni necessarie per eseguire i lavori nell'applicazione. Per ulteriori informazioni, consulta Ruoli Job Runtime per Amazon EMR Serverless.
-
-
AccountB
— Questa è la AWS account che contiene il bucket S3 a cui desideri che i tuoi job Amazon EMR Serverless accedano.
Utilizza una policy sui bucket S3 per accedere ai dati S3 tra account
Per accedere al bucket S3 in account B from account A, collega la seguente policy al bucket S3 in 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
/*" ] } ] }
Per ulteriori informazioni sull'accesso a più account S3 con le policy dei bucket S3, consulta l'Esempio 2: Il proprietario del bucket concede le autorizzazioni per i bucket tra account nella Guida per l'utente di Amazon Simple Storage Service.
Usa un ruolo presunto per accedere ai dati S3 tra più account
Un altro modo per configurare l'accesso tra più account per Amazon EMR Serverless è con l'AssumeRole
azione di AWS Security Token Service (AWS STS). AWS STS è un servizio web globale che consente di richiedere credenziali temporanee con privilegi limitati per gli utenti. Puoi effettuare API chiamate verso EMR Serverless e Amazon S3 con le credenziali di sicurezza temporanee con cui crei. AssumeRole
I passaggi seguenti illustrano come utilizzare un ruolo presunto per accedere ai dati S3 tra account diversi da Serverless: EMR
-
Crea un bucket Amazon S3,
cross-account-bucket
, nel.AccountB
Per ulteriori informazioni, consulta Creare un bucket nella Guida per l'utente di Amazon Simple Storage Service. Se si desidera avere un accesso multi-account a DynamoDB, è anche possibile creare una tabella DynamoDB inAccountB
. Per ulteriori informazioni, consulta Creazione di una tabella DynamoDB nella Amazon DynamoDB Developer Guide. -
Crea un
Cross-Account-Role-B
IAM ruolo in grado di accedere aAccountB
cross-account-bucket
.Accedi a AWS Management Console e apri la IAM console all'indirizzo https://console.aws.amazon.com/iam/
. -
Scegli Roles (Ruoli), quindi crea un nuovo ruolo:
Cross-Account-Role-B
. Per ulteriori informazioni su come creare IAM ruoli, consulta Creazione di IAM ruoli nella Guida per l'IAMutente. -
Crea una IAM politica che specifichi le autorizzazioni per accedere
Cross-Account-Role-B
across-account-bucket
Bucket S3, come dimostra la seguente dichiarazione politica. Quindi allega la IAM politica a.Cross-Account-Role-B
Per ulteriori informazioni, consulta Creazione IAM di politiche nella Guida IAM per l'utente.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "s3:*", "Resource": [ "arn:aws:s3:::
cross-account-bucket
", "arn:aws:s3:::cross-account-bucket
/*" ] } ] }Se hai bisogno dell'accesso a DynamoDB, crea IAM una policy che specifichi le autorizzazioni per accedere alla tabella DynamoDB tra account. IAMQuindi
Cross-Account-Role-B
allega la policy a. Per ulteriori informazioni, consulta Amazon DynamoDB: consente l'accesso a una tabella specifica nella IAM Guida per l'utente.Di seguito è riportata una politica per consentire l'accesso alla tabella DynamoDB
CrossAccountTable
.{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "dynamodb:*", "Resource": "arn:aws:dynamodb:MyRegion:
AccountB
:table/CrossAccountTable
" } ] } -
Modifica la relazione di fiducia per il ruolo
Cross-Account-Role-B
.-
Per configurare la relazione di fiducia per il ruolo, scegli la scheda Relazioni di fiducia nella IAM console relativa al ruolo
Cross-Account-Role-B
che hai creato nel passaggio 2. -
Seleziona Edit Trust Relationship (Modifica relazione di fiducia).
-
Aggiungi il seguente documento di policy. Ciò consente
Job-Execution-Role-A
AccountA
di assumere ilCross-Account-Role-B
ruolo.{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::
AccountA
:role/Job-Execution-Role-A" }, "Action": "sts:AssumeRole" } ] }
-
-
Grant
Job-Execution-Role-A
AccountA
nel AWS STSAssumeRole
permesso di presumereCross-Account-Role-B
.-
Nella IAM console per AWS account
AccountA
, selezionaJob-Execution-Role-A
. -
Aggiungi la seguente istruzione di policy a
Job-Execution-Role-A
per autorizzare l'operazioneAssumeRole
nel ruoloCross-Account-Role-B
.{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "sts:AssumeRole", "Resource": "arn:aws:iam::
AccountB
:role/Cross-Account-Role-B" } ] }
-
Esempi di ruoli presunti
Puoi utilizzare un singolo ruolo assunto per accedere a tutte le risorse S3 in un account oppure, con Amazon EMR 6.11 e versioni successive, puoi configurare più IAM ruoli da assumere quando accedi a diversi bucket S3 tra account diversi.
Accedi alle risorse S3 con un ruolo presunto
Nota
Quando configuri un lavoro per utilizzare un singolo ruolo assunto, tutte le risorse S3 del job utilizzano quel ruolo, incluso lo entryPoint
script.
Se desideri utilizzare un singolo ruolo assunto per accedere a tutte le risorse S3 nell'account B, specifica le seguenti configurazioni:
-
Specificare la EMRFS configurazione
fs.s3.customAWSCredentialsProvider
per.spark.hadoop.fs.s3.customAWSCredentialsProvider=com.amazonaws.emr.AssumeRoleAWSCredentialsProvider
-
Per Spark, usa
spark.emr-serverless.driverEnv.ASSUME_ROLE_CREDENTIALS_ROLE_ARN
e specificaspark.executorEnv.ASSUME_ROLE_CREDENTIALS_ROLE_ARN
le variabili di ambiente su driver ed executor. -
Per Hive
hive.emr-serverless.launch.env.ASSUME_ROLE_CREDENTIALS_ROLE_ARN
tez.am.emr-serverless.launch.env.ASSUME_ROLE_CREDENTIALS_ROLE_ARN
, usa e specifica le variabilitez.task.emr-serverless.launch.env.ASSUME_ROLE_CREDENTIALS_ROLE_ARN
di ambiente nei contenitori di attività Hive driver, Tez application master e Tez.
Gli esempi seguenti mostrano come utilizzare un ruolo presunto per avviare un processo EMR Serverless eseguito con accesso tra account.
Accedi alle risorse S3 con più ruoli presunti
Con le versioni EMR Serverless 6.11.0 e successive, puoi configurare più IAM ruoli da assumere quando accedi a diversi bucket tra più account. Se desideri accedere a diverse risorse S3 con diversi ruoli assunti nell'account B, usa le seguenti configurazioni all'avvio del job run:
-
Specificare la EMRFS configurazione
fs.s3.customAWSCredentialsProvider
per.com.amazonaws.emr.serverless.credentialsprovider.BucketLevelAssumeRoleCredentialsProvider
-
Specificate la EMRFS configurazione
fs.s3.bucketLevelAssumeRoleMapping
per definire la mappatura dal nome del bucket S3 al IAM ruolo da assumere nell'account B. Il valore deve essere nel formato di.bucket1->role1;bucket2->role2
Ad esempio, è possibile utilizzare arn:aws:iam::
per accedere al bucket AccountB
:role/Cross-Account-Role-B-1bucket1
e utilizzare arn:aws:iam::
per accedere al AccountB
:role/Cross-Account-Role-B-2bucket2
bucket. Gli esempi seguenti mostrano come avviare un processo EMR Serverless con accesso a più account tramite più ruoli presunti.