一部のサービスは、行やリソースの説明など、アイテムの大きなリストを返す可能性があります。CPU とメモリ使用量を制御するために、サービスはこれらのリソースを pages で返します。これは、次のサブセットをリクエストするための継続トークンを含むアイテムの小さなサブセットです。
ページごとに項目を反復処理するのは面倒な場合があります。クライアント ライブラリには、ページを非同期イテレータに変換するアダプターが用意されています。このガイドでは、これらのアダプタの使用方法について説明します。
前提条件
このガイドでは、Secret Manager サービスを使用してリスト オペレーションのデモを行います。このガイドに含まれるコンセプトは、他のサービスにも適用されます。
このガイドに沿って操作するには、Secret Manager サービスを有効にしてログインし、アカウントに必要な権限が付与されていることを確認する必要があります。これらの前提条件を満たす方法については、サービスのクイックスタートをご覧ください。
Rust ライブラリの完全な設定手順については、開発環境の設定をご覧ください。
依存関係
Secret Manager ライブラリを Cargo.toml ファイルに追加します。
cargo add google-cloud-secretmanager-v1
リストメソッドの反復処理
リスト メソッドのアイテムを反復処理するために、API は ItemPaginator トレイトの実装を返します。use 宣言を使用して、トレイトをスコープに導入します。
アイテムを反復処理するには、by_item メソッドを使用します。
まれに、アクセスする必要がある追加情報がページに含まれている場合や、プロセス全体で進捗状況をチェックポイントする必要がある場合があります。必要に応じて、個々のアイテムではなく、ページ全体を反復処理できます。
use宣言を使用して、Paginatorをスコープに導入します。by_pageを使用してページを反復処理します。
futures::Stream の操作
これらの API は、tokio::Stream などの非同期ストリームのより大きな Rust エコシステムで使用できます。これは次のように実現できます。
google_cloud_gaxクレートでunstable-streams機能を有効にします。この機能の名前は、これらの API が不安定であることを示す通知として機能します。futures::Streamトレイトの互換性のない変更によって生じる中断に対処する準備ができている場合にのみ使用してください。cargo add google-cloud-gax --features unstable-stream次の例では、
futuresクレートを追加することで有効になるfutures::stream::StreamExtトレイトも使用します。cargo add futures必要な
use宣言を追加します。into_stream関数を使用して、ItemPaginatorをfutures::Streamに変換します。
同様に、into_stream 関数を使用して Paginator を futures::Stream に変換できます。
次のページトークンを設定してリストメソッドを再開する
リスト オペレーションが中断された場合など、特定のページからページネーションを再開するように次のページトークンを設定できます。
ページネータ ヘルパーを使用するタイミング
Google Cloud Client Libraries for Rust は、AIP-4233 で定義されているリスト RPC を、Google API List メソッドが AIP-158 で定義されているページネーション ガイドラインに準拠している場合に、ItemPaginator と Paginator を実装する型に変換するアダプターを提供します。簡単に言うと、このガイドラインでは、List メソッドの各呼び出しで、リソース アイテム(シークレットなど)のページと、次のページを取得するために List メソッドに渡すことができるトークンを返す必要があります。
ほとんどの Google Cloud サービスは、これらのガイドラインに準拠しています。そうでない場合は、独自のアダプタを実装して結果を反復処理する必要があります。