Stay organized with collections Save and categorize content based on your preferences.
To change a bucket's metadata, you make a PUT
request that is scoped to a bucket, and you use the appropriate query string parameter along with an XML document in the request body that defines the metadata you want to change. When using the XML API, each request can only change one part of a bucket's metadata.
You must have FULL_CONTROL
permission to send requests that modify bucket metadata. Also, you must be authenticated to use the PUT Bucket
method.
Exactly one of the following query parameters should be included as part of the request to change the bucket's metadata.
Parameter Description Requiredbilling
Enable or disable the Requester Pays feature for a bucket. No cors
Add, change, or remove the CORS configuration for a bucket. No encryptionConfig
Add, change, or remove the default customer-managed encryption key for a bucket. No lifecycle
Add, change, or remove the lifecycle configuration for a bucket. No logging
Add, change, or remove the logging configuration for a bucket. No storageClass
Change the default storage class for a bucket. Changing a bucket's default storage class doesn't affect the storage class of objects that already exist in the bucket. No tagging
Add, change, or remove the labels for a bucket. No versioning
Enable or disable Object Versioning for a bucket. No websiteConfig
Add, change, or remove the website configuration for a bucket. No
See signed URL query string parameters for information on the parameters you include when creating and using signed URLs.
Request body elementsYou should structure the request body based on the query parameter you use in the request. The contents included in the request body replace any existing settings or configurations for the specified metadata.
?billing
The following request body elements are applicable only if you use the billing
query string parameter to enable or disable Requester Pays for an existing bucket.
BillingConfiguration
The container for RequesterPays
. RequesterPays
The status to apply to the Requester Pays feature. Accepted values are Enabled
and Disabled
. ?cors
The following request body elements are applicable only if you use the cors
query string parameter to specify CORS for an existing bucket.
CorsConfig
Container for one or more Cors
configuration containers. If you specify multiple Cors
containers, the configurations are evaluated in the order listed within the CorsConfig
container, with the first Cors
container that has a configuration matching the Origin and Method of a request used to determine any CORS response headers to add to the response. Cors
Container for a CORS
configuration to be applied to the bucket. You can specify multiple Origins and multiple Methods in each Cors
container. There will be a match if the request Origin matches any of the Origins
in the Cors
container and the request Method matches any of the Methods
in the Cors
container. Origins
Container for one or more Origin
elements, specifying the origins permitted for cross origin resource sharing with this Cloud Storage bucket. Origin
An Origin permitted for cross origin resource sharing with this Cloud Storage bucket. For example, https://origin1.example.com
. If you supply a value that consists of only the wildcard (<Origin>*</Origin>
), this gives access to ALL origins. Methods
Container for one or more Method
elements, specifying the HTTP methods permitted in cross origin resource sharing with this Cloud Storage bucket. Method
An HTTP method used in this configuration. Valid values are DELETE
, GET
, HEAD
, POST
, and PUT
. OPTIONS
is interpreted as a preflight request, so you don't need to specify this method in your CORS configuration. ResponseHeaders
Optional container for one or more ResponseHeader
elements. ResponseHeader
Specifies a response header that the user agent is permitted to share across origins. MaxAgeSec
This value is used to respond to preflight requests, indicating the number of seconds that the client (browser) is allowed to make requests before the client must repeat the preflight request. (Indicates cache expiry time.) Preflight requests are required if the request method contains non-simple headers or if the request method is not POST
, GET
, or HEAD
. The value is returned in the Access-Control-Max-Age
header in responses to preflight requests. ?encryptionConfig
The following request body elements are applicable only if you use the encryptionConfig
query string parameter to set or remove the default customer-managed encryption key used for an existing bucket.
EncryptionConfiguration
The container for DefaultKmsKeyName
. If this element is empty, the existing default customer-managed encryption key (if any) is removed. DefaultKmsKeyName
The name of the Cloud Key Management Service key resource to use by default for objects added to the bucket. ?lifecycle
The following request body elements are applicable only if you use the lifecycle
query string parameter to set or remove the lifecycle configuration for an existing bucket.
LifecycleConfiguration
Defines the lifecycle management policies for the bucket, which contains 0 or more (up to 100) rules. Use an empty element (for example, <LifecycleConfiguration/>
) to disable lifecycle management for the bucket. Rule
Defines a lifecycle management rule, which is made of an action and the conditions that must be met for the action to occur. Action
Defines the action to occur. Must contain one and only one action element. AbortIncompleteMultipartUpload
Action element to abort incomplete multipart uploads and delete the parts associated with them. Only supports the following conditions: Age
, MatchesPrefix
, and MatchesSuffix
. Delete
Action element to delete objects in the bucket. SetStorageClass
Action element to change the storage class of objects in the bucket. Condition
Conditions that must be met for the action to occur. A rule must contain at least one condition element. Age
Condition element that matches objects over the specified age (in days). CreatedBefore
Condition element that matches objects created before midnight of the specified date in UTC. The value is an ISO date string without a timezone, for example 2019-01-15
. CustomTimeBefore
Condition element that matches objects whose Custom-Time
metadata contains a date that's older than the date set by this condition. CustomTimeBefore
is an ISO date string without a time zone, for example 2020-02-25
. DaysSinceCustomTime
Condition element that matches objects whose Custom-Time
metadata is more than DaysSinceCustomTime
days old. DaysSinceNoncurrentTime
Condition element relevant only for versioned objects. Matches objects that have been noncurrent for more than the specified number of days. IsLive
Condition element typically only used in conjunction with object versioning. When set to false
, this condition is satisfied for any noncurrent version of an object. When set to true
, this condition is satisfied for the live version of an object. If you don't use object versioning, all your objects are considered live and match when IsLive
is true
. MatchesPrefix
Condition element that matches objects whose names begin with the specified prefix. The prefix must meet object naming requirements. This condition can be added multiple times to the same rule in order to match more than one prefix. MatchesStorageClass
Condition element that matches objects of the specified storage class. This condition can be added multiple times to the same rule in order to cover more than one storage class. MatchesSuffix
Condition element that matches objects whose names end with the specified suffix. The suffix must meet object naming requirements. This condition can be added multiple times to the same rule in order to match more than one suffix. NoncurrentTimeBefore
Condition element relevant only for versioned objects. Matches objects that became noncurrent on a date prior to the date specified in this condition. NoncurrentTimeBefore
is an ISO date string without a time zone, for example 2020-02-25
. NumberOfNewerVersions
Condition element relevant only for versioned objects. If the value is N, the condition is satisfied when there are at least N versions (including the live version) newer than this version of the object. ?logging
The following request body elements are applicable only if you use the logging
query string parameter to specify the logging configuration for an existing bucket.
Logging
Container for a logging configuration. Use an empty element (for example, <Logging/>
) to disable logging for the bucket. LogBucket
The bucket that will receive log objects. Must be a valid bucket name. Required. LogObjectPrefix
The object prefix for log objects. It can be at most 900 characters and must be a valid object name. Optional. ?storageClass
The following request body element is applicable only if you use the storageClass
query string parameter to specify the storage class for an existing bucket.
StorageClass
Defines the default storage class for the bucket. ?tagging
The following request body elements are applicable only if you use the tagging
query string parameter to set the labels for an existing bucket.
Tagging
The container for TagSet
. TagSet
The container for all labels that are applied to the bucket. Tag
A container for an individual label. A label is composed of a key:value
pair. Key
The key for a label. Value
The value for a label. ?versioning
The following request body elements are applicable only if you use the versioning
query string parameter to enable or disable Object Versioning for an existing bucket.
VersioningConfiguration
Container for versioning configuration. Status
Status of versioning for this bucket. Can be either Enabled
or Suspended
. ?websiteConfig
The following request body elements are applicable only if you use the websiteConfig
query string parameter to specify a website configuration for an existing bucket.
A bucket's website configuration only applies to requests that use a CNAME
or A
redirect. For more information on using a bucket to host a static website, including other options for setting your website configuration, see Hosting a Static Website.
WebsiteConfiguration
Container for website configuration. MainPageSuffix
An object name suffix to simulate directory index behavior. Must be a valid object name. Optional. NotFoundPage
Name of the object to return with 404 responses. Must be a valid object name. Optional. Request syntax
The following syntax applies to PUT Bucket requests that change the metadata for a bucket.
PUT /?METADATA_QUERY_PARAMETER HTTP/1.1 Host: BUCKET_NAME.storage.googleapis.com Date: DATE_AND_TIME_OF_REQUEST Content-Length: REQUEST_BODY_LENGTH Content-Type: MIME_TYPE_OF_REQUEST_BODY Authorization: AUTHENTICATION_STRING XML_DOCUMENT_DEFINING_BUCKET_METADATA
The request can return a variety of response headers depending on the request headers you use.
Response body elementsThe response does not include an XML document in the response body.
ExampleThe following sample sets a CORS configuration on a bucket named acme-pets
. This CORS configuration sets two origins and the HTTP methods allowed for those origins. In this example, all of the available HTTP methods are allowed.
Request
PUT /?cors HTTP/1.1 Host: acme-pets.storage.googleapis.com Date: Thu, 12 Mar 2022 03:38:42 GMT Content-Length: 1320 Authorization: Bearer ya29.AHES6ZRVmB7fkLtd1XTmq6mo0S1wqZZi3-Lh_s-6Uw7p8vtgSwg <?xml version="1.0" encoding="UTF-8"?> <CorsConfig> <Cors> <Origins> <Origin>http://origin1.example.com</Origin> <Origin>http://origin2.example.com</Origin> </Origins> <Methods> <Method>GET</Method> <Method>HEAD</Method> <Method>PUT</Method> <Method>POST</Method> <Method>DELETE</Method> </Methods> <ResponseHeaders> <ResponseHeader>x-goog-meta-foo1</ResponseHeader> <ResponseHeader>x-goog-meta-foo2</ResponseHeader> </ResponseHeaders> <MaxAgeSec>1800</MaxAgeSec> </Cors> </CorsConfig>
Response
HTTP/1.1 200 OK Date: Thu, 12 Mar 2012 03:38:42 GMT Expires: Mon, 01 Jan 1990 00:00:00 GMT Cache-Control: no-cache, no-store, must-revalidate Content-Length: 0 Content-Type: text/html
Except as otherwise noted, the content of this page is licensed under the Creative Commons Attribution 4.0 License, and code samples are licensed under the Apache 2.0 License. For details, see the Google Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.
Last updated 2025-08-07 UTC.
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Hard to understand","hardToUnderstand","thumb-down"],["Incorrect information or sample code","incorrectInformationOrSampleCode","thumb-down"],["Missing the information/samples I need","missingTheInformationSamplesINeed","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-08-07 UTC."],[],[]]
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4