

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.

# Catégorisation de vos objets à l’aide de balises
<a name="object-tagging"></a>

Utilisez le balisage des objets pour classer le stockage par catégorie. Chaque balise est une paire clés-valeurs.

Vous pouvez ajouter des balises à de nouveaux objets lorsque vous les chargez ou vous pouvez les ajouter à des objets existants. 
+ Vous pouvez associer jusqu’à 10 balises à un objet. Les balises associées à un objet doivent avoir des clés de balise uniques.
+ Une clé de balise peut comporter jusqu’à 128 caractères Unicode et les valeurs de balise peuvent comporter jusqu’à 256 caractères Unicode. Les balises d’objet Amazon S3 sont représentées en interne en UTF-16. Notez qu’en UTF-16, les caractères occupent une ou deux positions de caractère.
+ La clé et les valeurs sont sensibles à la casse.
+ Pour plus d’informations sur les restrictions liées aux balises, consultez [Restrictions encadrant les balises définies par l’utilisateur](https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/custom-tags.html#allocation-tag-restrictions) dans le *Guide de l’utilisateur de Facturation et gestion des coûts AWS *. Pour connaître les restrictions de base sur les balises, consultez [Restrictions liées aux balises](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html#tag-restrictions) dans le *Guide de l’utilisateur Amazon EC2*.

**Exemples**  
Considérez les exemples de balisage suivants :

**Example Informations PHI**  
Supposons qu’un objet contienne des données relatives aux infos santé protégées (PHI, Protected Health Information). Vous pouvez baliser l’objet à l’aide de la paire clé-valeur suivante.  

```
PHI=True
```
ou  

```
Classification=PHI
```

**Example Fichiers de projet**  
Supposons que vous stockiez des fichiers de projet dans votre compartiment S3. Vous pouvez baliser ces objets avec une clé nommée `Project` et une valeur, comme illustré ci-après.  

```
Project=Blue
```

**Example Plusieurs balises**  
Vous pouvez ajouter plusieurs balises à un objet, comme illustré ci-après.  

```
Project=x
Classification=confidential
```

**Préfixes de nom de clé et balises**  
Les préfixes des noms des clés d’objet vous permettent également de classer le stockage. Cependant, le classement basé sur les préfixes est unidimensionnel. Examinez les noms de clés d’objet suivants :

```
photos/photo1.jpg
project/projectx/document.pdf
project/projecty/document2.pdf
```

Ces noms de clés ont les préfixes `photos/`, `project/projectx/` et `project/projecty/`. Ces préfixes permettent un classement par catégorie unidimensionnel. Autrement dit, tout élément sous un préfixe est une catégorie. Par exemple, le préfixe `project/projectx` identifie tous les documents liés au projet x.

Le balisage vous propose maintenant une autre dimension. Si vous souhaitez photo1 dans la catégorie de projet x, vous pouvez baliser l’objet en conséquence.

**Autres avantages**  
Outre la classification des données, le balisage offre d’autres avantages, notamment :
+ Les balises d’objets permettent un contrôle d’accès précis des autorisations. Par exemple, vous pouvez accorder à un utilisateur les autorisations de lire uniquement des objets avec des balises spécifiques.
+ Les balises d’objets permettent une gestion du cycle de vie des objets précise dans laquelle vous pouvez spécifier un filtre basé sur des balises, en plus du préfixe de nom de clé, dans une règle de cycle de vie.
+ Si vous utilisez Analyses Amazon S3, vous pouvez configurer des filtres pour regrouper des objets pour l’analyse par balises d’objets, par préfixe de nom de clé ou à la fois par préfixe et par balises.
+ Vous pouvez également personnaliser CloudWatch les statistiques Amazon pour afficher les informations par le biais de filtres de balises spécifiques. Consultez les sections suivantes pour obtenir des détails.

**Important**  
Il est acceptable d’utiliser des balises pour étiqueter des objets contenant des données confidentielles, par exemple, des données d’identification personnelle (PII) ou des informations santé protégées. Néanmoins, les balises à proprement dit ne doivent pas contenir d’informations confidentielles. 

**Ajout d’ensembles de balises d’objet à plusieurs objets Amazon S3 avec une seule requête**  
Pour ajouter des ensembles de balises d’objets à plusieurs objets Amazon S3 avec une seule demande, vous pouvez utiliser la tâche d’opérations par lots S3. Vous fournissez à la fonctionnalité d’opérations par lots S3 une liste d’objets sur lesquels effectuer des opérations. La fonctionnalité des opérations par lot S3 appelle l’opération d’API respective pour effectuer l’opération spécifiée. Une seule tâche Batch Operations peut effectuer l’opération spécifiée sur des milliards d’objets contenant des exaoctets de données. 

La fonctionnalité d’opérations par lot S3 suit la progression, envoie des notifications et stocke un rapport de fin détaillé sur toutes les actions, offrant ainsi une expérience sans serveur entièrement gérée et qui peut être vérifiée. Vous pouvez utiliser S3 Batch Operations via la console Amazon S3 ou AWS SDKs l'API REST. AWS CLI Pour de plus amples informations, veuillez consulter [Principes de base de S3 Batch Operations](batch-ops.md#batch-ops-basics).

Pour en savoir plus sur les balises d’objet, consultez [Gestion des balises d’objets](tagging-managing.md).

## Opérations API associées au balisage des objets
<a name="tagging-apis"></a>

Amazon S3 prend en charge les opérations API suivantes qui sont spécifiques au balisage des objets :

**Opérations d’API sur les objets**
+  [PUT Object Tagging](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPUTtagging.html) – Remplace les balises sur un objet. Vous spécifiez des balises dans le corps de la demande. Il existe deux scénarios distincts de gestion des balises d’objets à l’aide de cette API.
  + L’objet n’a aucune balise – A l’aide de cette API, vous pouvez ajouter un ensemble de balises à un objet (l’objet n’a pas de balises précédentes).
  + L’objet a un ensemble de balises existantes – Pour modifier l’ensemble de balises existant, vous devez tout d’abord le récupérer, le modifier côté client, puis utiliser cette API pour le remplacer.
**Note**  
 Si vous envoyez cette demande avec un ensemble de balises vide, Amazon S3 supprime l’ensemble de balises existant de l’objet. Si vous utilisez cette méthode, vous serez facturé pour une demande de Niveau 1 (PUT). Pour de plus amples informations, veuillez consulter [Tarification Amazon S3](https://d0.awsstatic.com/whitepapers/aws_pricing_overview.pdf).  
Il est préférable d’utiliser la demande [DELETE Object Tagging](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectDELETEtagging.html), car elle produit le même résultat sans entraîner de frais. 
+  [GET Object Tagging](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectGETtagging.html) – Retourne l’ensemble de balises associé à un objet. Amazon S3 retourne des balises d’objets dans le corps de la réponse.
+ [DELETE Object Tagging](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectDELETEtagging.html) – Supprime l’ensemble de balises associé à un objet. 

**Autres opérations d’API prenant en charge le balisage**
+  [PUT Object](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPUT.html) et [Initiate Multipart Upload](https://docs.aws.amazon.com/AmazonS3/latest/API/mpUploadInitiate.html) – Vous pouvez spécifier des balises lorsque vous créez des objets. Vous spécifiez les balises à l’aide de l’en-tête de demande `x-amz-tagging`. 
+  [GET Object](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectGET.html) - Au lieu de retourner l’ensemble de balises, Amazon S3 retourne le nombre de balises d’objets dans l’en-tête `x-amz-tag-count` (uniquement si le demandeur dispose des autorisations de lecture des balises), car la taille de l’en-tête de réponse est limitée à 8 Ko. Si vous souhaitez afficher les balises, vous effectuez une autre demande pour l’opération d’API [GET Object Tagging](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectGETtagging.html).
+ [POST Object](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPOST.html) – Vous pouvez spécifier les balises dans votre demande POST. 

  Tant que les balises dans votre demande ne dépassent pas la limite de taille de l’en-tête de demande HTTP de 8 Ko, vous pouvez utiliser l’API `PUT Object `pour créer des objets avec des balises. Si les balises que vous spécifiez dépassent la limite de taille de l’en-tête, vous pouvez utiliser cette méthode POST dans le corps de laquelle vous incluez les balises. 

   [PUT Object - Copy](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectCOPY.html) – Vous pouvez spécifier `x-amz-tagging-directive` dans votre demande pour indiquer à Amazon S3 de copier (comportement par défaut) les balises ou de les remplacer par un nouvel ensemble de balises fourni dans la demande. 

Remarques :
+ Le balisage d’objet S3 est fortement cohérent. Pour de plus amples informations, veuillez consulter [Modèle de cohérence des données Amazon S3](Welcome.md#ConsistencyModel). 

## Configurations supplémentaires
<a name="tagging-other-configs"></a>

Cette section explique comment le balisage des objets est lié à d’autres configurations.

### Balisage des objets et gestion du cycle de vie
<a name="tagging-and-lifecycle"></a>

Dans la configuration du cycle de vie du compartiment, vous pouvez spécifier un filtre pour sélectionner un sous-ensemble des objets auquel s’applique la règle. Vous pouvez spécifier un filtre basé sur les préfixes des noms de clés, les balises d’objets, ou les deux. 

Supposons que vous stockiez des photos (aux formats brut et final) dans votre compartiment Amazon S3. Vous pouvez baliser ces objets comme illustré ci-après. 

```
phototype=raw
or
phototype=finished
```

Vous pouvez envisager d’archiver les photos au format brut dans Amazon Glacier quelque temps après leur création. Vous pouvez configurer une règle de cycle de vie avec un filtre qui identifie le sous-ensemble des objets avec le préfixe de nom de clé (`photos/`) qui ont une balise spécifique (`phototype=raw`). 

Pour de plus amples informations, veuillez consulter [Gestion du cycle de vie des objets](object-lifecycle-mgmt.md). 

### Balisage et réplication d’objets
<a name="tagging-and-replication"></a>

Si vous avez configuré la réplication sur votre compartiment, Amazon S3 réplique les balises, à condition que vous ayez accordé à Amazon S3 l’autorisation de lire les balises. Pour de plus amples informations, veuillez consulter [Présentation de la configuration de la réplication en direct](replication-how-setup.md).

### Notifications d’événement d’identification d’objet
<a name="tagging-and-event-notifications"></a>

Vous pouvez configurer une notification d’événement Amazon S3 afin de recevoir une notification lorsqu’une étiquette d’objet est ajoutée ou supprimée d’un objet. Le type d’événement `s3:ObjectTagging:Put` vous avertit lorsqu’une étiquette est PUT sur un objet ou lorsqu’une étiquette existante est mise à jour. Le type d’événement `s3:ObjectTagging:Delete` vous avertit lorsqu’une étiquette est supprimée d’un objet. Pour plus d’informations, consultez [ Activation des notifications d’événement](https://docs.aws.amazon.com/AmazonS3/latest/userguide/how-to-enable-disable-notification-intro.html).

Pour plus d’informations sur le balisage d’objets, consultez les rubriques suivantes :

**Topics**
+ [Opérations API associées au balisage des objets](#tagging-apis)
+ [Configurations supplémentaires](#tagging-other-configs)
+ [Stratégies de balisage et de contrôle d’accès](tagging-and-policies.md)
+ [Gestion des balises d’objets](tagging-managing.md)

# Stratégies de balisage et de contrôle d’accès
<a name="tagging-and-policies"></a>

Vous pouvez également utiliser des stratégies d’autorisations (stratégies de compartiment et stratégies utilisateur) pour gérer les autorisations associées au balisage des objets. Pour les actions des stratégies, consultez les rubriques suivantes : 
+  [Opérations d’objet](security_iam_service-with-iam.md#using-with-s3-actions-related-to-objects) 
+  [Opérations de compartiment](security_iam_service-with-iam.md#using-with-s3-actions-related-to-buckets)

Les balises d’objets permettent un contrôle d’accès précis pour la gestion des autorisations. Vous pouvez accorder des autorisations conditionnelles basées sur les balises d’objets. Amazon S3 prend en charge les clés de condition suivantes que vous pouvez utiliser pour accorder des autorisations conditionnelles basées sur les balises d’objets.
+ `s3:ExistingObjectTag/<tag-key>` – Utilisez cette clé de condition pour vérifier qu’une balise d’objet existante possède la clé de balise et la valeur spécifiques. 
**Note**  
Lors de l’octroi des autorisations pour les opérations `PUT Object` et `DELETE Object`, cette clé de condition n’est pas prise en charge. Autrement dit, vous ne pouvez pas créer une stratégie pour accorder ou refuser à un utilisateur les autorisations de supprimer ou de remplacer un objet en fonction de ses balises existantes. 
+ `s3:RequestObjectTagKeys` – Utilisez cette clé de condition pour limiter les clés de balise que vous voulez autoriser sur les objets. Cela est utile lorsque vous ajoutez des balises à des objets à l'aide PutObjectTagging des PutObject requêtes d'objets and et POST.
+ `s3:RequestObjectTag/<tag-key>` – Utilisez cette clé de condition pour limiter les clés de balise et valeurs que vous voulez autoriser sur les objets. Cela est utile lorsque vous ajoutez des balises à des objets à l'aide PutObjectTagging des PutObject requêtes and et POST Bucket.

Pour obtenir la liste complète des clés de condition spécifiques au service Amazon S3, consultez [Exemples de politiques de compartiment utilisant des clés de condition](amazon-s3-policy-keys.md). Les stratégies d’autorisations suivantes illustrent la façon dont le balisage des objets permet une gestion précise des autorisations d’accès.

**Example 1 : autoriser un utilisateur à lire uniquement les objets qui ont une valeur de clé et une étiquette spécifiques**  
La politique d’autorisations suivante limite un utilisateur à la seule lecture des objets qui comportent la clé et la valeur d’étiquette `environment: production`. Cette politique utilise la clé de condition `s3:ExistingObjectTag` pour spécifier la clé et la valeur d’étiquette.    
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
  {
    "Principal": {
      "AWS": [
        "arn:aws:iam::111122223333:role/JohnDoe"
      ]
    },
    "Effect": "Allow",
    "Action": ["s3:GetObject", "s3:GetObjectVersion"],
    "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*",
    "Condition": {
      "StringEquals": 
        {"s3:ExistingObjectTag/environment": "production"}
    }
  }
  ]
}
```

**Example 2 : restreindre les clés d’étiquette d’objet que les utilisateurs peuvent ajouter**  
La stratégie d’autorisations suivante accorde à un utilisateur les autorisations d’effectuer l’action `s3:PutObjectTagging`, ce qui lui permet d’ajouter des balises à un objet existant. La condition utilise la clé de condition `s3:RequestObjectTagKeys` pour spécifier les clés d’étiquette autorisées, telles que `Owner` ou `CreationDate`. Pour plus d’informations, consultez [Création d’une condition avec plusieurs clés ou valeurs](https://docs.aws.amazon.com//IAM/latest/UserGuide/reference_policies_multi-value-conditions.html) dans le *Guide de l’utilisateur IAM*.  
Cette politique garantit que chaque clé d’étiquette spécifiée dans la demande est une clé d’étiquette autorisée. Le qualificateur `ForAnyValue` dans la condition garantit qu’au moins une des clés spécifiées doit être présente dans la demande.    
****  

```
{
   "Version":"2012-10-17",		 	 	 
  "Statement": [
    {"Principal":{"AWS":[
            "arn:aws:iam::111122223333:role/JohnDoe"
         ]
       },
 "Effect": "Allow",
      "Action": [
        "s3:PutObjectTagging"
      ],
      "Resource": [
        "arn:aws:s3:::amzn-s3-demo-bucket/*"
      ],
      "Condition": {"ForAnyValue:StringEquals": {"s3:RequestObjectTagKeys": [
            "Owner",
            "CreationDate"
          ]
        }
      }
    }
  ]
}
```

**Example 3 : exiger une clé et une valeur d’étiquette spécifiques pour permettre aux utilisateurs d’ajouter des étiquettes d’objet**  
L’exemple de politique suivant accorde à un utilisateur l’autorisation d’exécuter l’action `s3:PutObjectTagging`, qui permet à un utilisateur d’ajouter des étiquettes à un objet existant. La condition exige que l’utilisateur inclue une clé d’étiquette spécifique (telle que `Project`) avec la valeur définie sur `X`.    
****  

```
{
   "Version":"2012-10-17",		 	 	 
  "Statement": [
    {"Principal":{"AWS":[
       "arn:aws:iam::111122223333:user/JohnDoe"
         ]
       },
      "Effect": "Allow",
      "Action": [
        "s3:PutObjectTagging"
      ],
      "Resource": [
        "arn:aws:s3:::amzn-s3-demo-bucket/*"
      ],
      "Condition": {"StringEquals": {"s3:RequestObjectTag/Project": "X"
        }
      }
    }
  ]
}
```



# Gestion des balises d’objets
<a name="tagging-managing"></a>

Cette section explique comment gérer les balises d'objets à l'aide de la console AWS SDKs pour Java et .NET ou de la console Amazon S3.

Le balisage des objets vous permet de catégoriser le stockage dans les compartiments à usage général. Chaque balise est une paire clé-valeur qui respecte les règles suivantes :
+ Vous pouvez associer jusqu’à 10 balises à un objet. Les balises associées à un objet doivent avoir des clés de balise uniques.
+ Une clé de balise peut comporter jusqu’à 128 caractères Unicode et les valeurs de balise peuvent comporter jusqu’à 256 caractères Unicode. Les balises d’objet Amazon S3 sont représentées en interne en UTF-16. Notez qu’en UTF-16, les caractères occupent une ou deux positions de caractère.
+ La clé et les valeurs sont sensibles à la casse. 

Pour en savoir plus sur les balises d’objet, consultez [Catégorisation de vos objets à l’aide de balises](object-tagging.md). Pour plus d’informations sur les restrictions liées aux balises, consultez [Restrictions encadrant les balises définies par l’utilisateur](https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/allocation-tag-restrictions.html) dans le *Guide de l’utilisateur AWS Billing and Cost Management *. 

## Utiliser la console S3.
<a name="add-object-tags"></a>

**Pour ajouter des balises à un objet**

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

1. Dans le volet de navigation de gauche, choisissez **Compartiments à usage général**.

1. Dans la liste des compartiments, choisissez le nom du compartiment contenant l’objet.

1. Cochez la case située à gauche du nom des objets que vous souhaitez modifier.

1. Dans le menu **Actions**, choisissez **Modifier les balises**.

1. Vérifiez les objets répertoriés et choisissez **Ajouter des balises**.

1. Chaque balise d’objet est une paire clé-valeur. Saisissez une **Key (Clé)** et une **Value (Valeur)**. Choisissez **Add Tag (Ajouter une balise)** pour ajouter une autre balise. 

   Vous pouvez entrer jusqu’à 10 balises pour un objet.

1. Sélectionnez **Enregistrer les modifications**.

   Amazon S3 ajoute les balises aux objets spécifiés.

Pour plus d’informations, consultez aussi [Affichage des propriétés d’un objet dans la console Amazon S3](view-object-properties.md) et [Chargement d’objets](upload-objects.md) dans ce guide. 

## En utilisant le AWS SDKs
<a name="tagging-manage-sdk"></a>

------
#### [ Java ]

Pour gérer les balises d'objets à l'aide du AWS SDK for Java, vous pouvez définir des balises pour un nouvel objet et récupérer ou remplacer des balises pour un objet existant. Pour plus d’informations sur le balisage des objets, consultez [Catégorisation de vos objets à l’aide de balises](object-tagging.md).

Chargez un objet dans un compartiment et définissez des étiquettes à l’aide d’un S3Client. Pour voir des exemples, consultez [Chargement d’un objet dans un compartiment](https://docs.aws.amazon.com/AmazonS3/latest/API/s3_example_s3_PutObject_section.html) dans la *Référence des API Amazon S3*.

------
#### [ .NET ]

L'exemple suivant montre comment utiliser le AWS SDK pour .NET pour définir les balises d'un nouvel objet et récupérer ou remplacer les balises d'un objet existant. Pour plus d’informations sur le balisage des objets, consultez [Catégorisation de vos objets à l’aide de balises](object-tagging.md). 

Pour plus d'informations sur la configuration et l'exécution des exemples de code, consultez [Getting Started with the AWS SDK for](https://docs.aws.amazon.com/sdk-for-net/latest/developer-guide/net-dg-setup.html) .NET dans *AWS le Guide du développeur du SDK pour* .NET. 

```
using Amazon;
using Amazon.S3;
using Amazon.S3.Model;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;

namespace Amazon.DocSamples.S3
{
    public class ObjectTagsTest
    {
        private const string bucketName = "*** bucket name ***";
        private const string keyName = "*** key name for the new object ***";
        private const string filePath = @"*** file path ***";
        // Specify your bucket region (an example region is shown).
        private static readonly RegionEndpoint bucketRegion = RegionEndpoint.USWest2;
        private static IAmazonS3 client;

        public static void Main()
        {
            client = new AmazonS3Client(bucketRegion);
            PutObjectWithTagsTestAsync().Wait();
        }

        static async Task PutObjectWithTagsTestAsync()
        {
            try
            {
                // 1. Put an object with tags.
                var putRequest = new PutObjectRequest
                {
                    BucketName = bucketName,
                    Key = keyName,
                    FilePath = filePath,
                    TagSet = new List<Tag>{
                        new Tag { Key = "Keyx1", Value = "Value1"},
                        new Tag { Key = "Keyx2", Value = "Value2" }
                    }
                };

                PutObjectResponse response = await client.PutObjectAsync(putRequest);
                // 2. Retrieve the object's tags.
                GetObjectTaggingRequest getTagsRequest = new GetObjectTaggingRequest
                {
                    BucketName = bucketName,
                    Key = keyName
                };

                GetObjectTaggingResponse objectTags = await client.GetObjectTaggingAsync(getTagsRequest);
                for (int i = 0; i < objectTags.Tagging.Count; i++)
                    Console.WriteLine("Key: {0}, Value: {1}", objectTags.Tagging[i].Key, objectTags.Tagging[i].Value);


                // 3. Replace the tagset.

                Tagging newTagSet = new Tagging();
                newTagSet.TagSet = new List<Tag>{
                    new Tag { Key = "Key3", Value = "Value3"},
                    new Tag { Key = "Key4", Value = "Value4" }
                };


                PutObjectTaggingRequest putObjTagsRequest = new PutObjectTaggingRequest()
                {
                    BucketName = bucketName,
                    Key = keyName,
                    Tagging = newTagSet
                };
                PutObjectTaggingResponse response2 = await client.PutObjectTaggingAsync(putObjTagsRequest);

                // 4. Retrieve the object's tags.
                GetObjectTaggingRequest getTagsRequest2 = new GetObjectTaggingRequest();
                getTagsRequest2.BucketName = bucketName;
                getTagsRequest2.Key = keyName;
                GetObjectTaggingResponse objectTags2 = await client.GetObjectTaggingAsync(getTagsRequest2);
                for (int i = 0; i < objectTags2.Tagging.Count; i++)
                    Console.WriteLine("Key: {0}, Value: {1}", objectTags2.Tagging[i].Key, objectTags2.Tagging[i].Value);

            }
            catch (AmazonS3Exception e)
            {
                Console.WriteLine(
                        "Error encountered ***. Message:'{0}' when writing an object"
                        , e.Message);
            }
            catch (Exception e)
            {
                Console.WriteLine(
                    "Encountered an error. Message:'{0}' when writing an object"
                    , e.Message);
            }
        }
    }
}
```

------