Objektkontexte verwenden

Auf dieser Seite wird beschrieben, wie Sie Kontexte in Form von Schlüssel/Wert-Paaren an Cloud Storage-Objekte anhängen und verwalten.

Erforderliche Rollen abrufen

Bitten Sie Ihren Administrator, Ihnen die folgenden IAM-Rollen für das Objekt zuzuweisen, um die Berechtigungen zu erhalten, die Sie zum Erstellen und Verwalten von Objektkontexten benötigen:

  • Objekte mit Kontexten erstellen: Storage-Objekt-Ersteller (roles/storage.objectCreator)
  • Kontexte an Objekte anhängen, aktualisieren, ansehen und löschen: Storage Object User (roles/storage.objectUser)
  • Kontextschlüssel und ‑werte, die an Objekte angehängt sind, ansehen: Storage Object Viewer (roles/storage.objectViewer)
  • Kontexte für das Ablegen von Objekten während des Umschreibens, Kopierens und Verfassens von Vorgängen entfernen: Inhaber alter Storage-Objekte (roles/storage.legacyObjectOwner)

Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.

Diese vordefinierten Rollen enthalten die Berechtigungen, die zum Erstellen und Verwalten von Objektkontexten erforderlich sind. Maximieren Sie den Abschnitt Erforderliche Berechtigungen, um die notwendigen Berechtigungen anzuzeigen:

Erforderliche Berechtigungen

Die folgenden Berechtigungen sind erforderlich, um Objektkontexte zu erstellen und zu verwalten:

  • Objekt mit Objektkontexten erstellen:
    • storage.objects.create
    • storage.objects.createContext
  • Objektkontexte anhängen, aktualisieren und löschen:
    • storage.objects.update
    • storage.objects.createContext
    • storage.objects.updateContext
    • storage.objects.deleteContext
  • Objektkontexte löschen: storage.objects.dropContexts
  • Objektkontexte ansehen:
    • storage.objects.get
    • storage.objects.list

Sie können diese Berechtigungen auch mit benutzerdefinierten Rollen oder anderen vordefinierten Rollen erhalten.

Kontexte an neue Objekte anhängen

Kontexte an Objekte anhängen, wenn Sie neue Objekte in Cloud Storage-Buckets hochladen Jeder Kontext besteht aus einem Schlüssel und einem Wert.

Befehlszeile

Wenn Sie beim Hochladen von Objekten mit dem Befehl gcloud storage cp Kontexte anhängen möchten, verwenden Sie das Flag --custom-contexts:

gcloud storage cp OBJECT_LOCATION gs://DESTINATION_BUCKET_NAME --custom-contexts=KEY=VALUE,...

Wobei:

  • OBJECT_LOCATION ist der lokale Pfad zu Ihrem Objekt. Beispiel: Desktop/employees.txt.
  • DESTINATION_BUCKET_NAME ist der Name des Buckets, in den Sie das Objekt hochladen. Beispiel: my-bucket
  • KEY ist der Kontextschlüssel, der an ein Objekt angehängt werden soll. Beispiel: Department. Sie können mehrere durch Kommas getrennte Schlüssel/Wert-Paare angeben.
  • VALUE ist der Wert, der dem Kontextschlüssel zugeordnet werden soll. Beispiel: Human resources.

Alternativ können Sie eine JSON-Datei mit den Kontexten erstellen, die Sie den Objekten zuweisen möchten, und das Flag --custom-contexts-file verwenden:

  {
    "KEY": {
      "value": "VALUE"
    },
    ...
  }

Wobei:

  • KEY ist der Kontextschlüssel, der an ein Objekt angehängt werden soll. Beispiel: Department. Sie können mehrere Schlüssel/Wert-Paare angeben.
  • VALUE ist der Wert, der dem Kontextschlüssel zugeordnet werden soll. Beispiel: Human resources.

Wenn Sie beim Hochladen von Verzeichnissen mit dem Befehl gcloud storage rsync Kontexte anhängen möchten, verwenden Sie das Flag --custom-contexts oder das Flag --custom-contexts-file:

gcloud storage rsync DIRECTORY_LOCATION gs://DESTINATION_BUCKET_NAME --recursive --custom-contexts=KEY=VALUE,...

Wobei:

  • DIRECTORY_LOCATION ist der lokale Pfad zu Ihrem Verzeichnis. Beispiel: ~/my_directory.
  • DESTINATION_BUCKET_NAME ist der Name des Buckets, in den Sie das Verzeichnis hochladen. Beispiel: my-bucket
  • KEY ist der Kontextschlüssel, der an Objekte angehängt werden soll. Beispiel: Department. Sie können mehrere durch Kommas getrennte Schlüssel/Wert-Paare angeben.
  • VALUE ist der Wert, der dem Kontextschlüssel zugeordnet werden soll. Beispiel: Human resources.

JSON API

Wenn Sie beim Hochladen neuer Objekte Kontexte an Objekte anhängen möchten, verwenden Sie eine der folgenden Methoden:

Nehmen Sie das Feld contexts in die Objektmetadaten im JSON-Format auf:

  {
    "contexts": {
      "custom": {
        "KEY": {
          "value": "VALUE"
        },
        ...
      }
    }
  }

Wobei:

  • KEY ist der Kontextschlüssel, der an ein Objekt angehängt werden soll. Beispiel: Department. Sie können mehrere Schlüssel/Wert-Paare im custom-Objekt angeben.
  • VALUE ist der Wert, der dem Kontextschlüssel zugeordnet werden soll. Beispiel: Human resources.

Kontexte an ein vorhandenes Objekt anhängen oder ändern

Sie können Ihren vorhandenen Objekten in den Cloud Storage-Buckets neue Kontexte hinzufügen.

Befehlszeile

Führen Sie den Befehl gcloud storage objects update aus:

gcloud storage objects update gs://BUCKET_NAME/OBJECT_NAME CUSTOM_CONTEXTS_FLAG

Wobei:

  • BUCKET_NAME ist der Name des Buckets, der das Objekt enthält, für das Sie den Kontext bearbeiten möchten. Beispiel: my-bucket
  • OBJECT_NAME ist der Name des Objekts. Beispiel: employees.txt.
  • CUSTOM_CONTEXTS_FLAG ist eines der folgenden Flags:

    • Verwenden Sie --custom-contexts=KEY=VALUE,... oder --custom-contexts-file=CUSTOM_CONTEXTS_FILE, um alle vorhandenen Kontexte zu ersetzen.

      Wobei:

      • KEY ist der Kontextschlüssel, der an ein Objekt angehängt werden soll. Beispiel: Department. Sie können mehrere Schlüssel/Wert-Paare angeben, die durch Kommas getrennt sind.
      • VALUE ist der Wert, der dem Kontextschlüssel zugeordnet werden soll. Beispiel: Human resources.
      • CUSTOM_CONTEXTS_FILE ist der Pfad zur JSON- oder YAML-Datei, die die Kontexte enthält, die Sie an das Objekt anhängen möchten.
    • Verwenden Sie zum Löschen aller vorhandenen Kontexte das Flag --clear-custom-contexts.

    • Verwenden Sie eine Kombination aus --update-custom-contexts=KEY=VALUE,... und --remove-custom-contexts=KEY,..., um einzelne Kontexte hinzuzufügen, zu ändern oder zu löschen.

      Wobei:

      • KEY ist der Kontextschlüssel, den Sie einem Objekt zuweisen oder aus einem Objekt löschen möchten. Beispiel: Department.
      • VALUE ist der Wert, der dem Kontextschlüssel zugeordnet werden soll, den Sie an ein Objekt anhängen oder aus einem Objekt löschen möchten. Beispiel: Human resources

Wenn der Vorgang erfolgreich ausgeführt wurde, sieht die Antwort in etwa so aus:

Patching gs://my-bucket/employees.txt#1560574162144861...
  Completed 1

Clientbibliotheken

Java

Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Storage Java API.

Richten Sie die Standardanmeldedaten für Anwendungen ein, um sich bei Cloud Storage zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.


import com.google.cloud.storage.Blob;
import com.google.cloud.storage.BlobId;
import com.google.cloud.storage.BlobInfo;
import com.google.cloud.storage.BlobInfo.ObjectContexts;
import com.google.cloud.storage.BlobInfo.ObjectCustomContextPayload;
import com.google.cloud.storage.Storage;
import com.google.cloud.storage.StorageOptions;
import com.google.common.collect.Maps;
import java.util.Map;

public class SetObjectContexts {
  public static void setObjectContexts(
      String projectId, String bucketName, String objectName, String key, String value)
      throws Exception {
    // The ID of your GCP project
    // String projectId = "your-project-id";

    // The ID of your GCS bucket
    // String bucketName = "your-unique-bucket-name";

    // The ID of your GCS object
    // String objectName = "your-object-name";

    // The context key-value you want to add
    // String key = "your-context-key";
    // String value = "your-context-value";

    try (Storage storage =
        StorageOptions.newBuilder().setProjectId(projectId).build().getService()) {
      BlobId blobId = BlobId.of(bucketName, objectName);
      Blob blob = storage.get(blobId);
      if (blob == null) {
        System.out.println("The object " + objectName + " was not found in " + bucketName);
        return;
      }

      // Recommended: Set a generation-match precondition to avoid potential race
      // conditions and data corruptions. The request to update returns a 412 error if
      // the object's generation number does not match your precondition.
      Storage.BlobTargetOption precondition = Storage.BlobTargetOption.generationMatch();

      // This section demonstrates how to upsert, delete all, and delete a specific context.

      // To upsert a context (if the key already exists, its value is replaced;
      // otherwise, a new key-value pair is added):
      ObjectCustomContextPayload payload =
          ObjectCustomContextPayload.newBuilder().setValue(value).build();
      Map<String, ObjectCustomContextPayload> custom = Maps.newHashMap();
      custom.put(key, payload);
      ObjectContexts contexts = ObjectContexts.newBuilder().setCustom(custom).build();

      /*
       * To delete all existing contexts:
       * ObjectContexts contexts = ObjectContexts.newBuilder().setCustom(null).build();
       */

      /*
       * To delete a specific key from the context:
       * Map<String, ObjectCustomContextPayload> custom = Maps.newHashMap();
       * custom.put(key, null);
       * ObjectContexts contexts = ObjectContexts.newBuilder().setCustom(custom).build();
       */
      BlobInfo pendingUpdate = blob.toBuilder().setContexts(contexts).build();
      storage.update(pendingUpdate, precondition);

      System.out.println(
          "Updated custom contexts for object " + objectName + " in bucket " + bucketName);
    }
  }
}

JSON API

  1. Installieren und initialisieren Sie die gcloud CLI, um ein Zugriffstoken für den Authorization-Header zu generieren.

  2. Erstellen Sie eine JSON-Datei mit den Einstellungen für das Objekt, die die Konfigurationsfelder contexts für das Objekt enthalten muss.

    Verwenden Sie das folgende Format, um vorhandene Kontexte hinzuzufügen, zu ändern oder zu überschreiben:

      {
        "contexts": {
          "custom": {
            "KEY": {
              "value": "VALUE"
            },
            ...
          }
        }
      }

    Wobei:

    • KEY ist der Kontextschlüssel, der an ein Objekt angehängt werden soll. Beispiel: Department. Sie können mehrere Schlüssel/Wert-Paare im custom-Objekt angeben.
    • VALUE ist der Wert, der dem Kontextschlüssel zugeordnet werden soll. Beispiel: Human resources

    Verwenden Sie das folgende Format, um alle vorhandenen Kontexte zu löschen:

      {
        "contexts": {
          "custom": null
        }
      }

    Verwenden Sie das folgende Format, um einen bestimmten Schlüssel aus dem Kontext zu löschen:

      {
        "contexts": {
          "custom": {
            "KEY": null,
            ...
          }
        }
      }

    Wobei:

    KEY ist der Kontextschlüssel, den Sie aus einem Objekt löschen möchten. Beispiel: Department. Sie können mehrere Schlüssel angeben, die aus dem custom-Objekt gelöscht werden sollen.

  3. Verwenden Sie cURL, um die JSON-API mit einer PATCH-Objektanfrage aufzurufen:

    curl -X PATCH --data-binary @JSON_FILE_NAME \
      -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Content-Type: application/json" \
      "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/o/OBJECT_NAME"

    Wobei:

    • JSON_FILE_NAME ist der Pfad zur Datei, die die Informationen zum Objektkontext enthält.
    • BUCKET_NAME ist der Name des Buckets, der das Objekt enthält, für das Sie den Kontext bearbeiten möchten. Beispiel: my-bucket.
    • OBJECT_NAME ist der URL-codierte Name des Objekts. Beispiel: employees.txt.

Alternativ können Sie den Kontext eines Objekts mit einer PUT-Anfrage ersetzen. Mit der PUT-Objektanfrage werden auch andere Objektmetadaten ersetzt. Daher raten wir von der Verwendung der PUT-Objektanfrage ab.

Objektkontexte ansehen

Sie können die Kontexte eines Objekts aufrufen, indem Sie die Objektmetadaten auflisten oder ein bestimmtes Objekt beschreiben.

Befehlszeile

Führen Sie den Befehl gcloud storage objects describe aus:

gcloud storage objects describe gs://BUCKET_NAME/OBJECT_NAME

Wobei:

  • BUCKET_NAME ist der Name des Buckets, der das Objekt enthält, dessen Kontext Sie ansehen möchten. Beispiel: my-bucket.
  • OBJECT_NAME ist der Name des Objekts, dessen Kontext Sie ansehen möchten. Beispiel: employees.txt.

Wenn der Vorgang erfolgreich war, sieht die Antwort in etwa so aus:

bucket: my-bucket
contexts:
  Department:
    createTime: '2023-01-01T00:00:00.000000+00:00'
    type: CUSTOM
    updateTime: '2023-01-01T00:00:00.000000+00:00'
    value: Human resources
name: employees.txt

Clientbibliotheken

Java

Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Storage Java API.

Richten Sie die Standardanmeldedaten für Anwendungen ein, um sich bei Cloud Storage zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.


import com.google.cloud.storage.Blob;
import com.google.cloud.storage.BlobInfo.ObjectContexts;
import com.google.cloud.storage.BlobInfo.ObjectCustomContextPayload;
import com.google.cloud.storage.Storage;
import com.google.cloud.storage.StorageOptions;
import java.util.Map;

public class GetObjectContexts {
  public static void getObjectContexts(String projectId, String bucketName, String objectName)
      throws Exception {
    // The ID of your GCP project
    // String projectId = "your-project-id";

    // The ID of your GCS bucket
    // String bucketName = "your-unique-bucket-name";

    // The ID of your GCS object
    // String objectName = "your-object-name";

    try (Storage storage =
        StorageOptions.newBuilder().setProjectId(projectId).build().getService()) {

      Blob blob = storage.get(bucketName, objectName);
      if (blob == null) {
        System.out.println("The object " + objectName + " was not found in " + bucketName);
        return;
      }
      ObjectContexts objectContexts = blob.getContexts();

      if (objectContexts != null) {
        Map<String, ObjectCustomContextPayload> customContexts = objectContexts.getCustom();
        if (customContexts == null) {
          System.out.println("No custom contexts found for object: " + objectName);
          return;
        }
        // Print blob's object contexts
        System.out.println("\nCustom Contexts:");
        for (Map.Entry<String, ObjectCustomContextPayload> custom : customContexts.entrySet()) {
          System.out.println(custom.getKey() + "=" + custom.getValue());
        }
      }
    }
  }
}

JSON API

  1. Installieren und initialisieren Sie die gcloud CLI, um ein Zugriffstoken für den Header Authorization zu generieren.

  2. Verwenden Sie cURL, um die JSON-API mit einer GET-Objektanfrage aufzurufen:

    curl -X GET \
      -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/o/OBJECT_NAME"

    Wobei:

    • BUCKET_NAME ist der Name des Buckets, der das Objekt enthält, dessen Kontext Sie ansehen möchten. Beispiel: my-bucket.
    • OBJECT_NAME ist der URL-codierte Name des Objekts, dessen Kontext Sie ansehen möchten. Beispiel: employees.txt.

    Wenn der Vorgang erfolgreich war, sieht die Antwort in etwa so aus:

      {
        "kind": "storage#object",
        "name": "employees.txt",
        "bucket": "my-bucket",
        "contexts": {
          "custom": {
            "Department": {
              "value": "Human resources",
              "createTime": "2023-01-01T00:00:00.000Z",
              "updateTime": "2023-01-01T00:00:00.000Z"
            }
          }
        }
      }
      

Objekte nach Kontexten filtern

Objekte nach dem Vorhandensein von Objektkontextschlüsseln oder ihren spezifischen Werten filtern. Wenn Sie Objekte nach Kontexten filtern, können Sie bestimmte Gruppen von Objekten effizient finden und verwalten. Weitere Informationen finden Sie unter Objekte nach Kontexten filtern.

Objektkontexte bei Objektvorgängen verwalten

Standardmäßig werden Objektkontexte in Cloud Storage beibehalten, wenn Sie Objekte kopieren, umschreiben, zusammenstellen, verschieben oder wiederherstellen.

Objekte kopieren

Standardmäßig werden in Cloud Storage Objektkontexte aus dem Quellobjekt während eines Kopiervorgangs beibehalten, auch wenn Sie andere Metadaten überschreiben. So ändern Sie Objektkontexte während eines Kopiervorgangs:

Befehlszeile

Mit dem Befehl gcloud storage cp, dem Befehl gcloud storage rsync und dem Befehl gcloud storage mv werden standardmäßig Kontexte aus dem Quellobjekt beibehalten. Verwenden Sie eines der folgenden Flags, um Kontexte während dieser Vorgänge zu ändern:

  • Das Flag --custom-contexts zum Festlegen neuer Kontexte für das Zielobjekt.

  • Das Flag --clear-custom-contexts, um zu verhindern, dass Kontexte aus dem Quellobjekt an das Zielobjekt angehängt werden.

  • Eine Kombination der Flags --update-custom-contexts und --remove-custom-contexts, um einzelne Kontexte des Quellobjekts zu ändern, bevor sie an das Zielobjekt angehängt werden.

Verwenden Sie den Befehl gcloud storage cp, um beim Kopieren eines Objekts neue Kontexte festzulegen:

gcloud storage cp gs://SOURCE_BUCKET_NAME/SOURCE_OBJECT_NAME gs://DESTINATION_BUCKET_NAME/DESTINATION_OBJECT_NAME --custom-contexts=KEY=VALUE,...

Wobei:

  • SOURCE_BUCKET_NAME ist der Name des Buckets, der das zu kopierende Objekt enthält. Beispiel: my-source-bucket.
  • SOURCE_OBJECT_NAME ist der Name des Objekts, das kopiert werden soll. Beispiel: employees.txt.
  • DESTINATION_BUCKET_NAME ist der Name des Buckets, in den das Objekt kopiert werden soll. Beispiel: my-destination-bucket.
  • DESTINATION_OBJECT_NAME ist der Name des Zielobjekts. Beispiel: employees-backup.txt.
  • KEY ist der Kontextschlüssel, der an ein Objekt angehängt werden soll. Beispiel: Department. Sie können mehrere durch Kommas getrennte Schlüssel/Wert-Paare angeben.
  • VALUE ist der Wert, der dem Kontextschlüssel zugeordnet werden soll. Beispiel: Human resources.

Wenn Sie beim Kopieren eines Objekts alle Kontexte aus dem Quellobjekt entfernen möchten, verwenden Sie den Befehl gcloud storage cp:

gcloud storage cp gs://SOURCE_BUCKET_NAME/SOURCE_OBJECT_NAME gs://DESTINATION_BUCKET_NAME/DESTINATION_OBJECT_NAME --clear-custom-contexts

Wobei:

  • SOURCE_BUCKET_NAME ist der Name des Buckets, der das zu kopierende Objekt enthält. Beispiel: my-source-bucket.
  • SOURCE_OBJECT_NAME ist der Name des Objekts, das kopiert werden soll. Beispiel: pets/dog.png.
  • DESTINATION_BUCKET_NAME ist der Name des Buckets, in den das Objekt kopiert werden soll. Beispiel: my-destination-bucket.
  • DESTINATION_OBJECT_NAME ist der Name des Zielobjekts. Beispiel: pets/cat.png.

Wenn Sie beim Kopieren eines Objekts einzelne Kontexte aus dem Quellobjekt ändern möchten, verwenden Sie den Befehl gcloud storage cp mit --update-custom-contexts und --remove-custom-contexts:

gcloud storage cp gs://SOURCE_BUCKET_NAME/SOURCE_OBJECT_NAME gs://DESTINATION_BUCKET_NAME/DESTINATION_OBJECT_NAME --update-custom-contexts=KEY=VALUE,... --remove-custom-contexts=KEY,...

Wobei:

  • SOURCE_BUCKET_NAME ist der Name des Buckets, der das zu kopierende Objekt enthält. Beispiel: my-source-bucket.
  • SOURCE_OBJECT_NAME ist der Name des Objekts, das kopiert werden soll. Beispiel: pets/dog.png.
  • DESTINATION_BUCKET_NAME ist der Name des Buckets, in den das Objekt kopiert werden soll. Beispiel: my-destination-bucket.
  • DESTINATION_OBJECT_NAME ist der Name des Zielobjekts. Beispiel: pets/cat.png.
  • KEY ist der Kontextschlüssel, der an ein Objekt angehängt werden soll. Beispiel: Department. Sie können mehrere Schlüssel/Wert-Paare oder Schlüssel angeben, die durch Kommas getrennt sind.
  • VALUE ist der Wert, der dem Kontextschlüssel zugeordnet werden soll. Beispiel: Human resources.

JSON API

Wenn Sie beim Kopieren eines Objekts Kontexte überschreiben möchten, fügen Sie das Attribut contexts.custom in den Anfragetext ein:

  1. Installieren und initialisieren Sie die gcloud CLI, um ein Zugriffstoken für den Authorization-Header zu generieren.

  2. Erstellen Sie eine JSON-Datei, die die Kontexte enthält, die an das Zielobjekt angehängt werden sollen:

      {
        "contexts": {
          "custom": {
            "KEY": {
              "value": "VALUE"
            }
          }
        }
      }

    Wobei:

    • KEY ist der Kontextschlüssel, der an ein Objekt angehängt werden soll. Beispiel: Department.
    • VALUE ist der Wert, der dem Kontextschlüssel zugeordnet werden soll. Beispiel: Human resources.
  3. Verwenden Sie cURL, um die JSON API mit einer POST-Objektanfrage aufzurufen:

    curl -X POST --data-binary @JSON_FILE_NAME \
      -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Content-Type: application/json" \
      "https://storage.googleapis.com/storage/v1/b/SOURCE_BUCKET_NAME/o/SOURCE_OBJECT_NAME/copyTo/b/DESTINATION_BUCKET_NAME/o/DESTINATION_OBJECT_NAME"

    Wobei:

    • JSON_FILE_NAME ist der Pfad zur JSON-Datei, die die Informationen zum Objektkontext enthält.
    • SOURCE_BUCKET_NAME ist der Name des Buckets, der das zu kopierende Objekt enthält. Beispiel: my-source-bucket
    • SOURCE_OBJECT_NAME ist der URL-codierte Name des Objekts, das kopiert werden soll. Beispiel: employees.txt.
    • DESTINATION_BUCKET_NAME ist der Name des Buckets, in den das Objekt kopiert werden soll. Beispiel: my-destination-bucket
    • DESTINATION_OBJECT_NAME ist der URL-codierte Name des Zielobjekts. Beispiel: employees-backup.txt.

Wenn Sie alle Quellkontexte entfernen möchten, ohne eine Überschreibung anzugeben, verwenden Sie den Abfrageparameter dropContextGroups=custom in Ihrer Anfrage:

curl -X POST \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  "https://storage.googleapis.com/storage/v1/b/SOURCE_BUCKET_NAME/o/SOURCE_OBJECT_NAME/copyTo/b/DESTINATION_BUCKET_NAME/o/DESTINATION_OBJECT_NAME?dropContextGroups=custom"

Um Kontexte beizubehalten, lassen Sie die Eigenschaft contexts.custom im Anfragetext weg und schließen Sie dropContextGroups=custom in den Abfrageparametern aus:

curl -X POST \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  "https://storage.googleapis.com/storage/v1/b/SOURCE_BUCKET_NAME/o/SOURCE_OBJECT_NAME/copyTo/b/DESTINATION_BUCKET_NAME/o/DESTINATION_OBJECT_NAME"

Informationen zum Verhalten von Kontexten bei Kopiervorgängen finden Sie unter dem Abfrageparameter dropContextGroups.

Objekte umschreiben

Standardmäßig behält Cloud Storage bei einem Überschreibvorgang Objektkontexte aus dem Quellobjekt bei, auch wenn Sie andere Metadaten überschreiben. So ändern Sie Objektkontexte während eines Rewrite-Vorgangs:

Befehlszeile

Mit den Befehlen gcloud storage cp, gcloud storage rsync und gcloud storage mv werden bei Bedarf automatisch Änderungen vorgenommen, z. B. beim Kopieren von Objekten zwischen verschiedenen Speicherorten oder Speicherklassen. gcloud storage cp und gcloud storage rsync führen zu einem Quell- und einem Zielobjekt, während mit gcloud storage mv das Zielobjekt erstellt und das Quellobjekt entfernt wird. Da bei diesen Vorgängen ein neues Objekt erstellt wird, können Sie auch Kontexte im selben Befehl ändern oder anhängen. Verwenden Sie dazu eines der folgenden Flags:

  • Das Flag --custom-contexts zum Festlegen neuer Kontexte für das Zielobjekt.

  • Das Flag --clear-custom-contexts, um zu verhindern, dass Kontexte aus dem Quellobjekt an das Zielobjekt angehängt werden.

  • Eine Kombination der Flags --update-custom-contexts und --remove-custom-contexts, um einzelne Kontexte des Quellobjekts zu ändern, bevor sie an das Zielobjekt angehängt werden.

Verwenden Sie den Befehl gcloud storage cp, um beim Kopieren eines Objekts neue Kontexte festzulegen:

gcloud storage cp gs://SOURCE_BUCKET_NAME/SOURCE_OBJECT_NAME gs://DESTINATION_BUCKET_NAME/DESTINATION_OBJECT_NAME --custom-contexts=KEY=VALUE,...

Wobei:

  • SOURCE_BUCKET_NAME ist der Name des Buckets, der das zu kopierende Objekt enthält. Beispiel: my-source-bucket.
  • SOURCE_OBJECT_NAME ist der Name des Objekts, das kopiert werden soll. Beispiel: employees.txt.
  • DESTINATION_BUCKET_NAME ist der Name des Buckets, in den das Objekt kopiert werden soll. Beispiel: my-destination-bucket.
  • DESTINATION_OBJECT_NAME ist der Name des Zielobjekts. Beispiel: employees-backup.txt.
  • KEY ist der Kontextschlüssel, der an ein Objekt angehängt werden soll. Beispiel: Department. Sie können mehrere durch Kommas getrennte Schlüssel/Wert-Paare angeben.
  • VALUE ist der Wert, der dem Kontextschlüssel zugeordnet werden soll. Beispiel: Human resources.

Wenn Sie beim Kopieren eines Objekts alle Kontexte aus dem Quellobjekt entfernen möchten, verwenden Sie den Befehl gcloud storage cp:

gcloud storage cp gs://SOURCE_BUCKET_NAME/SOURCE_OBJECT_NAME gs://DESTINATION_BUCKET_NAME/DESTINATION_OBJECT_NAME --clear-custom-contexts

Wobei:

  • SOURCE_BUCKET_NAME ist der Name des Buckets, der das zu kopierende Objekt enthält. Beispiel: my-source-bucket.
  • SOURCE_OBJECT_NAME ist der Name des Objekts, das kopiert werden soll. Beispiel: pets/dog.png.
  • DESTINATION_BUCKET_NAME ist der Name des Buckets, in den das Objekt kopiert werden soll. Beispiel: my-destination-bucket.
  • DESTINATION_OBJECT_NAME ist der Name des Zielobjekts. Beispiel: pets/cat.png.

Wenn Sie beim Kopieren eines Objekts einzelne Kontexte aus dem Quellobjekt ändern möchten, verwenden Sie den Befehl gcloud storage cp mit --update-custom-contexts und --remove-custom-contexts:

gcloud storage cp gs://SOURCE_BUCKET_NAME/SOURCE_OBJECT_NAME gs://DESTINATION_BUCKET_NAME/DESTINATION_OBJECT_NAME --update-custom-contexts=KEY=VALUE,... --remove-custom-contexts=KEY,...

Wobei:

  • SOURCE_BUCKET_NAME ist der Name des Buckets, der das zu kopierende Objekt enthält. Beispiel: my-source-bucket.
  • SOURCE_OBJECT_NAME ist der Name des Objekts, das kopiert werden soll. Beispiel: pets/dog.png.
  • DESTINATION_BUCKET_NAME ist der Name des Buckets, in den das Objekt kopiert werden soll. Beispiel: my-destination-bucket.
  • DESTINATION_OBJECT_NAME ist der Name des Zielobjekts. Beispiel: pets/cat.png.
  • KEY ist der Kontextschlüssel, der an ein Objekt angehängt werden soll. Beispiel: Department. Sie können mehrere Schlüssel/Wert-Paare oder Schlüssel angeben, die durch Kommas getrennt sind.
  • VALUE ist der Wert, der dem Kontextschlüssel zugeordnet werden soll. Beispiel: Human resources.

JSON API

Wenn Sie Kontexte beim Umschreiben eines Objekts überschreiben möchten, fügen Sie das Attribut contexts.custom in den Anfragetext ein:

  1. Installieren und initialisieren Sie die gcloud CLI, um ein Zugriffstoken für den Authorization-Header zu generieren.

  2. Erstellen Sie eine JSON-Datei, die die Kontexte enthält, die an das Zielobjekt angehängt werden sollen:

      {
        "contexts": {
          "custom": {
            "KEY": {
              "value": "VALUE"
            }
          }
        }
      }

    Wobei:

    • KEY ist der Kontextschlüssel, der an ein Objekt angehängt werden soll. Beispiel: Department.
    • VALUE ist der Wert, der dem Kontextschlüssel zugeordnet werden soll. Beispiel: Human resources.
  3. Verwenden Sie cURL, um die JSON API mit einer POST-Objektanfrage aufzurufen:

    curl -X POST --data-binary @JSON_FILE_NAME \
      -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Content-Type: application/json" \
      "https://storage.googleapis.com/storage/v1/b/SOURCE_BUCKET_NAME/o/SOURCE_OBJECT_NAME/rewriteTo/b/DESTINATION_BUCKET_NAME/o/DESTINATION_OBJECT_NAME"

    Wobei:

    • JSON_FILE_NAME ist der Pfad zur JSON-Datei, die die Informationen zum Objektkontext enthält.
    • SOURCE_BUCKET_NAME ist der Name des Buckets, der das Objekt enthält, das umgeschrieben werden soll. Beispiel: my-source-bucket.
    • SOURCE_OBJECT_NAME ist der URL-codierte Name des Objekts, das umgeschrieben werden soll. Beispiel: employees.txt.
    • DESTINATION_BUCKET_NAME ist der Name des Buckets, in den das Objekt umgeschrieben werden soll. Beispiel: my-destination-bucket.
    • DESTINATION_OBJECT_NAME ist der URL-codierte Name des Zielobjekts. Beispiel: employees-backup.txt.

Wenn Sie alle Quellkontexte entfernen möchten, ohne eine Überschreibung anzugeben, verwenden Sie den Abfrageparameter dropContextGroups=custom in Ihrer Anfrage:

curl -X POST \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  "https://storage.googleapis.com/storage/v1/b/SOURCE_BUCKET_NAME/o/SOURCE_OBJECT_NAME/rewriteTo/b/DESTINATION_BUCKET_NAME/o/DESTINATION_OBJECT_NAME?dropContextGroups=custom"

Um Kontexte beizubehalten, lassen Sie das Attribut contexts.custom im Anfragetext weg und schließen Sie dropContextGroups=custom in den Abfrageparametern aus:

curl -X POST \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  "https://storage.googleapis.com/storage/v1/b/SOURCE_BUCKET_NAME/o/SOURCE_OBJECT_NAME/rewriteTo/b/DESTINATION_BUCKET_NAME/o/DESTINATION_OBJECT_NAME"

Informationen zum Verhalten von Kontexten bei Umschreibevorgängen finden Sie unter dem dropContextGroups-Abfrageparameter.

Objekte zusammensetzen

Mit dem Befehl gcloud storage objects compose und der compose-Methode der JSON API werden standardmäßig die Kontexte der Quellobjekte zusammengeführt und an die Zielobjekte angehängt. Cloud Storage löst Konflikte, indem Kontexten aus Quellobjekten, die später verarbeitet werden, Priorität eingeräumt wird. Weitere Informationen zum Verhalten des Objektkontexts während eines Kompositionsvorgangs finden Sie unter Kontexte für zusammengesetzte Objekte.

Befehlszeile

Wenn Sie beim Erstellen von Objekten neue Kontexte für das Zielobjekt angeben möchten, verwenden Sie das Flag --contexts:

gcloud storage objects compose gs://BUCKET_NAME/SOURCE_OBJECT_1 gs://BUCKET_NAME/SOURCE_OBJECT_2 gs://BUCKET_NAME/DESTINATION_OBJECT_NAME --contexts=KEY=VALUE,...

Wobei:

  • BUCKET_NAME ist der Name des Buckets, der die Quellobjekte enthält und in dem das Zielobjekt erstellt wird. Beispiel: my-bucket.
  • SOURCE_OBJECT_1 und SOURCE_OBJECT_2 sind Quellobjekte, die zusammengesetzt werden sollen.
  • DESTINATION_OBJECT_NAME ist der Name des zu erstellenden Zielobjekts. Beispiel: my-composite-object.
  • KEY ist der Kontextschlüssel, der an ein Objekt angehängt werden soll. Beispiel: Department. Sie können mehrere durch Kommas getrennte Schlüssel/Wert-Paare angeben.
  • VALUE ist der Wert, der dem Kontextschlüssel zugeordnet werden soll. Beispiel: Human resources.

Wenn Sie verhindern möchten, dass Quellkontexte an zusammengesetzte Objekte angehängt werden, verwenden Sie das Flag --clear-custom-contexts:

gcloud storage objects compose gs://BUCKET_NAME/SOURCE_OBJECT_1 gs://BUCKET_NAME/SOURCE_OBJECT_2 gs://BUCKET_NAME/DESTINATION_OBJECT_NAME --clear-custom-contexts

Wobei:

  • BUCKET_NAME ist der Name des Buckets, der die Quellobjekte enthält und in dem das Zielobjekt erstellt wird. Beispiel: my-bucket.
  • SOURCE_OBJECT_1 und SOURCE_OBJECT_2 sind die Quellobjekte, die zusammengesetzt werden sollen.
  • DESTINATION_OBJECT_NAME ist der Name des zu erstellenden Zielobjekts. Beispiel: my-composite-object.

JSON API

Wenn Sie beim Erstellen von Objekten neue Kontexte für das Zielobjekt angeben möchten, fügen Sie Kontexte in das Attribut destination des Anfragetexts ein.

  1. Installieren und initialisieren Sie die gcloud CLI, um ein Zugriffstoken für den Authorization-Header zu generieren.

  2. Erstellen Sie eine JSON-Datei, die den Anfragetext enthält:

    {
      "sourceObjects": [
        {"name": "SOURCE_OBJECT_1"},
        {"name": "SOURCE_OBJECT_2"}
      ],
      "destination": {
        "contentType": "text/plain",
        "contexts": {
          "custom": {
            "KEY": {
              "value": "VALUE"
            }
          }
        }
      }
    }

    Wobei:

    • SOURCE_OBJECT_1 und SOURCE_OBJECT_2 sind Quellobjekte, die zusammengesetzt werden sollen.
    • KEY ist der Kontextschlüssel, der an ein Objekt angehängt werden soll. Beispiel: Department.
    • VALUE ist der Wert, der dem Kontextschlüssel zugeordnet werden soll. Beispiel: Human resources
  3. Verwenden Sie cURL, um die JSON API mit einer POST-Objektanfrage aufzurufen:

    curl -X POST --data-binary @JSON_FILE_NAME \
      -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Content-Type: application/json" \
      "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/o/DESTINATION_OBJECT_NAME/compose"

    Wobei:

    • JSON_FILE_NAME ist der Pfad zur JSON-Datei, die den Anfragetext enthält.
    • BUCKET_NAME ist der Name des Buckets, der die Quellobjekte enthält und in dem das Zielobjekt erstellt wird. Beispiel: my-bucket.
    • DESTINATION_OBJECT_NAME ist der Name des zu erstellenden Zielobjekts. Beispiel: my-composite-object.

Wenn Sie verhindern möchten, dass Quellkontexte an zusammengesetzte Objekte angehängt werden, verwenden Sie den Abfrageparameter dropContextGroups=custom in Ihrer Anfrage:

  1. Installieren und initialisieren Sie die gcloud CLI, um ein Zugriffstoken für den Authorization-Header zu generieren.

  2. Erstellen Sie eine JSON-Datei, die den Anfragetext enthält:

    {
      "sourceObjects": [
        {"name": "SOURCE_OBJECT_1"},
        {"name": "SOURCE_OBJECT_2"}
      ],
      "destination": {
        "contentType": "text/plain"
    }
    }

    Wobei:

    • SOURCE_OBJECT_1 und SOURCE_OBJECT_2 sind Quellobjekte, die zusammengesetzt werden sollen.
  3. Verwenden Sie cURL, um die JSON API mit einer POST-Objektanfrage aufzurufen:

    curl -X POST --data-binary @JSON_FILE_NAME \
      -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Content-Type: application/json" \
      "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/o/DESTINATION_OBJECT_NAME/compose?dropContextGroups=custom"

    Wobei:

    • JSON_FILE_NAME ist der Pfad zur JSON-Datei, die den Anfragetext enthält.
    • BUCKET_NAME ist der Name des Buckets, der die Quellobjekte enthält und in dem das Zielobjekt erstellt wird. Beispiel: my-bucket.
    • DESTINATION_OBJECT_NAME ist der Name des zu erstellenden Zielobjekts. Beispiel: my-composite-object.

Nächste Schritte