翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
ページ分割
多くの AWS オペレーションは、ペイロードが大きすぎて 1 回のレスポンスで返せない場合にページ分割された結果を返します。 AWS SDK for Kotlin には、結果を自動的にページ分割するサービスクライアントインターフェイスの拡張機能
ページ分割は Flow<T>map
、、 など) に対して Kotlin のイディオマティック変換を活用できますfilter
take
。例外は透過的であるため、エラー処理は通常の API コールのように感じられ、キャンセルはコルーチンの一般的な協調的なキャンセルに従います。詳細については、公式ガイドのhttps://kotlinlang.org/docs/flow.html
注記
次の例ではAmazon S3を使用しています。ただし、概念は、ページ分割された APIs。すべてのページ分割拡張機能は、 aws.sdk.kotlin.<service>.paginators
パッケージ ( などaws.sdk.kotlin.dynamodb.paginators
) で定義されます。
次のコード例は、listObjectsV2Paginated
インポート
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 = "<my-bucket>"
maxKeys = 1
}
s3.listObjectsV2Paginated(req) // Flow<ListObjectsV2Response>
.transform { it.contents?.forEach { obj -> emit(obj) } }
.collect { obj ->
println("key: ${obj.key}; size: ${obj.size}")
}