Créer un compartiment - Amazon Simple Storage Service

Créer un compartiment

Pour charger vos données sur Amazon S3, vous devez d'abord créer un compartiment Amazon S3 dans l'une des Régions AWS. Lorsque vous créez un compartiment, vous devez choisir un nom de compartiment et une Région. Vous pouvez choisir facultativement d’autres options de gestion du stockage pour le compartiment. Une fois un compartiment créé, vous ne pouvez pas modifier son nom ni sa Région. Pour de plus amples informations sur le choix des noms de compartiment, veuillez consulter Règles de dénomination de compartiment.

Le Compte AWS qui crée le compartiment en est le propriétaire. Vous pouvez charger un nombre illimité d’objets vers ce compartiment. Par défaut, vous pouvez créer jusqu'à 100 compartiments par Comptes AWS. Si vous avez besoin de compartiments supplémentaires, vous pouvez augmenter votre limite de compartiments de compte à un maximum de 1 000 compartiments en soumettant une demande d'augmentation de limite de service. Pour en savoir plus sur l'envoi d'une demande d'augmentation de la limite de compartiment, veuillez consulter Service Quotas AWS dans les Références générales AWS. Chaque compartiment permet de stocker un nombre illimité d'objets.

S3 Object Ownership est un paramètre Amazon S3 au niveau du compartiment que vous pouvez utiliser pour désactiver les listes de contrôle d'accès (ACL) et prendre possession de chaque objet de votre compartiment. Cela a pour effet de simplifier la gestion des accès aux données stockées dans Amazon S3. Par défaut, lorsqu'un autre Compte AWS télécharge un objet dans votre compartiment S3, ce compte (le rédacteur d'objet) est propriétaire de l'objet, y a accès et peut en accorder l'accès à d'autres utilisateurs via des ACL. Lorsque vous créez un compartiment, vous pouvez appliquer le paramètre appliqué par le propriétaire du compartiment pour Object Ownership afin de modifier ce comportement par défaut, pour que les ACL soient désactivées et que vous, en tant que propriétaire du compartiment, possédiez automatiquement tous les objets de votre compartiment. Par conséquent, le contrôle des accès à vos données est basé sur des stratégies. Pour plus d'informations, consultez Consultez Contrôle de la propriété des objets et désactivation des listes ACL pour votre compartiment.

Vous pouvez utiliser la console Amazon S3, les API Amazon S3, la AWS CLI ou des kits SDK AWS pour créer un compartiment. Pour en savoir plus sur les autorisations requises pour créer un compartiment, consultez CreateBucket dans la Référence d'API Amazon Simple Storage Service.

  1. Connectez-vous à la AWS Management Console et ouvrez la console Amazon S3 à l'adresse https://console.aws.amazon.com/s3/.

  2. Choisissez Créer un compartiment.

    L'Assistant Create bucket (Créer un compartiment) s'ouvre.

  3. Dans Bucket name (Nom du compartiment), saisissez un nom compatible DNS pour votre compartiment.

    Les nom du compartiment doit présenter les caractéristiques suivantes :

    • Il doit être unique sur l'ensemble d'Amazon S3.

    • Il doit comporter entre 3 et 63 caractères.

    • Ne contient pas de majuscules.

    • Il doit commencer par une minuscule ou un chiffre.

    Une fois le compartiment créé, vous ne pouvez pas changer son nom. Pour de plus amples informations sur le choix des noms de compartiment, consultez la section Règles de dénomination de compartiment.

    Important

    Évitez d'inclure des informations sensibles, notamment un numéro de compte, dans le nom du compartiment. Le nom de compartiment est visible dans les URL qui pointent vers les objets du compartiment.

  4. Dans Region (Région), choisissez la Région AWS dans laquelle le compartiment doit résider.

    Choisissez une Région proche de vous afin de limiter la latence et les coûts,et répondre aux exigences légales. Les objets stockés dans une Région ne la quittent jamais, sauf si vous les transférez explicitement vers une autre Région. Pour obtenir la liste des Régions AWS Amazon S3, veuillez consulter Points de terminaison de service AWS dans la Référence générale Amazon Web Services.

  5. Sous Object Ownership (Propriété de l'objet), pour désactiver ou activer les listes ACL et contrôler la propriété des objets téléchargés dans votre compartiment, sélectionnez l'un des paramètres suivants :

    Listes ACL désactivées

    • Bucket owner enforced (Appliqué par le propriétaire du compartiment) – Les listes ACL sont désactivées, et le propriétaire du compartiment possède automatiquement tous les objets du compartiment et en a le contrôle total. Les listes ACL n'affectent plus les autorisations sur les données du compartiment S3. Le compartiment utilise des stratégies pour définir le contrôle des accès.

      Pour exiger la création de tous les nouveaux compartiments avec des listes ACL désactivées à l'aide d'IAM ou des stratégies AWS Organizations, consultez Désactivation des listes ACL pour tous les nouveaux compartiments (application du propriétaire du compartiment).

    Listes ACL activées

    • Bucket owner preferred (Préféré par le propriétaire du compartiment) – Le propriétaire du compartiment possède les nouveaux objets que d'autres comptes écrivent dans le compartiment avec la liste ACL bucket-owner-full-control prête à l'emploi, et en a le contrôle total.

      Si vous appliquez le paramètre préféré par le propriétaire du compartiment pour exiger que tous les téléchargements Amazon S3 incluent la liste ACL bucket-owner-full-controlprête à l'emploi, vous pouvez ajouter une stratégie de compartiment qui autorise uniquement les téléchargements d'objets utilisant cette liste ACL.

    • Object writer (Rédacteur d'objets) – Le Compte AWS qui télécharge un objet est propriétaire de l'objet, a un contrôle total sur celui-ci et peut en accorder l'accès à d'autres utilisateurs via des listes ACL.

    Note

    Pour appliquer le paramètre Bucket owner enforced (Appliqué par le propriétaire du compartiment) ou le paramètre Bucket owner preferred (Préféré par le propriétaire du compartiment) vous devez disposer de l'autorisation suivante : s3:CreateBucket et s3:PutBucketOwnershipControls.

  6. Dans Bucket settings for Block Public Acces (Paramètres de compartiment pour Bloquer l'accès public), choisissez les paramètres de blocage de l'accès public que vous souhaitez appliquer au compartiment.

    Nous vous recommandons de laisser tous les paramètres activés, sauf si vous savez que vous devez en désactiver un ou plusieurs pour votre cas d'utilisation, par exemple pour héberger un site web public. Les paramètres de blocage de l'accès public que vous activez pour le compartiment seront également activés pour tous les points d'accès que vous créez dans le compartiment. Pour de plus amples informations sur le blocage de l'accès public, veuillez consulter Blocage de l'accès public à votre stockage Amazon S3.

  7. (Facultatif) Si vous souhaitez activer le verrouillage des objets S3, procédez comme suit :

    1. Choisissez Advanced settings (Paramètres avancés) et lisez le message qui s'affiche.

      Important

      Vous ne pouvez activer la fonctionnalité de verrouillage des objets S3 pour un compartiment que lors de sa création. Si vous activez Object Lock pour le compartiment, vous ne pouvez pas le désactiver ultérieurement. L'activation du verrouillage des objets active également la gestion des versions pour le compartiment. Après avoir activé Object Lock pour le compartiment, vous devez configurer les paramètres de conservation et de mise en suspens juridique par défaut Object Lock pour protéger les nouveaux objets contre la suppression ou l'écrasement. Pour plus d'informations, consultez Configuration du verrouillage des objets S3 à l'aide de la console.

    2. Si vous souhaitez activer le verrouillage des objets, saisissez enable dans la zone de texte et choisissez Confirm (Confirmer).

    Pour en savoir plus sur la fonctionnalité Verrouillage des objets S3, consultez Utilisation du verrouillage des objets S3.

    Note

    Pour créer un compartiment activé par le verrouillage d'objet, vous devez disposer des autorisations suivantes : S3:CreateBucket, S3:PutBucketVersioning et S3:PutBucketObjectLockConfiguration.

  8. Choisissez Créer un compartiment.

Lorsque vous utilisez les kits SDK AWS pour créer un compartiment, vous devez commencer par créer un client, puis utiliser ce dernier pour envoyer une demande de création de compartiment. En tant que bonne pratique, vous devez créer votre client et votre compartiment dans la même Région AWS. Si vous ne spécifiez pas de Région lorsque vous créez un client ou un compartiment, Amazon S3 utilise USA Est (Virginie du Nord), la Région par défaut.

Pour créer un client afin d'accéder à un point de terminaison Dual-Stack, vous devez spécifier une Région AWS. Pour de plus amples informations, veuillez consulter Points de terminaison Dual-Stack. Pour obtenir la liste des Régions AWS disponibles, veuillez consulter Régions et points de terminaison dans la Référence générale AWS.

Lorsque vous créez un client, la Région est mappée au point de terminaison spécifique à la Région. Le client utilise ce point de terminaison pour communiquer avec Amazon S3 : s3.<region>.amazonaws.com. Si votre Région a été lancée après le 20 mars 2019, votre client et votre compartiment doivent se trouver dans la même Région. Par conséquent, vous pouvez utiliser un client dans la Région USA Est (Virginie du Nord) pour créer un compartiment dans n’importe quelle Région lancée avant le 20 mars 2019. Pour de plus amples informations, veuillez consulter Points de terminaison hérités.

Ces exemples de code de kit SDK AWS exécutent les tâches suivantes :

  • Créer un client en indiquant explicitement une Région AWS – Dans l'exemple, le client utilise le point de terminaison s3.us-west-2.amazonaws.com pour communiquer avec Amazon S3. Vous pouvez spécifier n'importe quelle Région AWS. Pour obtenir la liste des Régions AWS, veuillez consulter Régions et points de terminaison dans la Référence générale AWS.

  • Envoyer une demande de création de compartiment en indiquant uniquement un nom de compartiment — Le client envoie une demande à Amazon S3 pour créer le compartiment dans la Région où vous avez créé un client.

  • Récupérer des informations relatives à l’emplacement du compartiment – Amazon S3 stocke les informations relatives à l’emplacement du compartiment dans la sous-ressource de l’emplacement associée au compartiment.

Java

Cet exemple montre comment créer un compartiment Amazon S3 à l'aide du kit AWS SDK for Java. Pour obtenir les instructions sur la création et le test d'un exemple pratique, consultez Test des exemples de code Java Amazon S3.

import com.amazonaws.AmazonServiceException; import com.amazonaws.SdkClientException; import com.amazonaws.auth.profile.ProfileCredentialsProvider; import com.amazonaws.regions.Regions; import com.amazonaws.services.s3.AmazonS3; import com.amazonaws.services.s3.AmazonS3ClientBuilder; import com.amazonaws.services.s3.model.CreateBucketRequest; import com.amazonaws.services.s3.model.GetBucketLocationRequest; import java.io.IOException; public class CreateBucket2 { public static void main(String[] args) throws IOException { Regions clientRegion = Regions.DEFAULT_REGION; String bucketName = "*** Bucket name ***"; try { AmazonS3 s3Client = AmazonS3ClientBuilder.standard() .withCredentials(new ProfileCredentialsProvider()) .withRegion(clientRegion) .build(); if (!s3Client.doesBucketExistV2(bucketName)) { // Because the CreateBucketRequest object doesn't specify a region, the // bucket is created in the region specified in the client. s3Client.createBucket(new CreateBucketRequest(bucketName)); // Verify that the bucket was created by retrieving it and checking its location. String bucketLocation = s3Client.getBucketLocation(new GetBucketLocationRequest(bucketName)); System.out.println("Bucket location: " + bucketLocation); } } catch (AmazonServiceException e) { // The call was transmitted successfully, but Amazon S3 couldn't process // it and returned an error response. e.printStackTrace(); } catch (SdkClientException e) { // Amazon S3 couldn't be contacted for a response, or the client // couldn't parse the response from Amazon S3. e.printStackTrace(); } } }
.NET

Pour obtenir des informations sur la façon de créer et de tester un exemple pratique, consultez Exécution des exemples de code .NET Amazon S3.

using Amazon; using Amazon.S3; using Amazon.S3.Model; using Amazon.S3.Util; using System; using System.Threading.Tasks; namespace Amazon.DocSamples.S3 { class CreateBucketTest { private const string bucketName = "*** bucket name ***"; // Specify your bucket region (an example region is shown). private static readonly RegionEndpoint bucketRegion = RegionEndpoint.USWest2; private static IAmazonS3 s3Client; public static void Main() { s3Client = new AmazonS3Client(bucketRegion); CreateBucketAsync().Wait(); } static async Task CreateBucketAsync() { try { if (!(await AmazonS3Util.DoesS3BucketExistAsync(s3Client, bucketName))) { var putBucketRequest = new PutBucketRequest { BucketName = bucketName, UseClientRegion = true }; PutBucketResponse putBucketResponse = await s3Client.PutBucketAsync(putBucketRequest); } // Retrieve the bucket location. string bucketLocation = await FindBucketLocationAsync(s3Client); } catch (AmazonS3Exception e) { Console.WriteLine("Error encountered on server. Message:'{0}' when writing an object", e.Message); } catch (Exception e) { Console.WriteLine("Unknown encountered on server. Message:'{0}' when writing an object", e.Message); } } static async Task<string> FindBucketLocationAsync(IAmazonS3 client) { string bucketLocation; var request = new GetBucketLocationRequest() { BucketName = bucketName }; GetBucketLocationResponse response = await client.GetBucketLocationAsync(request); bucketLocation = response.Location.ToString(); return bucketLocation; } } }
Ruby

Pour obtenir des informations sur la façon de créer et de tester un exemple pratique, consultez Utilisation du kit AWS SDK for Ruby (version 3).

require "aws-sdk-s3" # Wraps Amazon S3 bucket actions. class BucketCreateWrapper attr_reader :bucket # @param bucket [Aws::S3::Bucket] An Amazon S3 bucket initialized with a name. This is a client-side object until # create is called. def initialize(bucket) @bucket = bucket end # Creates an Amazon S3 bucket in the specified AWS Region. # # @param region [String] The Region where the bucket is created. # @return [Boolean] True when the bucket is created; otherwise, false. def create?(region) @bucket.create(create_bucket_configuration: { location_constraint: region }) true rescue Aws::Errors::ServiceError => e puts "Couldn't create bucket. Here's why: #{e.message}" false end # Gets the Region where the bucket is located. # # @return [String] The location of the bucket. def location if @bucket.nil? "None. You must create a bucket before you can get it's location!" else @bucket.client.get_bucket_location(bucket: @bucket.name).location_constraint end rescue Aws::Errors::ServiceError => e "Couldn't get the location of #{@bucket.name}. Here's why: #{e.message}" end end def run_demo region = "us-west-2" wrapper = BucketCreateWrapper.new(Aws::S3::Bucket.new("doc-example-bucket-#{Random.uuid}")) return unless wrapper.create?(region) puts "Created bucket #{wrapper.bucket.name}." puts "Your bucket's region is: #{wrapper.location}" end run_demo if $PROGRAM_NAME == __FILE__

Vous pouvez également utiliser la AWS Command Line Interface (AWS CLI) pour créer un compartiment S3. Pour de plus amples informations, veuillez consulter create-bucket dans la Référence des commandes de la AWS CLI.

Pour de plus amples informations sur la AWS CLI, veuillez consulter la section Qu'est-ce que l'AWS Command Line Interface ? du Guide de l'utilisateur AWS Command Line Interface.