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à.
Configurazione dell'accesso multi-account per Amazon EMR su EKS
Puoi impostare l'accesso multi-account per Amazon EMR su EKS. L'accesso su più account consente agli utenti di un AWS account di eseguire Amazon EMR su job EKS e accedere ai dati sottostanti che appartengono a AWS un altro account.
Prerequisiti
Per configurare l'accesso tra più account per Amazon EMR su EKS, completerai le attività accedendo ai seguenti AWS account:
- AccountA‐ Un AWS account in cui hai creato un cluster virtuale Amazon EMR su EKS registrando Amazon EMR con uno spazio dei nomi su un cluster EKS.
- AccountB‐ Un AWS account che contiene un bucket Amazon S3 o una tabella DynamoDB a cui desideri che accedano i tuoi job Amazon EMR on EKS.
Prima di configurare l'accesso tra più account, devi avere a portata di mano quanto segue nei tuoi AWS account:
- Un cluster virtuale Amazon EMR su EKS in - AccountAin cui eseguire i tuoi processi.
- Un ruolo di esecuzione di processo in - AccountAche dispone delle autorizzazioni necessarie per eseguire processi nel cluster virtuale. Per ulteriori informazioni, consultare Creazione di un ruolo di esecuzione di processo e Uso dei ruoli di esecuzione di processo con Amazon EMR su EKS.
Come accedere a un bucket Amazon S3 o a una tabella DynamoDB su più account
Per impostare l'accesso multi-account per Amazon EMR su EKS, completa la procedura seguente.
- Crea un bucket Amazon S3, - cross-account-bucket, in- AccountB. Per ulteriori informazioni, consulta Creazione di un bucket. Se si desidera avere un accesso multi-account a DynamoDB, è anche possibile creare una tabella DynamoDB in- AccountB. Per ulteriori informazioni, consulta Creazione di una tabella DynamoDB.
- Crea un ruolo IAM - Cross-Account-Role-Bin- AccountBper accedere a- cross-account-bucket.- Accedi alla console IAM. 
- Scegli Roles (Ruoli), quindi crea un nuovo ruolo: - Cross-Account-Role-B. Per ulteriori informazioni su come creare ruoli IAM, consulta Creazione di ruoli IAM nella Guida per l'utente IAM.
- Crea una policy IAM che specifichi le autorizzazioni per - Cross-Account-Role-Bper accedere al bucket S3- cross-account-bucket, come dimostra la seguente istruzione di policy. Quindi, allega la policy IAM a- Cross-Account-Role-B. Per ulteriori informazioni, consulta Creazione di una nuova policy nella Guida per l'utente IAM.- Se è richiesto l'accesso a DynamoDB, crea una policy IAM che specifichi le autorizzazioni per accedere alla tabella DynamoDB multi-account. Quindi, allega la policy IAM a - Cross-Account-Role-B. Per ulteriori informazioni, consulta Creazione di una tabella DynamoDB nella Guida per l'utente IAM.- Di seguito è riportata una policy per accedere a una tabella DynamoDB, - CrossAccountTable.
 
- Modifica la relazione di fiducia per il ruolo - Cross-Account-Role-B.- Per configurare la relazione di fiducia per il ruolo, seleziona la scheda Trust Relationships (Relazioni di fiducia) nella console IAM per il ruolo creato nel Passaggio 2: - Cross-Account-Role-B.
- Seleziona Edit Trust Relationship (Modifica relazione di fiducia). 
- Aggiungi il seguente documento di policy, che consente a - Job-Execution-Role-Ain- AccountAdi assumere questo ruolo- Cross-Account-Role-B.
 
- Concedi - Job-Execution-Role-Ain- AccountAcon autorizzazione del ruolo STS Assume per l'assunzione di- Cross-Account-Role-B.- Nella console IAM per l' AWS account - AccountA, seleziona- Job-Execution-Role-A.
- Aggiungi la seguente istruzione di policy a - Job-Execution-Role-Aper autorizzare l'operazione- AssumeRolenel ruolo- Cross-Account-Role-B.
 
- Per accedere ad Amazon S3, imposta i seguenti parametri - spark-submit(- spark conf) durante l'invio del processo ad Amazon EMR su EKS.- Nota- Per impostazione predefinita, EMRFS utilizza il ruolo di esecuzione di processo per accedere al bucket S3 dal processo. Ma quando - customAWSCredentialsProviderè impostato su- AssumeRoleAWSCredentialsProvider, EMRFS utilizza il ruolo corrispondente specificato con- ASSUME_ROLE_CREDENTIALS_ROLE_ARNinvece di- Job-Execution-Role-Aper accedere ad Amazon S3.- --conf spark.hadoop.fs.s3.customAWSCredentialsProvider=com.amazonaws.emr.AssumeRoleAWSCredentialsProvider
- --conf spark.kubernetes.driverEnv.ASSUME_ROLE_CREDENTIALS_ROLE_ARN=arn:aws:iam::- AccountB:role/Cross-Account-Role-B \
- --conf spark.executorEnv.ASSUME_ROLE_CREDENTIALS_ROLE_ARN=arn:aws:iam::- AccountB:role/Cross-Account-Role-B \
 - Nota- È necessario impostare - ASSUME_ROLE_CREDENTIALS_ROLE_ARNsia per l'executor che per il driver- envnella configurazione del processo Spark.- Per l'accesso multi-account DynamoDB, è necessario impostare - --conf spark.dynamodb.customAWSCredentialsProvider=com.amazonaws.emr.AssumeRoleAWSCredentialsProvider.
- Esegui il processo Amazon EMR su EKS con accesso multi-account, come illustrato nell'esempio seguente. - aws emr-containers start-job-run \ --virtual-cluster-id 123456 \ --name myjob \ --execution-role-arn execution-role-arn \ --release-label emr-6.2.0-latest \ --job-driver '{"sparkSubmitJobDriver": {"entryPoint": "entryPoint_location", "entryPointArguments": ["arguments_list"], "sparkSubmitParameters": "--class <main_class> --conf spark.executor.instances=2 --conf spark.executor.memory=2G --conf spark.executor.cores=2 --conf spark.driver.cores=1 --conf spark.hadoop.fs.s3.customAWSCredentialsProvider=com.amazonaws.emr.AssumeRoleAWSCredentialsProvider --conf spark.kubernetes.driverEnv.ASSUME_ROLE_CREDENTIALS_ROLE_ARN=arn:aws:iam::- AccountB:role/Cross-Account-Role-B --conf spark.executorEnv.ASSUME_ROLE_CREDENTIALS_ROLE_ARN=arn:aws:iam::- AccountB:role/Cross-Account-Role-B"}} ' \ --configuration-overrides '{"applicationConfiguration": [{"classification": "spark-defaults", "properties": {"spark.driver.memory": "2G"}}], "monitoringConfiguration": {"cloudWatchMonitoringConfiguration": {"logGroupName": "log_group_name", "logStreamNamePrefix": "log_stream_prefix"}, "persistentAppUI":"ENABLED", "s3MonitoringConfiguration": {"logUri": "s3://my_s3_log_location" }}}'