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 in un bucket Amazon S3 di cui non si è proprietari
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 eseguendo un cluster e desideri che l'output venga scritto nel bucket Amazon S3 di un altro utente AWS e che l'altro utente AWS sia in grado di leggere tale output, devi eseguire due operazioni:
-
Chiedi all'altro utente AWS di concederti le autorizzazioni in scrittura per il suo bucket Amazon S3. Il cluster che avvii viene eseguito con le tue credenziali AWS, perciò qualunque sia il cluster avviato, sarà in grado di scrivere nel bucket dell'altro utente AWS.
-
Imposta le autorizzazioni di lettura per l'altro utente AWS sui file scritti da te o dal cluster nel bucket Amazon S3. Il modo più semplice per impostare queste autorizzazioni di lettura è di utilizzare le liste di controllo accessi (ACL) predefinite, un insieme di policy d'accesso predefinite definite da Amazon S3.
Per ulteriori informazioni su come l'altro utente AWS può concederti autorizzazioni per scrivere file nel bucket Amazon S3 dell'altro utente, consulta Modifica delle autorizzazioni per il bucket nella Guida per l'utente di Amazon Simple Storage Service.
Affinché il tuo cluster utilizzi liste di controllo accessi (ACL) predefinite quando scrive file in Amazon S3, imposta l'opzione di configurazione del cluster fs.s3.canned.acl
sulla lista di controllo accessi (ACL) predefinita da utilizzare. Nella tabella seguente vengono elencate le liste di controllo degli accessi predefinite attualmente definite.
ACL predefinita | 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 liste di controllo degli accessi predefinite in Hive
-
Dal prompt dei comandi di Hive, imposta l'opzione di configurazione
fs.s3.canned.acl
per la lista di controllo accessi (ACL) predefinita che deve essere impostata dal cluster sui file scritti in Amazon S3. Per accedere al prompt dei comandi di Hive, esegui la connessione al nodo master tramite SSH e digita Hive al prompt dei comandi di Hadoop. Per ulteriori informazioni, consulta Connessione al nodo primario tramite SSH.Nell'esempio seguente, l'opzione di configurazione
fs.s3.canned.acl
viene impostata suBucketOwnerFullControl
. 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 utilizzando liste di controllo accessi (ACL) predefinite in Pig
-
Dal prompt dei comandi di Pig, imposta l'opzione di configurazione
fs.s3.canned.acl
per la lista di controllo accessi (ACL) predefinita che deve essere impostata dal cluster sui file scritti in Amazon S3. Per accedere al prompt dei comandi di Pig, esegui la connessione al nodo master utilizzando SSH e digita Pig al prompt dei comandi di Hadoop. Per ulteriori informazioni, consulta Connessione al nodo primario tramite SSH.L'esempio seguente imposta il
fs.s3.canned.acl
opzione di configurazione su BucketOwnerFullControl, che offre al proprietario del bucket Amazon S3 il controllo completo sul file. Si noti che il comando set include uno spazio prima del nome della lista di controllo accessi (ACL) predefinita e non contiene virgolette.pig> set fs.s3.canned.acl BucketOwnerFullControl; store some data into 's3://acltestbucket/pig/acl';
Per scrivere file utilizzando liste di controllo accessi (ACL) predefinite in un JAR personalizzato
-
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://mybucket/input s3://mybucket/output