Skip to content

Instantly share code, notes, and snippets.

@hiroakis
Created March 29, 2014 12:22
Show Gist options
  • Save hiroakis/9853535 to your computer and use it in GitHub Desktop.
Save hiroakis/9853535 to your computer and use it in GitHub Desktop.
NTTコムのcloudnのオブジェクトストレージをscalaから使うサンプル
// NTTコムのcloudnのオブジェクトストレージをscalaから使うサンプル
// S3互換があるので、AWSのjava-sdkが使えた。
//
// 参考...
// SDK API: http://docs.aws.amazon.com/AWSAndroidSDK/latest/javadoc/index.html
// Developers IO: http://dev.classmethod.jp/cloud/aws-s3/
import com.amazonaws._
import com.amazonaws.auth._
import com.amazonaws.services.s3.AmazonS3
import com.amazonaws.services.s3.AmazonS3Client
import com.amazonaws.services.s3.model._
import scala.collection.JavaConversions._
import java.util.UUID
import java.io.File
object S3Main extends App {
// Settings
val endPoint = "http://str.cloudn-service.com"
val accessKey = "xxxxxxxxxxxxxxxxxxxxxx"
val secretKey = "xxxxxxxxxxxxxxxxxxxxxx"
//val bucketName = "bckt" + UUID.randomUUID()
val bucketName = "bckt"
val keyPub = "public_object"
val keyPri = "private_object"
val uploadFilePathPub = "./test.png"
val uploadFilePathPri = "./test.png"
val credentials = new BasicAWSCredentials(accessKey,secretKey)
// setup client
val s3 = new AmazonS3Client(credentials)
s3.setEndpoint(endPoint)
println("-----create Bucket ")
s3.createBucket(bucketName)
println("-----show Buckets ")
for (bucket <- s3.listBuckets()) {
println(" - " + bucket.getName())
}
println("-----put Object with private access control")
val objPri = new PutObjectRequest(bucketName, keyPri, new File(uploadFilePathPri))
objPri.setStorageClass(StorageClass.ReducedRedundancy);
s3.putObject(objPri);
println("-----put Object with public access control")
val objPub = new PutObjectRequest(bucketName, keyPub, new File(uploadFilePathPub))
objPub.setStorageClass(StorageClass.ReducedRedundancy);
val acl = new AccessControlList()
acl.grantPermission(GroupGrantee.AllUsers, Permission.Read)
objPub.setCannedAcl(CannedAccessControlList.PublicRead)
s3.putObject(objPub)
println("-----show Objects ")
val objectListing = s3.listObjects(new ListObjectsRequest().withBucketName(bucketName))
for (objectSummary <- objectListing.getObjectSummaries()) {
println(" - " + objectSummary.getKey() + " " + "(size = " + objectSummary.getSize() + ")")
}
println("-----Download Object")
val getObjectReq = new GetObjectRequest(bucketName, keyPri)
val localFile = new File(keyPri)
s3.getObject(getObjectReq, localFile)
println("-----delete Object ")
s3.deleteObject(bucketName, keyPri)
s3.deleteObject(bucketName, keyPub)
println("-----delete Bucket ")
s3.deleteBucket(bucketName)
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment