Amazon Simple Storage Service
Entwicklerhandbuch (API-Version 2006-03-01)

Einführung in Amazon S3

Diese Einführung in Amazon Simple Storage Service (Amazon S3) enthält einen detaillierten Überblick zu diesem Web-Service. Nach der Lektüre dieses Abschnitts sollten Sie sich ein Bild davon machen können, welche Vorteile diese Lösung bietet und wie Sie sie in Ihren Geschäftsablauf integrieren können.

Übersicht über Amazon S3 und dieses Handbuch

Amazon S3 besitzt eine einfache Web-Service-Schnittstelle zum Speichern und Abrufen einer beliebigen Datenmenge zu jeder Zeit und von jedem Ort im Internet aus.

Dieses Handbuch beschreibt, wie Sie Anfragen senden, Buckets zu erstellen, Ihre Objekte zu speichern und abzurufen und Berechtigungen für Ihre Ressourcen zu verwalten. Das Handbuch beschreibt außerdem die Zugriffskontrolle und den Authentifizierungsprozess. Die Zugriffskontrolle definiert, wer auf Objekte und Buckets in Amazon S3 zugreifen kann, ebenso wie den Zugriffstyp (z. B. READ und WRITE). Der Authentifizierungsprozess überprüft die Identität eines Benutzers, der versucht, auf die Amazon Web Services (AWS) zuzugreifen.

Vorteile der Verwendung von Amazon S3

Amazon S3 wurde ursprünglich mit einer minimalen Funktionsmenge angelegt, die einfach und robust sein sollte. Im Folgenden sind einige Vorteile der Verwendung von Amazon S3 aufgeführt:

  • Erstellen von Buckets: Buckets zum Speichern von Daten erstellen und benennen. Buckets sind die grundlegende Behälter für die Datenspeicherung in Amazon S3.

  • Speichern von Daten: unbegrenzte Menge an Daten in einem Bucket speichern. Sie können beliebig viele Objekte in einen Amazon S3-Bucket hochladen. Jedes Objekt kann bis zu 5 TB Daten enthalten. Jedes Objekt wird unter Verwendung eines eindeutigen, vom Entwickler zugewiesenen Schlüssels gespeichert.

  • Herunterladen von Daten: Daten herunterladen oder anderen Benutzern dies ermöglichen. Sie können Daten jederzeit herunterladen oder anderen Benutzern dies ermöglichen.

  • Berechtigungen – Sie können den Zugriff für andere Benutzer gewähren oder ablehnen, die Daten zu Ihrem Amazon S3-Bucket hochladen oder aus diesem herunterladen möchten. Erteilen von Upload- und Download-Berechtigungen für drei Benutzertypen. Authentifizierungsmechanismen können Ihnen helfen, Daten vor unbefugtem Zugriff zu schützen.

  • Standardschnittstellen: Sie können standardbasierte REST- und SOAP-Schnittstellen verwenden, die für beliebige Toolkits für Internet-basierte Entwicklung entworfen wurden.

    Anmerkung

    Die SOAP-Unterstützung über HTTP ist veraltet, steht über HTTPS aber noch zur Verfügung. Die neuen Amazon S3-Funktionen werden unter SOAP nicht unterstützt. Wir empfehlen, entweder die REST API oder die AWS SDKs zu verwenden.

Amazon S3-Konzepte

Dieser Abschnitt beschreibt die wichtigsten Konzepte und die Terminologie, die Sie benötigen, um Amazon S3 effektiv nutzen zu können. Sie werden in der Reihenfolge vorgestellt, in der Sie ihnen am wahrscheinlichsten begegnen.

Buckets

Ein Bucket ist ein Container für Objekte, die in Amazon S3 gespeichert werden. Jedes Objekt ist in einem Bucket enthalten. Wenn beispielsweise ein Objekt mit dem Namen photos/puppy.jpg im Bucket johnsmith gespeichert ist, kann über die URL http://johnsmith.s3.amazonaws.com/photos/puppy.jpg darauf zugegriffen werden.

Buckets dienen verschiedenen Zwecken:

  • Sie strukturieren den Amazon S3-Namespace auf der höchsten Ebene.

  • Sie identifizieren das Konto, dem die Gebühren für Datenspeicherung und -übertragung belastet werden.

  • Sie werden für die Zugriffskontrolle eingesetzt.

  • Sie dienen im Rahmen der Erstellung von Nutzungsberichten als Auswertungseinheit.

Sie können Buckets so konfigurieren, dass sie in einer bestimmten AWS-Region erstellt werden. Weitere Informationen siehe Zugriff auf einen Bucket. Sie können einen Bucket auch so konfigurieren, dass Amazon S3 bei jedem Hinzufügen eines Objekts eine eindeutige Versions-ID erzeugt und sie dem Objekt zuweist. Weitere Informationen finden Sie unter Verwendung von Versioning.

Weitere Informationen über Buckets finden Sie unter Arbeiten mit Amazon S3-Buckets.

Objekte

Objekte sind die Grundeinheiten, die in Amazon S3 gespeichert sind. Objekte bestehen aus Objekt- und Metadaten. Der Datenanteil ist für Amazon S3 nicht einsichtig. Metadaten bestehen aus mehreren Name/Wert-Paaren, die das Objekt beschreiben. Dazu gehören Standardmetadaten wie das Datum der letzten Aktualisierung und HTTP-Standardmetadaten wie Content-Type. Sie können bei der Speicherung des Objekts auch benutzerdefinierte Metadaten angeben.

Ein Objekt wird innerhalb eines Buckets eindeutig durch einen Schlüssel (Name) und eine Versions-ID identifiziert. Weitere Informationen siehe Schlüssel und Verwenden von Versioning.

Schlüssel

Ein Schlüssel ist der eindeutige Bezeichner für ein Objekt in einem Bucket. Jedes Objekt in einem Bucket besitzt genau einen Schlüssel. Jedes Objekt wird durch die Kombination aus Bucket, Schlüssel und Versions-ID eindeutig identifiziert. Amazon S3 fungiert also als grundlegende Datenzuordnung zwischen "Bucket + Schlüssel + Version" und dem Objekt selbst. Jedes Objekt in Amazon S3 ist über eine Kombination von Webservice-Endpunkt, Bucket-Name, Schlüssel und wahlweise einer Version aufrufbar. So ist "doc" in der URL http://doc.s3.amazonaws.com/2006-03-01/AmazonS3.wsdl der Name des Buckets und "2006-03-01/AmazonS3.wsdl" der Schlüssel.

Weitere Informationen zu Objektschlüsseln finden Sie unter Objektschlüssel.

Regionen

Sie können auswählen, in welcher geografischen Region Amazon S3 die erstellten Buckets speichern soll. Sie sollten eine Region im Hinblick auf Latenz, Kosten sowie Einhaltung der relevanten Vorschriften auswählen. In einer Region gespeicherte Objekte verbleiben in der Region, bis sie explizit in eine andere Region verschoben werden. In der Region EU (Irland) gespeicherte Objekte verlassen diese Region beispielsweise nie.

Anmerkung

Sie können auf Amazon S3 und die zugehörigen Funktionen nur in AWS-Regionen zugreifen, die für das Konto aktiviert sind.

Die Liste der Amazon S3-Regionen und -Endpunkte finden Sie unter Regionen und Endpunkte in der Allgemeinen AWS-Referenz.

Amazon S3 Datenkonsistenzmodell

Amazon S3 bietet Lesen-nach-Schreiben-Konsistenz für PUTS neuer Objekte in den S3-Bucket in allen Regionen mit einer Vorsichtsmaßnahme. Die Vorsichtsmaßnahme ist, dass wenn Sie eine HEAD- oder GET-Anfrage für den Schlüsselnamen machen (um festzustellen, ob das Objekt existiert), bevor Sie das Objekt erstellen, Amazon S3 eine letztendliche Datenkonsistenz für Lesen-nach-Schreiben bereitstellt.

Amazon S3 bietet mögliche Konsistenz für das Überschreiben von PUTS und DELETES in allen Regionen.

Aktualisierungen an einem einzelnen Schlüssel sind unteilbar. Wenn Sie z. B. einen vorhandenen Schlüssel eingeben, kann ein anschließendes Lesen die alten Daten oder die aktualisierten Daten zurückgeben, aber es werden niemals beschädigte oder unvollständige Daten zurückgegeben.

Amazon S3 erzielt hohe Verfügbarkeit, indem die Daten innerhalb der AWS-Rechenzentren über mehrere Server repliziert werden. Wenn eine PUT-Anfrage erfolgreich ist, sind die Daten sicher gespeichert. Die Informationen zu den Änderungen werden jedoch möglicherweise nicht sofort überall auf Amazon S3 repliziert und Sie stellen u. U. die folgenden Verhaltensweisen fest.

  • Ein Prozess schreibt ein neues Objekt in Amazon S3 und listet sofort Schlüssel innerhalb seines Buckets auf. Bis die Änderung vollständig weitergegeben wurde, wird das Objekt möglicherweise nicht in der Liste angezeigt.

  • Ein Prozess ersetzt ein vorhandenes Objekt und versucht sofort, es zu lesen. Bis die Änderung vollständig weitergegeben wurde, gibt Amazon S3 möglicherweise die vorherigen Daten zurück.

  • Ein Prozess löscht ein vorhandenes Objekt und versucht sofort, es zu lesen. Bis das Löschen vollständig weitergegeben wurde, gibt Amazon S3 möglicherweise die gelöschten Daten zurück.

  • Ein Prozess löscht ein vorhandenes Objekt und listet sofort Schlüssel innerhalb seines Buckets auf. Bis das Löschen vollständig weitergegeben wurde, listet Amazon S3 möglicherweise das gelöschte Objekt auf.

Anmerkung

Amazon S3 unterstützt derzeit keine Objektsperre. Wenn gleichzeitig zwei PUT-Anforderungen für denselben Schlüssel eingehen, hat die Anforderung mit dem ältesten Zeitstempel Priorität. Wenn das ein Problem ist, müssen Sie in Ihre Anwendung einen Sperrmechanismus für Objekte einbauen.

Updates basieren auf Schlüsseln. Es gibt keine Möglichkeit für unteilbare Aktualisierungen über Schlüssel hinweg. Sie können beispielsweise die Aktualisierung eines Schlüssels nicht von der Aktualisierung eines anderen Schlüssels abhängig machen. Dazu müssten Sie diese Funktionalität in Ihrer Anwendung implementieren.

Die folgende Tabelle beschreibt die Merkmale von Eventually Consistent-Lesevorgängen und Consistent-Lesevorgängen.

Eventually Consistent-Lesevorgang Consistent-Lesevorgang
Das Lesen veralteter Daten ist möglich Das Lesen veralteter Daten ist nicht möglich
Niedrigste Lese-Latenz Potenziell höhere Lese-Latenz
Höchster Lesedurchsatz Potenziell geringerer Lesedurchsatz

Nebenläufige Anwendungen

Dieser Abschnitt zeigt Beispiele für Anforderungen von Eventually Consistent- und Consistent-Lesevorgängen, wenn mehrere Clients gleichzeitig in dieselben Elemente schreiben.

In diesem Beispiel werden W1 (Lesen 1) und W2 (Lesen 2) abgeschlossen, bevor R1 (Lesen 1) und R2 (Lesen 2) starten. Für einen Consistent-Lesevorgang geben R1 und R2 beide color = ruby zurück. Für einen Eventually Consistent-Lesevorgang können R1 und R2 color = red oder color = ruby zurückgeben, abhängig von der verstrichenen Zeit.

Im nächsten Beispiel ist W2 vor dem Start von R1 nicht abgeschlossen. Aus diesem Grund könnte R1 color = ruby oder color = garnet für einen Consistent- oder Eventually Consistent-Lesevorgängen zurückgeben. Ein Eventually Consistent-Lesevorgang könnten überhaupt keine Ergebnisse zurückgeben, abhängig von der vergangenen Zeit.

Für einen Consistent-Lesevorgang gibt R2 color = garnet zurück. Für einen Eventually Consistent-Lesevorgang kann R2 color = ruby oder color = garnet zurückgeben, abhängig von der verstrichenen Zeit.

Im letzten Beispiel führt Client 2 W2 aus, bevor Amazon S3 eine Erfolgsmeldung für W1 zurückgibt. Daher ist der endgültige Wert unbekannt (color = garnet oder color = brick). Alle nachfolgenden Lesevorgänge (Consistent- oder Eventually Consistent-Lesevorgänge) könnten jeden Wert zurückgeben. Ein Eventually Consistent-Lesevorgang könnten überhaupt keine Ergebnisse zurückgeben, abhängig von der vergangenen Zeit.

Amazon S3-Funktionen

Dieser Abschnitt beschreibt wichtige Funktionen von Amazon S3.

Speicherklassen

Amazon S3 bietet eine Reihe von Speicherklassen, die für verschiedene Anwendungsfälle ausgelegt sind. Dazu gehören Amazon S3 STANDARD für die allgemeine Speicherung häufig abgerufener Daten, Amazon S3 STANDARD_IA für langlebige, aber weniger häufig abgerufene Daten und GLACIER für die Langzeitarchivierung.

Weitere Informationen finden Sie unter Amazon S3-Speicherklassen.

Bucket-Richtlinien

Bucket-Richtlinien bieten eine zentrale Zugriffskontrolle für Buckets und Objekte basierend auf verschiedenen Bedingungen, unter anderem Amazon S3-Operationen, Anforderer, Ressourcen und Aspekte der Anforderung (z. B. IP-Adresse). Die Richtlinien sind in der Sprache der Zugriffsrichtlinie verfasst und unterstützen die zentrale Verwaltung von Berechtigungen. Die einem Bucket zugeordneten Berechtigungen gelten für alle Objekte in diesem Bucket.

Bucket-Richtlinien können von Einzelpersonen und Unternehmen genutzt werden. Wenn Unternehmen sich bei Amazon S3 registrieren, erstellen sie ein Konto. Anschließend ist das Unternehmen synonym mit dem Konto. Konten tragen die Kosten für die AWS-Ressourcen, die sie (und ihre Mitarbeiter) erstellen. Konten besitzen die Möglichkeit, Bucket-Richtlinienberechtigungen zu erteilen und Mitarbeitern basierend auf verschiedensten Bedingungen Berechtigungen zuzuweisen. Beispielsweise könnte ein anderes Konto eine Richtlinie erstellen, die einem Benutzer Schreibzugriff erteilt:

  • Für einen bestimmten S3-Bucket

  • Aus dem Unternehmensnetzwerk eines Kontos

  • Während der Geschäftszeiten

Ein Konto kann einem Benutzer begrenzten Lese- und Schreibzugriff erteilen, einem anderen dagegen zusätzlich erlauben, Buckets zu erstellen und zu löschen. Ein Konto kann verschiedenen Niederlassungen erlauben, die Tagesberichte in einem einzelnen Bucket zu speichern. Es kann jeder Niederlassung gestatten, nur einen bestimmten Satz von Namen (z. B. "Nevada/*" oder "Utah/*") und nur aus dem IP-Adressbereich der betreffenden Niederlassung zu schreiben.

Anders als Zugriffskontrolllisten (siehe unten), die Berechtigungen nur für einzelne Objekte hinzufügen (gewähren), können Richtlinien Berechtigungen für alle Objekte (oder eine Untermenge davon) in einem Bucket hinzufügen oder verweigern. Mit einer Anforderung kann ein Konto Berechtigungen für beliebig viele Objekte in einem Bucket einrichten. Ein Konto kann Platzhalterzeichen (vergleichbar den Operatoren für reguläre Ausdrücke) in Amazon-Ressourcennamen (ARNs) und anderen Werten verwenden. Das Konto kann so den Zugriff auf Gruppen von Objekten steuern, die ein gemeinsames Präfix oder einen gemeinsame Erweiterung wie .html aufweisen.

Nur der Bucket-Eigentümer darf einem Bucket eine Richtlinie zuzuordnen. Richtlinien (geschrieben in der Sprache der Zugriffsrichtlinie) erlauben oder verweigern Anforderungen basierend auf folgenden Kriterien:

  • Amazon S3-Bucket-Operationen (wie PUT ?acl und Objektoperationen (wie PUT Object oder GET Object)

  • Auftraggeber

  • In der Richtlinie angegebene Bedingungen

Ein Konto kann den Zugriff auf der Basis bestimmter Amazon S3-Operationen steuern, beispielsweise GetObject, GetObjectVersion, DeleteObject oder DeleteBucket.

Bei den Bedingungen kann es sich um Dinge wie IP-Adressen, IP-Adressbereiche in CIDR-Notation, Datumswerte, Benutzeragenten, HTTP-Referrer und Transportprotokolle (HTTP und HTTPS) handeln.

Weitere Informationen finden Sie unter Verwendung von Bucket-Richtlinien und Benutzerrichtlinien.

AWS Identity and Access Management

Mit AWS Identity and Access Management (IAM) können Sie den Zugriff auf Amazon S3-Ressourcen verwalten.

Sie können z. B. IAM zusammen mit Amazon S3 verwenden, um die Zugriffsart für einen Benutzer oder eine Benutzergruppe für bestimmte Teile eines Amazon S3-Buckets, den das AWS-Konto besitzt, zu steuern.

Weitere Informationen zu IAM finden Sie unter:

Zugriffskontrolllisten

Sie können den Zugriff auf alle Buckets und Objekte mit einer Zugriffskontrollrichtlinie (ACL) steuern. Weitere Informationen finden Sie unter Zugriffsverwaltung mit ACLs.

Versioning

Mit Versioning ist es möglich, mehrere Versionen eines Objekts in einem Bucket zu verwalten. Weitere Informationen finden Sie unter Objekt-Versioning.

Operationen

Nachfolgend finden Sie die gebräuchlichsten Operationen, die über die API ausgeführt werden.

Gemeinsame Optionen

  • Erstellen eines Buckets: Erstellen und benennen Sie einen eigenen Bucket, in dem die Objekte gespeichert werden sollen.

  • Schreiben eines Objekts: Speichern Sie Daten durch Erstellen oder Überschreiben eines Objekts. Wenn Sie ein Objekt schreiben, müssen Sie einen im Namespace Ihres Buckets eindeutigen Schlüssel angeben. Dies ist auch ein guter Moment, eine etwaige Zugriffskontrolle für das Objekt festzulegen.

  • Lesen eines Objekts: Daten auslesen. Sie können die Daten über HTTP oder BitTorrent herunterladen.

  • Löschen eines Objekts: Löschen Sie Daten selektiv.

  • Auflisten von Schlüsseln: Listen Sie die in einem Ihrer Buckets enthaltenen Schlüssel auf. Sie können die Schlüsselliste basierend auf einem Präfix filtern.

Diese Operationen und alle anderen Funktionen werden in diesem Handbuch beschrieben.

Amazon S3 Application Programming Interfaces (API)

Die Amazon S3-Architektur ist so ausgelegt, dass sie unabhängig von Programmiersprachen ist und die AWS-unterstützten Schnittstellen verwendet, um Objekte zu speichern und abzurufen.

Amazon S3 unterstützt eine REST- und eine SOAP-Schnittstelle. Diese sind ähnlich, es gibt jedoch einige Unterschiede. Beispielsweise werden über die REST-Schnittstelle Metadaten in HTTP-Headern zurückgegeben. Wir unterstützen nur HTTP-Anfragen von bis zu 4 KB (ohne den Rumpf), deshalb ist die Menge der von Ihnen bereitgestellten Metadaten begrenzt.

Anmerkung

Die SOAP-Unterstützung über HTTP ist veraltet, steht über HTTPS aber noch zur Verfügung. Die neuen Amazon S3-Funktionen werden unter SOAP nicht unterstützt. Wir empfehlen, entweder die REST API oder die AWS SDKs zu verwenden.

Die REST-Schnittstelle

Die REST API ist eine HTTP-Schnittstelle für Amazon S3. Mit REST verwenden Sie HTTP-Standardanfragen, um Buckets und Objekte zu erstellen, laden oder löschen.

Sie können einen beliebigen Toolkit einsetzen, der HTTP unterstützt, um die REST API verwenden zu können. Sie können sogar einen Browser verwenden, um Objekte zu laden, wenn diese anonym lesbar sind.

Die REST API verwendet die HTTP-Standardheader und -Statuscodes, sodass sich Standard-Browser und -Toolkits wie erwartet verhalten. In einigen Bereichen haben wir HTTP um zusätzliche Funktionen erweitert (wir haben beispielsweise Header hinzugefügt, um die Zugriffskontrolle zu unterstützen). In diesen Fällen haben wir alles dafür getan, die neue Funktion so hinzuzufügen, dass sie der standardmäßigen Nutzung von HTTP entsprechen.

Die SOAP-Schnittstelle

Anmerkung

Die SOAP-Unterstützung über HTTP ist veraltet, steht über HTTPS aber noch zur Verfügung. Die neuen Amazon S3-Funktionen werden unter SOAP nicht unterstützt. Wir empfehlen, entweder die REST API oder die AWS SDKs zu verwenden.

Die SOAP API bietet eine SOAP 1.1-Schnittstelle mit Dokumentliteral-Codierung. SOAP wird am häufigsten verwendet, um die WSDL herunterzuladen (siehe http://doc.s3.amazonaws.com/2006-03-01/AmazonS3.wsdl), dann mittels eines SOAP-Toolkits wie Apache Axis oder Microsoft .NET Bindungen zu erstellen und anschließend Code zu schreiben, der diese Bindungen für den Aufruf von Amazon S3 verwendet.

Bezahlen für Amazon S3

Die Preise für Amazon S3 sind so ausgelegt, dass Sie nicht im Hinblick auf die Speicheranforderungen Ihrer Anwendung planen müssen. Die meisten Speicheranbieter zwingen Sie, eine vorab festgelegte Speichermenge und Netzwerkübertragungskapazität zu kaufen: Wenn Sie diese Kapazität überschreiten, wird Ihr Service abgeschaltet, und Sie zahlen hohe Überziehungsgebühren. Wenn Sie diese Kapazität nicht überschreiten, zahlen Sie genauso viel, als wenn Sie sie verwendet hätten.

Amazon S3 stellt Ihnen nur Gebühren für Kapazitäten in Rechnung, die Sie tatsächlich genutzt haben, ohne verborgene Kosten und Überziehungsgebühren. Auf diese Weise erhalten die Entwickler einen Service mit variablen Kosten, der zusammen mit ihrem Unternehmen wächst, während sie gleichzeitig die Kostenvorteile der AWS-Infrastruktur genießen.

Bevor Sie etwas in Amazon S3 speichern, müssen Sie sich beim Service registrieren und eine Zahlungsweise angeben, damit die Kosten am Monatsende belastet werden können. Es gibt keine Einrichtungsgebühren für den Service. Die festgelegte Zahlungsweise wird am Ende des Monats automatisch mit dem Betrag für die monatliche Nutzung belastet.

Information über die Bezahlung von Amazon S3-Speicher finden Sie unter Amazon S3-Preise.

Verwandte Dienstleistungen

Nachdem Sie Daten in Amazon S3 hochgeladen haben, können Sie sie mit anderen AWS-Services nutzen. Häufig genutzte Services:

  • Amazon Elastic Compute Cloud (Amazon EC2): Dieser Service stellt virtuelle Datenverarbeitungsressourcen in der Cloud bereit. Weitere Informationen finden Sie auf der Produktdetailseite von Amazon EC2.

  • Amazon EMR: Mit diesem Service können Unternehmen, Forschungseinrichtungen, Datenanalysten und Entwickler einfach und kosteneffektiv riesige Datenmengen verarbeiten. Er nutzt ein gehostetes Hadoop-Framework, das auf der Amazon EC2- und Amazon S3-Infrastruktur im Web-Maßstab ausgeführt wird. Weitere Informationen finden Sie auf der Produktdetailseite von Amazon EMR.

  • AWS Snowball: Dieser Service beschleunigt die Übertragung großer Datenmengen von und nach AWS mit physischen Speichergeräten durch Umgehung des Internets. Mit allen AWS Snowball-Gerätetypen lassen sich Daten schneller als im Internet transportieren. Die Geräte mit den Daten werden durch einen regionalen Kurierdienst transportiert. Weitere Informationen finden Sie auf der Produktdetailseite von AWS Snowball.