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