Diese Seite bietet einen Überblick über die Funktion "Anforderer bezahlt" für Cloud Storage.
Einführung
Wenn ein Nutzer auf eine Cloud Storage-Ressource wie einen Bucket oder ein Objekt zugreift, fallen Gebühren für die Erstellung und Ausführung der Anfrage an.
Normalerweise werden diese Gebühren dem Projektinhaber der Ressource in Rechnung gestellt. Wenn der Sender jedoch ein Abrechnungsprojekt mit seiner Anfrage einreicht, wird stattdessen das Projekt des Senders in Rechnung gestellt. Wenn die Funktion "Anfragesteller bezahlt" in Ihrem Bucket aktiviert ist, können Sie Anfragesteller dazu verpflichten, ihren Anfragen ein Abrechnungsprojekt hinzuzufügen. Die Kosten werden dann für das Projekt des Anfragestellers in Rechnung gestellt. Die Aktivierung der Funktion "Anforderer bezahlt" ist beispielsweise nützlich, wenn Sie Nutzern viele Daten zur Verfügung stellen möchten, ohne für deren Zugriff auf diese Daten bezahlen zu müssen.
Beschränkungen
Die Verwendung von "Anforderer bezahlt" unterliegt den folgenden Beschränkungen:
- Sie können einen Bucket mit der Funktion "Anforderer bezahlt" nicht für Export- und Importvorgänge in Cloud SQL verwenden.
- Sie können einen Bucket mit aktivierter Funktion „Anforderer bezahlt“ nicht für Exporte aus Pub/Sub verwenden.
Anforderungen für Zugriff und Verwendung
Wenn Sie die Funktion „Anfragender bezahlt“ für einen Bucket aktivieren möchten, aktivieren Sie das Metadaten-Flag für den Bucket. Nach der Aktivierung können nur die folgenden Nutzer auf den Bucket oder dessen Inhalt zugreifen:
Anfragesteller, die ihrer Anfrage ein Abrechnungsprojekt hinzufügen. Das in der Anfrage verwendete Projekt muss einwandfrei sein. Außerdem muss der Nutzer im Projekt eine Rolle mit der Berechtigung
serviceusage.services.use
haben. Die Rolle Dienstnutzungsnutzer enthält die erforderliche Berechtigung.Anfragesteller, die kein Abrechnungsprojekt hinzufügen, jedoch die Berechtigung
resourcemanager.projects.createBillingAssignment
für das Projekt haben, das den Bucket enthält. Die Rolle Projektabrechnungs-Manager enthält die erforderliche Berechtigung. Zugriffsgebühren für solche Anfragen werden dem Projekt in Rechnung gestellt, das den Bucket enthält.
Alle anderen Anfragen an den Bucket schlagen mit einem 400 UserProjectMissing
-Fehler fehl.
Zusätzlich zu diesen Anforderungen muss der Anforderer über ausreichende Berechtigungen verfügen, um die angeforderte Aktion auszuführen. Ein Nutzer, der seiner Anfrage ein gültiges Abrechnungsprojekt hinzufügt, kann beispielsweise nur Objekte in den Bucket hochladen, wenn er ausdrücklich dazu berechtigt ist, z. B. wenn er die Berechtigung storage.objects.create
für diesen Bucket oder das darin enthaltene Projekt besitzt.
Wenn Sie „Anfragesteller bezahlt“ deaktivieren, müssen Sie Ihrer Anfrage ein Abrechnungsprojekt hinzufügen oder die Berechtigung resourcemanager.projects.createBillingAssignment
haben.
Quellbezogene Abrechnungsvorgänge
Vorgänge, die sowohl einen Quell-Bucket als auch einen Ziel-Bucket enthalten, z. B. eine Kopie oder einen wiederholten Schreibvorgang, werden für das Projekt mit dem Quell-Bucket berechnet. In den meisten Fällen, z. B. bei Direktaufrufen mithilfe der JSON und XML APIs, müssen Sie nur dann ein Abrechnungsprojekt hinzufügen, wenn für den Quell-Bucket die Option "Sender bezahlt" aktiviert ist.
In einigen Fällen, z. B. bei gcloud storage cp
mit dem Flag --no-clobber
, müssen Sie ein Abrechnungsprojekt hinzufügen, wenn für den Quell- oder Ziel-Bucket (oder beides) die Option "Anforderer bezahlt" aktiviert ist. Dies liegt daran, dass während eines solchen Vorgangs Aufrufe sowohl an die Quell- als auch an die Ziel-Buckets erfolgen.
Vorgänge mit mehreren Anfragen
Für Vorgänge, bei denen mehrere Anfragen abgeschlossen werden müssen, unterliegt die Verwendung von Abrechnungsprojekten in Ihren Anfragen den folgenden Verhaltensweisen:
Bei fortsetzbaren Uploads muss nur die erste Anfrage ein Abrechnungsprojekt enthalten und gilt für den gesamten Upload. Abrechnungsprojekte, die in nachfolgenden Anfragen angegeben werden, werden ignoriert.
Bei Umschreibungen mit der JSON API und mehrteiligen XML API-Uploads kann jede Anfrage ein anderes Abrechnungsprojekt und ein Abrechnungsprojekt verwenden, das in einer früheren Anfrage angegeben wurde. gilt nicht für nachfolgende Anfragen.