Created
March 29, 2014 12:22
-
-
Save hiroakis/9853535 to your computer and use it in GitHub Desktop.
NTTコムのcloudnのオブジェクトストレージをscalaから使うサンプル
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// 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