Umbenennen von Objekten in Verzeichnis-Buckets - 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.

Umbenennen von Objekten in Verzeichnis-Buckets

Mithilfe dieser RenameObject Operation können Sie ein vorhandenes Objekt in einem Verzeichnis-Bucket, das die Speicherklasse S3 Express One Zone verwendet, atomar umbenennen, ohne dass Daten verschoben werden. Sie können ein Objekt umbenennen, indem Sie den Namen des vorhandenen Objekts als Quelle und den neuen Namen des Objekts als Ziel innerhalb desselben Verzeichnis-Buckets angeben. Der RenameObject API-Vorgang ist bei Objekten, die mit einem Schrägstrich (/) enden, nicht erfolgreich. Weitere Informationen finden Sie unter Benennen von Amazon S3 S3-Objekten.

Der RenameObject Vorgang wird in der Regel unabhängig von der Größe des Objekts in Millisekunden abgeschlossen. Diese Funktion beschleunigt Anwendungen wie die Verwaltung von Protokolldateien, die Medienverarbeitung und die Datenanalyse. Darüber hinaus RenameObject werden alle Eigenschaften der Objektmetadaten beibehalten, einschließlich der Speicherklasse, des Verschlüsselungstyps, des Erstellungsdatums, des Datums der letzten Änderung und der Prüfsummeneigenschaften.

Anmerkung

RenameObjectwird nur für Objekte unterstützt, die in der S3 Express One Zone-Speicherklasse gespeichert sind.

Um Zugriff auf den RenameObject Vorgang zu gewähren, empfehlen wir, den CreateSession Vorgang für die sitzungsbasierte Autorisierung zu verwenden. Insbesondere erteilen Sie die s3express:CreateSession Berechtigung für den Verzeichnis-Bucket in einer Bucket-Richtlinie oder einer identitätsbasierten Richtlinie. Anschließend führen Sie den CreateSession API-Aufruf für den Verzeichnis-Bucket durch, um ein Sitzungstoken zu erhalten. Mit dem Sitzungstoken in Ihrem Anforderungsheader können Sie API-Anfragen für diesen Vorgang stellen. Nachdem das Sitzungstoken abgelaufen ist, führen Sie einen weiteren CreateSession API-Aufruf durch, um ein neues Sitzungstoken zur Verwendung zu generieren. Die AWS CLI erstellt und AWS SDKs verwaltet Ihre Sitzung, einschließlich der automatischen Aktualisierung des Sitzungstokens, um Dienstunterbrechungen zu vermeiden, wenn eine Sitzung abläuft. Weitere Informationen zur Autorisierung finden Sie CreateSessionin der Amazon S3 S3-API-Referenz. Weitere Informationen zu API-Vorgängen für zonale Endgeräte finden Sie unter Autorisieren von API-Vorgängen für zonale Endgeräte mit. CreateSession

Wenn Sie ein vorhandenes Objekt nicht überschreiben möchten, können Sie den If-None-Match bedingten Header mit dem Wert ‘*’ in der Anfrage hinzufügen. RenameObject Amazon S3 gibt einen 412 Precondition Failed Fehler zurück, wenn der Objektname bereits existiert. Weitere Informationen finden Sie unter RenameObject in der Amazon-S3-API-Referenz.

RenameObjectist eine API-Operation für zonale Endpunkte (Vorgang auf Objektebene oder Datenebene), bei der angemeldet ist. AWS CloudTrail Sie können ihn verwenden CloudTrail , um Informationen über den RenameObject Vorgang, der an Ihren Objekten ausgeführt wurde, in Verzeichnis-Buckets zu sammeln. Weitere Informationen finden Sie unter Logging with AWS CloudTrail für Verzeichnis-Buckets und CloudTrail Logdatei-Beispiele für Verzeichnis-Buckets.

S3 Express One Zone ist die einzige SpeicherklasseRenameObject, die Anfragen (pro 1.000 Anfragen) in S3 Express One Zone unterstützt. Der Preis ist dabei genauso hoch wie PUT COPYPOST,, und LIST Anfragen (pro 1.000 Anfragen). Weitere Informationen finden Sie unter Amazon S3 – Preise.

Ein Objekt umbenennen

Um ein Objekt in Ihrem Verzeichnis-Bucket umzubenennen, können Sie die Amazon S3-Konsole, AWS CLI AWS SDKs, die REST-API oder Mountpoint für Amazon S3 (Version 1.19.0 oder höher) verwenden.

Um ein Objekt in einem Verzeichnis-Bucket umzubenennen
  1. Melden Sie sich bei der an AWS Management Console und öffnen Sie die Amazon S3 S3-Konsole unter https://console.aws.amazon.com/s3/.

  2. Wählen Sie im Navigationsbereich Buckets und dann den Tab Directory-Buckets aus. Navigieren Sie zu dem Amazon S3 S3-Verzeichnis-Bucket, der das Objekt enthält, das Sie umbenennen möchten.

  3. Aktivieren Sie das Kontrollkästchen für das Objekt, das Sie umbenennen möchten.

  4. Wählen Sie im Menü Aktionen die Option Objekt umbenennen aus.

  5. Geben Sie im Feld Neuer Objektname den neuen Namen für das Objekt ein.

    Anmerkung

    Wenn Sie denselben Objektnamen wie ein vorhandenes Objekt angeben, schlägt der Vorgang fehl und Amazon S3 gibt einen 412 Precondition Failed Fehler zurück. Die Länge des Objektschlüsselnamens darf 1.024 Byte nicht überschreiten. Präfixe, die im Objektnamen enthalten sind, werden auf die Gesamtlänge angerechnet.

  6. Wählen Sie Objekt umbenennen. Amazon S3 benennt Ihr Objekt um.

Die rename-object Beispiele zeigen, wie Sie die AWS CLI verwenden können, um ein Objekt umzubenennen. Um diese Befehle auszuführen, ersetzen Sie die user input placeholders durch Ihre eigenen Informationen

Das folgende Beispiel zeigt, wie ein Objekt umbenannt wird, wobei die Bedingungen des Quellobjekts geprüft ETag werden.

aws s3api rename-object \ --bucket amzn-s3-demo-bucket--usw2-az1--x-s3 \ --key new-file.txt \ --rename-source amzn-s3-demo-bucket--usw2-az1--x-s3/original-file.txt \ --source-if-match "\"a1b7c3d2e5f6\""

Der Befehl hat folgende Auswirkungen:

  • Benennt ein Objekt new-file.txt im amzn-s3-demo-bucket--usw2-az1--x-s3 Verzeichnis-Bucket von original-file.txt nach um.

  • Führt die Umbenennung nur durch, wenn der Wert des Quellobjekts ETag mit "a1b7c3d4e5f6" übereinstimmt.

Wenn der ETag nicht übereinstimmt, schlägt der Vorgang mit einem 412 Precondition Failed Fehler fehl.

Das folgende Beispiel zeigt, wie ein Objekt umbenannt wird, wobei der neue angegebene Objektname unter bestimmten Bedingungen geprüft wird.

aws s3api rename-object \ --bucket amzn-s3-demo-bucket--usw2-az1--x-s3 \ --key new-file.txt \ --rename-source amzn-s3-demo-bucket--usw2-az1--x-s3/original-file.txt \ --destination-if-none-match "\"e5f3g7h8i9j0\""

Der Befehl hat folgende Auswirkungen:

  • Benennt ein Objekt new-file.txt im amzn-s3-demo-bucket--usw2-az1--x-s3 Verzeichnis-Bucket von original-file.txt nach um.

  • Führt den Umbenennungsvorgang nur aus, wenn das Objekt vorhanden ist und das Objekt ETag nicht mit "e5f3g7h8i9j0" übereinstimmt.

Wenn bereits ein Objekt mit dem neu angegebenen Namen und dem passenden Namen vorhanden ist ETag, schlägt der Vorgang mit einem 412 Precondition Failed Fehler fehl.

SDK for Java

Sie können den verwenden AWS SDK für Java , um Ihre Objekte umzubenennen. Um diese Beispiele zu verwenden, ersetzen Sie die user input placeholders durch Ihre eigenen Informationen

Das folgende Beispiel zeigt, wie Sie RenameObjectRequest mit dem AWS SDK for Java eine erstellen

String key = "key"; String newKey = "new-key"; String expectedETag = "e5f3g7h8i9j0"; RenameObjectRequest renameRequest = RenameObjectRequest.builder() .bucket(amzn-s3-demo-bucket--usw2-az1--x-s3) .key(newKey) .renameSource(key) .destinationIfMatch(e5f3g7h8i9j0) .build();

Dieser Code führt Folgendes aus:

  • Erstellen Sie eine Anforderung, um ein Objekt im amzn-s3-demo-bucket--usw2-az1--x-s3 Verzeichnis-Bucket von key "new-key" in "" umzubenennen.

  • Beinhaltet die Bedingung, dass die Umbenennung nur erfolgt, wenn der Wert des Objekts ETag mit "e5f3g7h8i9j0" übereinstimmt.

  • Wenn das ETag nicht übereinstimmt oder das Objekt nicht existiert, schlägt der Vorgang fehl.

Das folgende Beispiel zeigt, wie Sie RenameObjectRequest mit dem AWS SDK for Java eine Bedingung mit einer Nichtübereinstimmung erstellen.

String key = "key"; String newKey = "new-key"; String noneMatchETag = "e5f3g7h8i9j0"; RenameObjectRequest renameRequest = RenameObjectRequest.builder() .bucket(amzn-s3-demo-bucket--usw2-az1--x-s3) .key(newKey) .renameSource(key) .destinationIfNoneMatch(noneMatchETag) .build();

Dieser Code führt Folgendes aus:

  • Erstellt eine Anforderung zum Umbenennen eines Objekts von "" in key "new-key" im amzn-s3-demo-bucket--usw2-az1--x-s3 Verzeichnis-Bucket.

  • Schließt eine Bedingung ein.destinationIfNoneMatch(noneMatchETag), die sicherstellt, dass die Umbenennung nur erfolgt, wenn die Bedingung des Zielobjekts ETag nicht mit "e5f3g7h8i9j0" übereinstimmt.

Der Vorgang schlägt mit einem 412 Precondition Failed Fehler fehl, wenn ein Objekt mit dem neu angegebenen Namen vorhanden ist und den angegebenen Namen hat ETag.

SDK for Python

Sie können das SDK für Python verwenden, um Ihre Objekte umzubenennen. Wenn Sie diese Beispiele verwenden möchten, ersetzen Sie die user input placeholders durch Ihre Informationen.

Das folgende Beispiel zeigt, wie ein Objekt mithilfe des AWS SDK for Python (Boto3) umbenannt wird.

def basic_rename(bucket, source_key, destination_key): try: s3.rename_object( Bucket=amzn-s3-demo-bucket--usw2-az1--x-s3, Key=destination_key, RenameSource=f"{amzn-s3-demo-bucket--usw2-az1--x-s3}/{source_key}" ) print(f"Successfully renamed {source_key} to {destination_key}") except ClientError as e: print(f"Error renaming object: {e}")

Dieser Code führt Folgendes aus:

  • Benennt ein Objekt im source_key Verzeichnis-Bucket von nach destination_key um. amzn-s3-demo-bucket--usw2-az1--x-s3

  • Druckt eine Erfolgsmeldung, wenn das Umbenennen Ihres Objekts erfolgreich war, oder gibt eine Fehlermeldung aus, wenn das Umbenennen fehlschlägt.

Das folgende Beispiel zeigt, wie ein Objekt mit den DestinationIfNoneMatch Bedingungen SourceIfMatch und mithilfe des AWS SDK for Python (Boto3) umbenannt wird.

def rename_with_conditions(bucket, source_key, destination_key, source_etag, dest_etag): try: s3.rename_object( Bucket=amzn-s3-demo-bucket--usw2-az1--x-s3, Key=destination_key, RenameSource=f"{amzn-s3-demo-bucket--usw2-az1--x-s3}/{source_key}", SourceIfMatch=source_ETag, DestinationIfNoneMatch=dest_ETag ) print(f"Successfully renamed {source_key} to {destination_key} with conditions") except ClientError as e: print(f"Error renaming object: {e}")

Dieser Code führt Folgendes aus:

  • Führt eine bedingte Umbenennung durch und wendet zwei Bedingungen an, SourceIfMatch und. DestinationIfNoneMatch Durch die Kombination dieser Bedingungen wird sichergestellt, dass das Objekt nicht geändert wurde und dass kein Objekt mit dem neu angegebenen Namen bereits vorhanden ist.

  • Benennt ein Objekt destination_key im amzn-s3-demo-bucket--usw2-az1--x-s3 Verzeichnis-Bucket von source_key nach um.

  • Druckt eine Erfolgsmeldung, wenn das Umbenennen Ihres Objekts erfolgreich war, oder gibt eine Fehlermeldung aus, wenn das Umbenennen fehlschlägt oder wenn die Bedingungen nicht erfüllt sind.

SDK for Rust

Sie können das SDK für Rust verwenden, um Ihre Objekte umzubenennen. Wenn Sie diese Beispiele verwenden möchten, ersetzen Sie die user input placeholders durch Ihre Informationen.

Das folgende Beispiel zeigt, wie Sie ein Objekt im amzn-s3-demo-bucket--usw2-az1--x-s3 Verzeichnis-Bucket mithilfe des SDK für Rust umbenennen.

async fn basic_rename_example(client: &Client) -> Result<(), Box<dyn Error>> { let response = client .rename_object() .bucket(" amzn-s3-demo-bucket--usw2-az1--x-s3") .key("new-name.txt") // New name/path for the object .rename_source("old-name.txt") // Original object name/path .send() .await?; Ok(()) }

Dieser Code führt Folgendes aus:

  • Erzeugt eine Anfrage zum Umbenennen eines Objekts von "old-name.tx" in "new-name.txt" im amzn-s3-demo-bucket--usw2-az1--x-s3 Verzeichnis-Bucket.

  • Gibt einen Result Typ zur Behandlung potenzieller Fehler zurück.

Sie können REST-Anfragen senden, um ein Objekt umzubenennen. Weitere Informationen finden Sie unter RenameObject in der Amazon-S3-API-Referenz.

Ab der Version 1.19.0 oder höher unterstützt Mountpoint für Amazon S3 das Umbenennen von Objekten in S3 Express One Zone. Weitere Informationen zu Mountpoint finden Sie unter Arbeiten mit Mountpoint.