Envoi de demandes à l'aide du Compte AWS ou des informations d'identification de l'utilisateur IAM - Amazon Simple Storage Service

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.

Envoi de demandes à l'aide du Compte AWS ou des informations d'identification de l'utilisateur IAM

Vous pouvez utiliser votre Compte AWS ou vos informations d'identification de l'utilisateur IAM pour envoyer des demandes authentifiées à Amazon S3. Cette section fournit des exemples pour envoyer des demandes authentifiées grâce aux kits AWS SDK for Java, AWS SDK for .NET et AWS SDK for PHP. Pour obtenir la liste des kits SDK AWS disponibles, veuillez consulter Exemples de code et bibliothèques.

Chacun de ces kits SDK AWS utilise une chaîne d'un fournisseur d'informations d'identification propre au SDK afin de trouver et d'utiliser ces informations, et d'effectuer des actions pour le compte de leur propriétaire. Toutes ces chaînes de fournisseur d'informations d'identification recherchent votre fichier d'informations d'identification AWS local.

Pour plus d'informations, consultez les rubriques ci-dessous :

Pour créer un fichier d'informations d'identification AWS local

Pour configurer les informations d'identification pour vos kits SDK AWS, le plus simple est d'utiliser un fichier d'informations d'identification AWS. Si vous utilisez l'AWS Command Line Interface (AWS CLI), un fichier d'informations d'identification AWS local est peut-être déjà configuré. Sinon, suivez la procédure ci-dessous pour configurer en :

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

  2. Créez un utilisateur doté d'autorisations limitées aux services et actions auxquels votre code sera autorisé à accéder. Pour en savoir plus sur la création d'un utilisateur, veuillez consulter Création d'utilisateurs IAM (Console), puis suivez les instructions jusqu'à l'étape 8.

  3. Choisissez Download .csv (Télécharger .csv) pour enregistrer une copie locale de vos informations d'identification AWS.

  4. Sur votre ordinateur, créez le répertoire .aws dans le répertoire de base. Sur les systèmes Unix, par exemple Linux ou OS X, ce répertoire se trouve à l'emplacement suivant :

    ~/.aws

    Sur les systèmes Windows, il se trouve à l'emplacement suivant :

    %HOMEPATH%\.aws
  5. Dans le répertoire .aws, créez un fichier appelé credentials.

  6. Ouvrez le fichier .csv des informations d'identification que vous avez téléchargé à partir de la console IAM, puis copiez-en le contenu dans le fichier , en respectant le format suivant :

    [default] aws_access_key_id = your_access_key_id aws_secret_access_key = your_secret_access_key
  7. Enregistrez le fichier credentials, puis supprimez le fichier .csv que vous avez téléchargé à l'étape 3.

Votre fichier d'informations d'identification est maintenant configuré sur votre ordinateur local et est prêt à être utilisé avec les kits SDK AWS.

Envoi de demandes authentifiées à l'aide des kits SDK AWS

Utilisez les kits SDK AWS pour envoyer des demandes authentifiées. Pour plus d'informations sur l'envoi de demandes authentifiées, consultez Informations d'identification de sécurité AWS ou Authentification dans IAM Identity Center.

Java

Pour envoyer des demandes authentifiées à Amazon S3 à l'aide de votre Compte AWS ou des informations d'identification de l'utilisateur IAM, procédez comme suit.

  • Utilisez la classe AmazonS3ClientBuilder pour créer une instance AmazonS3Client.

  • Exécutez l'une des méthodes AmazonS3Client pour envoyer des demandes à Amazon S3. Le client génère la signature nécessaire à partir des informations d'identification que vous fournissez et l'inclut dans la demande.

L'exemple suivant exécute les tâches précédentes. Pour plus d'informations 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.ListObjectsRequest; import com.amazonaws.services.s3.model.ObjectListing; import com.amazonaws.services.s3.model.S3ObjectSummary; import java.io.IOException; import java.util.List; public class MakingRequests { 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(); // Get a list of objects in the bucket, two at a time, and // print the name and size of each object. ListObjectsRequest listRequest = new ListObjectsRequest().withBucketName(bucketName).withMaxKeys(2); ObjectListing objects = s3Client.listObjects(listRequest); while (true) { List<S3ObjectSummary> summaries = objects.getObjectSummaries(); for (S3ObjectSummary summary : summaries) { System.out.printf("Object \"%s\" retrieved with size %d\n", summary.getKey(), summary.getSize()); } if (objects.isTruncated()) { objects = s3Client.listNextBatchOfObjects(objects); } else { break; } } } 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

Pour envoyer des demandes authentifiées à l'aide de votre Compte AWS ou des informations d'identification de l'utilisateur IAM :

  • Créez une instance de la classe AmazonS3Client.

  • Exécutez l'une des méthodes AmazonS3Client pour envoyer des demandes à Amazon S3. Le client génère la signature nécessaire à partir des informations d'identification fournies et l'inclut dans la demande envoyée à Amazon S3.

Pour de plus amples informations, veuillez consulter Envoi de demandes à l'aide du Compte AWS ou des informations d'identification de l'utilisateur IAM.

Note
  • Vous pouvez créer la classe AmazonS3Client sans fournir d'informations d'identification de sécurité. Les demandes envoyées via ce client sont anonymes et ne comportent pas de signature. Amazon S3 renvoie un message d'erreur si vous envoyez des demandes anonymes pour une ressource qui n'est pas disponible publiquement.

  • Vous pouvez créer un Compte AWS et créer les utilisateurs requis. Vous pouvez également gérer les informations d’identification pour ces utilisateurs. Vous avez besoin de ces informations d’identification pour exécuter la tâche dans l’exemple suivant. Pour de plus amples informations, veuillez consulter la section Configurer les informations d'identification AWS du Guide du développeur pour le kit AWS SDK for .NET.

    Vous pouvez ensuite configurer votre application pour récupérer activement des profils et des informations d'identification, puis utiliser celles-ci explicitement lors de la création d'un client de service AWS. Pour plus d'informations, consultez la section Accès aux informations d'identification et aux profils dans une application du Guide du développeur pour le kit AWS SDK for .NET.

L'exemple C# suivant montre comment exécuter les tâches précédentes. Pour en savoir plus sur l'exécution d'exemples .NET de ce guide et pour obtenir des instructions sur la façon de stocker les informations d'identification dans un fichier de configuration, consultez Exécution des exemples de code .NET Amazon S3.

using Amazon; using Amazon.S3; using Amazon.S3.Model; using System; using System.Threading.Tasks; namespace Amazon.DocSamples.S3 { class MakeS3RequestTest { 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 client; public static void Main() { using (client = new AmazonS3Client(bucketRegion)) { Console.WriteLine("Listing objects stored in a bucket"); ListingObjectsAsync().Wait(); } } static async Task ListingObjectsAsync() { try { ListObjectsRequest request = new ListObjectsRequest { BucketName = bucketName, MaxKeys = 2 }; do { ListObjectsResponse response = await client.ListObjectsAsync(request); // Process the response. foreach (S3Object entry in response.S3Objects) { Console.WriteLine("key = {0} size = {1}", entry.Key, entry.Size); } // If the response is truncated, set the marker to get the next // set of keys. if (response.IsTruncated) { request.Marker = response.NextMarker; } else { request = null; } } while (request != null); } 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); } } } }

Pour obtenir des exemples pratiques, consultez Présentation des objets Amazon S3 et Présentation des compartiments. Vous pouvez tester ces exemples à l'aide de votre Compte AWS ou des informations d'identification de l'utilisateur IAM.

Par exemple, pour lister toutes les clés d'objet du compartiment, consultez Liste des clés d'objet par programme.

PHP

Cette section explique comment utiliser la version 3 du kit AWS SDK for PHP pour envoyer des demandes authentifiées à l'aide de votre Compte AWS ou des informations d'identification de l'utilisateur IAM. Nous partons du principe que vous suivez déjà les instructions pour Utilisation du kit AWS SDK for PHP et exécution d'exemples PHP et que le kit AWS SDK for PHP est correctement installé.

L'exemple PHP suivant montre comment le client effectue une demande à l'aide de vos informations d'identification de sécurité pour répertorier tous les compartiments pour votre compte.

require 'vendor/autoload.php'; use Aws\S3\Exception\S3Exception; use Aws\S3\S3Client; $bucket = '*** Your Bucket Name ***'; $s3 = new S3Client([ 'region' => 'us-east-1', 'version' => 'latest', ]); // Retrieve the list of buckets. $result = $s3->listBuckets(); try { // Retrieve a paginator for listing objects. $objects = $s3->getPaginator('ListObjects', [ 'Bucket' => $bucket ]); echo "Keys retrieved!" . PHP_EOL; // Print the list of objects to the page. foreach ($objects as $object) { echo $object['Key'] . PHP_EOL; } } catch (S3Exception $e) { echo $e->getMessage() . PHP_EOL; }
Note

Vous pouvez créer la classe S3Client sans fournir d'informations d'identification de sécurité. Les demandes envoyées via ce client sont anonymes et ne comportent pas de signature. Amazon S3 renvoie un message d'erreur si vous envoyez des demandes anonymes pour une ressource qui n'est pas disponible publiquement. Pour plus d'informations, consultez Création de clients anonymes dans la documentation AWS SDK for PHP.

Pour obtenir des exemples pratiques, consultez Présentation des objets Amazon S3. Vous pouvez tester ces exemples à l'aide de votre Compte AWS ou des informations d'identification de l'utilisateur IAM.

Par obtenir un exemple de liste des clés d'objet dans un compartiment, consultez Liste des clés d'objet par programme.

Ruby

Avant d'utiliser la version 3 du kit AWS SDK for Ruby afin d'effectuer des appels vers Amazon S3, vous devez définir les informations d'identification d'accès AWS utilisées par le kit SDK pour vérifier votre accès à vos compartiments et objets. Si des informations d'identification partagées sont configurées dans le profil d'informations d'identification AWS sur votre système local, la version 3 du kit SDK pour Ruby peut utiliser ces informations d'identification sans avoir à les déclarer dans votre code. Pour en savoir plus sur la définition d'informations d'identification partagées, consultez Envoi de demandes à l'aide du Compte AWS ou des informations d'identification de l'utilisateur IAM.

L'extrait de code Ruby suivant utilise les données d'un fichier d'informations d'identification AWS partagé stocké sur un ordinateur local pour authentifier une demande qui permet d'obtenir tous les noms de clés d'objet d'un compartiment donné. Il exécute les opérations suivantes :

  1. Crée une instance de la classe Aws::S3::Client.

  2. Envoie une demande à Amazon S3 en énumérant les objets d’un compartiment à l’aide de la méthode list_objects_v2 de Aws::S3::Client. Le client génère la valeur de signature nécessaire à partir des informations d'identification du fichier d'informations d'identification AWS sur votre ordinateur et l'inclut dans la demande envoyée à Amazon S3.

  3. Imprime le tableau des noms de clés d'objet vers le terminal.

# Prerequisites: # - An existing Amazon S3 bucket. require "aws-sdk-s3" # @param s3_client [Aws::S3::Client] An initialized Amazon S3 client. # @param bucket_name [String] The bucket's name. # @return [Boolean] true if all operations succeed; otherwise, false. # @example # s3_client = Aws::S3::Client.new(region: 'us-west-2') # exit 1 unless list_bucket_objects?(s3_client, 'doc-example-bucket') def list_bucket_objects?(s3_client, bucket_name) puts "Accessing the bucket named '#{bucket_name}'..." objects = s3_client.list_objects_v2( bucket: bucket_name, max_keys: 50 ) if objects.count.positive? puts "The object keys in this bucket are (first 50 objects):" objects.contents.each do |object| puts object.key end else puts "No objects found in this bucket." end return true rescue StandardError => e puts "Error while accessing the bucket named '#{bucket_name}': #{e.message}" return false end # Example usage: def run_me region = "us-west-2" bucket_name = "BUCKET_NAME" s3_client = Aws::S3::Client.new(region: region) exit 1 unless list_bucket_objects?(s3_client, bucket_name) end run_me if $PROGRAM_NAME == __FILE__

Si vous ne disposez pas d'un fichier d'informations d'identification AWS au niveau local, vous pouvez malgré tout créer la ressource Aws::S3::Client et exécuter le code sur les compartiments et objets Amazon S3. Les demandes envoyées avec la version 3 du kit SDK pour Ruby sont anonymes et ne comportent aucune signature par défaut. Amazon S3 renvoie une erreur si vous envoyez des demandes anonymes pour une ressource qui n'est pas disponible publiquement.

Vous pouvez utiliser et développer l'extrait de code précédent pour les applications du kit SDK pour Ruby, comme illustré dans l'exemple suivant, plus complexe.

# Prerequisites: # - An existing Amazon S3 bucket. require "aws-sdk-s3" # @param s3_client [Aws::S3::Client] An initialized Amazon S3 client. # @param bucket_name [String] The bucket's name. # @return [Boolean] true if all operations succeed; otherwise, false. # @example # s3_client = Aws::S3::Client.new(region: 'us-west-2') # exit 1 unless list_bucket_objects?(s3_client, 'doc-example-bucket') def list_bucket_objects?(s3_client, bucket_name) puts "Accessing the bucket named '#{bucket_name}'..." objects = s3_client.list_objects_v2( bucket: bucket_name, max_keys: 50 ) if objects.count.positive? puts "The object keys in this bucket are (first 50 objects):" objects.contents.each do |object| puts object.key end else puts "No objects found in this bucket." end return true rescue StandardError => e puts "Error while accessing the bucket named '#{bucket_name}': #{e.message}" return false end # Example usage: def run_me region = "us-west-2" bucket_name = "BUCKET_NAME" s3_client = Aws::S3::Client.new(region: region) exit 1 unless list_bucket_objects?(s3_client, bucket_name) end run_me if $PROGRAM_NAME == __FILE__
Go

L'exemple suivant utilise les informations d'identification AWS chargées automatiquement par le SDK pour Go à partir du fichier d'informations d'identification partagé.

package main import ( "context" "fmt" "github.com/aws/aws-sdk-go-v2/config" "github.com/aws/aws-sdk-go-v2/service/s3" ) // main uses the AWS SDK for Go V2 to create an Amazon Simple Storage Service // (Amazon S3) client and list up to 10 buckets in your account. // This example uses the default settings specified in your shared credentials // and config files. func main() { sdkConfig, err := config.LoadDefaultConfig(context.TODO()) if err != nil { fmt.Println("Couldn't load default configuration. Have you set up your AWS account?") fmt.Println(err) return } s3Client := s3.NewFromConfig(sdkConfig) count := 10 fmt.Printf("Let's list up to %v buckets for your account.\n", count) result, err := s3Client.ListBuckets(context.TODO(), &s3.ListBucketsInput{}) if err != nil { fmt.Printf("Couldn't list buckets for your account. Here's why: %v\n", err) return } if len(result.Buckets) == 0 { fmt.Println("You don't have any buckets!") } else { if count > len(result.Buckets) { count = len(result.Buckets) } for _, bucket := range result.Buckets[:count] { fmt.Printf("\t%v\n", *bucket.Name) } } }

Ressources connexes