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 de l'accès aux Amazon S3 compartiments à l'aide de politiques relatives aux compartiments
Vous pouvez définir, obtenir ou supprimer une politique de compartiment pour gérer l'accès à vos Amazon S3 compartiments.
Définition d'une stratégie de compartiment
Vous pouvez définir la stratégie de compartiment pour un compartiment S3 :
-
Appeler le client AmazonS3
setBucketPolicy
et lui fournir un SetBucketPolicyRequest -
En définissant la stratégie directement à l'aide de la surcharge
setBucketPolicy
qui prend un nom de compartiment et un texte de stratégie (au format JSON)
Importations
import com.amazonaws.AmazonServiceException; import com.amazonaws.auth.policy.Policy; import com.amazonaws.auth.policy.Principal;
Code
s3.setBucketPolicy(bucket_name, policy_text); } catch (AmazonServiceException e) { System.err.println(e.getErrorMessage()); System.exit(1); }
Utilisation de la classe Policy pour générer ou valider une stratégie
Lorsque vous fournissez une stratégie de compartiment à setBucketPolicy
, vous pouvez effectuer les actions suivantes :
-
Spécifier la stratégie directement sous la forme d'une chaîne de texte au format JSON
-
Créer la stratégie à l'aide de la classe Policy
En utilisant la classe Policy
, vous n'avez pas à vous soucier de formater correctement votre chaîne de texte. Pour obtenir le texte de stratégie JSON à partir de la classe Policy
, utilisez sa méthode toJson
.
Importations
import com.amazonaws.auth.policy.Resource; import com.amazonaws.auth.policy.Statement; import com.amazonaws.auth.policy.actions.S3Actions; import com.amazonaws.regions.Regions; import com.amazonaws.services.s3.AmazonS3; import com.amazonaws.services.s3.AmazonS3ClientBuilder;
Code
new Statement(Statement.Effect.Allow) .withPrincipals(Principal.AllUsers) .withActions(S3Actions.GetObject) .withResources(new Resource( "{region-arn}s3:::" + bucket_name + "/*"))); return bucket_policy.toJson();
La classe Policy
fournit également une méthode fromJson
qui peut tenter de créer une stratégie à l'aide d'une chaîne JSON transmise. La méthode valide cette dernière pour s'assurer que le texte peut être transformé en une structure de stratégie valide et échoue avec une exception IllegalArgumentException
si le texte de la stratégie n'est pas valide.
Policy bucket_policy = null; try { bucket_policy = Policy.fromJson(file_text.toString()); } catch (IllegalArgumentException e) { System.out.format("Invalid policy text in file: \"%s\"", policy_file); System.out.println(e.getMessage()); }
Vous pouvez utiliser cette technique pour prévalider une stratégie que vous lisez à partir d'un fichier ou avec tout autre moyen.
Consultez l'exemple complet
Obtention d'une stratégie de compartiment
Pour récupérer la politique d'un Amazon S3 compartiment, appelez la getBucketPolicy
méthode du client AmazonS3 en lui transmettant le nom du compartiment dont vous souhaitez obtenir la politique.
Importations
import com.amazonaws.AmazonServiceException; import com.amazonaws.regions.Regions; import com.amazonaws.services.s3.AmazonS3; import com.amazonaws.services.s3.AmazonS3ClientBuilder;
Code
try { BucketPolicy bucket_policy = s3.getBucketPolicy(bucket_name); policy_text = bucket_policy.getPolicyText(); } catch (AmazonServiceException e) { System.err.println(e.getErrorMessage()); System.exit(1); }
Si le compartiment nommé n'existe pas, si vous n'y avez pas accès ou s'il n'a pas de stratégie de compartiment, une exception AmazonServiceException
est levée.
Consultez l'exemple complet
Suppression d'une stratégie de compartiment
Pour supprimer une politique de compartiment, appelez le client AmazonS3 en lui fournissant le nom du compartiment. deleteBucketPolicy
Importations
import com.amazonaws.AmazonServiceException; import com.amazonaws.regions.Regions; import com.amazonaws.services.s3.AmazonS3;
Code
try { s3.deleteBucketPolicy(bucket_name); } catch (AmazonServiceException e) { System.err.println(e.getErrorMessage()); System.exit(1); }
Cette méthode aboutit même si le compartiment ne comporte pas encore de stratégie. Si vous spécifiez un nom de compartiment qui n'existe pas ou si vous n'avez pas accès au compartiment, une exception AmazonServiceException
est levée.
Consultez l'exemple complet
Plus d'informations
-
Présentation du langage de la politique d'accès dans le guide de Amazon Simple Storage Service l'utilisateur
-
Exemples de politiques relatives aux compartiments dans le guide de Amazon Simple Storage Service l'utilisateur