Come scrivere dati su un bucket Amazon S3 che non possiedi con Amazon EMR - 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à.

Come scrivere dati su un bucket Amazon S3 che non possiedi con Amazon EMR

Quando scrivi un file in un bucket Amazon Simple Storage Service (Amazon S3), per impostazione predefinita sei l'unico in grado di leggere tale file. Il presupposto è che scriverai file nel tuo bucket e questa impostazione predefinita protegge la privacy dei file.

Tuttavia, se stai utilizzando un cluster e desideri che l'output venga scritto nel bucket Amazon S3 di un altro AWS utente e desideri che l'altro AWS utente sia in grado di leggere quell'output, devi fare due cose:

  • Chiedi all'altro AWS utente di concederti le autorizzazioni di scrittura per il suo bucket Amazon S3. Il cluster che avvii viene eseguito con AWS le tue credenziali, quindi tutti i cluster che avvii potranno anche scrivere nel bucket dell'altro utente. AWS

  • Imposta le autorizzazioni di lettura per l'altro AWS utente sui file che tu o il cluster scrivete nel bucket Amazon S3. Il modo più semplice per impostare queste autorizzazioni di lettura consiste nell'utilizzare elenchi di controllo degli accessi predefiniti (ACLs), un insieme di politiche di accesso predefinite definite da Amazon S3.

Per informazioni su come l'altro AWS utente può concederti le autorizzazioni per scrivere file nel bucket Amazon S3 dell'altro utente, consulta Modifica delle autorizzazioni del bucket nella Amazon Simple Storage Service User Guide.

Affinché il cluster utilizzi «preimpostato» ACLs quando scrive file su Amazon S3, imposta fs.s3.canned.acl l'opzione di configurazione del cluster su «Predefinito da usare»ACL. La tabella seguente elenca i predefiniti attualmente. ACLs

In scatola ACL Descrizione
AuthenticatedRead Specifica che al proprietario viene concesso l'accesso Permission.FullControl e al gruppo GroupGrantee.AuthenticatedUsers assegnatario viene concesso l'accesso Permission.Read.
BucketOwnerFullControl Specifica che al proprietario del bucket viene concesso l'accesso Permission.FullControl. Il proprietario del bucket non coincide necessariamente con il proprietario dell'oggetto.
BucketOwnerRead Specifica che al proprietario del bucket viene concesso l'accesso Permission.Read. Il proprietario del bucket non coincide necessariamente con il proprietario dell'oggetto.
LogDeliveryWrite Specifica che al proprietario viene concesso l'accesso Permission.FullControl e al gruppo GroupGrantee.LogDelivery assegnatario viene concesso l'accesso Permission.Write, in modo da poter recapitare i log di accesso.
Private Specifica che al proprietario viene concesso l'accesso Permission.FullControl.
PublicRead Specifica che al proprietario viene concesso l'accesso Permission.FullControl e al gruppo GroupGrantee.AllUsers assegnatario viene concesso l'accesso Permission.Read.
PublicReadWrite Specifica che al proprietario viene concesso l'accesso Permission.FullControl e al gruppo GroupGrantee.AllUsers assegnatario viene concesso l'accesso Permission.Read e Permission.Write.

A seconda del tipo di cluster in esecuzione, esistono molti modi per impostare le opzioni di configurazione del cluster. Nelle procedure seguenti viene mostrato come impostare l'opzione per i casi comuni.

Per scrivere file utilizzando «preimpostato» in Hive ACLs
  • Dal prompt dei comandi di Hive, imposta l'opzione di fs.s3.canned.acl configurazione sul file predefinito in ACL cui desideri che il cluster venga impostato sui file che scrive su Amazon S3. Per accedere al prompt dei comandi di Hive, connettiti al nodo master utilizzando SSH e digita Hive al prompt dei comandi di Hadoop. Per ulteriori informazioni, consulta Connect al nodo primario EMR del cluster Amazon tramite SSH.

    Nell'esempio seguente, l'opzione di configurazione fs.s3.canned.acl viene impostata su BucketOwnerFullControl. In questo modo, al proprietario del bucket Amazon S3 viene assegnato il controllo completo sul file. Si noti che il comando set rileva la distinzione tra maiuscole e minuscole e non contiene né virgolette né spazi.

    hive> set fs.s3.canned.acl=BucketOwnerFullControl; create table acl (n int) location 's3://acltestbucket/acl/'; insert overwrite table acl select count(*) from acl;

    Nelle ultime due righe dell'esempio viene creata una tabella che è archiviata in Amazon S3 e vengono scritti dati nella tabella.

Per scrivere file usando «preimpostato» in Pig ACLs
  • Dal prompt dei comandi di Pig, imposta l'opzione di fs.s3.canned.acl configurazione sul file predefinito in ACL cui desideri che il cluster venga impostato sui file che scrive su Amazon S3. Per accedere al prompt dei comandi di Pig, connettiti al nodo master utilizzando SSH e digita Pig al prompt dei comandi di Hadoop. Per ulteriori informazioni, consulta Connect al nodo primario EMR del cluster Amazon tramite SSH.

    L'esempio seguente imposta l'opzione di fs.s3.canned.acl configurazione su BucketOwnerFullControl, che offre al proprietario del bucket Amazon S3 il controllo completo sul file. Tieni presente che il comando set include uno spazio prima del ACL nome predefinito e non contiene virgolette.

    pig> set fs.s3.canned.acl BucketOwnerFullControl; store some data into 's3://acltestbucket/pig/acl';
Per scrivere file utilizzando «cannedACLs» in un formato personalizzato JAR
  • Imposta l'opzione di configurazione fs.s3.canned.acl utilizzando Hadoop con il flag -D. Questo viene mostrato nell'esempio sottostante.

    hadoop jar hadoop-examples.jar wordcount -Dfs.s3.canned.acl=BucketOwnerFullControl s3://amzn-s3-demo-bucket/input s3://amzn-s3-demo-bucket/output