La AWS SDK pour Java version 1.x est entrée en mode maintenance le 31 juillet 2024 et atteindra end-of-support
Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Gestion des autorisations Amazon S3 d'accès pour les compartiments et les objets
Vous pouvez utiliser des listes de contrôle d'accès (ACLs) pour les Amazon S3 compartiments et les objets afin de contrôler avec précision vos ressources. Amazon S3
Note
Ces exemples de code supposent que vous comprenez le contenu de la section Utilisation du AWS SDK pour Java et que vous avez configuré les AWS informations d'identification par défaut à l'aide des informations de configuration des informations AWS d'identification et de la région pour le développement.
Obtention de la liste de contrôle d'accès pour un compartiment
Pour obtenir l'ACL actuelle d'un bucket, appelez la getBucketAcl
méthode AmazonS3 en lui transmettant le nom du bucket à interroger. Cette méthode renvoie un AccessControlListobjet. Pour obtenir chaque autorisation d'accès de la liste, appelez sa méthode getGrantsAsList
, qui renvoie une liste Java standard d'objets Grant.
Importations
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;
Code
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); }
Consultez l'exemple complet
Définition de la liste de contrôle d'accès pour un compartiment
Pour ajouter ou modifier des autorisations à une ACL pour un bucket, appelez la méthode d'AmazonS3. setBucketAcl
Il faut un AccessControlListobjet contenant une liste de bénéficiaires et de niveaux d'accès pour le définir.
Importations
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;
Code
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); }
Note
Vous pouvez fournir l'identifiant unique du bénéficiaire directement à l'aide de la classe Grantee, ou utiliser la EmailAddressGranteeclasse pour définir le bénéficiaire par e-mail, comme nous l'avons fait ici.
Consultez l'exemple complet
Obtention de la liste de contrôle d'accès pour un objet
Pour obtenir l'ACL actuelle d'un objet, appelez la getObjectAcl
méthode d'AmazonS3 en lui transmettant le nom du bucket et le nom de l'objet à interroger. Par exemplegetBucketAcl
, cette méthode renvoie un AccessControlListobjet que vous pouvez utiliser pour examiner chaque subvention.
Importations
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;
Code
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); }
Consultez l'exemple complet
Définition de la liste de contrôle d'accès pour un objet
Pour ajouter ou modifier des autorisations à une ACL pour un objet, appelez la méthode d'AmazonS3. setObjectAcl
Il faut un AccessControlListobjet contenant une liste de bénéficiaires et de niveaux d'accès pour le définir.
Importations
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;
Code
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); } }
Note
Vous pouvez fournir l'identifiant unique du bénéficiaire directement à l'aide de la classe Grantee, ou utiliser la EmailAddressGranteeclasse pour définir le bénéficiaire par e-mail, comme nous l'avons fait ici.
Consultez l'exemple complet
En savoir plus
-
GET Bucket acl dans la référence de Amazon S3 l'API
-
PUT Bucket acl dans la référence de Amazon S3 l'API
-
GET Object acl dans la référence de Amazon S3 l'API
-
PUT Object acl dans la référence de Amazon S3 l'API