ローカル環境にS3環境を構築できる「S3 ninja」なるものを入れてみたので、

備忘録を残しておく。

 

  • ダウンロード

http://s3ninja.net/

上記から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のコードはちょっと設定がおかしい。

とはいえ、この辺は、プログラムの設定等で吸収できるので、
簡易的なテストツールとしてはいいかもしれません。

コメントがあればどうぞ


CAPTCHA Image
Reload Image