【Java】 S3 업로드·다운로드의 테스트를 "S3 ninja"를 사용해 실시한다
S3 닌자
그래서 사용해 봅시다. 그러자.
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"))));
}
}
설명
<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>
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로 호출합니다.
참고:
로컬 S3가되는 ninja를 넣어 보았습니다.
Reference
이 문제에 관하여(【Java】 S3 업로드·다운로드의 테스트를 "S3 ninja"를 사용해 실시한다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/ota-meshi/items/9751add0eed33fd4a48a텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)