翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
コルーチン
AWS SDK for Kotlin はデフォルトで非同期です。SDK for Kotlin は、コルーチンから呼び出されるすべてのオペレーションに suspend
関数を使用します。
コルーチンの詳細なガイドについては、公式の Kotlin ドキュメント
同時リクエストの実行
非同期async
を返します。
結果に関心がない場合 (オペレーションが完了した場合のみ)、起動launch
は概念的に に似ていますasync
。違いは、起動がジョブasync
を返すことですDeferred
。
以下は、headObject
import kotlinx.coroutines.async
import kotlinx.coroutines.runBlocking
import kotlin.system.measureTimeMillis
import aws.sdk.kotlin.services.s3.S3Client
fun main(): Unit = runBlocking {
val s3 = S3Client { region = "us-east-2" }
val myBucket = "<your-bucket-name-here>"
val key1 = "<your-object-key-here>"
val key2 = "<your-second-object-key-here>"
val resp1 = async {
s3.headObject{
bucket = myBucket
key = key1
}
}
val resp2 = async {
s3.headObject{
bucket = myBucket
key = key2
}
}
val elapsed = measureTimeMillis {
val totalContentSize = resp1.await().contentLength + resp2.await().contentLength
println("content length of $key1 + $key2 = $totalContentSize")
}
println("requests completed in $elapsed ms")
}
ブロックリクエストの作成
コルーチンを使用せず、別のスレッドモデルを実装する既存のコードからサービス呼び出しを行うには、runBlocking
名前が示すように、このrunBlocking
ビルダーは新しいコルーチンを起動し、完了するまで現在のスレッドをブロックします。
警告
runBlocking
通常、コルーチンからは使用しないでください。これは、通常のブロックコードを一時停止スタイルで記述されたライブラリ (主要な関数やテストなど) にブリッジするように設計されています。