노출되는 이미지가 불편하시겠지만 양해를 구합니다. 노출, 클릭등에 관한 자료로 활용 중입니다.

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 파일 업로드 하기

http://dwfox.tistory.com/57


- 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 콘솔에서는 객체를 그룹화하는 수단으로 폴더 개념을 지원합니다.


블로그 이미지

StartGuide

I want to share the basic to programming of each category and how to solve the error. This basic instruction can be extended further. And I have been worked in southeast Asia more than 3 years. And I want to have the chance to work another country.

,