Création de compartiments de répertoires dans une zone de disponibilité - Amazon Simple Storage Service

Création de compartiments de répertoires dans une zone de disponibilité

Pour commencer à utiliser la classe de stockage Amazon S3 Express One Zone, vous devez créer un compartiment de répertoires. La classe de stockage S3 Express One Zone peut être utilisée uniquement avec des compartiments de répertoires. Elle prend en charge les cas d’utilisation à faible latence et accélère le traitement des données au sein d’une même zone de disponibilité. Si votre application est sensible aux performances et peut bénéficier d’une latence inférieure à dix millisecondes pour les demandes PUT et GET, nous vous recommandons de créer un compartiment de répertoires afin de pouvoir utiliser la classe de stockage S3 Express One Zone.

Il existe deux types de compartiments Amazon S3 : les compartiments à usage général et les compartiments de répertoires. Vous devez choisir le type de compartiment qui correspond le mieux à votre application et à vos exigences de performances. Les compartiments à usage général constituent le type de compartiment S3 d’origine. Les compartiments à usage général sont recommandés pour la plupart des cas d’utilisation et des modèles d’accès. Ils autorisent le stockage d’objets dans toutes les classes de stockage, à l’exception de S3 Express One Zone. Pour plus d’informations sur les compartiments à usage général, consultez Présentation des compartiments à usage général.

Les compartiments de répertoires utilisent la classe de stockage S3 Express One Zone, conçue pour être utilisée pour les charges de travail ou les applications critiques en termes de performances qui nécessitent une latence constante inférieure à dix millisecondes. S3 Express One Zone est la première classe de stockage S3 dans laquelle vous pouvez sélectionner une zone de disponibilité unique avec la possibilité de regrouper le stockage d’objets et les ressources de calcul, ce qui assure la vitesse d’accès la plus élevée possible. Lorsque vous créez un compartiment de répertoires, vous pouvez éventuellement spécifier une Région AWS et une zone de disponibilité locale pour vos instances de calcul Amazon EC2, Amazon Elastic Kubernetes Service ou Amazon Elastic Container Service (Amazon ECS) afin d’optimiser les performances.

Avec S3 Express One Zone, vos données sont stockées de façon redondante sur plusieurs appareils au sein d’une même zone de disponibilité. S3 Express One Zone est conçu pour garantir une disponibilité de 99,95 % au sein d’une même zone de disponibilité et s’appuie sur le contrat de niveau de service Amazon S3. Pour plus d’informations, consultez  Zones de disponibilité

Les compartiments de répertoires organisent les données de manière hiérarchique dans des répertoires, contrairement à la structure de stockage horizontale des compartiments à usage général. Il n’existe pas de limite de préfixe pour les compartiments de répertoires et les répertoires individuels peuvent faire l’objet d’une mise à l’échelle horizontale.

Pour plus d’informations sur les compartiments de répertoires, consultez Utilisation des compartiments de répertoires.

Noms des compartiments de répertoires

Les noms des compartiments de répertoires doivent suivre ce format et respecter les règles de dénomination des compartiments de répertoires :

bucket-base-name--zone-id--x-s3

Par exemple, le nom de compartiment de répertoires suivant contient l’ID de zone de disponibilité usw2-az1 :

bucket-base-name--usw2-az1--x-s3

Pour plus d’informations sur les règles de dénomination des compartiments de répertoires, consultez Règles de dénomination des compartiments de répertoires.

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

  2. Dans la barre de navigation en haut de la page, sélectionnez le nom de la Région AWS actuellement affichée. Choisissez ensuite la région dans laquelle vous souhaitez créer un compartiment.

    Note

    Pour limiter la latence et les coûts, et répondre aux exigences légales, choisissez une région proche de vous. 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, consultez Points de terminaison Service AWS dans Référence générale d'Amazon Web Services.

  3. Dans le volet de navigation de gauche, choisissez Compartiments de répertoires.

  4. Choisissez Créer un compartiment. La page Créer un compartiment s’ouvre.

  5. Sous Configuration générale, consultez la Région AWS dans laquelle votre compartiment sera créé.

    Sous Type de compartiment, choisissez Répertoire.

    Note
    • Si vous avez choisi une région qui ne prend pas en charge les compartiments de répertoires, l’option Type de compartiment disparaît, et le type de compartiment est défini par défaut sur un compartiment à usage général. Pour créer un compartiment de répertoires, vous devez choisir une région prise en charge. Pour obtenir la liste des régions qui prennent en charge les compartiments de répertoires et la classe de stockage Amazon S3 Express One Zone, consultez Régions et zones de disponibilité S3 Express One Zone.

    • Une fois que vous avez créé le compartiment, vous ne pouvez pas modifier son type.

    Note

    La zone de disponibilité ne peut pas être modifiée une fois le compartiment créé.

  6. Pour Zone de disponibilité, choisissez une zone de disponibilité locale pour vos services de calcul. Pour obtenir la liste des zones de disponibilité qui prennent en charge les compartiments de répertoires et la classe de stockage S3 Express One Zone, consultez Régions et zones de disponibilité S3 Express One Zone.

    Sous Zone de disponibilité, cochez la case confirmant que vous comprenez qu’en cas de panne de la zone de disponibilité, vos données pourraient être indisponibles ou perdues.

    Important

    Les compartiment de répertoires sont stockés sur plusieurs appareils au sein d’une même zone de disponibilité, mais ne stockent pas les données de manière redondante entre les zones de disponibilité.

  7. Pour Nom du compartiment, entrez un nom pour votre compartiment de répertoires.

    Les règles suivantes s’appliquent pour nommer les compartiments de répertoires :

    • Doit être unique au sein de la zone choisie (zone de disponibilité AWS ou zone locale AWS).

    • Le nom doit contenir entre 3 (minimum) et 63 caractères (maximum), suffixe inclus.

    • Doit être composé uniquement de lettres minuscules, de chiffres et de traits d’union (-).

    • Il doit commencer et se terminer par une lettre ou un chiffre.

    • Doit inclure le suffixe suivant : --zone-id--x-s3.

    • Les noms de compartiment ne doivent pas commencer par le préfixe xn--.

    • Les noms de compartiment ne doivent pas commencer par le préfixe sthree-.

    • Les noms de compartiment ne doivent pas commencer par le préfixe sthree-configurator.

    • Les noms de compartiment ne doivent pas commencer par le préfixe amzn-s3-demo-.

    • Les noms de compartiment ne doivent pas se terminer par le suffixe -s3alias. Ce suffixe est réservé aux noms d’alias de point d’accès. Pour plus d’informations, consultez Alias de point d'accès.

    • Les noms de compartiment ne doivent pas se terminer par le suffixe --ol-s3. Ce suffixe est réservé aux noms d’alias de point d’accès Object Lambda. Pour plus d’informations, consultez Comment utiliser un alias de type compartiment pour votre point d’accès Object Lambda de compartiment S3.

    • Les noms de compartiment ne doivent pas se terminer par le suffixe .mrap. Ce suffixe est réservé aux noms de point d’accès multi-régions. Pour plus d’informations, consultez Règles relatives à l'attribution de noms pour les points d'accès multi-Régions Amazon S3.

    Un suffixe est automatiquement ajouté au nom de base que vous fournissez lorsque vous créez un compartiment de répertoires à l’aide de la console. Ce suffixe inclut l’ID de la zone de disponibilité que vous avez choisie.

    Une fois le compartiment créé, vous ne pouvez pas changer son nom. Pour plus d’informations sur l’attribution de noms à des compartiments, consultez Règles de dénomination des compartiments à usage général.

    Important

    N’ajoutez pas d’informations sensibles, notamment des numéros de compte, dans le nom du compartiment. Le nom de compartiment est visible dans les URL qui pointent vers les objets du compartiment.

  8. Sous Propriété d’objets, le paramètre Propriétaire du compartiment appliqué est activé automatiquement, et toutes les listes de contrôle d’accès (ACL) sont désactivées. Pour les compartiments de répertoires, les listes ACL ne peuvent pas être activées.

    Propriétaire du compartiment appliqué (par défaut) : les listes ACL sont désactivées. Le propriétaire du compartiment possède automatiquement chaque objet du compartiment à usage général et dispose d’un contrôle total sur ces derniers. Les listes ACL n’ont plus d’incidence sur les autorisations d’accès aux données du compartiment S3 à usage général. Le compartiment utilise des stratégies exclusivement pour définir le contrôle des accès.

  9. Sous Paramètres de blocage de l’accès public pour ce compartiment, notez que les paramètres de blocage de l’accès public pour votre compartiment de répertoires sont automatiquement activés. Ces paramètres ne peuvent pas être modifiés pour les compartiments de répertoires. Pour plus d’informations sur le blocage de l’accès public, consultez Blocage de l’accès public à votre stockage Amazon S3.

  10. Pour configurer le chiffrement par défaut, sous Type de chiffrement, choisissez l’une des options suivantes :

    • Chiffrement côté serveur avec une clé gérée par Amazon S3 (SSE-S3)

    • Chiffrement côté serveur avec une clé AWS Key Management Service (SSE-KMS)

    Pour en savoir plus sur l’utilisation du chiffrement côté serveur Amazon S3 pour chiffrer vos données, consultez Protection et chiffrement des données.

    Important

    Si vous utilisez l’option SSE-KMS pour votre configuration de chiffrement par défaut, vous êtes soumis aux quotas RPS (demandes par seconde) de AWS KMS. Pour plus d’informations sur les quotas de AWS KMS et sur la procédure à suivre pour demander une augmentation des quotas, consultez Quotas dans le Guide du développeur AWS Key Management Service.

    Lors de l’activation du chiffrement par défaut, il se peut que vous deviez mettre à jour votre stratégie de compartiment. Pour plus d’informations, consultez Utilisation du chiffrement SSE-KMS pour les opérations intercomptes.

  11. Si vous avez choisi Chiffrement côté serveur avec des clés gérées par Amazon S3 (SSE-S3), Activée apparaît sous Clé de compartiment. Les clés de compartiment S3 sont toujours activées lorsque vous configurez votre compartiment de répertoires pour qu’il utilise le chiffrement SSE-S3 par défaut. Les clés de compartiment S3 sont toujours activées pour les opérations GET et PUT dans un compartiment de répertoires et ne peuvent pas être désactivées. Les clés de compartiment S3 ne sont pas prises en charge lorsque vous copiez des objets chiffrés avec SSE-KMS depuis des compartiments à usage général vers des compartiments de répertoires, depuis des compartiments de répertoires vers des compartiments à usage général ou entre des compartiments de répertoires, par le biais de CopyObject, d’UploadPartCopy, de l’opération Copy dans Batch Operations ou des tâches import. Dans ce cas, Amazon S3 appelle AWS KMS chaque fois qu’une demande de copie est faite par rapport à un objet chiffré KMS.

    Les clés de compartiment S3 diminuent le coût du chiffrement en réduisant le trafic de demandes depuis Amazon S3 vers AWS KMS. Pour plus d’informations, consultez Réduction du coût du SSE-KMS avec les clés de compartiment Amazon S3.

  12. Si vous avez choisi Chiffrement côté serveur avec une clé AWS Key Management Service (SSE-KMS), sous Clé AWS KMS, spécifiez votre clé AWS Key Management Service de l’une des manières suivantes ou créez-en une.

    • Pour choisir parmi la liste de clés KMS disponibles, choisissez Choisir parmi vos clés AWS KMS keys, et choisissez votre clé KMS sous AWS KMS keys disponibles.

      Seules vos clés gérées par le client apparaissent dans cette liste. La Clé gérée par AWS (aws/s3) n’est pas pris en charge dans les compartiments de répertoires. Pour plus d’informations sur les clés gérées par le client, consultez Clés de client et clés AWS dans le Guide du développeur AWS Key Management Service.

    • Pour saisir l’ARN ou l’alias de la clé KMS, choisissez Saisir l’ARN de la AWS KMS key, puis saisissez l’ARN ou l’alias de votre clé KMS dans ARN AWS KMS key.

    • Pour créer une clé gérée par le client dans la console AWS KMS, choisissez Créer une clé KMS.

      Pour en savoir plus sur la création d’une AWS KMS key, consultez Création de clés dans le guide du développeur AWS Key Management Service.

    Important
    • Votre configuration SSE-KMS ne peut prendre en charge qu’une seule clé gérée par le client par compartiment de répertoires pendant toute la durée de vie du compartiment. La Clé gérée par AWS (aws/s3) n’est pas prise en charge. De même, après avoir spécifié une clé gérée par le client pour SSE-KMS, vous ne pouvez pas remplacer la clé gérée par le client pour la configuration SSE-KMS du compartiment.

      Vous pouvez identifier la clé gérée par le client que vous avez spécifiée pour la configuration SSE-KMS du compartiment de la manière suivante :

      • Effectuez une demande d’opération d’API HeadObject pour trouver la valeur de x-amz-server-side-encryption-aws-kms-key-id dans la réponse.

      Pour utiliser une nouvelle clé gérée par le client pour vos données, nous vous recommandons de copier vos objets existants dans un nouveau compartiment de répertoires avec une nouvelle clé gérée par le client.

    • Vous pouvez uniquement utiliser des clés KMS disponibles dans la même Région AWS que le compartiment. La console Amazon S3 répertorie uniquement les 100 premières clés KMS dans la même région que le compartiment. Pour utiliser une clé KMS qui n’est pas répertoriée, vous devez saisir l’ARN de votre clé KMS. Si vous souhaitez utiliser une clé KMS qui appartient à un autre compte, vous devez d'abord avoir l'autorisation d'utiliser cette clé KMS, puis saisir l'ARN de la clé KMS. Pour plus d’informations sur les autorisations entre comptes pour les clés KMS, consultez Création de clés KMS que d’autres comptes peuvent utiliser dans le Guide du développeur AWS Key Management Service. Pour en savoir plus sur SSE-KMS, consultez Spécification du chiffrement côté serveur avec AWS KMS (SSE-KMS) pour les chargements de nouveaux objets dans des compartiments de répertoires.

    • Lorsque vous utilisez une AWS KMS key pour le chiffrement côté serveur dans des compartiments de répertoires, vous devez choisir une clé KMS de chiffrement symétrique. Amazon S3 prend uniquement en charge les clés KMS symétriques de chiffrement et ne prend pas en charge les clés KMS asymétriques. Pour plus d’informations, consultez la section Identifying symmetric and asymmetric KMS keys (Identification des clés KMS symétriques et asymétriques) dans le Guide du développeur AWS Key Management Service.

    Pour en savoir plus sur l’utilisation de AWS KMS avec Amazon S3, consultez Utilisation du chiffrement côté serveur avec des clés AWS KMS (SSE-KMS) dans les compartiments de répertoires.

  13. Choisissez Créer un compartiment. Après avoir créé le compartiment, vous pouvez y ajouter des fichiers et des dossiers. Pour plus d’informations, consultez Utilisation d’objets dans un compartiment de répertoires.

SDK for Go

Cet exemple montre comment créer un compartiment de répertoires à l’aide du kit AWS SDK pour Go.

var bucket = "..." func runCreateBucket(c *s3.Client) { resp, err := c.CreateBucket(context.Background(), &s3.CreateBucketInput{ Bucket: &bucket, CreateBucketConfiguration: &types.CreateBucketConfiguration{ Location: &types.LocationInfo{ Name: aws.String("usw2-az1"), Type: types.LocationTypeAvailabilityZone, }, Bucket: &types.BucketInfo{ DataRedundancy: types.DataRedundancySingleAvailabilityZone, Type: types.BucketTypeDirectory, }, }, }) var terr *types.BucketAlreadyOwnedByYou if errors.As(err, &terr) { fmt.Printf("BucketAlreadyOwnedByYou: %s\n", aws.ToString(terr.Message)) fmt.Printf("noop...\n") return } if err != nil { log.Fatal(err) } fmt.Printf("bucket created at %s\n", aws.ToString(resp.Location)) }
SDK for Java 2.x

Cet exemple montre comment créer un compartiment de répertoires à l’aide du kit AWS SDK for Java 2.x.

public static void createBucket(S3Client s3Client, String bucketName) { //Bucket name format is {base-bucket-name}--{az-id}--x-s3 //example: doc-example-bucket--usw2-az1--x-s3 is a valid name for a directory bucket created in //Region us-west-2, Availability Zone 2 CreateBucketConfiguration bucketConfiguration = CreateBucketConfiguration.builder() .location(LocationInfo.builder() .type(LocationType.AVAILABILITY_ZONE) .name("usw2-az1").build()) //this must match the Region and Availability Zone in your bucket name .bucket(BucketInfo.builder() .type(BucketType.DIRECTORY) .dataRedundancy(DataRedundancy.SINGLE_AVAILABILITY_ZONE) .build()).build(); try { CreateBucketRequest bucketRequest = CreateBucketRequest.builder().bucket(bucketName).createBucketConfiguration(bucketConfiguration).build(); CreateBucketResponse response = s3Client.createBucket(bucketRequest); System.out.println(response); } catch (S3Exception e) { System.err.println(e.awsErrorDetails().errorMessage()); System.exit(1); } }
AWS SDK pour JavaScript

Cet exemple montre comment créer un compartiment de répertoires à l’aide du kit AWS SDK pour JavaScript.

// file.mjs, run with Node.js v16 or higher // To use with the preview build, place this in a folder // inside the preview build directory, such as /aws-sdk-js-v3/workspace/ import { S3 } from "@aws-sdk/client-s3"; const region = "us-east-1"; const zone = "use1-az4"; const suffix = `${zone}--x-s3`; const s3 = new S3({ region }); const bucketName = `...--${suffix}`; const createResponse = await s3.createBucket( { Bucket: bucketName, CreateBucketConfiguration: {Location: {Type: "AvailabilityZone", Name: zone}, Bucket: { Type: "Directory", DataRedundancy: "SingleAvailabilityZone" }} } );
SDK pour .NET

Cet exemple montre comment créer un compartiment de répertoires à l’aide du kit SDK pour .NET.

using (var amazonS3Client = new AmazonS3Client()) { var putBucketResponse = await amazonS3Client.PutBucketAsync(new PutBucketRequest { BucketName = "DOC-EXAMPLE-BUCKET--usw2-az1--x-s3", PutBucketConfiguration = new PutBucketConfiguration { BucketInfo = new BucketInfo { DataRedundancy = DataRedundancy.SingleAvailabilityZone, Type = BucketType.Directory }, Location = new LocationInfo { Name = "usw2-az1", Type = LocationType.AvailabilityZone } } }).ConfigureAwait(false); }
SDK for PHP

Cet exemple montre comment créer un compartiment de répertoires à l’aide du kit AWS SDK for PHP.

require 'vendor/autoload.php'; $s3Client = new S3Client([ 'region' => 'us-east-1', ]); $result = $s3Client->createBucket([ 'Bucket' => 'doc-example-bucket--use1-az4--x-s3', 'CreateBucketConfiguration' => [ 'Location' => ['Name'=> 'use1-az4', 'Type'=> 'AvailabilityZone'], 'Bucket' => ["DataRedundancy" => "SingleAvailabilityZone" ,"Type" => "Directory"] ], ]);
SDK for Python

Cet exemple montre comment créer un compartiment de répertoires à l’aide du kit AWS SDK for Python (Boto3).

import logging import boto3 from botocore.exceptions import ClientError def create_bucket(s3_client, bucket_name, availability_zone): ''' Create a directory bucket in a specified Availability Zone :param s3_client: boto3 S3 client :param bucket_name: Bucket to create; for example, 'doc-example-bucket--usw2-az1--x-s3' :param availability_zone: String; Availability Zone ID to create the bucket in, for example, 'usw2-az1' :return: True if bucket is created, else False ''' try: bucket_config = { 'Location': { 'Type': 'AvailabilityZone', 'Name': availability_zone }, 'Bucket': { 'Type': 'Directory', 'DataRedundancy': 'SingleAvailabilityZone' } } s3_client.create_bucket( Bucket = bucket_name, CreateBucketConfiguration = bucket_config ) except ClientError as e: logging.error(e) return False return True if __name__ == '__main__': bucket_name = 'BUCKET_NAME' region = 'us-west-2' availability_zone = 'usw2-az1' s3_client = boto3.client('s3', region_name = region) create_bucket(s3_client, bucket_name, availability_zone)
SDK for Ruby

Cet exemple montre comment créer un compartiment de répertoires à l’aide du kit AWS SDK pour Ruby.

s3 = Aws::S3::Client.new(region:'us-west-2') s3.create_bucket( bucket: "bucket_base_name--az_id--x-s3", create_bucket_configuration: { location: { name: 'usw2-az1', type: 'AvailabilityZone' }, bucket: { data_redundancy: 'SingleAvailabilityZone', type: 'Directory' } } )

Cet exemple montre comment créer un compartiment de répertoires à l’aide du kit AWS CLI. Pour utiliser cette commande, remplacez les espaces réservés à la saisie utilisateur par vos propres informations.

Lorsque vous créez un compartiment de répertoires, vous devez fournir les détails de configuration et utiliser la convention de dénomination suivante : bucket-base-name--zone-id--x-s3

aws s3api create-bucket --bucket bucket-base-name--zone-id--x-s3 --create-bucket-configuration 'Location={Type=AvailabilityZone,Name=usw2-az1},Bucket={DataRedundancy=SingleAvailabilityZone,Type=Directory}' --region us-west-2

Pour plus d’informations, consultez create-bucket dans l’AWS Command Line Interface.