Access public data
Stay organized with collections
Save and categorize content based on your preferences.
Some data stored in Cloud Storage is configured so that it's readable by anyone at any time. This public data can be accessed in several ways, depending on how you want to work with the data.
API Link
Get the name of the public object and the bucket that stores the object.
Use the following URI to access an object in the bucket:
https://storage.googleapis.com/BUCKET_NAME/OBJECT_NAME
For example, the Google public bucket gcp-public-data-landsat contains
the Landsat public dataset. You can link to the publicly shared object
LC08/01/001/003/LC08_L1GT_001003_20140812_20170420_01_T2/LC08_L1GT_001003_20140812_20170420_01_T2_B3.TIF
with the link:
https://storage.googleapis.com/gcp-public-data-landsat/LC08/01/001/003/LC08_L1GT_001003_20140812_20170420_01_T2/LC08_L1GT_001003_20140812_20170420_01_T2_B3.TIF
Console
Get the name of the public object and the bucket that stores the object.
Using a web browser, access the object with the following URI (you are asked to sign in if you are not already signed in):
https://console.cloud.google.com/storage/browser/_details/BUCKET_NAME/OBJECT_NAMEIf the public has permission to list the bucket's contents, you can list all the objects in the bucket with the following URI:
https://console.cloud.google.com/storage/browser/BUCKET_NAME
For example, the Google public bucket gcp-public-data-landsat contains
the Landsat public dataset. You can access the bucket with:
https://console.cloud.google.com/storage/browser/gcp-public-data-landsat
Command line
If you don't have the gcloud CLI, follow these instructions to install it.
When installing the gcloud CLI, if you don't want to authenticate, skip the step of running the command
gcloud init, and instead run the following command:gcloud config set auth/disable_credentials True
Get the name of the public object and the bucket that stores the object.
If permission to list the bucket's contents is granted to the public, you can list some or all of the objects contained in the bucket by using the
lscommand.For example, the Google public bucket
gcp-public-data-landsatcontains the Landsat public dataset. You can list objects with the prefixLC08/01/001/003/LCwith the following command:gcloud storage ls --recursive gs://gcp-public-data-landsat/LC08/01/001/003/LC*
Download specific public objects contained in the bucket by using the
cpcommand.For example, the following command downloads a file from the bucket
gcp-public-data-landsatto your local directory:gcloud storage cp gs://gcp-public-data-landsat/LC08/01/001/003/LC08_L1GT_001003_20140812_20170420_01_T2/LC08_L1GT_001003_20140812_20170420_01_T2_B3.TIF .
Client libraries
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.
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.
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.
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.
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.
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.
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.
C++
namespacegcs=::google::cloud::storage;
[](std::stringconst&bucket_name,std::stringconst&object_name){
// Create a client that does not authenticate with the server.
autoclient=gcs::Client{
google::cloud::Options{}.set<google::cloud::UnifiedCredentialsOption>(
google::cloud::MakeInsecureCredentials())};
// Read an object, the object must have been made public.
gcs::ObjectReadStreamstream=client.ReadObject(bucket_name,object_name);
intcount=0;
std::stringline;
while(std::getline(stream,line,'\n')){
++count;
}
if(stream.bad())throwgoogle::cloud::Status(stream.status());
std::cout << "The object has " << count << " lines\n";
}C#
usingGoogle.Cloud.Storage.V1 ;
usingSystem;
usingSystem.IO;
publicclassDownloadPublicFileSample
{
publicstringDownloadPublicFile(
stringbucketName="your-bucket-name",
stringobjectName="your-object-name",
stringlocalPath="path/to/download/object/to")
{
varstorage=StorageClient .CreateUnauthenticated ();
usingvaroutputFile=File.OpenWrite(localPath);
storage.DownloadObject(bucketName,objectName,outputFile);
Console.WriteLine($"Downloaded public file {objectName} from bucket {bucketName} to {localPath}.");
returnlocalPath;
}
}Go
import(
"context"
"fmt"
"io"
"time"
"cloud.google.com/go/storage"
"google.golang.org/api/option"
)
// downloadPublicFile downloads a public object.
funcdownloadPublicFile(wio.Writer ,bucket,objectstring)([]byte,error){
// bucket := "bucket-name"
// object := "object-name"
ctx:=context.Background()
// Create a client that does not authenticate with the server.
client,err:=storage.NewClient(ctx,option.WithoutAuthentication())
iferr!=nil{
returnnil,fmt.Errorf("storage.NewClient: %w",err)
}
deferclient.Close()
ctx,cancel:=context.WithTimeout(ctx,time.Second*50)
defercancel()
rc,err:=client.Bucket (bucket).Object (object).NewReader (ctx)
iferr!=nil{
returnnil,fmt.Errorf("Object(%q).NewReader: %w",object,err)
}
deferrc.Close()
data,err:=io.ReadAll(rc)
iferr!=nil{
returnnil,fmt.Errorf("io.ReadAll: %w",err)
}
fmt.Fprintf(w,"Blob %v downloaded.\n",object)
returndata,nil
}
Java
importcom.google.cloud.storage.BlobId ;
importcom.google.cloud.storage.Storage ;
importcom.google.cloud.storage.StorageOptions ;
importjava.nio.file.Path;
publicclass DownloadPublicObject{
publicstaticvoiddownloadPublicObject(
StringbucketName,StringpublicObjectName,PathdestFilePath){
// The name of the bucket to access
// String bucketName = "my-bucket";
// The name of the remote public file to download
// String publicObjectName = "publicfile.txt";
// The path to which the file should be downloaded
// Path destFilePath = Paths.get("/local/path/to/file.txt");
// Instantiate an anonymous Google Cloud Storage client, which can only access public files
Storage storage=StorageOptions .getUnauthenticatedInstance ().getService ();
storage.downloadTo (BlobId.of(bucketName,publicObjectName),destFilePath);
System.out.println(
"Downloaded public object "
+publicObjectName
+" from bucket name "
+bucketName
+" to "
+destFilePath);
}
}Node.js
/**
* TODO(developer): Uncomment the following lines before running the sample.
*/
// The ID of your GCS bucket
// const bucketName = 'your-unique-bucket-name';
// The ID of your GCS file
// const srcFilename = 'your-file-name';
// The path to which the file should be downloaded
// const destFileName = '/local/path/to/file.txt';
// Imports the Google Cloud client library
const{Storage}=require('@google-cloud/storage');
// Creates a client
conststorage=newStorage();
asyncfunctiondownloadPublicFile(){
constoptions={
destination:destFileName,
};
// Download public file.
awaitstorage.bucket(bucketName).file(srcFileName).download (options);
console.log(
`Downloaded public file ${srcFileName} from bucket name ${bucketName} to ${destFileName}`
);
}
downloadPublicFile().catch(console.error);Python
fromgoogle.cloudimport storage
defdownload_public_file(bucket_name, source_blob_name, destination_file_name):
"""Downloads a public blob from the bucket."""
# bucket_name = "your-bucket-name"
# source_blob_name = "storage-object-name"
# destination_file_name = "local/path/to/file"
storage_client = storage .Client .create_anonymous_client ()
bucket = storage_client.bucket(bucket_name)
blob = bucket.blob(source_blob_name)
blob.download_to_filename (destination_file_name)
print(
"Downloaded public blob {} from bucket {} to {}.".format(
source_blob_name, bucket.name, destination_file_name
)
)
Ruby
defdownload_public_filebucket_name:,file_name:,local_file_path:
# The name of the bucket to access
# bucket_name = "my-bucket"
# The name of the remote public file to download
# file_name = "publicfile.txt"
# The path to which the file should be downloaded
# local_file_path = "/local/path/to/file.txt"
require"google/cloud/storage"
storage=Google::Cloud::Storage .anonymous
bucket=storage.bucketbucket_name,skip_lookup:true
file=bucket.file file_name
file.download local_file_path
puts"Downloaded public object #{file.name} from bucket #{bucket} to #{local_file_path}"
end
What's next
- Explore some of the public datasets provided by Cloud Storage.
- Learn how to publicly share an object.
- Learn about options to control access to your data.
- Control access to your data using IAM permissions.
- Download objects from a bucket.