HTMLFormulare (AWS Signaturversion 2) - 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.

HTMLFormulare (AWS Signaturversion 2)

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: private | public-read | public-read-write | aws-exec-read | authenticated-read | bucket-owner-read | bucket-owner-full-control

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.

Anmerkung

Der 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.

Anmerkung

Einige Versionen des Adobe Flash Players verarbeiten HTTP Antworten mit leerem Text nicht richtig. Zur Unterstützung von Uploads über Adobe Flash empfehlen wir, success_action_status auf 201 zu setzen.

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 x-amz-security-token Formularfelder erforderlich: eines für das Produkt-Token und eines für das Benutzer-Token.

Wenn die Anforderung Sitzungsanmeldedaten verwendet, ist ein x-amz-security-token-Formular erforderlich. Weitere Informationen finden Sie unter Temporäre Sicherheitsanmeldedaten im IAMBenutzerhandbuch.

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 starts-with.

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 starts-with.

Schlüssel

Der Name des hochgeladenen Schlüssels.

Unterstützt exakte Übereinstimmung und starts-with.

success_action_redirect, redirect

DerURL, zu dem der Client bei erfolgreichem Upload umgeleitet wird.

Unterstützt exakte Übereinstimmung und starts-with.

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 x-amz-security-token Formularfelder erforderlich: eines für das Produkt-Token und eines für das Benutzer-Token. Daher müssen die Werte durch Kommata voneinander getrennt werden. Zum Beispiel: Wenn der Benutzer-Token eW91dHViZQ== und der Produkt-Token b0hnNVNKWVJIQTA= ist, setzen Sie den Richtlinieneintrag auf: { "x-amz-security-token": "eW91dHViZQ==,b0hnNVNKWVJIQTA=" }.

Andere Feldnamen mit dem x-amz-meta Präfix -

Vom Benutzer angegebene Metadaten

Unterstützt exakte Übereinstimmung und starts-with.

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:

{"acl": "public-read" }

Dieses Beispiel ist eine alternative Methode, um anzugeben, dass für auf public-read gesetzt werden ACL muss:

[ "eq", "$acl", "public-read" ]

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:

["starts-with", "$key", "user/betty/"]

Ü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:

["starts-with", "$success_action_redirect", ""]

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:

["content-length-range", 1048579, 10485760]

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

\ uxxxx

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.