READMEに則った使い方。putでファイルをS3に転送して、転送データをもとにURLとかを取得している。
import awscala._, s3._ implicit val s3 = S3() val buckets: Seq[Bucket] = s3.buckets val bucket: Bucket = s3.createBucket("unique-name-xxx") val summaries: Seq[S3ObjectSummary] = bucket.objectSummaries bucket.put("sample.txt", new java.io.File("sample.txt")) val s3obj: Option[S3Object] = bucket.getObject("sample.txt") s3obj.foreach { obj => obj.publicUrl // http://unique-name-xxx.s3.amazonaws.com/sample.txt obj.generatePresignedUrl(DateTime.now.plusMinutes(10)) // ?Expires=.... bucket.delete(obj) // or obj.destroy() }
雑な使い方。バケットにファイルをアップロードするサンプル。
import awscala._, s3._ val bucketName = "バケットネーム" val accessKey = "アクセスキー" val secretKey = "シークレットキー" implicit val region = Region.どこか implicit val s3 = S3(Credentials(accessKey, secretKey)) val bucket: Bucket = s3.bucket(bucketName).get bucket.put("sample.txt", new java.io.File("sample.txt"))
ちなみにこのライブラリはACLまわりが実装されていないのでこの方法で画像をアップロードしてもブラウザから画像を見ることはできないし、大きなファイル(10GB以上とか)をダウンロードしたりアップロードしようとしたりしてもEntityTooLargeエラーだかなんだかになる。