La AWS SDK for Java versione 1.x è entrata in modalità manutenzione il 31 luglio 2024 e sarà disponibile il 31 end-of-support
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 AmazonS3getBucketAcl
metodo, passandolo ilnome bucketper interrogare. Questo metodo restituisce unAccessControlListoggetto. Per ottenere ogni concessione di accesso nell'elenco, chiamatelagetGrantsAsList
metodo, 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
Impostazione dell'elenco di controllo degli accessi per un bucket
Per aggiungere o modificare le autorizzazioni a un ACL per un bucket, chiama AmazonS3setBucketAcl
metodo. 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
Ottieni l'elenco di controllo degli accessi per un oggetto
Per ottenere l'ACL corrente per un oggetto, chiama AmazonS3getObjectAcl
metodo, 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
Impostazione dell'elenco di controllo di accesso per un oggetto
Per aggiungere o modificare le autorizzazioni a un ACL per un oggetto, chiama AmazonS3setObjectAcl
metodo. 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
Ulteriori informazioni
-
GET Bucket aclnellaAmazon S3Documentazione di riferimento API
-
PUT Bucket aclnellaAmazon S3Documentazione di riferimento API
-
GET Object aclnellaAmazon S3Documentazione di riferimento API
-
PUT Object aclnellaAmazon S3Documentazione di riferimento API