Rewrite

Rewrites a source object to a destination object

71 variables
57 variables

Rewrites a source object to a destination object. Optionally overrides metadata

Authorization

To use this building block you will have to grant access to at least one of the following scopes:

  • View and manage your data across Google Cloud Platform services
  • Manage your data and permissions in Google Cloud Storage
  • Manage your data in Google Cloud Storage

Input

This building block consumes 71 input parameters

  = Parameter name
  = Format

sourceBucket STRING Required

Name of the bucket in which to find the source object

sourceObject STRING Required

Name of the source object. For information about how to URL encode object names to be path safe, see Encoding URI Path Parts

destinationBucket STRING Required

Name of the bucket in which to store the new object. Overrides the provided object metadata's bucket value, if any

destinationObject STRING Required

Name of the new object. Required when the object metadata is not otherwise provided. Overrides the object metadata's name value, if any. For information about how to URL encode object names to be path safe, see Encoding URI Path Parts

destinationKmsKeyName STRING

Resource name of the Cloud KMS key, of the form projects/my-project/locations/global/keyRings/my-kr/cryptoKeys/my-key, that will be used to encrypt the object. Overrides the object metadata's kms_key_name value, if any

destinationPredefinedAcl ENUMERATION

Apply a predefined set of access controls to the destination object

ifGenerationMatch INTEGER

Makes the operation conditional on whether the object's current generation matches the given value. Setting to 0 makes the operation succeed only if there are no live versions of the object

ifGenerationNotMatch INTEGER

Makes the operation conditional on whether the object's current generation does not match the given value. If no live object exists, the precondition fails. Setting to 0 makes the operation succeed only if there is a live version of the object

ifMetagenerationMatch INTEGER

Makes the operation conditional on whether the destination object's current metageneration matches the given value

ifMetagenerationNotMatch INTEGER

Makes the operation conditional on whether the destination object's current metageneration does not match the given value

ifSourceGenerationMatch INTEGER

Makes the operation conditional on whether the source object's current generation matches the given value

ifSourceGenerationNotMatch INTEGER

Makes the operation conditional on whether the source object's current generation does not match the given value

ifSourceMetagenerationMatch INTEGER

Makes the operation conditional on whether the source object's current metageneration matches the given value

ifSourceMetagenerationNotMatch INTEGER

Makes the operation conditional on whether the source object's current metageneration does not match the given value

maxBytesRewrittenPerCall INTEGER

The maximum number of bytes that will be rewritten per rewrite request. Most callers shouldn't need to specify this parameter - it is primarily in place to support testing. If specified the value must be an integral multiple of 1 MiB (1048576). Also, this only applies to requests where the source and destination span locations and/or storage classes. Finally, this value must not change across rewrite calls else you'll get an error that the rewriteToken is invalid

projection ENUMERATION

Set of properties to return. Defaults to noAcl, unless the object resource specifies the acl property, when it defaults to full

provisionalUserProject STRING

The project to be billed for this request if the target bucket is requester-pays bucket

rewriteToken STRING

Include this field (from the previous rewrite response) on each rewrite request after the first one, until the rewrite response 'done' flag is true. Calls that provide a rewriteToken can omit all other request fields, but if included those fields must match the values provided in the first rewrite request

sourceGeneration INTEGER

If present, selects a specific revision of the source object (as opposed to the latest version, the default)

userProject STRING

The project to be billed for this request. Required for Requester Pays buckets

acl[] OBJECT

An access-control entry

acl[].bucket STRING

The name of the bucket

acl[].domain STRING

The domain associated with the entity, if any

acl[].email STRING

The email address associated with the entity, if any

acl[].entity STRING

The entity holding the permission, in one of the following forms:

acl[].entityId STRING

The ID for the entity, if any

acl[].etag STRING

HTTP 1.1 Entity tag for the access-control entry

acl[].generation INTEGER

The content generation of the object, if applied to an object

acl[].id STRING

The ID of the access-control entry

acl[].kind STRING

The kind of item this is. For object access control entries, this is always storage#objectAccessControl

acl[].object STRING

The name of the object, if applied to an object

acl[].projectTeam OBJECT

The project team associated with the entity, if any

acl[].projectTeam.projectNumber STRING

The project number

acl[].projectTeam.team STRING

The team

acl[].role STRING

The access permission for the entity

acl[].selfLink STRING

The link to this access-control entry

bucket STRING

The name of the bucket containing this object

cacheControl STRING

Cache-Control directive for the object data. If omitted, and the object is accessible to all anonymous users, the default will be public, max-age=3600

componentCount INTEGER

Number of underlying components that make up this object. Components are accumulated by compose operations

contentDisposition STRING

Content-Disposition of the object data

contentEncoding STRING

Content-Encoding of the object data

contentLanguage STRING

Content-Language of the object data

contentType STRING

Content-Type of the object data. If an object is stored without a Content-Type, it is served as application/octet-stream

crc32c STRING

CRC32c checksum, as described in RFC 4960, Appendix B; encoded using base64 in big-endian byte order. For more information about using the CRC32c checksum, see Hashes and ETags: Best Practices

customerEncryption OBJECT

Metadata of customer-supplied encryption key, if the object is encrypted by such a key

customerEncryption.encryptionAlgorithm STRING

The encryption algorithm

customerEncryption.keySha256 STRING

SHA256 hash value of the encryption key

etag STRING

HTTP 1.1 Entity tag for the object

eventBasedHold BOOLEAN

Whether an object is under event-based hold. Event-based hold is a way to retain objects until an event occurs, which is signified by the hold's release (i.e. this value is set to false). After being released (set to false), such objects will be subject to bucket-level retention (if any). One sample use case of this flag is for banks to hold loan documents for at least 3 years after loan is paid in full. Here, bucket-level retention is 3 years and the event is the loan being paid in full. In this example, these objects will be held intact for any number of years until the event has occurred (event-based hold on the object is released) and then 3 more years after that. That means retention duration of the objects begins from the moment event-based hold transitioned from true to false

generation INTEGER

The content generation of this object. Used for object versioning

id STRING

The ID of the object, including the bucket name, object name, and generation number

kind STRING

The kind of item this is. For objects, this is always storage#object

kmsKeyName STRING

Cloud KMS Key used to encrypt this object, if the object is encrypted by such a key

md5Hash STRING

MD5 hash of the data; encoded using base64. For more information about using the MD5 hash, see Hashes and ETags: Best Practices

mediaLink STRING

Media download link

metadata OBJECT

User-provided metadata, in key/value pairs

metadata.customKey.value STRING Required

User-provided metadata, in key/value pairs

metageneration INTEGER

The version of the metadata for this object at this generation. Used for preconditions and for detecting changes in metadata. A metageneration number is only meaningful in the context of a particular generation of a particular object

name STRING

The name of the object. Required if not specified by URL parameter

owner OBJECT

The owner of the object. This will always be the uploader of the object

owner.entity STRING

The entity, in the form user-userId

owner.entityId STRING

The ID for the entity

retentionExpirationTime DATE_TIME

A server-determined value that specifies the earliest time that the object's retention period expires. This value is in RFC 3339 format. Note 1: This field is not provided for objects with an active event-based hold, since retention expiration is unknown until the hold is removed. Note 2: This value can be provided even when temporary hold is set (so that the user can reason about policy without having to first unset the temporary hold)

selfLink STRING

The link to this object

size INTEGER

Content-Length of the data in bytes

storageClass STRING

Storage class of the object

temporaryHold BOOLEAN

Whether an object is under temporary hold. While this flag is set to true, the object is protected against deletion and overwrites. A common use case of this flag is regulatory investigations where objects need to be retained while the investigation is ongoing. Note that unlike event-based hold, temporary hold does not impact retention expiration time of an object

timeCreated DATE_TIME

The creation time of the object in RFC 3339 format

timeDeleted DATE_TIME

The deletion time of the object in RFC 3339 format. Will be returned if and only if this version of the object has been deleted

timeStorageClassUpdated DATE_TIME

The time at which the object's storage class was last changed. When the object is initially created, it will be set to timeCreated

updated DATE_TIME

The modification time of the object metadata in RFC 3339 format

Output

This building block provides 57 output parameters

  = Parameter name
  = Format

done BOOLEAN

true if the copy is finished; otherwise, false if the copy is in progress. This property is always present in the response

kind STRING

The kind of item this is

objectSize INTEGER

The total size of the object being copied in bytes. This property is always present in the response

resource OBJECT

An object

resource.acl[] OBJECT

An access-control entry

resource.acl[].bucket STRING

The name of the bucket

resource.acl[].domain STRING

The domain associated with the entity, if any

resource.acl[].email STRING

The email address associated with the entity, if any

resource.acl[].entity STRING

The entity holding the permission, in one of the following forms:

resource.acl[].entityId STRING

The ID for the entity, if any

resource.acl[].etag STRING

HTTP 1.1 Entity tag for the access-control entry

resource.acl[].generation INTEGER

The content generation of the object, if applied to an object

resource.acl[].id STRING

The ID of the access-control entry

resource.acl[].kind STRING

The kind of item this is. For object access control entries, this is always storage#objectAccessControl

resource.acl[].object STRING

The name of the object, if applied to an object

resource.acl[].projectTeam OBJECT

The project team associated with the entity, if any

resource.acl[].projectTeam.projectNumber STRING

The project number

resource.acl[].projectTeam.team STRING

The team

resource.acl[].role STRING

The access permission for the entity

resource.acl[].selfLink STRING

The link to this access-control entry

resource.bucket STRING

The name of the bucket containing this object

resource.cacheControl STRING

Cache-Control directive for the object data. If omitted, and the object is accessible to all anonymous users, the default will be public, max-age=3600

resource.componentCount INTEGER

Number of underlying components that make up this object. Components are accumulated by compose operations

resource.contentDisposition STRING

Content-Disposition of the object data

resource.contentEncoding STRING

Content-Encoding of the object data

resource.contentLanguage STRING

Content-Language of the object data

resource.contentType STRING

Content-Type of the object data. If an object is stored without a Content-Type, it is served as application/octet-stream

resource.crc32c STRING

CRC32c checksum, as described in RFC 4960, Appendix B; encoded using base64 in big-endian byte order. For more information about using the CRC32c checksum, see Hashes and ETags: Best Practices

resource.customerEncryption OBJECT

Metadata of customer-supplied encryption key, if the object is encrypted by such a key

resource.customerEncryption.encryptionAlgorithm STRING

The encryption algorithm

resource.customerEncryption.keySha256 STRING

SHA256 hash value of the encryption key

resource.etag STRING

HTTP 1.1 Entity tag for the object

resource.eventBasedHold BOOLEAN

Whether an object is under event-based hold. Event-based hold is a way to retain objects until an event occurs, which is signified by the hold's release (i.e. this value is set to false). After being released (set to false), such objects will be subject to bucket-level retention (if any). One sample use case of this flag is for banks to hold loan documents for at least 3 years after loan is paid in full. Here, bucket-level retention is 3 years and the event is the loan being paid in full. In this example, these objects will be held intact for any number of years until the event has occurred (event-based hold on the object is released) and then 3 more years after that. That means retention duration of the objects begins from the moment event-based hold transitioned from true to false

resource.generation INTEGER

The content generation of this object. Used for object versioning

resource.id STRING

The ID of the object, including the bucket name, object name, and generation number

resource.kind STRING

The kind of item this is. For objects, this is always storage#object

resource.kmsKeyName STRING

Cloud KMS Key used to encrypt this object, if the object is encrypted by such a key

resource.md5Hash STRING

MD5 hash of the data; encoded using base64. For more information about using the MD5 hash, see Hashes and ETags: Best Practices

resource.mediaLink STRING

Media download link

resource.metadata OBJECT

User-provided metadata, in key/value pairs

resource.metadata.customKey.value STRING

User-provided metadata, in key/value pairs

resource.metageneration INTEGER

The version of the metadata for this object at this generation. Used for preconditions and for detecting changes in metadata. A metageneration number is only meaningful in the context of a particular generation of a particular object

resource.name STRING

The name of the object. Required if not specified by URL parameter

resource.owner OBJECT

The owner of the object. This will always be the uploader of the object

resource.owner.entity STRING

The entity, in the form user-userId

resource.owner.entityId STRING

The ID for the entity

resource.retentionExpirationTime DATE_TIME

A server-determined value that specifies the earliest time that the object's retention period expires. This value is in RFC 3339 format. Note 1: This field is not provided for objects with an active event-based hold, since retention expiration is unknown until the hold is removed. Note 2: This value can be provided even when temporary hold is set (so that the user can reason about policy without having to first unset the temporary hold)

resource.selfLink STRING

The link to this object

resource.size INTEGER

Content-Length of the data in bytes

resource.storageClass STRING

Storage class of the object

resource.temporaryHold BOOLEAN

Whether an object is under temporary hold. While this flag is set to true, the object is protected against deletion and overwrites. A common use case of this flag is regulatory investigations where objects need to be retained while the investigation is ongoing. Note that unlike event-based hold, temporary hold does not impact retention expiration time of an object

resource.timeCreated DATE_TIME

The creation time of the object in RFC 3339 format

resource.timeDeleted DATE_TIME

The deletion time of the object in RFC 3339 format. Will be returned if and only if this version of the object has been deleted

resource.timeStorageClassUpdated DATE_TIME

The time at which the object's storage class was last changed. When the object is initially created, it will be set to timeCreated

resource.updated DATE_TIME

The modification time of the object metadata in RFC 3339 format

rewriteToken STRING

A token to use in subsequent requests to continue copying data. This token is present in the response only when there is more data to copy

totalBytesRewritten INTEGER

The total bytes written so far, which can be used to provide a waiting user with a progress indicator. This property is always present in the response