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 à l'aide de Compte AWS ou informations d'identification utilisateur IAM
Vous pouvez utiliser vos informations de sécurité Compte AWS ou celles de l'utilisateur IAM 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 des AWS SDK pour Java touches AWS SDK pour .NET, et AWS SDK pour PHP. Pour obtenir la liste des AWS SDK disponibles, consultez la section Exemples de code et bibliothèques.
Chacun de ces AWS kits SDK utilise une chaîne de fournisseurs SDK-specific d'informations d'identification pour rechercher et utiliser les informations d'identification et effectuer des actions pour le compte du propriétaire des informations d'identification. Le point commun de toutes ces chaînes de fournisseurs d'informations d'identification est qu'elles recherchent toutes votre fichier AWS d'informations d'identification local.
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 vos AWS kits SDK consiste à utiliser un fichier d' AWS informations d'identification. Si vous utilisez le AWS Command Line Interface (AWS CLI), il se peut qu'un fichier d'informations d' AWS identification local soit déjà configuré. Sinon, suivez la procédure ci-dessous pour configurer en :
Connectez-vous au Console de gestion AWS et ouvrez la console IAM à https://console.aws.amazon.com/iam/ l'adresse.
-
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.
-
Choisissez Download .csv (Télécharger .csv) pour enregistrer une copie locale de vos informations d'identification AWS
.
-
Sur votre ordinateur, créez le répertoire .aws dans le répertoire de base. Sur Unix-based des systèmes tels que Linux ou OS X, il se trouve à l'emplacement suivant :
~/.aws
Sur les systèmes Windows, il se trouve à l’emplacement suivant :
%HOMEPATH%\.aws
-
Dans le répertoire .aws, créez un fichier appelé credentials.
-
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
-
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 les AWS kits SDK.
Envoi de demandes authentifiées à l'aide du AWS Kits SDK
Utilisez les AWS kits SDK 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 plus d'informations sur l'authentification des demandes à l'aide du AWS SDK pour Java, consultez les sections Utilisation de fichiers de configuration et d'informations d'identification partagés pour configurer globalement les AWS SDK et les outils et Authentification et accès à l'aide des AWS SDK et des outils dans le Guide de référence des kits de AWS développement logiciel et des outils.
- .NET
-
Pour envoyer des demandes authentifiées à l'aide de vos informations d'identification Compte AWS ou de celles de l'utilisateur IAM, procédez comme suit :
-
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 plus d'informations, consultez la section Création de demandes à l'aide des informations d'identification d'un AWS compte ou d'un utilisateur IAM >.
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 utilisateur 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 SDK pour .NET .
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 client AWS de service. 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 SDK pour .NET .
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, consultez la section Getting Started with the AWSAWS SDK for .NET Developer Guide.
Exemple
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);
}
}
}
}
- PHP
-
Cette section explique comment utiliser une classe de la version 3 du pour envoyer des demandes authentifiées AWS SDK pour PHP à l'aide de vos informations d'identification Compte AWS ou de celles de l'utilisateur IAM. Pour plus d'informations sur l'API AWS SDK pour Ruby, consultez AWS SDK pour Ruby - Version 2.
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.
Exemple
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;
}
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 pour PHP.
- Ruby
-
Avant de pouvoir utiliser la version 3 du AWS SDK pour Ruby pour passer des appels vers Amazon S3, vous devez définir les informations d' AWS
accès que le SDK utilise pour vérifier votre accès à vos compartiments et à vos objets. Si vous avez configuré des informations d'identification partagées dans le profil AWS d'informations d'identification de votre système local, la version 3 du SDK pour Ruby peut utiliser ces informations d'identification sans que vous ayez à les déclarer dans votre code. Pour plus d'informations sur la configuration des informations d'identification partagées, consultez la section Effectuer des demandes à l'aide des informations d'identification d'un AWS compte ou d'un utilisateur IAM.
L'extrait de code Ruby suivant utilise les informations d'identification contenues dans un fichier AWS d'informations d'identification partagé sur un ordinateur local pour authentifier une demande visant à obtenir tous les noms de clés d'objets d'un compartiment spécifique. Il exécute les opérations suivantes :
-
Crée une instance de la classe Aws::S3::Client.
-
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' AWS identification figurant dans le fichier d'informations d'identification de votre ordinateur et l'inclut dans la demande qu'il envoie à Amazon S3.
-
Imprime le tableau des noms de clés d'objet vers le terminal.
Exemple
# 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
true
rescue StandardError => e
puts "Error while accessing the bucket named '#{bucket_name}': #{e.message}"
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 AWS d'informations d'identification local, 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 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, '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
true
rescue StandardError => e
puts "Error while accessing the bucket named '#{bucket_name}': #{e.message}"
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
-
Exemple
L'exemple suivant utilise des AWS informations d'identification chargées automatiquement par le SDK pour Go à partir du fichier d'informations d'identification partagé.
package main
import (
"context"
"errors"
"fmt"
"github.com/aws/aws-sdk-go-v2/config"
"github.com/aws/aws-sdk-go-v2/service/s3"
"github.com/aws/smithy-go"
)
// 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() {
ctx := context.Background()
sdkConfig, err := config.LoadDefaultConfig(ctx)
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(ctx, &s3.ListBucketsInput{})
if err != nil {
var ae smithy.APIError
if errors.As(err, &ae) && ae.ErrorCode() == "AccessDenied" {
fmt.Println("You don't have permission to list buckets for this account.")
} else {
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)
}
}
}