GestioneAmazon S3Autorizzazioni di accesso per bucket e oggetti - AWS SDK for Java 1. x

La AWS SDK for Java versione 1.x è entrata in modalità manutenzione il 31 luglio 2024 e sarà disponibile il 31 end-of-supportdicembre 2025. Ti consigliamo di eseguire la migrazione a per continuare AWS SDK for Java 2.xa ricevere nuove funzionalità, miglioramenti della disponibilità e aggiornamenti di sicurezza.

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

GestioneAmazon S3Autorizzazioni di accesso per bucket e oggetti

È possibile utilizzare le liste di controllo accessi (ACL) perAmazon S3benne e oggetti per un controllo a grana fine sul tuoAmazon S3risorse AWS.

Nota

Questi esempi di codice presuppongono che tu comprenda il materiale inUtilizzo diAWS SDK for Javae hanno configurato il valore predefinitoAWScredenziali che utilizzano le informazioni inConfigurazioneAWSCredenziali e regione per lo sviluppo.

Ottieni l'elenco di controllo degli accessi per un bucket

Per ottenere l'ACL corrente per un bucket, chiama AmazonS3getBucketAclmetodo, passandolo ilnome bucketper interrogare. Questo metodo restituisce unAccessControlListoggetto. Per ottenere ogni concessione di accesso nell'elenco, chiamatelagetGrantsAsListmetodo, che restituirà un elenco Java standard diGrantoggetti.

Importazioni

import com.amazonaws.AmazonServiceException; import com.amazonaws.regions.Regions; import com.amazonaws.services.s3.AmazonS3; import com.amazonaws.services.s3.AmazonS3ClientBuilder; import com.amazonaws.services.s3.model.AccessControlList; import com.amazonaws.services.s3.model.Grant;

Codice

final AmazonS3 s3 = AmazonS3ClientBuilder.standard().withRegion(Regions.DEFAULT_REGION).build(); try { AccessControlList acl = s3.getBucketAcl(bucket_name); List<Grant> grants = acl.getGrantsAsList(); for (Grant grant : grants) { System.out.format(" %s: %s\n", grant.getGrantee().getIdentifier(), grant.getPermission().toString()); } } catch (AmazonServiceException e) { System.err.println(e.getErrorMessage()); System.exit(1); }

Vedi l'esempio completo su GitHub.

Impostazione dell'elenco di controllo degli accessi per un bucket

Per aggiungere o modificare le autorizzazioni a un ACL per un bucket, chiama AmazonS3setBucketAclmetodo. Ci vuole unAccessControlListoggetto che contiene un elenco di beneficiari e livelli di accesso da impostare.

Importazioni

import com.amazonaws.AmazonServiceException; import com.amazonaws.regions.Regions; import com.amazonaws.services.s3.AmazonS3; import com.amazonaws.services.s3.AmazonS3ClientBuilder; import com.amazonaws.services.s3.model.AccessControlList; import com.amazonaws.services.s3.model.EmailAddressGrantee;

Codice

final AmazonS3 s3 = AmazonS3ClientBuilder.standard().withRegion(Regions.DEFAULT_REGION).build(); try { // get the current ACL AccessControlList acl = s3.getBucketAcl(bucket_name); // set access for the grantee EmailAddressGrantee grantee = new EmailAddressGrantee(email); Permission permission = Permission.valueOf(access); acl.grantPermission(grantee, permission); s3.setBucketAcl(bucket_name, acl); } catch (AmazonServiceException e) { System.err.println(e.getErrorMessage()); System.exit(1); }
Nota

È possibile fornire l'identificatore univoco del beneficiario direttamente utilizzando ilGranteeclasse o usa ilEmailAddressGranteeclasse per impostare il beneficiario via e-mail, come abbiamo fatto qui.

Vedi l'esempio completo su GitHub.

Ottieni l'elenco di controllo degli accessi per un oggetto

Per ottenere l'ACL corrente per un oggetto, chiama AmazonS3getObjectAclmetodo, passandolo ilnome bucketeil nome dell'oggettoper interrogare. LIKEgetBucketAcl, questo metodo restituisce unAccessControlListoggetto che è possibile utilizzare per esaminare ciascunoGrant.

Importazioni

import com.amazonaws.AmazonServiceException; import com.amazonaws.regions.Regions; import com.amazonaws.services.s3.AmazonS3; import com.amazonaws.services.s3.AmazonS3ClientBuilder; import com.amazonaws.services.s3.model.AccessControlList; import com.amazonaws.services.s3.model.Grant;

Codice

try { AccessControlList acl = s3.getObjectAcl(bucket_name, object_key); List<Grant> grants = acl.getGrantsAsList(); for (Grant grant : grants) { System.out.format(" %s: %s\n", grant.getGrantee().getIdentifier(), grant.getPermission().toString()); } } catch (AmazonServiceException e) { System.err.println(e.getErrorMessage()); System.exit(1); }

Vedi l'esempio completo su GitHub.

Impostazione dell'elenco di controllo di accesso per un oggetto

Per aggiungere o modificare le autorizzazioni a un ACL per un oggetto, chiama AmazonS3setObjectAclmetodo. Ci vuole unAccessControlListoggetto che contiene un elenco di beneficiari e livelli di accesso da impostare.

Importazioni

import com.amazonaws.AmazonServiceException; import com.amazonaws.regions.Regions; import com.amazonaws.services.s3.AmazonS3; import com.amazonaws.services.s3.AmazonS3ClientBuilder; import com.amazonaws.services.s3.model.AccessControlList; import com.amazonaws.services.s3.model.EmailAddressGrantee;

Codice

try { // get the current ACL AccessControlList acl = s3.getObjectAcl(bucket_name, object_key); // set access for the grantee EmailAddressGrantee grantee = new EmailAddressGrantee(email); Permission permission = Permission.valueOf(access); acl.grantPermission(grantee, permission); s3.setObjectAcl(bucket_name, object_key, acl); } catch (AmazonServiceException e) { System.err.println(e.getErrorMessage()); System.exit(1); } }
Nota

È possibile fornire l'identificatore univoco del beneficiario direttamente utilizzando ilGranteeclasse o usa ilEmailAddressGranteeclasse per impostare il beneficiario via e-mail, come abbiamo fatto qui.

Vedi l'esempio completo su GitHub.

Ulteriori informazioni