To get the permissions that
you need to create and manage Anywhere Cache caches,
ask your administrator to grant you theStorage Admin(roles/storage.admin)
IAM role on the bucket for which you want to create caches.
This predefined role contains
the permissions required to create and manage Anywhere Cache caches. To see the exact permissions that are
required, expand theRequired permissionssection:
Required permissions
The following permissions are required to create and manage Anywhere Cache caches:
storage.anywhereCaches.disable(required for disabling caches)
storage.anywhereCaches.get(required for getting caches)
storage.anywhereCaches.create(required for creating caches)
storage.anywhereCaches.list(required for listing caches)
storage.anywhereCaches.pause(required for pausing caches)
storage.anywhereCaches.resume(required for resuming caches)
storage.anywhereCaches.update(required for updating caches)
You can also get these permissions withcustom roles.
In the list of buckets, click the name of the bucket for which you want
to cache data.
On theBucket detailspage, click theConfigurationtab.
In theAnywhere Cachesection, clickConfigure cache.
TheConfigure cachepage appears for your bucket.
In theCache regionssection, click the region that contains the
zones in which you want to create a cache.
In theCache zonessection, select the zones in which you want to
create a cache. For each zone you select, specify aTime to liveand
anIngest on second accessoption for the cache.
ClickSave configuration.
In the dialogue that appears, clickConfirm.
TheOperationstab in theBucket detailspage opens, which shows
you the job status of your
create cache operation.
To create a cache as part of creating a new bucket, follow the instructions
inCreate a new bucket.
To view the status of a bucket's cache from theBuckets listpage:
In the Google Cloud console, go to the Cloud StorageBucketspage.
BUCKET_NAMEwith the name of the bucket for
which you want to cache data. For example,my-bucket.
ZONEwith the zone in which the
cache will run. For example,us-east1-b.
To create multiple caches at once, you can specify multiple zones. For
example,us-east1-b us-east1-c us-east1-d.
Set the following optional flags to have greater control over the
creation of the cache:
--ttl: Specify the time to live (TTL) of the data in the cache,
in seconds. Values can be expressed in seconds, minutes, hours, and days.
For example:
86400sfor 86,400 seconds
1440mfor 1,440 minutes
24hfor 24 hours
1dfor 1 day
If unspecified, defaults to86400s(1 day).
--admission-policy: Specify at what point data gets ingested into
the cache. Acceptable values areADMIT_ON_FIRST_MISSandADMIT_ON_SECOND_MISS. If unspecified, defaults toADMIT_ON_FIRST_MISS.
If successful, the command returns the ID of the long-running operation
associated with the AnywhereCache Create operation. You
canget detailsabout the long-running operation orcancelthe long-running operation to stop the AnywhereCaches Create operation
before it completes.
namespacestoragecontrol=google::cloud::storagecontrol_v2;[](storagecontrol::StorageControlClientclient,std::stringconst&bucket_name,std::stringconst&cache_name,std::stringconst&zone_name){google::storage::control::v2::AnywhereCachecache;cache.set_name(cache_name);cache.set_zone(zone_name);google::storage::control::v2::CreateAnywhereCacheRequestrequest;request.set_parent(std::string{"projects/_/buckets/"}+bucket_name);*request.mutable_anywhere_cache()=cache;// Start a create operation and block until it completes. Real applications// may want to setup a callback, wait on a coroutine, or poll until it// completes.autoanywhere_cache=client.CreateAnywhereCache(request).get();if(!anywhere_cache)throwstd::move(anywhere_cache).status();std::cout<<"Created anywhere cache: "<<anywhere_cache->name()<<"\n";}
importcom.google.api.gax.longrunning.OperationFuture;importcom.google.storage.control.v2.AnywhereCache;importcom.google.storage.control.v2.BucketName;importcom.google.storage.control.v2.CreateAnywhereCacheMetadata;importcom.google.storage.control.v2.CreateAnywhereCacheRequest;importcom.google.storage.control.v2.StorageControlClient;importjava.io.IOException;importjava.util.concurrent.ExecutionException;publicfinalclassAnywhereCacheCreate{publicstaticvoidanywhereCacheCreate(StringbucketName,StringcacheName,StringzoneName)throwsInterruptedException,ExecutionException,IOException{try(StorageControlClientstorageControl=StorageControlClient.create()){CreateAnywhereCacheRequestrequest=CreateAnywhereCacheRequest.newBuilder()// Set project to "_" to signify globally scoped bucket.setParent(BucketName.format("_",bucketName)).setAnywhereCache(AnywhereCache.newBuilder().setName(cacheName).setZone(zoneName).build()).build();// Start a long-running operation (LRO).OperationFuture<AnywhereCache,CreateAnywhereCacheMetadata>operation=storageControl.createAnywhereCacheAsync(request);// Await the LROs completion.AnywhereCacheanywhereCache=operation.get();System.out.printf("Created anywhere cache: %s%n",anywhereCache.getName());}}}
ZONEwith the zone in which
the cache will run. For example,us-east1-b.
TIME_TO_LIVEwith the time to live (TTL) of
the data in the cache. The value can be between 1 hour
to 7 days, specified in seconds. If unspecified, defaults to86400s(1 day).
ADMISSION_POLICYwith the admission policy
of the cache, which specifies when data gets ingested. Values can
beadmit-on-first-missoradmit-on-second-miss. If unspecified, defaults toadmit-on-first-miss.
JSON_FILE_NAMEwith the name of the JSON
file you created in Step 2.
BUCKET_NAMEwith the name of the bucket
for which you want to cache data. For example,my-bucket.
If successful, the operation returns agoogle.longrunning.Operation.
You canget detailsabout the long-running operation orcancelthe long-running operation to stop the AnywhereCaches
Create operation before it completes.
View a cache
Console
In the Google Cloud console, go to the Cloud StorageBucketspage.
You can optionally use the--rawflag to return a raw API response
instead of a standardized response. For more information about
controlling listing behaviors, such as paginating results, see thegcloud storage lsdocumentation.
In the list of buckets, click the name of the bucket associated with the
cache you want to update.
On theBucket detailspage, click theObservabilitytab, then
clickAnywhere Cachein the navigation menu.
ClickEdit configuration.
In theEdit configurationpage that appears, update the properties
of the cache, then clickSave.
Command line
Use thegcloud storage buckets anywhere-caches updatecommand:
gcloud storage buckets anywhere-caches updateID
Replace:
IDwith the identifier of the cache
instance, formulated asBUCKET_NAME/ANYWHERE_CACHE_ID. For
example,my-bucket/us-east1-b.
To update multiple caches at once, you can specify multiple
identifiers. For example,my-bucket/us-east1-b my-bucket/us-east1-c.
Use the following flags to update the configuration of the cache. If a
flag is not specified, the value remains unchanged.
--ttl: Specify the time to live (TTL) of the data in the cache,
in seconds.
--admission-policy: Specify at what point data gets ingested into
the cache. Values can beADMIT_ON_FIRST_MISSorADMIT_ON_SECOND_MISS.
If successful, the command returns the ID of the raw long-running
operation associated with the AnywhereCache Update operation. You
canget detailsabout the long-running operation.
namespacestoragecontrol=google::cloud::storagecontrol_v2;[](storagecontrol::StorageControlClientclient,std::stringconst&cache_name,std::stringconst&admission_policy){google::storage::control::v2::AnywhereCachecache;google::protobuf::FieldMaskfield_mask;field_mask.add_paths("admission_policy");cache.set_name(cache_name);cache.set_admission_policy(admission_policy);// Start an update operation and block until it completes. Real applications// may want to setup a callback, wait on a coroutine, or poll until it// completes.autoanywhere_cache=client.UpdateAnywhereCache(cache,field_mask).get();if(!anywhere_cache)throwstd::move(anywhere_cache).status();std::cout<<"Updated anywhere cache: "<<anywhere_cache->name()<<"\n";}
TIME_TO_LIVEwith the TTL of the data in
the cache. The value can be between 1 hour to 7 days, specified in
seconds. If unspecified, the current value remains used.
ADMISSION_POLICYwith the admission policy
of the cache, which specifies when data gets ingested. Values can
beadmit-on-first-missoradmit-on-second-miss. If unspecified, the current
value remains used.
The following example updates the cache's TTL to 2 days
day and its admission policy to ingest data on the second miss:
The Cloud Storage portion of the Google Cloud console provides
monitoring charts that let you track the performance of your caches using
metrics. These monitoring charts can also be viewed usingCloud Monitoring.
Available charts
Chart
Resource hierarchy level
Description
Byte eviction rate
Bucket
The rate of bytes evicted from the cache, sampled every hour. This
data is refreshed more than once an hour to allow time for post processing
the data.
Byte eviction rate
Project
The rate of bytes evicted from all the caches of a bucket, sampled
every hour. This data is refreshed more than once an hour to allow time
for post processing the data.
Bytes in cache
Bucket
The number of the bytes in the cache, sampled every hour. This data is
refreshed more than once an hour to allow time for post processing the
data.
Bytes in cache
Project
The number of bytes in all the caches of a bucket, sampled every hour.
This data is refreshed more than once an hour to allow time for post
processing the data.
Cache throughput benefit
Project
The rate of the data transfer bandwidth quota for the region,
dual-region, or multi-region, usage of the quota, and extra throughput
served by the cache. The extra throughput served by the cache doesn't
count towards the quota, therefore, using the cache enables projects to
exceed the throughput allowed by the quota.
Hit rate operations
Bucket
The percentage of cache operations serving the requested data
from the cache relative to the total cache eligible operations, sampled
every 60 seconds. If a read is completely returned from cache the
operation counts as a hit. If the read is not returned from the cache or
only partially returned from the cache, the operation counts as a
miss.
Hit rate operations
Project
The percentage of cache operations serving the requested data
from all caches for a bucket relative to the total cache eligible
operations, sampled 60 seconds. If a read is completely returned from
cache, the operation counts as a hit. If the read is not returned from
the cache or only partially returned from the cache, the operation
counts as a miss.
Hit rate bytes
Bucket
The percentage of bytes that are served from the cache relative to
the total cache eligible bytes, sampled every 60 seconds.
Hit rate bytes
Project
The percentage of bytes that are served from all caches for a bucket
relative to the total cache eligible bytes, sampled every 60 seconds.
Ingestion rate raw bytes
Bucket
The rate of raw bytes ingested into each cache, sampled
every 60 seconds. All ingested bytes, including non-billable bytes,
are used in calculating the value of this metric. This metric is reported
in real time.
Ingestion rate raw bytes
Project
The rate of raw bytes ingested into all the caches of a bucket,
sampled every 60 seconds. All ingested bytes, including non-billable
bytes, are used in calculating the value of this metric. This metric is
reported in real time.
Throughput - Cache hit
Bucket
The throughput served from the cache, sampled every 60 seconds.
Throughput - Cache hit
Project
The throughput served from all caches for a bucket, sampled every
60 seconds.
Throughput - Cache miss
Bucket
The throughput that's not served from the
cache, sampled every 60 seconds.
Throughput - Cache miss
Project
The throughput that's not served from any of the caches of a bucket,
sampled every 60 seconds.
Access charts
Monitoring charts capture data either for individual buckets or for all buckets
within a project. The resource hierarchy level that a chart captures determines
where you can access the chart.
Access bucket-level charts
In the Google Cloud console, go to the Cloud StorageBucketspage.
In theCloud Storagenavigation pane, clickMonitoring.
In the menu bar, clickAnywhere Cache.
Monitoring charts are displayed.
Use long-running operations
When successfully run, theAnywhereCaches CreateandUpdateoperations
initiate along-running operation. You can get and list long-running
operations in order to view the details and status of the underlying
AnywhereCaches operation, or cancel a long-running operation in order to
cancel the underlying AnywhereCaches operation while it's in progress.
Asynchronous AnywhereCaches APIs areidempotentby default. This means
that you can safely retry asynchronous AnywhereCaches API calls without concern
about modifying resources unintentionally.
For example, say you perform an AnywhereCaches Create operation to create a
cache inus-central1-a, which succeeds. If you perform a subsequent
AnywhereCaches Create operation using the same zone that succeeds, the request
returns the same long-running operation as the previous request. Note that this
behavior only occurs if you include arequest_idas part of
your create cache request. If arequest_idisn't included, you get anANYWHERE_CACHE_ALREADY_EXISTSerror when attempting to create a cache that
already exists. For information about how to include arequest_id, seeRequest identification.
What's next
Getrecommendationsabout which buckets and zones to create a cache for.
[[["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-09-04 UTC."],[],[],null,[]]