Autorizzazione di accesso ai dati di EMRFS in Amazon S3
Per impostazione predefinita, il ruolo EMR per EC2 determina le autorizzazioni per l'accesso ai dati di EMRFS in Amazon S3. Le policy IAM collegate a questo ruolo vengono applicate indipendentemente dall'utente o dal gruppo che effettua la richiesta tramite EMRFS. Il valore predefinito è EMR_EC2_DefaultRole
. Per ulteriori informazioni, consulta Ruolo di servizio per le istanze EC2 del cluster (profilo dell'istanza EC2).
A partire da Amazon EMR versione 5.10.0, puoi utilizzare una configurazione di sicurezza per specificare ruoli IAM per EMRFS. Ciò ti consente di personalizzare le autorizzazioni per le richieste EMRFS a Amazon S3 per cluster che dispongono di più utenti. Puoi specificare ruoli IAM differenti per differenti utenti e gruppi e per percorsi di bucket Amazon S3 differenti in base al prefisso in Amazon S3. Quando EMRFS effettua una richiesta ad Amazon S3 che corrisponde a utenti, gruppi o percorsi che specifichi, il cluster utilizza il ruolo corrispondente da te indicato anziché il ruolo EMR per EC2. Per ulteriori informazioni, consulta Configurazione dei ruoli IAM per le richieste EMRFS a Amazon S3.
In alternativa, se le richieste della tua soluzione Amazon EMR non sono soddisfatte dai ruoli IAM per EMRFS, puoi definire una classe di provider di credenziali personalizzato che consente di personalizzare l'accesso ai dati di EMRFS in Amazon S3.
Creazione di un provider di credenziali personalizzato per i dati di EMRFS in Amazon S3
Per creare un provider di credenziali personalizzato, devi implementare le classi AWSCredentialsProvider e Configurable
Per una descrizione dettagliata di questo approccio, consulta Securely Analyze Data from Another AWS Account with EMRFS (Analizza i dati in modo sicuro da un altro account AWS con EMRFS)
I passaggi di base sono i seguenti:
Per specificare un provider di credenziali personalizzato
Creare una classe di provider di credenziali personalizzato compilata come file JAR.
Eseguire uno script come un'operazione di bootstrap per copiare il file JAR del provider di credenziali personalizzato nella posizione
/usr/share/aws/emr/emrfs/auxlib
sul nodo master del cluster. Per ulteriori informazioni sulle operazioni di bootstrap, consulta l'argomento relativo alla Creazione di operazioni di bootstrap per installare software aggiuntivi.-
Personalizzare la classificazione
emrfs-site
per specificare la classe che si implementa nel file JAR. Per ulteriori informazioni su come specificare oggetti di configurazione per personalizzare le applicazioni, consulta l'argomento relativo alla Configurazione di applicazioni nella Guida ai rilasci di Amazon EMR.L'esempio seguente illustra un comando
create-cluster
che avvia un cluster Hive con parametri di configurazione comuni e include inoltre:Un'operazione di bootstrap che esegue lo script,
, salvato incopy_jar_file.sh
in Amazon S3.mybucket
Una classificazione
emrfs-site
che specifica un provider di credenziali personalizzato definito nel file JAR come
.MyCustomCredentialsProvider
Nota
I caratteri di continuazione della riga Linux (\) sono inclusi per la leggibilità. Possono essere rimossi o utilizzati nei comandi Linux. Per Windows, rimuoverli o sostituirli con un accento circonflesso (^).
aws emr create-cluster --applications Name=Hive \ --bootstrap-actions '[{"Path":"
s3://mybucket/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-5.36.1
\ --log-uri 's3n://my-emr-log-bucket
/' --name 'test-awscredentialsprovider-emrfs' \ --instance-type=m5.xlarge --instance-count 3 \ --configurations '[{"Classification":"emrfs-site",\ "Properties":{"fs.s3.customAWSCredentialsProvider":"MyAWSCredentialsProviderWithUri"},\ "Configurations":[]}]'