Help us improve the AWS re:Post Knowledge Center by sharing your feedback in a brief survey. Your input can influence how we create and update our content to better support your AWS journey.
Comment puis-je accorder l’accès public en lecture à certains objets de mon compartiment Amazon S3 ?
Je souhaite que certains objets de mon compartiment Amazon Simple Storage Service (Amazon S3) soient accessibles au public. Cependant, je ne souhaite pas modifier les autorisations sur les autres objets qui se trouvent dans le même compartiment.
Brève description
Choisissez l'une des méthodes suivantes pour accorder un accès public en lecture aux objets de votre compartiment S3 :
- Mettre à jour la liste de contrôle d’accès (ACL) de l’objet à partir de la console Amazon S3.
- Mettre à jour l’ACL de l’objet à partir de l’interface de la ligne de commande AWS (AWS CLI).
- Utiliser une politique de compartiment qui accorde un accès public en lecture à une identification d’objet spécifique.
- Utiliser une politique de compartiment qui accorde un accès public en lecture à un préfixe spécifique.
Important : Lorsque vous définissez Propriété d'objets S3 sur Propriétaire du compartiment appliqué pour votre compartiment, vous ne pouvez pas utiliser les ACL de compartiment et d'objet pour accorder un accès public. Dans la plupart des cas, vous n'avez pas besoin d'ACL pour accorder des autorisations aux objets et aux compartiments. Utilisez plutôt des politiques AWS Identity Access and Management (IAM) et des politiques de compartiment S3 pour accorder des autorisations.
Les nouveaux compartiments, points d’accès et objets n’autorisent pas l’accès public par défaut. Si vous avez configuré le blocage de l'accès public pour tous les compartiments de votre compte AWS, le message « Bucket and objects not public » (Compartiment et objets non publics) s'affiche.
Pour accéder au compartiment public, assurez-vous que votre réseau ne comprend pas de pare-feux ou de paramètres qui bloquent le trafic sortant vers le domaine du compartiment.
Résolution
Important : Par défaut, les paramètres de blocage de l’accès public sont définis sur Vrai sur les nouveaux compartiments S3. Avant de commencer, modifiez les paramètres de blocage de l'accès public sur Faux au niveau du compte ou au niveau du compartiment.
Utiliser la console Amazon S3 pour mettre à jour l’ACL de l’objet
Rendre plusieurs objets publics à la fois
Avertissement : Examinez attentivement les objets avant de les rendre publics. Une fois que vous avez rendu plusieurs objets publics, vous ne pouvez pas annuler cette action pour tous les objets à la fois. Vous devez plutôt modifier l'accès public dans l'onglet Autorisations de chaque objet.
Pour rendre plusieurs objets publics à la fois, procédez comme suit :
- Ouvrez la console Amazon S3, puis sélectionnez les objets que vous souhaitez rendre publics.
- Sélectionnez Actions, puis Rendre public.
- Dans la boîte de dialogue Rendre public, vérifiez que la liste des objets est correcte.
- Sélectionnez Rendre public.
Rendre un objet public
Pour rendre un seul objet public, répétez le processus précédent ou effectuez les étapes suivantes :
- Ouvrez la console Amazon S3, puis sélectionnez le compartiment pour l'objet que vous souhaitez rendre public.
- Dans Objets, sélectionnez l'objet.
- Cliquez sur l'onglet Autorisations, puis sur ** Modifier**.
- Dans la section Tout le monde, choisissez Objets lus.
- Sélectionnez Je comprends les effets de ces modifications sur cet objet.
- Sélectionnez Enregistrer les modifications.
Utiliser l'AWS CLI pour mettre à jour l'ACL de l'objet
Remarque : Si des erreurs surviennent lorsque vous exécutez des commandes AWS CLI, consultez la section Résoudre les erreurs liées à l’AWS CLI. Vérifiez également que vous utilisez bien la version la plus récente de l'interface.
Pour un objet déjà stocké dans Amazon S3, vous pouvez exécuter la commande put-object-acl pour mettre à jour l'ACL de l'objet pour un accès public en lecture :
aws s3api put-object-acl --bucket DOC-EXAMPLE-BUCKET --key exampleobject --acl public-read
Remarque : Remplacez exampleobject par votre objet.
Ou vous pouvez exécuter la commande put-object-acl pour accorder le contrôle total de l’objet au propriétaire du compte et l’accès en lecture à tous les autres :
aws s3api put-object-acl --bucket DOC-EXAMPLE-BUCKET --key exampleobject --grant-full-control id="008exampleA45666666668889999008853" --grant-read uri=http://acs.amazonaws.com/groups/global/AllUsers
Remarque : Pour grant-full-control id, entrez l'ID utilisateur canonique du compte.
Utiliser une politique de compartiment qui accorde un accès public en lecture à une identification d’objet spécifique
Important : Avant de commencer, assurez-vous de consulter la tarification Amazon S3 pour l’identification d’objets.
Pour utiliser une politique visant à accorder un accès public en lecture aux objets dotés d'une identification spécifique, procédez comme suit :
-
Ajoutez une politique de compartiment qui autorise l’accès public en lecture à tous les objets dotés d’une identification spécifique. Par exemple, la politique suivante autorise l'accès public en lecture à tout objet dont l’identification paire clé-valeur est public=yes :
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": "*", "Action": "s3:GetObject", "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*", "Condition": { "StringEquals": { "s3:ExistingObjectTag/public": "yes" } } } ] } -
Ajoutez l’identification aux objets que vous souhaitez rendre accessibles au public.
-
Pour vérifier les identifications d'un objet, exécutez la commande get-object-tagging dans l'AWS CLI :
aws s3api get-object-tagging --bucket DOC-EXAMPLE-BUCKET --key exampleobject -
Pour ajouter une identification à un objet qui n'en possède aucune, exécutez la commande put-object-tagging :
aws s3api put-object-tagging --bucket DOC-EXAMPLE-BUCKET --key exampleobject --tagging 'TagSet={Key=public,Value=yes}'Avertissement : La commande précédente remplace toutes les identifications d'un objet.
-
Pour ajouter une nouvelle identification à un objet qui comporte déjà des identifications, exécutez la commande put-object-tagging suivante :
aws s3api put-object-tagging --bucket DOC-EXAMPLE-BUCKET --key exampleobject --tagging 'TagSet=[{Key=public,Value=n},{Key=exampletag1,Value=one},{Key=exampletag2,Value=two}]'Remarque : Assurez-vous d’inclure la nouvelle identification d’objet, ainsi que les anciennes identifications que vous souhaitez conserver.
-
Pour vérifier les identifications de l'objet, exécutez à nouveau la commande get-object-tagging :
aws s3api get-object-tagging --bucket DOC-EXAMPLE-BUCKET --key exampleobject
Utiliser une politique de compartiment qui accorde un accès public en lecture à un préfixe spécifique
Avertissement : La politique de compartiment suivante accorde un accès public en lecture à tous les objets sous un préfixe spécifique. Avant d’utiliser cette politique de compartiment, confirmez que votre cas d’utilisation prend en charge tous les objets lisibles par le public dans le préfixe. La politique suivante n’autorise pas l’accès à la liste pour le préfixe. Votre utilisateur ne peut accéder à l’objet que si le chemin de l’objet est connu. Si votre utilisateur essaie d'accéder à un objet qui n'existe pas dans le préfixe, il reçoit une erreur 403.
-
Pour accorder un accès public en lecture à un préfixe d’objet spécifique, ajoutez la politique de compartiment suivante :
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AddPerm", "Effect": "Allow", "Principal": "*", "Action": [ "s3:GetObject" ], "Resource": [ "arn:aws:s3:::DOC-EXAMPLE-BUCKET/publicprefix/*" ] } ] } -
Exécutez la commande cp pour copier un objet dans le préfixe avec un accès public en lecture :
aws s3 cp s3://DOC-EXAMPLE-BUCKET/exampleobject s3://DOC-EXAMPLE-BUCKET/publicprefix/exampleobject
Remarque : Si l'objet possède déjà un préfixe lisible publiquement, il n'est pas nécessaire de le copier dans un nouveau préfixe.
Accéder à des compartiments S3 publics ou à des objets à partir de réseaux restreints
Pour accéder à des compartiments S3 publics ou à des objets à partir de réseaux restreints, vous pouvez ajouter une politique de compartiment qui autorise l'accès à partir d'une plage d'adresses IP spécifique. L'exemple de politique suivant autorise la requête GET à partir des plages d'adresses CIDR 192.0.2.0/24 et 203.0.113.0/24 :
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": "*", "Action": "s3:GetObject", "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*", "Condition": { "IpAddress": { "aws:SourceIp": [ "192.0.2.0/24", "203.0.113.0/24" ] } } } ] }
Informations connexes
Blocage de l'accès public à votre espace de stockage Amazon S3
- Sujets
- Storage
- Langue
- Français
Vidéos associées


Contenus pertinents
- demandé il y a un an
- demandé il y a 3 ans
- demandé il y a 2 ans
- demandé il y a un an
- demandé il y a un an