Autorizzazione di accesso ai dati di EMRFS in Amazon S3 - Amazon EMR

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à.

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, implementa le classi e Hadoop Configurable AWSCredentialsProvider.

Per una spiegazione dettagliata di questo approccio, consulta Analizzare in modo sicuro i dati di un altro AWS account con EMRFS nel blog Big Data. AWS Il post del blog include un tutorial che illustra il processoend-to-end, dalla creazione dei ruoli IAM all'avvio del cluster. Fornisce inoltre un esempio di codice Java che implementa la classe di provider di credenziali personalizzato.

I passaggi di base sono i seguenti:

Per specificare un provider di credenziali personalizzato
  1. Creare una classe di provider di credenziali personalizzato compilata come file JAR.

  2. 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.

  3. 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, copy_jar_file.sh, salvato in mybucket in Amazon S3.

    • 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, rimuovili o sostituiscili 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-label emr-7.1.0 \ --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":[]}]'