Fügen Sie mit der S3 PutObject-Anfrage ein Objekt zu einem Bucket in StorageGRID hinzu
Sie können die S3 PutObject Anfrage verwenden, um ein Objekt zu einem Bucket hinzuzufügen.
Konflikte beheben
Konfliktierende Clientanfragen, beispielsweise wenn zwei Clients auf denselben Schlüssel schreiben, werden nach dem Prinzip „latest-wins“ aufgelöst. Der Zeitpunkt der „latest-wins“-Auswertung richtet sich danach, wann das StorageGRID System die jeweilige Anfrage abgeschlossen hat, und nicht danach, wann S3 Clients eine Operation starten.
Objektgröße
Die maximal empfohlene Größe für einen einzelnen PutObject-Vorgang beträgt 5 GiB (5.368.709.120 Byte). Bei Objekten, die größer als 5 GiB sind, sollte stattdessen "mehrteiliger Upload" verwendet werden.
Die maximal unterstützte Größe für eine einzelne PutObject-Operation beträgt 5 TiB (5.497.558.138.880 Bytes).
|
|
Wenn Sie von StorageGRID 11.6 oder einer älteren Version aktualisiert haben, wird die Warnung „S3 PUT Object size too large“ ausgelöst, wenn Sie versuchen, ein Objekt mit mehr als 5 GiB hochzuladen. Bei einer Neuinstallation von StorageGRID 11.7 oder 11.8 wird die Warnung in diesem Fall nicht ausgelöst. Um jedoch dem AWS S3-Standard zu entsprechen, werden zukünftige Versionen von StorageGRID keine Uploads von Objekten mit mehr als 5 GiB unterstützen. |
Größe der Benutzermetadaten
Amazon S3 beschränkt die Größe benutzerdefinierter Metadaten in jedem PUT-Anfrageheader auf 2 KB. StorageGRID beschränkt benutzerdefinierte Metadaten auf 24 KiB. Die Größe benutzerdefinierter Metadaten wird durch die Summe der Anzahl der Bytes in der UTF-8-Kodierung jedes Schlüssels und Werts gemessen.
UTF-8-Zeichen in Benutzermetadaten
Wenn eine Anfrage (nicht maskierte) UTF-8-Werte im Schlüsselnamen oder Wert von benutzerdefinierten Metadaten enthält, ist das Verhalten von StorageGRID undefiniert.
StorageGRID analysiert oder interpretiert keine maskierten UTF-8-Zeichen, die im Schlüsselname oder -wert benutzerdefinierter Metadaten enthalten sind. Maskierte UTF-8-Zeichen werden als ASCII-Zeichen behandelt.
-
PutObject, CopyObject, GetObject und HeadObject-Anfragen sind erfolgreich, wenn die benutzerdefinierten Metadaten maskierte UTF-8-Zeichen enthalten.
-
StorageGRID gibt den
x-amz-missing-metaHeader nicht zurück, wenn der interpretierte Wert des Schlüsselnamens oder -werts nicht druckbare Zeichen enthält.
Objekt-Tag-Grenzwerte
Sie können neuen Objekten beim Hochladen Tags hinzufügen oder sie bestehenden Objekten hinzufügen. Sowohl StorageGRID als auch Amazon S3 unterstützen bis zu 10 Tags pro Objekt. Tags, die einem Objekt zugeordnet sind, müssen eindeutige Tag-Schlüssel haben. Ein Tag-Schlüssel kann bis zu 128 Unicode-Zeichen lang sein und Tag-Werte können bis zu 256 Unicode-Zeichen lang sein. Schlüssel und Werte sind Groß-/Kleinschreibung.
Objektbesitz
In StorageGRID gehören alle Objekte dem Bucket-Besitzerkonto, einschließlich Objekten, die von einem Nicht-Besitzerkonto oder einem anonymen Benutzer erstellt wurden.
Unterstützte Anfrageheader
Die folgenden Anfrage-Header werden unterstützt:
-
Cache-Control -
Content-Disposition -
Content-EncodingWenn Sie `aws-chunked`für
Content-EncodingStorageGRID angeben, werden die folgenden Punkte nicht überprüft:-
StorageGRID überprüft die
chunk-signaturenicht anhand der Chunk-Daten. -
StorageGRID überprüft den von Ihnen angegebenen Wert `x-amz-decoded-content-length`nicht anhand des Objekts.
-
-
Content-Language -
Content-Length -
Content-MD5 -
Content-Type -
Expires -
Transfer-EncodingChunked Transfer-Codierung wird unterstützt, wenn
aws-chunkedNutzlast-Signierung ebenfalls verwendet wird. -
x-amz-checksum-sha256 -
x-amz-meta-, gefolgt von einem Name-Wert-Paar mit benutzerdefinierten Metadaten.Beim Festlegen des Namen-Wert-Paares für benutzerdefinierte Metadaten wird dieses allgemeine Format verwendet:
x-amz-meta-name: value
Wenn die Option Benutzerdefinierte Erstellungszeit als Referenzzeit für eine ILM-Regel verwendet werden soll, muss
creation-timeals Name der Metadaten verwendet werden, die den Erstellungszeitpunkt des Objekts aufzeichnen. Beispielsweise:x-amz-meta-creation-time: 1443399726
Der Wert für
creation-timewird als Sekunden seit dem 1. Januar 1970 ausgewertet.Eine ILM-Regel kann nicht sowohl eine benutzerdefinierte Erstellungszeit für die Referenzzeit als auch die Aufnahmeoption Balanced oder Strict verwenden. Beim Erstellen der ILM-Regel tritt ein Fehler auf. -
x-amz-tagging -
S3 Object Lock Anforderungsheader
-
x-amz-object-lock-mode -
x-amz-object-lock-retain-until-date -
x-amz-object-lock-legal-holdWird eine Anfrage ohne diese Header gestellt, werden die Standard-Aufbewahrungseinstellungen des Buckets verwendet, um den Objektversionsmodus und das Aufbewahrungsdatum zu berechnen. Siehe "S3 REST API zur Konfiguration von S3 Object Lock verwenden".
-
-
SSE-Anforderungsheader:
-
x-amz-server-side-encryption -
x-amz-server-side-encryption-customer-key-MD5 -
x-amz-server-side-encryption-customer-key -
x-amz-server-side-encryption-customer-algorithm
-
Nicht unterstützte Anfrageheader
Die folgenden Anfrageheader werden nicht unterstützt:
-
If-MatchDas
If-Match headerwird akzeptiert, ist aber nicht funktionsfähig. -
If-None-MatchDas
If-None-Match headerwird akzeptiert, ist aber nicht funktionsfähig. -
x-amz-acl -
x-amz-sdk-checksum-algorithm -
x-amz-trailer -
x-amz-website-redirect-locationDer
x-amz-website-redirect-location`Header gibt `XNotImplementedzurück.
Speicherklassenoptionen
Der x-amz-storage-class Anforderungsheader wird unterstützt. Der übermittelte Wert für x-amz-storage-class beeinflusst, wie StorageGRID Objektdaten während der Aufnahme schützt und nicht, wie viele persistente Kopien des Objekts im StorageGRID System gespeichert werden (dies wird durch ILM bestimmt).
Wenn die ILM-Regel, die auf ein aufgenommenes Objekt zutrifft, die Strict-Aufnahmeoption verwendet, hat der x-amz-storage-class Header keine Auswirkung.
Folgende Werte können für x-amz-storage-class verwendet werden:
-
STANDARD(Standard)-
Doppelter Commit: Wenn die ILM-Regel die Option „Doppelter Commit“ für das Aufnahmeverhalten festlegt, wird nach der Aufnahme eines Objekts eine zweite Kopie dieses Objekts erstellt und auf einem anderen Storage Node verteilt (doppelter Commit). Bei der Auswertung der ILM wird von StorageGRID geprüft, ob diese anfänglichen Zwischenkopien den Platzierungsanweisungen in der Regel entsprechen. Falls dies nicht der Fall ist, müssen möglicherweise neue Objektkopien an anderen Speicherorten erstellt und die anfänglichen Zwischenkopien gelöscht werden.
-
Ausgeglichen: Wenn die ILM-Regel die Option „Ausgeglichen“ vorsieht und StorageGRID nicht sofort alle in der Regel angegebenen Kopien erstellen kann, erstellt StorageGRID zwei Zwischenkopien auf verschiedenen Storage Nodes.
Wenn StorageGRID alle in der ILM-Regel angegebenen Objektkopien sofort erstellen kann (synchrones Placement), hat der `x-amz-storage-class`Header keine Auswirkung.
-
-
REDUCED_REDUNDANCY-
Dual commit: Wenn die ILM-Regel die Option Dual commit für das Aufnahmeverhalten angibt, erstellt StorageGRID beim Aufnehmen des Objekts eine einzelne Zwischenkopie (single commit).
-
Ausgeglichen: Wenn die ILM-Regel die Option „Ausgeglichen“ angibt, erstellt StorageGRID nur dann eine einzelne Zwischenkopie, wenn das System nicht sofort alle in der Regel angegebenen Kopien erstellen kann. Wenn StorageGRID eine synchrone Platzierung durchführen kann, hat dieser Header keine Auswirkung. Die
REDUCED_REDUNDANCYOption ist am besten geeignet, wenn die ILM-Regel, die auf das Objekt zutrifft, eine einzelne replizierte Kopie erstellt. In diesem Fall wird durch die Verwendung vonREDUCED_REDUNDANCYdiese Option das unnötige Erstellen und Löschen einer zusätzlichen Objektkopie bei jedem Ingest-Vorgang vermieden.
Die Verwendung der
REDUCED_REDUNDANCYOption wird unter anderen Umständen nicht empfohlen.REDUCED_REDUNDANCYDas Risiko von Objekt-Datenverlust während der Aufnahme wird dadurch erhöht. Beispielsweise kann es zu Datenverlust kommen, wenn die einzige Kopie zunächst auf einem Storage Node gespeichert wird, der ausfällt, bevor die ILM-Auswertung erfolgen kann. -
|
|
Wenn für einen bestimmten Zeitraum nur eine replizierte Kopie vorhanden ist, besteht das Risiko eines dauerhaften Datenverlusts. Wenn nur eine replizierte Kopie eines Objekts existiert, geht dieses Objekt verloren, wenn ein Storage Node ausfällt oder einen schwerwiegenden Fehler aufweist. Auch während Wartungsarbeiten wie Upgrades ist der Zugriff auf das Objekt vorübergehend nicht möglich. |
Die Angabe von REDUCED_REDUNDANCY wirkt sich lediglich darauf aus, wie viele Kopien beim erstmaligen Einlesen eines Objekts erstellt werden. Sie hat keinen Einfluss darauf, wie viele Kopien des Objekts bei der Auswertung durch die aktiven ILM-Richtlinien erstellt werden und führt nicht dazu, dass Daten im StorageGRID System mit geringerer Redundanz gespeichert werden.
|
|
Wenn Sie ein Objekt in einen Bucket mit aktiviertem S3 Object Lock importieren, wird die REDUCED_REDUNDANCY Option ignoriert. Wenn Sie ein Objekt in einen älteren Compliant-Bucket importieren, gibt die REDUCED_REDUNDANCY Option einen Fehler zurück. StorageGRID führt immer einen Dual-Commit-Import durch, um die Einhaltung der Compliance-Anforderungen zu gewährleisten.
|
Anfrage-Header für serverseitige Verschlüsselung
Sie können die folgenden Anfrageheader verwenden, um ein Objekt mit serverseitiger Verschlüsselung zu verschlüsseln. Die Optionen SSE und SSE-C schließen sich gegenseitig aus.
-
SSE: Der folgende Header ist zu verwenden, wenn das Objekt mit einem von StorageGRID verwalteten eindeutigen Schlüssel verschlüsselt werden soll.
-
x-amz-server-side-encryptionWenn der `x-amz-server-side-encryption`Header nicht in der PutObject-Anfrage enthalten ist, wird die grid-weite "Einstellung für die Verschlüsselung gespeicherter Objekte" aus der PutObject-Antwort ausgelassen.
-
-
SSE-C: Alle drei dieser Header werden verwendet, wenn das Objekt mit einem eindeutigen Schlüssel verschlüsselt werden soll, den Sie bereitstellen und verwalten.
-
x-amz-server-side-encryption-customer-algorithm: AngebenAES256. -
x-amz-server-side-encryption-customer-key: Geben Sie Ihren Verschlüsselungsschlüssel für das neue Objekt an. -
x-amz-server-side-encryption-customer-key-MD5: Der MD5-Digest des Verschlüsselungsschlüssels des neuen Objekts ist anzugeben.
-
|
|
Die von Ihnen bereitgestellten Verschlüsselungsschlüssel werden niemals gespeichert. Wenn Sie einen Verschlüsselungsschlüssel verlieren, verlieren Sie das zugehörige Objekt. Vor der Verwendung von kundenseitig bereitgestellten Schlüsseln zur Sicherung von Objektdaten sollten die Hinweise zu "Verwendung serverseitiger Verschlüsselung" beachtet werden. |
|
|
Wenn ein Objekt mit SSE oder SSE-C verschlüsselt ist, werden alle Verschlüsselungseinstellungen auf Bucket- oder Grid-Ebene ignoriert. |
Versionierung
Wenn die Versionierung für einen Bucket aktiviert ist, wird automatisch eine eindeutige versionId für die Version des gespeicherten Objekts generiert. Diese versionId wird auch in der Antwort mit dem x-amz-version-id Response-Header zurückgegeben.
Wenn die Versionsverwaltung ausgesetzt ist, wird die Objektversion mit einem Nullwert versionId gespeichert, und falls bereits eine Nullversion existiert, wird diese überschrieben.
Signaturberechnungen für den Authorization-Header
Bei der Verwendung des Authorization Headers zur Authentifizierung von Anfragen unterscheidet sich StorageGRID von AWS in folgenden Punkten:
-
StorageGRID erfordert nicht, dass
host-Header innerhalb vonCanonicalHeadersenthalten sind. -
StorageGRID erfordert nicht, dass
Content-Typeinnerhalb vonCanonicalHeadersenthalten ist. -
StorageGRID erfordert nicht, dass
x-amz-*-Header innerhalb vonCanonicalHeadersenthalten sind.
|
|
Als allgemeine Best Practice sollten diese Header immer innerhalb von CanonicalHeaders enthalten sein, damit sie überprüft werden; wenn diese Header jedoch ausgeschlossen werden, gibt StorageGRID keinen Fehler zurück.
|
Weitere Informationen finden Sie unter "Signaturberechnungen für den Authorization Header: Übertragung der Nutzlast in einem einzigen Chunk (AWS Signature Version 4)".