AWS S3 파일 업로드 연동하기 (with Java)
AWS S3와 연동하기 위해서는 아래 참조의 경우를 살펴보면, 장단점등이 있으며, 이를 보완할 필요가 있다.
물론, 연동을 위해서는 Java용 AWS SDK가 필요하다.( aws.amazon.com/ko/sdk-for-java )
1. SDK를 포함후에 확인된 Dependency
- jackson-annotations-x.x.x.jar, jackson-core-x.x.x.jar, jackson-databind-x.x.x.jar
- joda-time-x.x.x.jar
- http-core-x.x.x.jar
- http-client-x.x.x.jar
실행시에 ClasssNotFoundException이 발생한다면, 해당 Dependency들을 추가 해야 한다.
2. 연동 클래스 만들기
1) 생성자부분
AmazonS3 amazonS3;
AWSCredentials creds = new BasicAWSCredentials(accessKey, secretKey);
amazonS3 = AmazonS3ClientBuild.standard()
.withCredential(creds)
.withRegions(Regions.XXX)
.withForceGlobalBucketAccessEnable(true)
.build();
* withRegions()이 없으면
: SdkClientException이 발생한다.(Unable to find a region via the region provider chain. Must provide an explicit region in the builder or setup environment to supply a region.)
* http://docs.aws.amazon.com/ko_kr/general/latest/gr/rande.html
1) us-east-2 : 미국 동부 오하이오
2) us-east-1 : 미국 동부 버지니아 북부
3) us-west-1 : 미국 서부 캘리포니아 북부
4) us-west-2 : 미국 서부 오레곤
5) ap-south-1 : 아시아 태평양 뭄바이
6) ap-northeast-2 : 아시아 태평양 서울
7) ap-northeast-1 : 아시아 태평양 도쿄
8) ap-southeast-1 : 아시아 태평양 싱가프로
9) ap-southeast-2 : 아시아 태평양 시드니
... eu-central-1, eu-west-1, eu-west-2, sa-east-1, ca-central-1
2) File Upload부분
PutObjectRequest putObjectRequest = new PutObjectRequest(buckeName, fileName, file);
//file permission
putObjectRequest.setCannedAcl(CannedAccessControlList.PublicRead);
// fill upload
PutObjectResult ret = amazonS3.putObject(pubObjectRequest);
3) 소스 예제
참조 1, [Java] Java를 이용해 AWS S3 파일 업로드 하기
- AmazonS3Client는 deprecated된 상태로 변경이 필요하다.
참조2, Amazon S3 Tutorial – The ULTIMATE Guide
https://www.javacodegeeks.com/2017/03/amazon-s3-tutorial.html
- AmazonS3ClientBuilder를 잘 설명하고 있으나, 다소 복잡한 면이 있다.
참조3, Working with AWS Credentials
http://docs.aws.amazon.com/ko_kr/sdk-for-java/v1/developer-guide/credentials.html
- AWSCredentials인터페이스는 BasicAWSCredentials를 AWS access key와 secret key를 사용해서 생성한다. 이떄 환경설정등에서 가져 오는 방법과 명시적으로 지정하는 방법을 알 수 있다.
참조4, Amazon S3 Examples ( using AWS SDK for Java )
http://docs.aws.amazon.com/ko_kr/sdk-for-java/v1/developer-guide/examples-s3.html
참조5, Amazon S3, 버킷 생성,
https://docs.aws.amazon.com/ko_kr/AmazonS3/latest/UG/BucketOperations.html
Amazon S3에 저장한 모든 객체는 버킷에 존재합니다. 디렉토리로 파일 시스템 내 파일을 그룹화하듯 버킷으로 관련 객체를 그룹화할 수 있습니다. 버킷은 액세스 권한 및 버전 관리 상태 등의 속성을 지니며, 사용자는 버킷이 속할 리전을 원하는 대로 설정할 수 있습니다.
참조6, Amazon S3, 폴더 작업
https://docs.aws.amazon.com/ko_kr/AmazonS3/latest/UG/FolderOperations.html
Amazon S3에서 버킷과 객체는 기본 리소스이며 객체가 버킷에 저장됩니다. Amazon S3에서는 일반적인 파일 시스템에서와 같이 계층이 없는 단순한 구조입니다. 하지만 간결한 구성을 위해 Amazon S3 콘솔에서는 객체를 그룹화하는 수단으로 폴더 개념을 지원합니다.
'Web Tech. > Spring Framework' 카테고리의 다른 글
페이스북 Graph API 사용하기 (0) | 2017.09.26 |
---|---|
Bash , Kill $pids (0) | 2017.09.11 |
vaddin 뉴스 - Vaadin Board for Java is now available (0) | 2017.07.06 |
Tomcat에 SSL(HTTPS)추가 하기 (0) | 2017.07.05 |
Spring Boot , Thymeleaf 설정 (0) | 2017.03.20 |