Rapid Cache を使用してキャッシュを作成して管理する

Rapid Cache を使用してキャッシュ インスタンスを作成して管理し、レイテンシを短縮して、Cloud Storage に保存されているオブジェクトのデータアクセスを最適化できます。このキャッシュ保存ソリューションは、データ取得を高速化することで、アプリケーションのパフォーマンスを向上させます。

このページでは、Rapid Cache を使用してキャッシュ インスタンスを作成して管理する方法について説明します。Rapid Cache の非同期キャッシュ オペレーションから開始される長時間実行オペレーションの使用方法と管理方法については、長時間実行オペレーションを使用するをご覧ください。

Rapid Cache を使用する前に、制限事項をご確認ください。

始める前に

Rapid Cache キャッシュの作成と管理に必要な権限を取得するには、キャッシュを作成するバケットに対するストレージ管理者 roles/storage.admin)IAM ロールを付与するよう管理者に依頼してください。

この事前定義ロールには、Rapid Cache キャッシュの作成と管理に必要な権限が含まれています。必要とされる正確な権限については、「必要な権限」セクションを開いてご確認ください。

必要な権限

Rapid Cache キャッシュを作成、管理するには、次の権限が必要です。

  • storage.anywhereCaches.create(キャッシュの作成に必要)
  • storage.anywhereCaches.disable(キャッシュを無効にするために必要)
  • storage.anywhereCaches.get(キャッシュの取得に必要)
  • storage.anywhereCaches.list(キャッシュの一覧表示に必要)
  • storage.anywhereCaches.resume(キャッシュの再開に必要)
  • storage.anywhereCaches.update(キャッシュの更新に必要)

カスタムロールを使用して、これらの権限を取得することもできます。

バケットに対するロールの付与については、バケットでの IAM ポリシーの設定と管理をご覧ください。

Rapid Cache メソッドから開始される長時間実行オペレーションを管理するには、追加のロールと権限が必要になる場合があります。詳細については、長時間実行オペレーションに必要なロールをご覧ください。

キャッシュを作成する

コンソール

既存のバケットにキャッシュを作成するには:

  1. Google Cloud コンソールで Cloud Storage の [バケット] ページに移動します。

    [バケット] に移動

  2. バケットのリストで、データをキャッシュに保存するバケットの名前をクリックします。

  3. [バケットの詳細] ページで、[構成] タブをクリックします。

  4. [Rapid Cache] セクションで、[キャッシュを管理] 編集をクリックします。

    バケットの [キャッシュを構成] ページが表示されます。

  5. [キャッシュ リージョン] セクションで、キャッシュを作成するゾーンを含むリージョンをクリックします。

  6. [キャッシュ ゾーン] セクションで、キャッシュを作成するゾーンを選択します。選択したゾーンごとに、有効期間(TTL)とデータ取り込み条件を設定します。

    • TTL を設定するには、[有効期間] 列の [期間]* フィールドに期間を入力し、時間単位を選択します。

    • データ取り込み条件を設定するには、[取り込み条件] 列で、 [編集] をクリックします。表示された [取り込み条件を設定] パネルで、データ取り込みオプションを選択し、[完了] をクリックします。

  7. [保存] をクリックします。

  8. 表示されるダイアログで [確認] をクリックします。

    [バケットの詳細] ページの [オペレーション] タブが開き、キャッシュ作成オペレーションのジョブ ステータスが表示されます。

新しいバケットの作成時にキャッシュを作成するには、新しいバケットを作成するの手順に沿って操作します。

[バケットリスト] ページからバケットのキャッシュのステータスを表示するには:

  1. Google Cloud コンソールで Cloud Storage の [バケット] ページに移動します。

    [バケット] に移動

  2. [列を表示] アイコン()をクリックし、[キャッシュ] を選択して [OK] をクリックします。

コマンドライン

gcloud storage buckets anywhere-caches create コマンドを使用します。

gcloud storage buckets anywhere-caches create gs://BUCKET_NAME CACHE_ZONE \
[--ttl=TTL] [--enable-ingest-on-write]

次のように置き換えます。

  • BUCKET_NAME は、データをキャッシュに保存するバケットの名前に置き換えます。例: my-bucket

  • CACHE_ZONE は、キャッシュを実行するゾーンに置き換えます。例: us-east1-b

    複数のキャッシュを一度に作成するには、複数のゾーンを指定します。例: us-east1-b us-east1-c us-east1-d

  • TTL(省略可)は、キャッシュ内のデータの有効期間(TTL)に置き換えます。値は 1 ~ 7 日の範囲で指定できます。値は、秒、分、時間、日単位で表すことができます。次に例を示します。

    • 86400s: 86,400 秒
    • 1440m: 1,440 分
    • 24h: 24 時間
    • 1d: 1 日

    指定しない場合のデフォルトは 86400s(1 日)です。

データがバケットに書き込まれた瞬間にデータをキャッシュに取り込むようにキャッシュを構成するには、--enable-ingest-on-write フラグを指定します。

成功すると、このコマンドは AnywhereCache の作成オペレーションに関連付けられた長時間実行オペレーションの ID を返します。長時間実行オペレーションの詳細を取得したり、AnywhereCaches 作成オペレーションの完了前に長時間実行オペレーションをキャンセルできます。

クライアント ライブラリ

C++

詳細については、Cloud Storage C++ API のリファレンス ドキュメントをご覧ください。

Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証情報を設定するをご覧ください。

namespace storagecontrol = google::cloud::storagecontrol_v2;
[](storagecontrol::StorageControlClient client,
   std::string const& bucket_name, std::string const& cache_name,
   std::string const& zone_name) {
  google::storage::control::v2::AnywhereCache cache;
  cache.set_name(cache_name);
  cache.set_zone(zone_name);

  google::storage::control::v2::CreateAnywhereCacheRequest request;
  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.
  auto anywhere_cache = client.CreateAnywhereCache(request).get();
  if (!anywhere_cache) throw std::move(anywhere_cache).status();
  std::cout << "Created anywhere cache: " << anywhere_cache->name() << "\n";
}

Java

詳細については、Cloud Storage Java API のリファレンス ドキュメントをご覧ください。

Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証情報を設定するをご覧ください。

import com.google.api.gax.longrunning.OperationFuture;
import com.google.storage.control.v2.AnywhereCache;
import com.google.storage.control.v2.BucketName;
import com.google.storage.control.v2.CreateAnywhereCacheMetadata;
import com.google.storage.control.v2.CreateAnywhereCacheRequest;
import com.google.storage.control.v2.StorageControlClient;
import java.io.IOException;
import java.util.concurrent.ExecutionException;

public final class AnywhereCacheCreate {

  public static void anywhereCacheCreate(String bucketName, String cacheName, String zoneName)
      throws InterruptedException, ExecutionException, IOException {
    try (StorageControlClient storageControl = StorageControlClient.create()) {

      CreateAnywhereCacheRequest request =
          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.
      AnywhereCache anywhereCache = operation.get();
      System.out.printf("Created anywhere cache: %s%n", anywhereCache.getName());
    }
  }
}

Rust

use google_cloud_lro::Poller;
use google_cloud_storage::client::StorageControl;
use google_cloud_storage::model::AnywhereCache;

pub async fn sample(client: &StorageControl, bucket_id: &str, zone: &str) -> anyhow::Result<()> {
    let cache = client
        .create_anywhere_cache()
        .set_parent(format!("projects/_/buckets/{bucket_id}"))
        .set_anywhere_cache(AnywhereCache::new().set_zone(zone).set_name(format!(
            "projects/_/buckets/{bucket_id}/anywhereCaches/{zone}"
        )))
        .poller()
        .until_done()
        .await?;
    println!("Created anywhere cache: {cache:?}");
    Ok(())
}

Terraform

Terraform で Rapid Cache を使用する方法については、google_storage_anywhere_cache Terraform のドキュメントをご覧ください。

REST API

JSON API

  1. gcloud CLI をインストールして初期化します。これにより、Authorization ヘッダーのアクセス トークンを生成できます。

  2. 次の情報が含まれる JSON ファイルを作成します。

    {
       "zone": "ZONE",
       "ttl": "TIME_TO_LIVE",
       "ingestOnWrite": INGEST_SETTING
    }

    次のように置き換えます。

    • ZONE は、キャッシュを実行するゾーンに置き換えます。例: us-east1-b

    • TIME_TO_LIVE は、キャッシュ内のデータの有効期間(TTL)に置き換えます。値は、秒、分、時間、日単位で表すことができます。次に例を示します。

      • 86400s: 86,400 秒
      • 1440m: 1,440 分
      • 24h: 24 時間
      • 1d: 1 日

      指定しない場合、デフォルトは 86400s(1 日)です。最大値は 7 日です。

    • true または false を使用して INGEST_SETTING を指定し、キャッシュが書き込み時にデータを取り込むかどうかを指定します。

  3. cURL使用して、キャッシュの作成リクエストJSON API を呼び出します。

    curl -X POST --data-binary @JSON_FILE_NAME \
        -H "Authorization: Bearer $(gcloud auth print-access-token)" \
        -H "Content-Type: application/json" \
        "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/anywhereCaches"

    次のように置き換えます。

    • JSON_FILE_NAME は、手順 2 で作成した JSON ファイルの名前に置き換えます。

    • BUCKET_NAME は、データをキャッシュに保存するバケットの名前に置き換えます。例: my-bucket

成功した場合、オペレーションは google.longrunning.Operation を返します。長時間実行オペレーションの詳細を取得したり、AnywhereCaches 作成オペレーションの完了前に長時間実行オペレーションをキャンセルできます。

キャッシュを表示する

コンソール

  1. Google Cloud コンソールで Cloud Storage の [バケット] ページに移動します。

    [バケット] に移動

  2. バケットのリストで、表示するキャッシュに関連付けられているバケットの名前をクリックします。

  3. [バケットの詳細] ページで、[構成] タブをクリックします。

  4. [Rapid Cache] セクションで、[キャッシュ] フィールドの横にある [編集] をクリックします。

  5. 表示された [構成を編集] ページで、リージョンを選択して、リージョンのゾーン内のすべてのキャッシュを表示します。

    [キャッシュゾーン] ペインで、使用可能な各キャッシュの詳細を確認できます。

コマンドライン

gcloud storage buckets anywhere-caches describe コマンドを使用します。

gcloud storage buckets anywhere-caches describe CACHE_ID

次のように置き換えます。

  • CACHE_ID は、BUCKET_NAME/CACHE_ZONE として記述されたキャッシュ インスタンスの ID に置き換えます。例: my-bucket/us-east1-b

オプションの raw フラグを使用して、標準化された API レスポンスではなく、未加工の API レスポンスを出力します。

成功すると、コマンドは AnywhereCache リソースを返します。

クライアント ライブラリ

C++

詳細については、Cloud Storage C++ API のリファレンス ドキュメントをご覧ください。

Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証情報を設定するをご覧ください。

namespace storagecontrol = google::cloud::storagecontrol_v2;
[](storagecontrol::StorageControlClient client,
   std::string const& cache_name) {
  auto anywhere_cache = client.GetAnywhereCache(cache_name);
  if (!anywhere_cache) throw std::move(anywhere_cache).status();
  std::cout << "Got anywhere cache: " << anywhere_cache->name() << "\n";
}

Java

詳細については、Cloud Storage Java API のリファレンス ドキュメントをご覧ください。

Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証情報を設定するをご覧ください。


import com.google.storage.control.v2.AnywhereCache;
import com.google.storage.control.v2.GetAnywhereCacheRequest;
import com.google.storage.control.v2.StorageControlClient;
import java.io.IOException;

public final class AnywhereCacheGet {

  public static void anywhereCacheGet(String cacheName) throws IOException {
    try (StorageControlClient storageControl = StorageControlClient.create()) {

      GetAnywhereCacheRequest request =
          GetAnywhereCacheRequest.newBuilder().setName(cacheName).build();

      AnywhereCache anywhereCache = storageControl.getAnywhereCache(request);

      System.out.printf("Got anywhere cache: %s%n", anywhereCache.getName());
    }
  }
}

Rust

use google_cloud_storage::client::StorageControl;

pub async fn sample(
    client: &StorageControl,
    bucket_id: &str,
    cache_id: &str,
) -> anyhow::Result<()> {
    let cache = client
        .get_anywhere_cache()
        .set_name(format!(
            "projects/_/buckets/{bucket_id}/anywhereCaches/{cache_id}"
        ))
        .send()
        .await?;
    println!("Got anywhere cache: {:?}", cache);
    Ok(())
}

Terraform

Terraform で Rapid Cache を使用する方法については、google_storage_anywhere_cache Terraform のドキュメントをご覧ください。

REST API

JSON API

  1. gcloud CLI のインストールと初期化を行います。これにより、Authorization ヘッダーのアクセス トークンを生成できます。

  2. cURL使用して、キャッシュの取得リクエストJSON API を呼び出します。

    curl -X GET -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/anywhereCaches/RAPID_CACHE_ID"

    次のように置き換えます。

    • BUCKET_NAME は、取得するキャッシュに関連付けられているバケットの名前に置き換えます。例: my-bucket

    • RAPID_CACHE_ID は、キャッシュが配置されているゾーンに置き換えます。例: us-east1-b

成功すると、このオペレーションは AnywhereCache リソースを返します。

キャッシュの一覧表示

コンソール

  1. Google Cloud コンソールで Cloud Storage の [バケット] ページに移動します。

    [バケット] に移動

  2. バケットのリストで、表示するキャッシュに関連付けられているバケットの名前をクリックします。

  3. [バケットの詳細] ページで、[構成] タブをクリックします。

  4. [Rapid Cache] セクションで、[キャッシュ] フィールドの横にある [編集] をクリックします。

  5. 表示された [構成を編集] ページで、リージョンを選択して、リージョンのゾーン内のすべてのキャッシュを表示します。

    リージョン内のゾーンで使用可能なすべてのキャッシュが [キャッシュゾーン] ペインに表示されます。

コマンドライン

gcloud storage buckets anywhere-caches list コマンドを使用します。

gcloud storage buckets anywhere-caches list gs://BUCKET_NAME

次のように置き換えます。

  • BUCKET_NAME は、一覧表示するキャッシュに関連付けられているバケットの名前に置き換えます。例: my-bucket

成功すると、コマンドは AnywhereCache リソースのリストを返します。

必要に応じて --raw フラグを使用し、標準化されたレスポンスではなく未加工の API レスポンスを返すことができます。結果のページネーションなど、表示動作を制御する方法については、gcloud storage ls のドキュメントをご覧ください。

クライアント ライブラリ

C++

詳細については、Cloud Storage C++ API のリファレンス ドキュメントをご覧ください。

Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証情報を設定するをご覧ください。

namespace storagecontrol = google::cloud::storagecontrol_v2;
[](storagecontrol::StorageControlClient client,
   std::string const& bucket_name) {
  auto const parent = std::string{"projects/_/buckets/"} + bucket_name;
  for (auto anywhere_cache : client.ListAnywhereCaches(parent)) {
    if (!anywhere_cache) throw std::move(anywhere_cache).status();
    std::cout << anywhere_cache->name() << "\n";
  }
}

Java

詳細については、Cloud Storage Java API のリファレンス ドキュメントをご覧ください。

Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証情報を設定するをご覧ください。


import com.google.storage.control.v2.AnywhereCache;
import com.google.storage.control.v2.BucketName;
import com.google.storage.control.v2.ListAnywhereCachesRequest;
import com.google.storage.control.v2.StorageControlClient;
import com.google.storage.control.v2.StorageControlClient.ListAnywhereCachesPagedResponse;
import java.io.IOException;

public final class AnywhereCacheList {

  public static void anywhereCacheList(String bucketName) throws IOException {
    try (StorageControlClient storageControl = StorageControlClient.create()) {

      ListAnywhereCachesRequest request =
          ListAnywhereCachesRequest.newBuilder()
              .setParent(BucketName.format("_", bucketName))
              .build();

      ListAnywhereCachesPagedResponse page = storageControl.listAnywhereCaches(request);
      for (AnywhereCache anywhereCache : page.iterateAll()) {
        System.out.println(anywhereCache.getName());
      }
    }
  }
}

Rust

use google_cloud_gax::paginator::ItemPaginator;
use google_cloud_storage::client::StorageControl;

pub async fn sample(client: &StorageControl, bucket_id: &str) -> anyhow::Result<()> {
    let mut stream = client
        .list_anywhere_caches()
        .set_parent(format!("projects/_/buckets/{}", bucket_id))
        .by_item();
    while let Some(cache) = stream.next().await {
        println!("Found cache: {:?}", cache?);
    }
    Ok(())
}

Terraform

Terraform で Rapid Cache を使用する方法については、google_storage_anywhere_cache Terraform のドキュメントをご覧ください。

REST API

JSON API

  1. gcloud CLI のインストールと初期化を行います。これにより、Authorization ヘッダーのアクセス トークンを生成できます。

  2. cURL使用して、キャッシュを一覧表示するリクエストJSON API を呼び出します。

    curl -X GET -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/anywhereCaches"

    次のように置き換えます。

    • BUCKET_NAME は、取得するキャッシュに関連付けられているバケットの名前に置き換えます。例: my-bucket

    複数のキャッシュを一覧表示する場合は、結果をページネーションできます。

成功すると、このオペレーションは AnywhereCache リソースのリストを返します。このレスポンスの構造の詳細については、AnywhereCaches リストのドキュメント内のレスポンスをご覧ください。

キャッシュを更新する

コンソール

  1. Google Cloud コンソールで Cloud Storage の [バケット] ページに移動します。

    [バケット] に移動

  2. バケットのリストで、更新するキャッシュに関連付けられているバケットの名前をクリックします。

  3. [バケットの詳細] ページで、[構成] タブをクリックします。

  4. [Rapid Cache] セクションで、 [キャッシュを管理] をクリックします。

  5. [キャッシュの管理] ペインで、[ キャッシュを編集または作成] をクリックします。

  6. 表示された [構成を編集] ページで、キャッシュのプロパティを更新します。

    • キャッシュの TTL を更新するには、[有効期間] 列を見つけて、期間を指定し、時間単位(など)を選択します。

    • 書き込み時の取り込みを有効にするには:

      1. [取り込み条件] 列を見つけて、 [キャッシュ取り込み条件を編集] をクリックします。

      2. [取り込み条件を設定] ペインで、[書き込み時にデータを取り込む] チェックボックスをオンにして、[完了] をクリックします。

  7. [構成の編集] ページで、[保存] をクリックします。

  8. 表示されるダイアログで [確認] をクリックします。

コマンドライン

gcloud storage buckets anywhere-caches update コマンドを使用します。

gcloud storage buckets anywhere-caches update CACHE_ID \
[--ttl=TTL] [--[no-]enable-ingest-on-write]

次のように置き換えます。

  • CACHE_ID は、BUCKET_NAME/CACHE_ZONE として記述されたキャッシュ インスタンスの ID に置き換えます。例: my-bucket/us-east1-b

    複数のキャッシュを一度に更新するには、複数の ID を指定します。例: my-bucket/us-east1-b my-bucket/us-east1-c

  • TTL(省略可)は、キャッシュ内のデータの有効期間(TTL)に置き換えます。値は 1 ~ 7 日の範囲で指定できます。値は、秒、分、時間、日単位で表すことができます。次に例を示します。

    • 86400s: 86,400 秒
    • 1440m: 1,440 分
    • 24h: 24 時間
    • 1d: 1 日

データがバケットに書き込まれた瞬間にデータをキャッシュに取り込むようにキャッシュを構成するには、--enable-ingest-on-write フラグを指定します。書き込み時にデータの取り込みを無効にするには、--no-enable-ingest-on-write フラグを指定します。

成功すると、このコマンドは AnywhereCache 更新オペレーションに関連付けられた未加工の長時間実行オペレーションの ID を返します。長時間実行オペレーションの詳細を取得できます。

クライアント ライブラリ

C++

詳細については、Cloud Storage C++ API のリファレンス ドキュメントをご覧ください。

Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証情報を設定するをご覧ください。

namespace storagecontrol = google::cloud::storagecontrol_v2;
[](storagecontrol::StorageControlClient client,
   std::string const& cache_name) {
  google::storage::control::v2::AnywhereCache cache;
  google::protobuf::FieldMask field_mask;
  field_mask.add_paths("ttl");
  cache.set_name(cache_name);
  cache.mutable_ttl()->set_seconds(86400);
  // 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.
  auto anywhere_cache = client.UpdateAnywhereCache(cache, field_mask).get();
  if (!anywhere_cache) throw std::move(anywhere_cache).status();
  std::cout << "Updated anywhere cache: " << anywhere_cache->name() << "\n";
}

Java

詳細については、Cloud Storage Java API のリファレンス ドキュメントをご覧ください。

Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証情報を設定するをご覧ください。


import com.google.api.gax.longrunning.OperationFuture;
import com.google.protobuf.FieldMask;
import com.google.storage.control.v2.AnywhereCache;
import com.google.storage.control.v2.StorageControlClient;
import com.google.storage.control.v2.UpdateAnywhereCacheMetadata;
import com.google.storage.control.v2.UpdateAnywhereCacheRequest;
import java.io.IOException;
import java.util.concurrent.ExecutionException;

public final class AnywhereCacheUpdate {

  public static void anywhereCacheUpdate(String cacheName, String admissionPolicy)
      throws InterruptedException, ExecutionException, IOException {
    try (StorageControlClient storageControl = StorageControlClient.create()) {

      AnywhereCache pendingUpdate =
          AnywhereCache.newBuilder().setName(cacheName).setAdmissionPolicy(admissionPolicy).build();

      UpdateAnywhereCacheRequest request =
          UpdateAnywhereCacheRequest.newBuilder()
              .setAnywhereCache(pendingUpdate)
              .setUpdateMask(FieldMask.newBuilder().addPaths("admission_policy").build())
              .build();

      // Start a long-running operation (LRO).
      OperationFuture<AnywhereCache, UpdateAnywhereCacheMetadata> operation =
          storageControl.updateAnywhereCacheAsync(request);

      // Await the LROs completion.
      AnywhereCache updatedAnywhereCache = operation.get();
      System.out.printf("Updated anywhere cache: %s%n", updatedAnywhereCache.getName());
    }
  }
}

Rust

use google_cloud_lro::Poller;
use google_cloud_storage::client::StorageControl;
use google_cloud_storage::model::AnywhereCache;
use google_cloud_wkt::FieldMask;

pub async fn sample(
    client: &StorageControl,
    bucket_id: &str,
    cache_id: &str,
) -> anyhow::Result<()> {
    let anywhere_cache = AnywhereCache::new()
        .set_name(format!(
            "projects/_/buckets/{}/anywhereCaches/{}",
            bucket_id, cache_id
        ))
        .set_admission_policy("ADMIT_ON_SECOND_MISS".to_string());
    let operation = client
        .update_anywhere_cache()
        .set_anywhere_cache(anywhere_cache)
        .set_update_mask(FieldMask::default().set_paths(["admission_policy"]))
        .poller()
        .until_done()
        .await?;