View a markdown version of this page

Anfragen stellen mit AWS-Konto oder IAM-Benutzeranmeldedaten - 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 stellen mit AWS-Konto oder IAM-Benutzeranmeldedaten

Sie können Ihre AWS-Konto oder IAM-Benutzersicherheitsanmeldeinformationen verwenden, um authentifizierte Anfragen an Amazon S3 zu senden. Dieser Abschnitt enthält Beispiele dafür, wie Sie authentifizierte Anfragen mithilfe von AWS SDK für Java, AWS SDK für .NET und senden können. AWS SDK für PHP Eine Liste der verfügbaren AWS SDKs finden Sie unter Beispielcode und Bibliotheken.

Jedes dieser AWS SDKs verwendet eine Anbieterkette für SDK-specific Anmeldeinformationen, um Anmeldeinformationen zu finden und zu verwenden und Aktionen im Namen des Eigentümers der Anmeldeinformationen auszuführen. Allen diesen Anbieterketten für Anmeldeinformationen ist gemeinsam, dass sie alle nach Ihrer lokalen AWS Anmeldeinformationsdatei suchen.

Weitere Informationen finden Sie in den folgenden Themen:

Um eine lokale Datei zu erstellen AWS Datei mit Anmeldeinformationen

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

  1. Melden Sie sich bei der an AWS-Managementkonsole 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-based Systemen wie Linux oder OS X befindet sich diese an der folgenden Stelle:

    ~/.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.

Ihre gemeinsame Anmeldeinformationsdatei ist jetzt auf Ihrem lokalen Computer konfiguriert und kann mit den AWS SDKs verwendet werden.

Senden authentifizierter Anfragen mit dem 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

Informationen zur Authentifizierung von Anfragen mit dem AWS SDK für Java finden Sie unter Using shared config and credentials files to global configure AWS SDKs and Tools und Authentication and access using AWS SDKs and Tools Reference Guide AWS .

.NET

So senden Sie authentifizierte Anfragen mit Ihren AWS-Konto oder IAM-Benutzeranmeldeinformationen:

  • 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 mit AWS Konto- oder IAM-Benutzeranmeldedaten stellen >.

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 einen erstellen AWS-Konto 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 SDK für .NET -Entwicklerhandbuch.

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

Das folgende C#-Beispiel veranschaulicht, wie sie die vorhergehenden Aufgaben ausführen. Informationen zum Einrichten und Ausführen der Codebeispiele finden Sie unter Getting Started with the AWS SDK for .NET im AWS SDK for .NET-Entwicklerhandbuch.

Beispiel
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

In diesem Abschnitt wird erklärt, wie Sie eine Klasse aus Version 3 von verwenden, AWS SDK für PHP um authentifizierte Anfragen mit Ihren AWS-Konto oder IAM-Benutzeranmeldeinformationen zu senden. Weitere Informationen zur AWS SDK for Ruby API finden Sie unter AWS SDK for Ruby — Version 2.

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

Beispiel
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 für PHP -Dokumentation.

Ruby

Bevor Sie Version 3 von verwenden können, AWS SDK für Ruby um Amazon S3 aufzurufen, müssen Sie die AWS Zugangsdaten festlegen, die das SDK verwendet, um Ihren Zugriff auf Ihre Buckets und Objekte zu verifizieren. Wenn Sie gemeinsame Anmeldeinformationen im AWS Anmeldeinformationsprofil auf Ihrem lokalen System eingerichtet haben, kann Version 3 des SDK für Ruby diese Anmeldeinformationen verwenden, ohne dass Sie sie in Ihrem Code deklarieren müssen. Weitere Informationen zum Einrichten gemeinsamer Anmeldeinformationen finden Sie unter Anfragen mithilfe von AWS Konto- oder IAM-Benutzeranmeldeinformationen https://docs.aws.amazon.com/AmazonS3/latest/userguide/AuthUsingAcctOrUserCredentials.html stellen.

Der folgende Ruby-Codeausschnitt verwendet die Anmeldeinformationen in einer Datei mit gemeinsam genutzten AWS Anmeldeinformationen auf einem lokalen Computer, um eine Anforderung zum Abrufen aller Objektschlüsselnamen in einem bestimmten Bucket zu authentifizieren. 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 generiert den erforderlichen Signaturwert aus den Anmeldeinformationen in der AWS Anmeldeinformationsdatei auf Ihrem Computer und nimmt ihn in die Anfrage auf, die er an Amazon S3 sendet.

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

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

Wenn Sie keine lokale AWS Anmeldeinformationsdatei haben, können Sie die Aws::S3::Client Ressource trotzdem 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, '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
Beispiel

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

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

Zugehörige Ressourcen