【Java】S3アップロード・ダウンロードのテストを"S3 ninja"を使って行う
S3のテスト用ダミーサーバーはFake S3というのがあると聞きましたがRubyらしく、私Java屋なのでJavaでも無いかなーと探したらS3 ninjaというのがありました。
というわけで使ってみましょう。そうしましょう。
Fake S3はまた今度。
テストコードを書いてみる
通常はダウンロードして使うようですが、面倒なので、今回はmavenでインストールして、Junitで無理やり起動させます。
pom.xml
pom.xml
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-java-sdk-s3</artifactId>
<version>1.11.91</version>
</dependency>
<dependency>
<groupId>com.scireum</groupId>
<artifactId>s3ninja</artifactId>
<version>2.7</version>
</dependency>
JUnitコード
Test.java
static {
//必要なフォルダを掘る
try {
Files.createDirectories(Paths.get("data/s3"));
} catch (IOException e) {
}
//s3ninja起動
Thread thread = new Thread(() -> {
try {
Method main = Class.forName("IPL").getMethod("main", new Class[] { String[].class });
main.invoke(null, (Object) new String[0]);
} catch (Exception e) {
throw new RuntimeException(e);
}
});
thread.start();
try {
Thread.sleep(1000);//念のため
} catch (InterruptedException e) {
}
}
@Test
public void test() throws IOException {
AmazonS3 s3 = AmazonS3Client.builder()
.withEndpointConfiguration(new EndpointConfiguration("http://localhost:9444/s3", null))
.withCredentials(new AWSStaticCredentialsProvider(
new BasicAWSCredentials("AKIAIOSFODNN7EXAMPLE", "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY")))
.withPathStyleAccessEnabled(true)
.withClientConfiguration(new ClientConfiguration().withSignerOverride("S3SignerType"))
.build();
//アップロード
s3.putObject(new PutObjectRequest("bucket", "s3test.txt", new File("test.txt")));
//ダウンロード
try (S3Object s3Object = s3.getObject(new GetObjectRequest("bucket", "s3test.txt"));
InputStream input = s3Object.getObjectContent()) {
assertThat(IOUtils.toByteArray(input), is(Files.readAllBytes(Paths.get("test.txt"))));
}
}
説明
- 初期処理
- 利用するには
./data/s3
というフォルダが必要らしいので掘ります。 - S3 ninjaを起動するために、IPL#mainを呼びたいのですが、デフォルトパッケージのクラスはimport出来ないのでreflectionで呼び出します。
- 利用するには
- AmazonS3Client生成
- endpoint設定します。
- Credentialsに必要な値はソースコードを参考にしてください。S3 ninjaを普通に起動してweb画面開いたら書いてあります。
- PathStyleAccessEnabledをtrueにしないとダメみたいです。
- "S3SignerType"というのを設定しないとダメみたいです。
- テスト
- ファイルをアップロードして、それをダウンロードして元ファイルと比べてます。
Author And Source
この問題について(【Java】S3アップロード・ダウンロードのテストを"S3 ninja"を使って行う), 我々は、より多くの情報をここで見つけました https://qiita.com/ota-meshi/items/9751add0eed33fd4a48a著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .