クラウドインフラ構築記

現在AWSの構築支援に携わっております。今注視しているのは、GKE、BigQuery、Google Dataflowなどサービスを展開しているGoolge Cloud Platformです。

Cloudn Object Storageからのファイルのダウンロード AWS SDK for Java編


S3互換を歌っているCloudnのクラウドストレージサービス『ObjectStorage』からAWS SDK for Javaを使ってダウンロードするサンプルをコーディングしました。ローカルファイルとストレージ上のファイルの比較はファイルサイズで行っています。

以下部分を変更すればS3でも動作は問題ないと思われます。SDKを提供していないストレージで同じことを行うとすると相当のコード量になります。SDKが提供されているストレージの優位性が改めて、認識されました。

S3は、HTTPSを使っていますが、CloudnではHTTPを使用しています。


ClientConfiguration clientconf = new ClientConfiguration();
 clientconf.setProtocol(Protocol.HTTP);

S3以外のストレージへアクセスするには、End Point URLを設定する必要があります。


s3 = new AmazonS3Client(pc, clientconf);

s3.setEndpoint("http://str.cloudn-service.com");

// List Objects
 ObjectListing objectListing = s3.listObjects(new ListObjectsRequest().withBucketName(bucketName));

 GetObjectRequest getObjectReq = null;
 ObjectMetadata objMeta = null;
 for (S3ObjectSummary objectSummary : objectListing.getObjectSummaries()) {

if (objectSummary.getSize()!=0){
 System.out.println(" - " + objectSummary.getKey() + "\t" + "(size = " + objectSummary.getSize() + ")" + "\t" + "(" + objectSummary.getLastModified().toString() + ")");

File localFile = new File(st_folder + objectSummary.getKey());

 if(localFile.exists()){
 if (localFile.length()!=objectSummary.getSize()){
 getObjectReq = new GetObjectRequest(bucketName, objectSummary.getKey());
 objMeta = s3.getObject(getObjectReq, localFile);
 }
 }
 else {
 getObjectReq = new GetObjectRequest(bucketName, objectSummary.getKey());
 objMeta = s3.getObject(getObjectReq, localFile);

 }
 getObjectReq = null;
 objMeta = null;
 }
 }

Object StorageのLastModified情報をローカルPCのファイルに引き継ぐことができれば完璧ですが、これについてはわかり次第記載します。

コメントは受け付けていません。