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

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 di Hadoop.

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) nel blog sui Big Data AWS. Il post del blog include un tutorial che descrive il processo end-to-end, dalla creazione di 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, 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-label emr-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":[]}]'