Anfragen unter Verwendung von Anmeldeinformationen von AWS-Konto oder von IAM-Benutzern - Amazon Simple Storage Service

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Anfragen unter Verwendung von Anmeldeinformationen von AWS-Konto oder von IAM-Benutzern

Sie können die Sicherheitsanmeldeinformationen Ihres AWS-Konto oder eines IAM-Benutzers verwenden, um authentifizierte Anfragen an Amazon S3 zu senden. In diesem Abschnitt werden Beispiele aufgeführt, wie Sie über AWS SDK for Java, AWS SDK for .NET und AWS SDK for PHP authentifizierte Anfragen senden können. Die Liste der verfügbaren AWS-SDKs finden Sie unter Sample Code and Libraries (Beispiel-Code und Bibliotheken).

Jedes dieser AWS-SDKs verwendet eine SDK-spezifische Anmeldeinformationen-Anbieterkette, um die Anmeldeinformationen zu finden und zu verwenden und Aktionen für den Eigentümer der Anmeldeinformationen auszuführen. Was alle diese Anmeldeinformationen-Anbieterketten gemeinsam haben, ist, dass sie alle nach Ihrer lokalen Datei mit AWS-Anmeldeinformationen suchen.

Weitere Informationen finden Sie in den folgenden Themen:

Erstellen einer lokalen AWS-Anmeldeinformations-Datei

Die einfachste Methode zum Konfigurieren von Anmeldeinformationen für Ihre AWS-SDKs ist die Verwendung einer AWS-Anmeldeinformations-Datei. Wenn Sie die AWS Command Line Interface (AWS CLI) verwenden, wurde möglicherweise bereits eine lokale AWS-Anmeldeinformations-Datei konfiguriert. Andernfalls gehen Sie wie folgt vor, um eine Anmeldeinformationsdatei einzurichten:

  1. Melden Sie sich bei der AWS Management Console an, und öffnen Sie die IAM-Konsole unter https://console.aws.amazon.com/iam/.

  2. Erstellen Sie einen neuen Benutzer mit Berechtigungen, die auf die Services und Aktionen beschränkt sind, auf die Ihr Code Zugriff hat. Weitere Informationen zum Erstellen eines neuen Benutzers finden Sie unter Erstellen von IAM-Benutzern (Konsole). Folgen Sie der Anleitung bis Schritt 8.

  3. Wählen Sie Download .csv (CSV herunterladen) aus, um eine lokale Kopie Ihrer AWS-Anmeldeinformationen zu speichern.

  4. Gehen Sie auf Ihrem Computer zu Ihrem Stammverzeichnis und erstellen Sie ein .aws Verzeichnis. Auf Unix-basierten Systemen (wie Linux oder OS X) befindet es sich an der folgenden Position:

    ~/.aws

    Unter Windows befindet es sich an der folgenden Position:

    %HOMEPATH%\.aws
  5. Erstellen Sie in dem Verzeichnis .aws eine neue Datei namens credentials.

  6. Öffnen Sie die .csv-Datei mit den Anmeldeinformationen aus, die Sie von der IAM-Konsole heruntergeladen haben, und kopieren Sie ihren Inhalt in die credentials-Datei mit dem folgenden Format:

    [default] aws_access_key_id = your_access_key_id aws_secret_access_key = your_secret_access_key
  7. Speichern Sie die credentials-Datei, und löschen Sie die .csv-Datei, die Sie in Schritt 3 heruntergeladen haben.

Die gemeinsame Anmeldeinformations-Datei ist jetzt auf Ihrem lokalen Computer konfiguriert und kann für die AWS-SDKs verwendet werden.

Senden von authentifizierten Anfragen mit den AWS-SDKs

Verwenden Sie die AWS-SDKs, um authentifizierte Anfragen zu senden. Weitere Informationen zum Senden authentifizierter Anfragen finden Sie unter AWS-Sicherheitsanmeldeinformationen oder Authentifizierung von IAM Identity Center.

Java

Gehen Sie zum Senden authentifizierter Anfragen an Amazon S3 unter Verwendung der Anmeldeinformationen Ihres AWS-Konto oder eines IAM-Benutzers wie folgt vor:

  • Erstellen Sie mit der AmazonS3ClientBuilder-Klasse eine AmazonS3Client-Instance.

  • Führen Sie eine der AmazonS3Client-Methoden aus, um Anfragen an Amazon S3 zu senden. Der Client erstellt aus den von Ihnen angegebenen Anmeldeinformationen die erforderliche Signatur und nimmt sie in die Anforderung auf.

Das folgende Beispiel führt die vorhergehenden Aufgaben aus. Weitere Informationen zum Erstellen und Testen eines funktionierenden Beispiels finden Sie unter Testen der Java-Codebeispiele für 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

So senden Sie authentifizierte Anfragen unter Verwendung der Anmeldeinformationen Ihres AWS-Konto oder eines IAM-Benutzers:

  • Erstellen Sie eine Instance der AmazonS3Client-Klasse.

  • Führen Sie eine der AmazonS3Client-Methoden aus, um Anfragen an Amazon S3 zu senden. Der Client erstellt aus den von Ihnen angegebenen Anmeldeinformationen die erforderliche Signatur und nimmt sie in die Anforderung auf, die er an Amazon S3 sendet.

Weitere Informationen finden Sie unter Anfragen unter Verwendung von Anmeldeinformationen von AWS-Konto oder von IAM-Benutzern.

Anmerkung
  • Sie können den AmazonS3Client-Client erstellen, ohne Sicherheitsanmeldeinformationen anzugeben. Anforderung, die unter Verwendung dieses Clients gesendet werden, sind anonym und haben keine Signatur. Amazon S3 gibt einen Fehler zurück, wenn Sie anonyme Anfragen für eine Ressource stellen, die nicht öffentlich verfügbar ist.

  • Sie können ein AWS-Konto erstellen und die erforderlichen Benutzer erstellen. Sie können auch Anmeldeinformationen für diese Benutzer verwalten. Sie benötigen diese Anmeldeinformationen, um die Aufgabe im folgenden Beispiel auszuführen. Weitere Informationen finden Sie unter Configure AWS credentials (Konfigurieren von AWS-Anmeldeinformationen) im AWS SDK for .NET-Entwicklerhandbuch.

    Sie können Ihre Anwendung dann auch so konfigurieren, dass sie aktiv Profile und Anmeldeinformationen abruft, und diese Anmeldeinformationen dann beim Erstellen eines AWS-Service-Clients explizit verwenden. Weitere Informationen finden Sie unter Accessing credentials and profiles in an application (Zugriff auf Anmeldeinformationen und Profile in einer Anwendung) im AWS SDK for .NET-Entwicklerhandbuch.

Das folgende C#-Beispiel veranschaulicht, wie sie die vorhergehenden Aufgaben ausführen. Weitere Informationen zur Ausführung der .NET-Beispiele in diesem Handbuch sowie Anweisungen, wie Sie Ihre Anmeldeinformationen in einer Konfigurationsdatei speichern, finden Sie unter Ausführen der .NET-Codebeispiele für 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); } } } }

Funktionierende Beispiele finden Sie unter Übersicht über Amazon-S3-Objekte und Bucket-Übersicht. Sie können diese Beispiele unter Verwendung der Anmeldeinformationen Ihres AWS-Konto oder eines IAM-Benutzers testen.

Um beispielsweise alle Objektschlüssel in Ihrem Bucket aufzulisten, lesen Sie unter nac Programmgesteuertes Auflisten von Objektschlüsseln.

PHP

In diesem Abschnitt wird die Verwendung einer Klasse aus Version 3 des AWS SDK for PHP zum Senden authentifizierter Anfragen unter Verwendung Ihrer AWS-Konto- oder IAM-Benutzer-Anmeldeinformationen beschrieben. Es wird vorausgesetzt, dass Sie den Anleitungen für Verwenden von AWS SDK for PHP und Ausführen von PHP-Beispielen folgen und der AWS SDK for PHP ordnungsgemäß installiert ist.

Das folgende PHP-Beispiel veranschaulicht, wie der Client eine Anfrage unter Verwendung Ihrer Sicherheitsanmeldeinformationen durchführt, um alle Buckets für Ihr Konto aufzulisten.

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; }
Anmerkung

Sie können den S3Client-Client erstellen, ohne Sicherheitsanmeldeinformationen anzugeben. Anforderung, die unter Verwendung dieses Clients gesendet werden, sind anonym und haben keine Signatur. Amazon S3 gibt einen Fehler zurück, wenn Sie anonyme Anfragen für eine Ressource stellen, die nicht öffentlich verfügbar ist. Weitere Informationen finden Sie unter Erstellen von anonymen Clients in der AWS SDK for PHP-Dokumentation.

Funktionierende Beispiele finden Sie unter Übersicht über Amazon-S3-Objekte. Sie können diese Beispiele unter Verwendung der Anmeldeinformationen Ihres AWS-Konto oder eines IAM-Benutzers testen.

Ein Beispiel für die Auflistung der Objektschlüssel in einem Bucket finden Sie unter Programmgesteuertes Auflisten von Objektschlüsseln.

Ruby

Bevor Sie Version 3 des AWS SDK for Ruby verwenden können, um Amazon S3 aufzurufen, müssen Sie die AWS-Zugriffs-Anmeldeinformationen einrichten, die das SDK verwendet, um Ihren Zugriff auf Ihre Buckets und Objekte zu überprüfen. Wenn Sie freigegebene Anmeldeinformationen im AWS-Anmeldeinformations-Profil auf Ihrem lokalen System bereitgestellt haben, kann Version 3 des SDK für Ruby diese Anmeldeinformationen verwenden, ohne dass Sie sie in Ihrem Code deklariert haben müssen. Weitere Informationen zum Einrichten freigegebener Anmeldeinformationen finden Sie unter Anfragen unter Verwendung von Anmeldeinformationen von AWS-Konto oder von IAM-Benutzern.

Der folgende Ruby-Codeausschnitt verwendet die Anmeldeinformationen in einer freigegebenen AWS-Anmeldeinformations-Datei auf einem lokalen Computer zum Authentifizieren einer Anfrage, um alle Objektschlüssel-Namen in einem bestimmten Bucket anzufordern. Es führt die folgenden Aktionen aus:

  1. Erstellt eine Instance der Aws::S3::Client-Klasse.

  2. Sendet eine Anfrage an Amazon S3 durch Auflisten der Objekte in einem Bucket mit der list_objects_v2-Methode von Aws::S3::Client. Der Client erstellt aus den Anmeldeinformationen der AWS-Anmeldeinformations-Datei auf Ihrem Computer den erforderlichen Signaturwert und nimmt ihn in die Anforderung auf, die er an Amazon S3 sendet.

  3. Gibt das Array der Objektschlüsselnamen an das Terminal aus.

# 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__

Wenn Sie keine lokale Datei mit AWS-Anmeldeinformationen besitzen, können Sie dennoch die Aws::S3::Client-Ressource erstellen und Code für Amazon-S3-Buckets und -Objekte ausführen. Anforderungen, die mit Version 3 des SDK for Ruby gesendet werden, sind anonym und haben standardmäßig keine Signatur. Amazon S3 gibt einen Fehler zurück, wenn Sie anonyme Anfragen für eine Ressource stellen, die nicht öffentlich verfügbar ist.

Sie können den obigen Codeausschnitt für SDK for Ruby-Anwendungen verwenden und erweitern, wie im folgenden, robusteren Beispiel gezeigt.

# 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

Das folgende Beispiel verwendet AWS-Anmeldeinformationen, die vom SDK automatisch für Go aus der Datei mit den gemeinsam genutzten Anmeldeinformationen geladen werden.

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) } } }

Zugehörige Ressourcen