新闻
服务器
Kotlin的新AWS SDK支持协程
阅读这篇其他语言的文章:
한국어,简体中文
用于Kotlin的新的AWS SDK于2021年12月在AWS re:Invent上宣布。使用SDK,您可以构建与Amazon S3、Amazon EC2、DynamoDB等一起工作的Kotlin应用程序。SDK目前处于预览阶段,预计很快就会稳定下来。
SDK从一开始就设计为支持Kotlin语言及其最佳实践,为Kotlin开发人员提供了熟悉的、惯用的与AWS交互的体验。SDK利用Kotlin协程进行异步实现,并计划使其与Kotlin多平台项目兼容。
要开始在Kotlin程序中使用新的SDK,需要向项目添加相应的依赖项。例如,如果我们想与DynamoDB通信,那么aws.sdk.kotlin: dynamodb
模块要求:
repositories {mavenCentral()} dependencies {implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.6.0") //下面一行添加了对dynamodb客户端的依赖。//为了便于演示,我们使用0。+获取最新版本实现("aws.sdk.kotlin:dynamodb:0.+")}
方法中可以找到受支持模块的完整列表AWS SDK的文档.
下载依赖项后,我们可以开始使用API:
import kotlinx.coroutines.runBlocking import aws.sdk.kotlin.services.dynamodb.DynamoDbClient //sampleStart fun main() = runBlocking {val client = DynamoDbClient {region = "us-east-2"} val resp =客户端。listTables {limit = 10} println("Current DynamoDB tables: ")forEach {println(it)} client.close()} //sampleEnd
该程序只是检索表列表,并将表名打印到标准输出中。在上面的例子中,listTables
是一个挂起函数,所以代码被包装成一个runBlocking
调用。
再举一个稍微复杂一点的例子,演示如何将一个bucket中的每个S3对象下载到一个本地临时目录,其中包括分页访问、并发流和字节流响应。
进口aws.sdk.kotlin.services.s3。S3Client导入aws.sdk.kotlin.services.s3.model。导入aws.sdk.kotlin.services.s3.model。导入aws.sdk.kotlin.services.s3.paginators。listObjectsV2Paginated import aws.smithy.kotlin.runtime.content.writeToFile import kotlinx.coroutines.flow.asFlow import kotlinx.coroutines.flow.filter import kotlinx.coroutines.flow.flatMapConcat import kotlinx.coroutines.flow.flowOf import java.nio.file. path import kotlin.io.path.createDirectories //sampleStart suspend fun downloadAllS3Objects(bucketName:String) {val s3 = S3Client.fromEnvironment() val listReq = ListObjectsV2Request {bucket = bucketName} s3. listobjectsv2paginated (listReq) . flatmapconcat {.contents?. asflow () ?: flowOf()} .filter{它。size > 0} .collect {obj -> val getReq = GetObjectRequest {bucket = bucketName key = obj. size > 0} .collect {obj -> val getReq = GetObjectRequest {bucket = bucketName key = obj. sizekey} s3.getObject(getReq) {val path = Paths.get(System.getProperty("java.io.tmpdir"), obj.key) path.parent. createdirectories () .body?.writeToFile(path)}}} //sampleEnd .key
在上面的例子中,您可以再次看到SDK中挂起函数的使用getObject
而且writeToFile
函数都用暂停
关键字。
在Kotlin的新AWS SDK的官方文档中,您可以找到详细的分步说明如何开始.此外,您还可以找到一些有趣的内容例子演示API与许多AWS服务,如亚马逊DynamoDB, S3, Rekognition,亚马逊简单通知服务和AWS密钥管理服务。
Kotlin的新AWS SDK正在积极开发中,您可以查看在Kotlin中计划了哪些功能路线图.现在试试吧,让我们知道你的想法!