This page shows you how get information on the metadata of your Cloud Storage buckets , excluding IAM policies and ACLs.
To learn how to get the IAM policy of your bucket, see View the IAM policy for a bucket .
Required roles
In order to get the required permissions for getting the metadata of a
Cloud Storage bucket, ask your administrator to grant you the Storage
Admin ( roles/storage.admin
) role on the bucket.
This role contains the permissions required to get the metadata of a bucket. To see the exact permissions that are required, expand the Required permissionssection:
Required permissions
-
storage.buckets.get
-
storage.buckets.list
- This permission is only needed if you plan on using the Google Cloud console to perform the task on this page.
You might also be able to get these permissions with other predefined roles or custom roles .
For instructions on granting roles on buckets, see Use IAM with buckets .
Display a bucket's metadata
Console
- In the Google Cloud console, go to the Cloud Storage Buckets
page.
-
In the bucket list, click the name of the bucket whose metadata you want to view.
-
Click the Configurationtab to view bucket details such as the included regions, storage class, permissions, and replication type.
Command line
Use the gcloud storage buckets describe
command:
gcloud storage buckets describe gs:// BUCKET_NAME
Where:
-
BUCKET_NAME
is the name of the bucket whose metadata you want to view. For example,my-awesome-bucket
.
If successful, the response looks similar to the following example:
defaultEventBasedHold: false etag: CAE= iamConfiguration: bucketPolicyOnly: enabled: true ...
Client libraries
C++
For more information, see the Cloud Storage C++ API reference documentation .
To authenticate to Cloud Storage, set up Application Default Credentials. For more information, see Set up authentication for client libraries .
namespace
gcs
=
::
google
::
cloud
::
storage
;
using
::
google
::
cloud
::
StatusOr
;
[](
gcs
::
Client
client
,
std
::
string
const
&
bucket_name
)
{
StatusOr<gcs
::
BucketMetadata
>
bucket_metadata
=
client
.
GetBucketMetadata
(
bucket_name
);
if
(
!
bucket_metadata
)
throw
std
::
move
(
bucket_metadata
).
status
();
std
::
cout
<<
"The metadata for bucket "
<<
bucket_metadata
-
> name
()
<<
" is "
<<
*
bucket_metadata
<<
"
\n
"
;
}
C#
For more information, see the Cloud Storage C# API reference documentation .
To authenticate to Cloud Storage, set up Application Default Credentials. For more information, see Set up authentication for client libraries .
using
Google.Apis.Storage.v1.Data
;
using
Google.Cloud.Storage.V1
;
using
System
;
public
class
GetBucketMetadataSample
{
public
Bucket
GetBucketMetadata
(
string
bucketName
=
"your-unique-bucket-name"
)
{
var
storage
=
StorageClient
.
Create
();
var
bucket
=
storage
.
GetBucket
(
bucketName
,
new
GetBucketOptions
{
Projection
=
Projection
.
Full
});
Console
.
WriteLine
(
$"Bucket:\t{bucket.Name}"
);
Console
.
WriteLine
(
$"Acl:\t{bucket. Acl
}"
);
Console
.
WriteLine
(
$"Billing:\t{bucket.Billing}"
);
Console
.
WriteLine
(
$"Cors:\t{bucket.Cors}"
);
Console
.
WriteLine
(
$"DefaultEventBasedHold:\t{bucket.DefaultEventBasedHold}"
);
Console
.
WriteLine
(
$"DefaultObjectAcl:\t{bucket.DefaultObjectAcl}"
);
Console
.
WriteLine
(
$"Encryption:\t{bucket.Encryption}"
);
if
(
bucket
.
Encryption
!=
null
)
{
Console
.
WriteLine
(
$"KmsKeyName:\t{bucket.Encryption.DefaultKmsKeyName}"
);
}
Console
.
WriteLine
(
$"Id:\t{bucket.Id}"
);
Console
.
WriteLine
(
$"Kind:\t{bucket.Kind}"
);
Console
.
WriteLine
(
$"Lifecycle:\t{bucket.Lifecycle}"
);
Console
.
WriteLine
(
$"Location:\t{bucket.Location}"
);
Console
.
WriteLine
(
$"LocationType:\t{bucket.LocationType}"
);
Console
.
WriteLine
(
$"Logging:\t{bucket.Logging}"
);
Console
.
WriteLine
(
$"Metageneration:\t{bucket.Metageneration}"
);
Console
.
WriteLine
(
$"ObjectRetention:\t{bucket.ObjectRetention}"
);
Console
.
WriteLine
(
$"Owner:\t{bucket.Owner}"
);
Console
.
WriteLine
(
$"ProjectNumber:\t{bucket.ProjectNumber}"
);
Console
.
WriteLine
(
$"RetentionPolicy:\t{bucket.RetentionPolicy}"
);
Console
.
WriteLine
(
$"SelfLink:\t{bucket.SelfLink}"
);
Console
.
WriteLine
(
$"StorageClass:\t{bucket.StorageClass}"
);
Console
.
WriteLine
(
$"TimeCreated:\t{bucket.TimeCreated}"
);
Console
.
WriteLine
(
$"Updated:\t{bucket.Updated}"
);
Console
.
WriteLine
(
$"Versioning:\t{bucket.Versioning}"
);
Console
.
WriteLine
(
$"Website:\t{bucket.Website}"
);
Console
.
WriteLine
(
$"TurboReplication:\t{bucket.Rpo}"
);
if
(
bucket
.
Labels
!=
null
)
{
Console
.
WriteLine
(
"Labels:"
);
foreach
(
var
label
in
bucket
.
Labels
)
{
Console
.
WriteLine
(
$"{label. Key
}:\t{label.Value}"
);
}
}
return
bucket
;
}
}
Go
For more information, see the Cloud Storage Go API reference documentation .
To authenticate to Cloud Storage, set up Application Default Credentials. For more information, see Set up authentication for client libraries .
import
(
"context"
"fmt"
"io"
"time"
"cloud.google.com/go/storage"
)
// getBucketMetadata gets the bucket metadata.
func
getBucketMetadata
(
w
io
.
Writer
,
bucketName
string
)
(
*
storage
.
BucketAttrs
,
error
)
{
// bucketName := "bucket-name"
ctx
:=
context
.
Background
()
client
,
err
:=
storage
.
NewClient
(
ctx
)
if
err
!=
nil
{
return
nil
,
fmt
.
Errorf
(
"storage.NewClient: %w"
,
err
)
}
defer
client
.
Close
()
ctx
,
cancel
:=
context
.
WithTimeout
(
ctx
,
time
.
Second
*
10
)
defer
cancel
()
attrs
,
err
:=
client
.
Bucket
(
bucketName
).
Attrs
(
ctx
)
if
err
!=
nil
{
return
nil
,
fmt
.
Errorf
(
"Bucket(%q).Attrs: %w"
,
bucketName
,
err
)
}
fmt
.
Fprintf
(
w
,
"BucketName: %v\n"
,
attrs
.
Name
)
fmt
.
Fprintf
(
w
,
"Location: %v\n"
,
attrs
.
Location
)
fmt
.
Fprintf
(
w
,
"LocationType: %v\n"
,
attrs
.
LocationType
)
fmt
.
Fprintf
(
w
,
"StorageClass: %v\n"
,
attrs
.
StorageClass
)
fmt
.
Fprintf
(
w
,
"Turbo replication (RPO): %v\n"
,
attrs
.
RPO
)
fmt
.
Fprintf
(
w
,
"TimeCreated: %v\n"
,
attrs
.
Created
)
fmt
.
Fprintf
(
w
,
"Metageneration: %v\n"
,
attrs
.
MetaGeneration
)
fmt
.
Fprintf
(
w
,
"PredefinedACL: %v\n"
,
attrs
.
PredefinedACL
)
if
attrs
.
Encryption
!=
nil
{
fmt
.
Fprintf
(
w
,
"DefaultKmsKeyName: %v\n"
,
attrs
.
Encryption
.
DefaultKMSKeyName
)
}
if
attrs
.
Website
!=
nil
{
fmt
.
Fprintf
(
w
,
"IndexPage: %v\n"
,
attrs
.
Website
.
MainPageSuffix
)
fmt
.
Fprintf
(
w
,
"NotFoundPage: %v\n"
,
attrs
.
Website
.
NotFoundPage
)
}
fmt
.
Fprintf
(
w
,
"DefaultEventBasedHold: %v\n"
,
attrs
.
DefaultEventBasedHold
)
if
attrs
.
RetentionPolicy
!=
nil
{
fmt
.
Fprintf
(
w
,
"RetentionEffectiveTime: %v\n"
,
attrs
.
RetentionPolicy
.
EffectiveTime
)
fmt
.
Fprintf
(
w
,
"RetentionPeriod: %v\n"
,
attrs
.
RetentionPolicy
.
RetentionPeriod
)
fmt
.
Fprintf
(
w
,
"RetentionPolicyIsLocked: %v\n"
,
attrs
.
RetentionPolicy
.
IsLocked
)
}
fmt
.
Fprintf
(
w
,
"ObjectRetentionMode: %v\n"
,
attrs
.
ObjectRetentionMode
)
fmt
.
Fprintf
(
w
,
"RequesterPays: %v\n"
,
attrs
.
RequesterPays
)
fmt
.
Fprintf
(
w
,
"VersioningEnabled: %v\n"
,
attrs
.
VersioningEnabled
)
if
attrs
.
Logging
!=
nil
{
fmt
.
Fprintf
(
w
,
"LogBucket: %v\n"
,
attrs
.
Logging
.
LogBucket
)
fmt
.
Fprintf
(
w
,
"LogObjectPrefix: %v\n"
,
attrs
.
Logging
.
LogObjectPrefix
)
}
if
attrs
.
CORS
!=
nil
{
fmt
.
Fprintln
(
w
,
"CORS:"
)
for
_
,
v
:=
range
attrs
.
CORS
{
fmt
.
Fprintf
(
w
,
"\tMaxAge: %v\n"
,
v
.
MaxAge
)
fmt
.
Fprintf
(
w
,
"\tMethods: %v\n"
,
v
.
Methods
)
fmt
.
Fprintf
(
w
,
"\tOrigins: %v\n"
,
v
.
Origins
)
fmt
.
Fprintf
(
w
,
"\tResponseHeaders: %v\n"
,
v
.
ResponseHeaders
)
}
}
if
attrs
.
Labels
!=
nil
{
fmt
.
Fprintf
(
w
,
"\n\n\nLabels:"
)
for
key
,
value
:=
range
attrs
.
Labels
{
fmt
.
Fprintf
(
w
,
"\t%v = %v\n"
,
key
,
value
)
}
}
return
attrs
,
nil
}
Java
For more information, see the Cloud Storage Java API reference documentation .
To authenticate to Cloud Storage, set up Application Default Credentials. For more information, see Set up authentication for client libraries .
import
com.google.cloud.storage. Bucket
;
import
com.google.cloud.storage. BucketInfo
;
import
com.google.cloud.storage. Storage
;
import
com.google.cloud.storage. StorageOptions
;
import
java.util.Map
;
public
class
GetBucketMetadata
{
public
static
void
getBucketMetadata
(
String
projectId
,
String
bucketName
)
{
// The ID of your GCP project
// String projectId = "your-project-id";
// The ID of your GCS bucket
// String bucketName = "your-unique-bucket-name";
Storage
storage
=
StorageOptions
.
newBuilder
().
setProjectId
(
projectId
).
build
().
getService
();
// Select all fields. Fields can be selected individually e.g. Storage.BucketField.NAME
Bucket
bucket
=
storage
.
get
(
bucketName
,
Storage
.
BucketGetOption
.
fields
(
Storage
.
BucketField
.
values
()));
// Print bucket metadata
System
.
out
.
println
(
"BucketName: "
+
bucket
.
getName
());
System
.
out
.
println
(
"DefaultEventBasedHold: "
+
bucket
.
getDefaultEventBasedHold
());
System
.
out
.
println
(
"DefaultKmsKeyName: "
+
bucket
.
getDefaultKmsKeyName
());
System
.
out
.
println
(
"Id: "
+
bucket
.
getGeneratedId
());
System
.
out
.
println
(
"IndexPage: "
+
bucket
.
getIndexPage
());
System
.
out
.
println
(
"Location: "
+
bucket
.
getLocation
());
System
.
out
.
println
(
"LocationType: "
+
bucket
.
getLocationType
());
System
.
out
.
println
(
"Metageneration: "
+
bucket
.
getMetageneration
());
System
.
out
.
println
(
"NotFoundPage: "
+
bucket
.
getNotFoundPage
());
System
.
out
.
println
(
"RetentionEffectiveTime: "
+
bucket
.
getRetentionEffectiveTime
());
System
.
out
.
println
(
"RetentionPeriod: "
+
bucket
.
getRetentionPeriod
());
System
.
out
.
println
(
"RetentionPolicyIsLocked: "
+
bucket
.
retentionPolicyIsLocked
());
System
.
out
.
println
(
"RequesterPays: "
+
bucket
.
requesterPays
());
System
.
out
.
println
(
"SelfLink: "
+
bucket
.
getSelfLink
());
System
.
out
.
println
(
"StorageClass: "
+
bucket
.
getStorageClass
().
name
());
System
.
out
.
println
(
"TimeCreated: "
+
bucket
.
getCreateTime
());
System
.
out
.
println
(
"VersioningEnabled: "
+
bucket
.
versioningEnabled
());
System
.
out
.
println
(
"ObjectRetention: "
+
bucket
.
getObjectRetention
());
if
(
bucket
.
getLabels
()
!=
null
)
{
System
.
out
.
println
(
"\n\n\nLabels:"
);
for
(
Map
.
Entry<String
,
String
>
label
:
bucket
.
getLabels
().
entrySet
())
{
System
.
out
.
println
(
label
.
getKey
()
+
"="
+
label
.
getValue
());
}
}
if
(
bucket
.
getLifecycleRules
()
!=
null
)
{
System
.
out
.
println
(
"\n\n\nLifecycle Rules:"
);
for
(
BucketInfo
.
LifecycleRule
rule
:
bucket
.
getLifecycleRules
())
{
System
.
out
.
println
(
rule
);
}
}
}
}
Node.js
For more information, see the Cloud Storage Node.js API reference documentation .
To authenticate to Cloud Storage, set up Application Default Credentials. For more information, see Set up authentication for client libraries .
// Imports the Google Cloud client library
const
{
Storage
}
=
require
(
' @google-cloud/storage
'
);
// Creates a client
const
storage
=
new
Storage
();
async
function
getBucketMetadata
()
{
/**
* TODO(developer): Uncomment the following lines before running the sample.
*/
// The ID of your GCS bucket
// const bucketName = 'your-unique-bucket-name';
// Get Bucket Metadata
const
[
metadata
]
=
await
storage
.
bucket
(
bucketName
).
getMetadata
();
console
.
log
(
JSON
.
stringify
(
metadata
,
null
,
2
));
}
PHP
For more information, see the Cloud Storage PHP API reference documentation .
To authenticate to Cloud Storage, set up Application Default Credentials. For more information, see Set up authentication for client libraries .
use Google\Cloud\Storage\StorageClient;
/**
* Get bucket metadata.
*
* @param string $bucketName The name of your Cloud Storage bucket.
* (e.g. 'my-bucket')
*/
function get_bucket_metadata(string $bucketName): void
{
$storage = new StorageClient();
$bucket = $storage->bucket($bucketName);
$info = $bucket->info();
printf('Bucket Metadata: %s' . PHP_EOL, print_r($info, true));
}
Python
For more information, see the Cloud Storage Python API reference documentation .
To authenticate to Cloud Storage, set up Application Default Credentials. For more information, see Set up authentication for client libraries .
from
google.cloud
import
storage
def
bucket_metadata
(
bucket_name
):
"""Prints out a bucket's metadata."""
# bucket_name = 'your-bucket-name'
storage_client
=
storage
.
Client
()
bucket
=
storage_client
.
get_bucket
(
bucket_name
)
print
(
f
"ID:
{
bucket
.
id
}
"
)
print
(
f
"Name:
{
bucket
.
name
}
"
)
print
(
f
"Storage Class:
{
bucket
.
storage_class
}
"
)
print
(
f
"Location:
{
bucket
.
location
}
"
)
print
(
f
"Location Type:
{
bucket
.
location_type
}
"
)
print
(
f
"Cors:
{
bucket
.
cors
}
"
)
print
(
f
"Default Event Based Hold:
{
bucket
.
default_event_based_hold
}
"
)
print
(
f
"Default KMS Key Name:
{
bucket
.
default_kms_key_name
}
"
)
print
(
f
"Metageneration:
{
bucket
.
metageneration
}
"
)
print
(
f
"Public Access Prevention:
{
bucket
.
iam_configuration
.
public_access_prevention
}
"
)
print
(
f
"Retention Effective Time:
{
bucket
.
retention_policy_effective_time
}
"
)
print
(
f
"Retention Period:
{
bucket
.
retention_period
}
"
)
print
(
f
"Retention Policy Locked:
{
bucket
.
retention_policy_locked
}
"
)
print
(
f
"Object Retention Mode:
{
bucket
.
object_retention_mode
}
"
)
print
(
f
"Requester Pays:
{
bucket
.
requester_pays
}
"
)
print
(
f
"Self Link:
{
bucket
.
self_link
}
"
)
print
(
f
"Time Created:
{
bucket
.
time_created
}
"
)
print
(
f
"Versioning Enabled:
{
bucket
.
versioning_enabled
}
"
)
print
(
f
"Labels:
{
bucket
.
labels
}
"
)
Ruby
For more information, see the Cloud Storage Ruby API reference documentation .
To authenticate to Cloud Storage, set up Application Default Credentials. For more information, see Set up authentication for client libraries .
def
get_bucket_metadata
bucket_name
:
# The ID of your GCS bucket
# bucket_name = "your-unique-bucket-name"
require
"google/cloud/storage"
storage
=
Google
::
Cloud
::
Storage
.
new
bucket
=
storage
.
bucket
bucket_name
puts
"ID:
#{
bucket
.
id
}
"
puts
"Name:
#{
bucket
.
name
}
"
puts
"Storage Class:
#{
bucket
.
storage_class
}
"
puts
"Location:
#{
bucket
.
location
}
"
puts
"Location Type:
#{
bucket
.
location_type
}
"
puts
"Cors:
#{
bucket
.
cors
}
"
puts
"Default Event Based Hold:
#{
bucket
.
default_event_based_hold?
}
"
puts
"Default KMS Key Name:
#{
bucket
.
default_kms_key
}
"
puts
"Logging Bucket:
#{
bucket
.
logging_bucket
}
"
puts
"Logging Prefix:
#{
bucket
.
logging_prefix
}
"
puts
"Metageneration:
#{
bucket
.
metageneration
}
"
puts
"Retention Effective Time:
#{
bucket
.
retention_effective_at
}
"
puts
"Retention Period:
#{
bucket
.
retention_period
}
"
puts
"Retention Policy Locked:
#{
bucket
.
retention_policy_locked?
}
"
puts
"Requester Pays:
#{
bucket
.
requester_pays
}
"
puts
"Self Link:
#{
bucket
.
api_url
}
"
puts
"Time Created:
#{
bucket
.
created_at
}
"
puts
"Versioning Enabled:
#{
bucket
.
versioning?
}
"
puts
"Index Page:
#{
bucket
.
website_main
}
"
puts
"Not Found Page:
#{
bucket
.
website_404
}
"
puts
"Labels:"
bucket
.
labels
.
each
do
|
key
,
value
|
puts
" -
#{
key
}
=
#{
value
}
"
end
puts
"Lifecycle Rules:"
bucket
.
lifecycle
.
each
do
|
rule
|
puts
"
#{
rule
.
action
}
-
#{
rule
.
storage_class
}
-
#{
rule
.
age
}
-
#{
rule
.
matches_storage_class
}
"
end
end