

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# ページ分割
<a name="pagination"></a>

多くの AWS オペレーションは、ペイロードが大きすぎて 1 回のレスポンスで返せない場合にページ分割された結果を返します。 AWS SDK for Kotlin には[、結果を自動的にページ分割するサービスクライアントインターフェイスの拡張機能](https://kotlinlang.org/docs/extensions.html)が含まれています。ユーザーは、この結果を処理するコードを記述するだけで済みます。

ページ分割は [Flow<T>](https://kotlin.github.io/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.flow/-flow/) として公開されるため、非同期コレクション (`map`、、 など) に対して Kotlin のイディオマティック変換を活用できます`filter``take`。例外は透過的であるため、エラー処理は通常の API コールのように感じられ、キャンセルはコルーチンの一般的な共同キャンセルに従います。詳細については、公式ガイドの[「フロー](https://kotlinlang.org/docs/flow.html)と[フロー例外](https://kotlinlang.org/docs/flow.html#flow-exceptions)」を参照してください。

**注記**  
次の例ではAmazon S3を使用しています。ただし、ページ分割された API を 1 つ以上持つサービスについては同じ概念です。すべてのページ分割拡張機能は、 `aws.sdk.kotlin.services.<service>.paginators`パッケージ ( など) で定義されます`aws.sdk.kotlin.services.dynamodb.paginators`。

次のコード例は、[listObjectsV2Paginated](https://docs.aws.amazon.com/sdk-for-kotlin/api/latest/s3/aws.sdk.kotlin.services.s3.paginators/list-objects-v2-paginated.html) 関数呼び出しからページ分割されたレスポンスを処理する方法を示しています。

**インポート**

```
import aws.sdk.kotlin.services.s3.S3Client
import aws.sdk.kotlin.services.s3.paginators.listObjectsV2Paginated
import kotlinx.coroutines.flow.*
```

**コード**

```
val s3 = S3Client.fromEnvironment()
val req = ListObjectsV2Request {
    bucket = "amzn-s3-demo-bucket"
    maxKeys = 1
}

s3.listObjectsV2Paginated(req)  // Flow<ListObjectsV2Response>
    .transform { it.contents?.forEach { obj -> emit(obj) } }
    .collect { obj ->
        println("key: ${obj.key}; size: ${obj.size}")
    }
```