有没有适用于AWS的Scala SDK或接口?

21

有人知道Amazon Web Services的Scala SDK吗?我特别关注EMR作业。

4个回答

14

这看起来很不错。谢谢 @Alex。 - CruncherBigData
一个小的缺点是,AWScala会引入整个aws-java-sdk(30 MB lib),即使你只需要例如Amazon S3和aws-java-sdk-s3依赖项就足够了(使用aws-java-sdk-core为2.7 + 2.4 MB)。 - Jonik
2
@jonik 看起来这个问题已经得到解决,如果你只需要 S3 依赖项,现在可以添加它了。 - Cpt. Senkfuss

12

您可以直接使用标准的Java SDK而无需从Scala中遇到任何问题,但我不知道是否有任何特定于Scala的SDK。


3
此外,我不明白为什么Java SDK不适合Scala。 - yegor256
7
由于默认情况下它是阻塞的,而且其async类集使用古老且无用的Java Future,没有完成回调函数,因此它对Scala不是很适合。 - expert

2

Atlassian的aws-scala相当不错。

p.s. 目前该库基本支持S3、DynamoDB、CloudFormation和SQS。


让我感到不安的是,这个问题跟踪器是私有的。因此我们无法看到现有的错误甚至无法提交错误。 - Johnny Everson
1
这个比其他的复杂一些。真的需要一些文档说明。 - Anton Kuzmin

1
您可以在Scala中使用普通的AWS Java SDK。例如:
如果您使用SBT,请将以下内容添加到build.sbt
libraryDependencies += "com.amazonaws" % "aws-java-sdk" % "1.12.1"

然后:

package example

import com.amazonaws.regions.Regions;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3ClientBuilder;
import com.amazonaws.services.s3.model.AmazonS3Exception;
import com.amazonaws.services.s3.model.Bucket;

// for conversions from java collections to scala collections
// e.g. java.util.List to scala List
import scala.jdk.CollectionConverters._

object Hello extends  App {

  // create s3 client
  val s3:AmazonS3  = AmazonS3ClientBuilder
        .standard()
        .withRegion(Regions.AP_SOUTHEAST_2).build();

  // get bucket list
  val buckets:List[Bucket]  = s3.listBuckets().asScala.toList          

  // print bucket names
  buckets.foreach(b => println(b.getName()))
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接