CLI없이도 JAVA에서 S3로 파일을 전송할 수 있다. S3와 연동을 위해서는 사용자의 키값은 필수!
▶ 라이브러리 설치( aws-java-sdk )
-
- jar 다운로드
- 메이븐을 사용하지 않는 경우 https://aws.amazon.com/ko/sdk-for-java/ 에서 jar다운로드 ( v1.11 )
-
- 또는 메이븐 의존성 추가
<!-- s3 test -->
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-java-sdk</artifactId>
<version>1.11.700</version>
</dependency>
▶ AWS S3 전송
1. 키값 선언
CLI를 통하여 S3에 접근할 때와 마찬가지로 키값과 버킷에 대한 정보가 필요하다.
String BUCKET_NAME = "BUCKET_NAME";
String ACCESS_KEY ="ACCESS_KEY";
String SCRET_KEY ="SCRET_KEY";
2. S3클라이언트 객체생성 ( AmazonS3 )
두 가지 방식으로 생성할 수 있다.
2-1. 디플리케이트(없어질 예정인 방식)
AWSCredentials awsCredentials = new BasicAWSCredentials(ACCESS_KEY, SCRET_KEY);
AmazonS3 amazonS3 = new AmazonS3Client(awsCredentials);
2-2. AmazonS3ClientBuilder를 이용한 방식
AWSCredentials awsCredentials = new BasicAWSCredentials(ACCESS_KEY, SCRET_KEY);
AmazonS3 amazonS3 = AmazonS3ClientBuilder.standard()
.withCredentials(new AWSStaticCredentialsProvider(awsCredentials))
.withRegion(Regions.AP_NORTHEAST_2).build();
3. S3 전송
File file = new File("전송할 파일경로");
PutObjectRequest putObjectRequest = new PutObjectRequest(BUCKET_NAME, file.getName(), file);
amazonS3.putObject(putObjectRequest);
4. S3클라이언트 종료
amazonS3.shutdown();
▶ ex
@RequestMapping("/aws_test")
public ModelAndView aws_test(@RequestParameter String fileName) throws Exception {
ModelAndView mav = new ModelAndView("main");
String BUCKET_NAME = "test-bucket";
String ACCESS_KEY ="부여받은 ACCESS_KEY";
String SCRET_KEY ="부여받은 SCRET_KEY";
AWSCredentials awsCredentials = new BasicAWSCredentials(ACCESS_KEY, SCRET_KEY);
AmazonS3 amazonS3 = new AmazonS3Client();
if(amazonS3 != null) {
File file = new File(fileName);
PutObjectRequest putObjectRequest
= PutObjectRequest(BUCKET_NAME, file.getName(), file);
amazonS3.putObject(putObjectRequest);
amazonS3.shutdown();
}
return mav;
}