Faire des demandes en utilisant Compte AWS ou informations IAM d'identification de l'utilisateur - 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.

Faire des demandes en utilisant Compte AWS ou informations IAM d'identification de l'utilisateur

Vous pouvez utiliser votre Compte AWS ou les informations d'identification de sécurité IAM utilisateur pour envoyer des demandes authentifiées à Amazon S3. Cette section fournit des exemples de la manière dont vous pouvez envoyer des demandes authentifiées à l'aide du AWS SDK for Java, AWS SDK for .NET, et AWS SDK for PHP. Pour une liste des produits disponibles AWS SDKs, accédez à la section Exemples de code et bibliothèques.

Chacun d'entre eux AWS SDKsutilise une chaîne de fournisseurs d'informations d'identification SDK spécifique pour rechercher et utiliser les informations d'identification et effectuer des actions pour le compte du propriétaire des informations d'identification. Ce que toutes ces chaînes de fournisseurs d'informations d'identification ont en commun, c'est qu'elles recherchent toutes votre local. AWS fichier d'informations d'identification.

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

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

Le moyen le plus simple de configurer les informations d'identification pour votre AWS SDKsconsiste à utiliser un AWS fichier d'informations d'identification. Si vous utilisez le plugin AWS Command Line Interface (AWS CLI), vous avez peut-être déjà un local AWS fichier d'informations d'identification configuré. Sinon, suivez la procédure ci-dessous pour configurer en :

  1. Connectez-vous au AWS Management Console et ouvrez la IAM console à 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 plus d'informations sur la création d'un nouvel utilisateur, consultez la section Création d'IAMutilisateurs (console) et suivez les instructions de l'étape 8.

  3. Choisissez Télécharger le fichier .csv pour enregistrer une copie locale de votre AWS informations d'identification.

  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 .csv fichier d'informations d'identification que vous avez téléchargé depuis la IAM console et copiez son contenu dans le credentials fichier au 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 partagé est maintenant configuré sur votre ordinateur local, et il est prêt à être utilisé avec AWS SDKs.

Envoi de demandes authentifiées à l'aide du AWS SDKs

Utilisez la commande AWS SDKspour envoyer des demandes authentifiées. Pour plus d'informations sur l'envoi de demandes authentifiées, voir AWS informations d'identification de sécurité ou authentification IAM Identity Center.

Java

Pour envoyer des demandes authentifiées à Amazon S3 à l'aide de votre Compte AWS ou informations IAM d'identification de l'utilisateur, 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 échantillon fonctionnel, voir Getting Started dans le 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.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 informations IAM d'identification de l'utilisateur :

  • 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 Faire des demandes en utilisant Compte AWS ou informations IAM d'identification de l'utilisateur.

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éez 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 plus d'informations, voir Configurer AWS informations d'identification dans le AWS SDK for .NET Guide du développeur.

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

L'exemple C# suivant montre comment exécuter les tâches précédentes. Pour plus d'informations sur la configuration et l'exécution des exemples de code, voir Getting Started with AWS SDKpour. NETdans le AWS SDKpour. NETGuide du développeur.

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 un identifiant IAM d'utilisateur.

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 une classe de la version 3 du AWS SDK for PHP pour envoyer des demandes authentifiées à l'aide de votre Compte AWS ou les informations IAM d'identification de l'utilisateur. Pour plus d'informations sur le AWS SDKpour RubyAPI, rendez-vous sur AWS SDKpour Ruby - Version 2.

L'PHPexemple suivant montre comment le client fait une demande à l'aide de vos informations de sécurité pour répertorier tous les compartiments de 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 la section Création de clients anonymes dans le AWS SDK for PHP Documentation.

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

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 de pouvoir utiliser la version 3 du AWS SDK for Ruby pour passer des appels vers Amazon S3, vous devez définir le AWS identifiants d'accès qu'ils SDK utilisent pour vérifier votre accès à vos compartiments et à vos objets. Si vous avez des informations d'identification partagées configurées dans le AWS profil d'identification sur votre système local, la version 3 de SDK for Ruby peut utiliser ces informations d'identification sans que vous ayez à les déclarer dans votre code. Pour en savoir plus sur la définition d'informations d'identification partagées, consultez Faire des demandes en utilisant Compte AWS ou informations IAM d'identification de l'utilisateur.

L'extrait de code Ruby suivant utilise les informations d'identification dans un partage AWS fichier d'informations d'identification sur un ordinateur local pour authentifier une demande visant à obtenir tous les noms de clés d'objet d'un compartiment spécifique. 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 figurant dans le AWS fichier d'informations d'identification sur votre ordinateur, et l'inclut dans la demande qu'il envoie à 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, 'amzn-s3-demo-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 n'avez pas de local AWS fichier d'informations d'identification, vous pouvez toujours créer la Aws::S3::Client ressource et exécuter du code sur des compartiments et des objets Amazon S3. Les demandes envoyées à l'aide de la version 3 de SDK for Ruby sont anonymes, sans 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 SDK pour les applications Ruby, comme dans l'exemple plus robuste suivant.

# 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, 'amzn-s3-demo-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 AWS informations d'identification chargées automatiquement par SDK for 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