Gestion des balises d’objets
Cette section explique comment gérer les balises d’objet à l’aide des kits SDK AWS pour Java et .NET ou de la console Amazon S3.
Le balisage des objets vous permet de classer le stockage par catégorie. 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 votre stockage à l’aide de balises. Pour plus d’informations sur les restrictions liées aux balises, consultez Restrictions encadrant les balises définies par l’utilisateur dans le Guide de l’utilisateur AWS Billing and Cost Management.
Pour ajouter des balises à un objet
-
Connectez-vous à la AWS Management Console et ouvrez la console Amazon S3 à l'adresse https://console.aws.amazon.com/s3/.
-
Dans le volet de navigation de gauche, choisissez Compartiments, puis l’onglet Compartiments à usage général. Accédez au compartiment ou au dossier Amazon S3 contenant les objets que vous souhaitez modifier.
-
Cochez la case située à gauche du nom des objets que vous souhaitez modifier.
-
Dans le menu Actions, choisissez Modifier les balises.
-
Vérifiez les objets répertoriés et choisissez Ajouter des balises.
-
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.
-
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 et Chargement d’objets dans ce guide.
- Java
-
L’exemple suivant montre comment utiliser le kit AWS SDK for Java pour 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 votre stockage à l’aide de balises. Pour obtenir les instructions pour la création et le test d’un exemple pratique, consultez Démarrer dans le Guide du développeur AWS SDK for Java.
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.*;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
public class ManagingObjectTags {
public static void main(String[] args) {
Regions clientRegion = Regions.DEFAULT_REGION;
String bucketName = "*** Bucket name ***";
String keyName = "*** Object key ***";
String filePath = "*** File path ***";
try {
AmazonS3 s3Client = AmazonS3ClientBuilder.standard()
.withCredentials(new ProfileCredentialsProvider())
.withRegion(clientRegion)
.build();
// Create an object, add two new tags, and upload the object to Amazon S3.
PutObjectRequest putRequest = new PutObjectRequest(bucketName, keyName, new File(filePath));
List<Tag> tags = new ArrayList<Tag>();
tags.add(new Tag("Tag 1", "This is tag 1"));
tags.add(new Tag("Tag 2", "This is tag 2"));
putRequest.setTagging(new ObjectTagging(tags));
PutObjectResult putResult = s3Client.putObject(putRequest);
// Retrieve the object's tags.
GetObjectTaggingRequest getTaggingRequest = new GetObjectTaggingRequest(bucketName, keyName);
GetObjectTaggingResult getTagsResult = s3Client.getObjectTagging(getTaggingRequest);
// Replace the object's tags with two new tags.
List<Tag> newTags = new ArrayList<Tag>();
newTags.add(new Tag("Tag 3", "This is tag 3"));
newTags.add(new Tag("Tag 4", "This is tag 4"));
s3Client.setObjectTagging(new SetObjectTaggingRequest(bucketName, keyName, new ObjectTagging(newTags)));
} catch (AmazonServiceException e) {
// The call was transmitted successfully, but Amazon S3 couldn't process
// it, so it 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
-
L’exemple suivant montre comment utiliser le kit AWS SDK for .NET pour définir les balises pour un nouvel objet, et récupérer ou remplacer les balises pour un objet existant. Pour plus d’informations sur le balisage des objets, consultez Catégorisation de votre stockage à l’aide de balises.
Pour de plus amples informations sur la configuration et l’exécution des exemples de code, consultez Mise en route avec le kit SDK AWS pour .NET dans le Guide du développeur SDK AWS 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);
}
}
}
}