ローカル環境にS3環境を構築できる「S3 ninja」なるものを入れてみたので、
備忘録を残しておく。
- ダウンロード
上記からzipファイルを落として解凍すればよい。
- 初期設定
解凍した直下に、「instance.conf.sdsignore」というファイルがあるので、
これを「instance.conf」とする。
また、dataフォルダがあるので、
その下に「s3」フォルダを作成する。
- 起動
以下を実行すれば、「http://localhost:9444」でアクセス可能となる。
$ ./sirius.sh start
phpとjavaからアップしたが、本物とは違ったので、
コードを記載しておく。
なお、前提として、「http://localhost:9444」にアクセスして、
事前に「test」というバケットを作り、「public」にしておくものとする。
phpコード
<?php require_once("aws.phar"); $bucketName = "s3"; $accessKey = "AKIAIOSFODNN7EXAMPLE"; $secretKey = "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY"; $keyName = "test/php/000.text"; $s3 = new Aws\S3\S3Client(array( 'credentials' => array( 'key' => $accessKey, 'secret' => $secretKey, ), 'version' => "2006-03-01", 'region' => "us-east-1", 'endpoint' => "http://localhost:9444/", )); $r = $s3->putObject(array( 'Bucket' => $bucketName, 'Key' => $keyName, 'Body' => fopen("test.txt", "r"), 'ACL' => 'public-read', 'CacheControl' => 'no-store, no-cache', )); var_dump($r);
javaコード
package sample.ninja_test; import java.io.File; import com.amazonaws.auth.BasicAWSCredentials; import com.amazonaws.services.s3.AmazonS3Client; import com.amazonaws.services.s3.S3ClientOptions; import com.amazonaws.services.s3.model.CannedAccessControlList; import com.amazonaws.services.s3.model.PutObjectRequest; public class App { private static final String keyName = "java/000.text"; private static final String bucketName = "test"; private static final String accessKey = "AKIAIOSFODNN7EXAMPLE"; private static final String secretKey = "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY"; public static void main(String[] args) { AmazonS3Client client = new AmazonS3Client(new BasicAWSCredentials(accessKey, secretKey)); client.setS3ClientOptions(new S3ClientOptions().withPathStyleAccess(true)); client.setEndpoint("http://localhost:9444/s3"); PutObjectRequest putObj = new PutObjectRequest(bucketName, keyName, new File("test.txt")); putObj.setCannedAcl(CannedAccessControlList.PublicRead); client.putObject(putObj); String url = client.getResourceUrl(bucketName, keyName); System.out.println(url); } }
期待した設定としては、javaのコードが正しい。
phpのコードはちょっと設定がおかしい。
とはいえ、この辺は、プログラムの設定等で吸収できるので、
簡易的なテストツールとしてはいいかもしれません。
コメントがあればどうぞ