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.
HTMLFormulare (AWS Signaturversion 2)
Themen
Wenn Sie mit Amazon S3 kommunizieren, verwenden Sie normalerweise das REST oder, SOAP API um Put-, Get-, Delete- und andere Operationen auszuführen. Mit POST laden Benutzer Daten direkt über ihren Browser auf Amazon S3 hoch, der die Anfrage nicht verarbeiten SOAP API oder eine REST PUT
Anfrage erstellen kann.
Anmerkung
SOAPSupport Over HTTP ist veraltet, aber SOAP immer noch verfügbar. HTTPS Neue Amazon S3 S3-Funktionen werden nicht unterstütztSOAP. Anstatt zu verwendenSOAP, empfehlen wir, entweder den REST API oder den zu verwenden AWS SDKs.
Um Benutzern das Hochladen von Inhalten auf Amazon S3 mithilfe ihrer Browser zu ermöglichen, verwenden Sie HTML Formulare. HTMLFormulare bestehen aus einer Formulardeklaration und Formularfeldern. Die Formulardeklaration enthält allgemeine Informationen zu der Anfrage. Die Formularfelder enthalten detaillierte Informationen zu der Anfragen sowie die Richtlinie, die verwendet wird, um die Anfrage zu authentifizieren und um sicherzustellen, dass sie den von Ihnen angegebenen Bedingungen entspricht.
Anmerkung
Daten und Grenzen des Formulars (ausschließlich der Inhalte der Datei) dürfen 20 KB nicht überschreiten.
In diesem Abschnitt wird die Verwendung von HTML Formularen erklärt.
HTMLKodierung von Formularen
Das Formular und die Richtlinie müssen UTF -8-kodiert sein. Sie können die Kodierung UTF -8 auf das Formular anwenden, indem Sie es in der HTML Überschrift oder als Anforderungsheader angeben.
Anmerkung
Die HTML Formulardeklaration akzeptiert keine Authentifizierungsparameter für Abfragezeichenfolgen.
Im Folgenden finden Sie ein Beispiel für die UTF -8-Kodierung in der HTML Überschrift:
<html> <head> ... <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> ... </head> <body>
Das Folgende ist ein Beispiel für die UTF -8-Kodierung in einem Anforderungsheader:
Content-Type: text/html; charset=UTF-8
HTMLFormulardeklaration
Die Formulardeklaration besteht aus drei Komponenten: der Aktion, der Methode und dem Umschließungstyp. Wenn einer dieser Werte nicht korrekt eingestellt ist, schlägt die Anforderung fehl.
Die Aktion gibt die anURL, die die Anfrage verarbeitet. Diese muss auf den Wert URL des Buckets gesetzt werden. Wenn der Name Ihres Buckets beispielsweise lautet awsexamplebucket1
und die Region „USA West“ (Nordkalifornien) lautet, URL ist derhttps://awsexamplebucket1.s3.us-west-1.amazonaws.com/
.
Anmerkung
Der Schlüsselname wird in einem Formularfeld angegeben.
Die Methode muss seinPOST.
Der Umschließungstyp (enctype) muss angegeben werden und auf Multipart/Form-Daten für Datei- und Textbereich-Uploads gesetzt sein. Weitere Informationen finden Sie unter RFC1867
Beispiel
Das folgende Beispiel zeigt eine Formulardeklaration für den Bucket „awsexamplebucket1“.
<form action="https://awsexamplebucket1.s3.us-west-1.amazonaws.com/" method="post" enctype="multipart/form-data">
HTMLFormularfelder
In der folgenden Tabelle werden Felder beschrieben, die in einem HTML Formular verwendet werden können.
Anmerkung
Die Variable ${filename}
wird automatisch durch den Namen der Datei ersetzt, den der Benutzer bereitstellt, und der von allen Formularfeldern anerkannt wird. Wenn der Browser oder Client einen vollständigen oder teilweisen Pfad zu der Datei bereitstellt, wird nur der Text nach dem letzten Schrägstrich (/) oder umgekehrten Schrägstrich (\) verwendet. Beispielsweise wird „C:\Program Files\directory1\file.txt“ als „file.txt“ interpretiert. Wenn keine Datei bzw. kein Dateiname angegeben ist, wird die Variable durch eine leere Zeichenfolge ersetzt.
Feldname | Beschreibung | Erforderlich |
---|---|---|
AWSAccessKeyId |
Die AWS Zugriffsschlüssel-ID des Besitzers des Buckets, der einem anonymen Benutzer Zugriff auf eine Anfrage gewährt, die die Einschränkungen in der Richtlinie erfüllt. Dies ist ein Pflichtfeld, wenn die Anforderung ein Richtliniendokument beinhaltet. |
Bedingt |
acl |
Eine Amazon S3 S3-Zugriffskontrollliste (ACL). Wenn eine ungültige Zugriffskontrollliste angegeben ist, wird ein Fehler generiert. Weitere Informationen zu ACLs finden Sie unter Zugriffskontrolllisten (ACLs). Typ: Zeichenfolge Standard: privat Zulässige Werte: |
Nein |
Cache-Control, Content-Type, Content-Disposition,
Content-Encoding, Expires |
REST-spezifische Header. Weitere Informationen finden Sie unter PUT Objekt. |
Nein |
key |
Der Name des hochgeladenen Schlüssels. verwenden Sie die Variable $(filename), um den von dem Benutzer angegebenen Dateinamen zu verwenden. Zum Beispiel: Wenn Benutzerin „Betty“ die Datei „lolcatz.jpg“ hochlädt, und Sie „/user/betty/${filename}“ angeben, wird die Datei als „/user/betty/lolcatz.jpg“ gespeichert. Weitere Informationen finden Sie unter Arbeiten mit Objekt-Metadaten. |
Ja |
policy |
Die Sicherheitsrichtlinie, die angibt, was in der Anforderung zulässig ist. Anforderungen ohne Sicherheitsrichtlinie gelten als anonym und sind nur auf öffentlich zugänglichen Buckets erfolgreich. |
Nein |
success_action_redirect, redirect |
Der ClientURL, zu dem der Client bei erfolgreichem Upload umgeleitet wird. Amazon S3 hängt die Bucket-, Schlüssel- und Etag-Werte als Abfragezeichenfolgenparameter an die URL an. Wenn success_action_redirect nicht angegeben ist, gibt Amazon S3 den leeren Dokumententyp zurück, der im Feld success_action_status angegeben ist. Wenn Amazon S3 das nicht interpretieren kannURL, ignoriert es das Feld. Wenn der Upload fehlschlägt, zeigt Amazon S3 einen Fehler an und leitet den Benutzer nicht zu a weiterURL. Weitere Informationen finden Sie unter Umleitung. AnmerkungDer Name des Umleitungsfeldes ist veraltet, und das Feld wird künftig nicht mehr unterstützt. |
Nein |
success_action_status |
Der an den Client bei einem erfolgreichen Upload ausgegebene Statuscode, wenn success_action_redirect nicht angegeben ist. Gültige Werte sind 200, 201 und 204 (Standard). Wenn der Wert auf 200 oder 204 gesetzt ist, gibt Amazon S3 ein leeres Dokument mit dem Statuscode 200 oder 204 aus. Wenn der Wert auf 201 festgelegt ist, gibt Amazon S3 ein XML Dokument mit einem 201-Statuscode zurück. Informationen zum Inhalt des XML Dokuments finden Sie unter POSTObjekt. Wenn der Wert nicht oder auf einen falschen Wert gesetzt ist, gibt Amazon S3 ein leeres Dokument mit dem Statuscode 204 aus. AnmerkungEinige Versionen des Adobe Flash Players verarbeiten HTTP Antworten mit leerem Text nicht richtig. Zur Unterstützung von Uploads über Adobe Flash empfehlen wir, |
Nein |
signature |
Die HMAC Signatur, die unter Verwendung des geheimen Zugriffsschlüssels erstellt wurde, der dem angegebenen entsprichtAWSAccessKeyId. Dies ist ein Pflichtfeld, wenn die Anforderung ein Richtliniendokument beinhaltet. Weitere Informationen finden Sie unter Identity and Access Management für Amazon S3. |
Bedingt |
x-amz-security-token |
Ein Sicherheitstoken, das von Sitzungsanmeldeinformationen verwendet wird Wenn die Anfrage Amazon DevPay verwendet, sind zwei Wenn die Anforderung Sitzungsanmeldedaten verwendet, ist ein |
Nein |
Andere Feldnamen mit dem x-amz-meta Präfix - |
Vom Benutzer angegebene Metadaten Amazon S3 validiert oder verwendet diese Daten nicht. Weitere Informationen finden Sie unter PUTObjekt. |
Nein |
file |
Datei oder Textinhalt. Die Datei oder der Inhalt muss das letzte Feld des Formulars sein. Alle Felder darunter werden ignoriert. Sie können nicht mehr als eine Datei zur gleichen Zeit hochladen. |
Ja |
Richtlinienerstellung
Bei der Richtlinie handelt es sich um ein UTF -8- und Base64-kodiertes JSON Dokument, das die Bedingungen festlegt, die die Anforderung erfüllen muss, und das zur Authentifizierung des Inhalts verwendet wird. Je nach dem, wie Sie Ihre Richtliniendokumente gestalten, können Sie sie pro Upload, pro Benutzer, für alle Uploads oder nach anderen Kriterien, die Ihren Anforderungen entsprechen, verwenden.
Anmerkung
Obwohl das Richtliniendokument optional ist, empfehlen nachdrücklich, es zu verwenden, anstatt einen Bucket öffentlich beschreibbar zu machen.
Nachstehend finden Sie ein Beispiel für ein Richtliniendokument:
{ "expiration": "2007-12-01T12:00:00.000Z", "conditions": [ {"acl": "public-read" }, {"bucket": "awsexamplebucket1" }, ["starts-with", "$key", "user/eric/"], ] }
Das Richtliniendokument enthält den Ablauf und die Bedingungen.
Ablauf
Das Ablaufelement gibt das Ablaufdatum der Richtlinie im 8601-Datumsformat an. ISO UTC Beispielsweise gibt „2007-12-01T 12:00:00.000 Z“ an, dass die Richtlinie am 01.12.2007 nach Mitternacht nicht gültig ist. UTC Die Angabe des Ablaufs ist in einer Richtlinie erforderlich.
Bedingungen
Die Bedingungen in dem Richtliniendokument validieren den Inhalt des hochgeladenen Objekts. Jedes Formularfeld, das Sie im Formular angeben (mit Ausnahme von Signatur-, Datei-AWSAccessKeyId, Richtlinien- und Feldnamen, die ein x-ignore- Präfix haben), muss in der Liste der Bedingungen enthalten sein.
Anmerkung
Wenn Sie mehrere Felder mit dem gleichen Namen haben, müssen die Werte durch Kommata abgeteilt sein. Wenn Sie beispielsweise zwei Felder mit dem Namen "x-amz-meta-tag" haben und das erste den Wert „Ninja“ und das zweite den Wert „Stallman“ hat, würden Sie das Richtliniendokument auf einstellen. Ninja,Stallman
Alle Variablen in dem Formular werden vor der Validierung der Richtlinie erweitert. Daher müssen alle Bedingungsabgleiche anhand der erweiterten Felder vorgenommen werden. Zum Beispiel: Wenn Sie das Schlüsselfeld auf user/betty/${filename}
setzen, ist Ihre Richtlinie möglicherweise [
"starts-with", "$key", "user/betty/" ]
. Geben Sie nicht ei [
"starts-with", "$key", "user/betty/${filename}" ]
. Weitere Informationen finden Sie unter Übereinstimmung von Bedingungen.
Die folgende Tabelle beschreibt die Bedingungen für Richtliniendokumente.
Elementname | Beschreibung |
---|---|
acl |
Gibt die Bedingungen an, die erfüllt werden müssenACL. Unterstützt exakte Übereinstimmung und |
content-length-range |
Gibt die erlaubte Mindest- und Höchstgröße des hochgeladenen Inhalts an. Unterstützt den Bereichsabgleich. |
Cache-Control, Content-Type, Content-Disposition, Content-Encoding, Expires |
REST-spezifische Header. Unterstützt exakte Übereinstimmung und |
Schlüssel |
Der Name des hochgeladenen Schlüssels. Unterstützt exakte Übereinstimmung und |
success_action_redirect, redirect |
DerURL, zu dem der Client bei erfolgreichem Upload umgeleitet wird. Unterstützt exakte Übereinstimmung und |
success_action_status |
Der an den Client bei einem erfolgreichen Upload ausgegebene Statuscode, wenn success_action_redirect nicht angegeben ist. Unterstützt exakte Übereinstimmung. |
x-amz-security-token |
DevPay Amazon-Sicherheitstoken. Für jede Anfrage, die Amazon verwendet, DevPay sind zwei |
Andere Feldnamen mit dem x-amz-meta Präfix - |
Vom Benutzer angegebene Metadaten Unterstützt exakte Übereinstimmung und |
Anmerkung
Wenn Ihr Toolkit weitere Felder hinzufügt (beispielsweise fügt Flash den Dateinamen hinzu), müssen Sie diese dem Richtliniendokument hinzufügen. Wenn Sie diese Funktionalität steuern können, setzen Sie x-ignore-
vor das Feld, sodass Amazon S3 die Funktion ignoriert und künftige Versionen davon unbeeinflusst lässt.
Übereinstimmung von Bedingungen
Die folgende Tabelle beschreibt die Übereinstimmungstypen von Bedingungen. Obwohl Sie für jedes Formularfeld, das Sie in dem Formular angeben, eine Bedingung angeben müssen, können Sie auch komplexere Übereinstimmungskriterien erstellen, indem Sie für ein Formularfeld mehrere Bedingungen angeben.
Bedingung | Beschreibung |
---|---|
Genaue Übereinstimmung |
Hierbei müssen die Felder spezifische Werte enthalten. Dieses Beispiel zeigt, dass der auf public-read gesetzt werden ACL muss:
Dieses Beispiel ist eine alternative Methode, um anzugeben, dass für auf public-read gesetzt werden ACL muss:
|
Beginnt mit |
Verwenden Sie diese Bedingung, wenn der Wert mit einem bestimmten Wert beginnen muss. In diesem Beispiel wird angegeben, dass der Schlüssel mit „user/betty“ beginnen muss:
|
Übereinstimmung mit beliebigem Inhalt |
Verwenden Sie „starts-with“ mit einem leeren Wert, um die Richtlinie so zu konfigurieren, dass in einem Feld beliebiger Inhalt zulässig ist. Dieses Beispiel lässt jeden Wert für success_action_redirect zu:
|
Angabe von Bereichen |
Wenn Felder Bereiche akzeptieren, trennen Sie die Ober- und die Untergrenze durch ein Komma voneinander ab. In diesem Beispiel sind Dateigrößen von 1 bis 10 Megabyte erlaubt:
|
Escape-Zeichen
Die folgende Tabelle beschreibt Zeichen, für die in einem Richtliniendokument ein Escape-Zeichen verwendet werden muss.
Escape-Sequenz | Beschreibung |
---|---|
\\ |
Umgekehrter Schrägstrich |
\$ |
Dollarzeichen |
\b |
Backspace |
\f |
Seitenvorschub |
\n |
Neue Zeile |
\r |
Zeilenumschaltung |
\t |
Horizontaler Tabulator |
\V |
Vertikaler Tabulator |
\ u |
Alle Unicode-Zeichen |
Erstellen einer Signatur
Schritt | Beschreibung |
---|---|
1 |
Kodieren Sie die Richtlinie mit UTF -8. |
2 |
Kodieren Sie diese UTF -8 Byte mit Base64. |
3 |
Signieren Sie die Richtlinie mit Ihrem geheimen Zugriffsschlüssel, indem Sie -1 verwenden. HMAC SHA |
4 |
Kodieren Sie die Signatur SHA -1 mit Base64. |
Allgemeine Informationen über die Authentifizierung finden Sie unter Identity and Access Management für Amazon S3.
Umleitung
In diesem Abschnitt wird beschrieben, wie Sie mit Umleitungen umgehen.
Allgemeine Umleitung
Nach Abschluss der POST Anfrage wird der Benutzer an den Ort weitergeleitet, den Sie in dem success_action_redirect
Feld angegeben haben. Wenn Amazon S3 das nicht interpretieren kannURL, ignoriert es das success_action_redirect
Feld.
Wenn success_action_redirect
nicht angegeben ist, gibt Amazon S3 den leeren Dokumententyp zurück, der im Feld success_action_status
angegeben ist.
Wenn die POST Anfrage fehlschlägt, zeigt Amazon S3 einen Fehler an und stellt keine Weiterleitung bereit.
Umleitung vor dem Upload
Wenn Ihr Bucket mit < CreateBucketConfiguration > erstellt wurde, benötigen Ihre Endbenutzer möglicherweise eine Umleitung. Wenn dies der Fall ist, kann es sein, das einige Browser mit der Umleitung nicht korrekt umgehen. Dies kommt relativ selten vor, meistens dann, wenn der Bucket gerade eben erstellt wurde.