CLI없이도 JAVA에서 S3로 파일을 전송할 수 있다. S3와 연동을 위해서는 사용자의 키값은 필수!



▶ 라이브러리 설치( aws-java-sdk )

<!-- 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;
}