본문 바로가기

AWS

이클립스 AWS S3 활용하기!

728x90

S3 스토리지를 활용하여 이미지,동영상을 저장하고 불러오기

 

   // Amazon-s3-sdk
   private AmazonS3 s3Client;
   final private String accessKey = "A"; // 액세스키
   final private String secretkey = "Y"; // 스크릿 엑세스 키

   private Regions clientRegion = Regions.AP_NORTHEAST_2; // 한국
   private String bucket = ""; // 버킷 명

 

   private AWSService() {
      createS3Client();
   }

   // singleton 으로 구현
   static private AWSService instance = null;

   public static AWSService getInstance() {
      if (instance == null) {
         return new AWSService();
      } else {
         return instance;
      }
   }

   // aws S3 client 생성
   private void createS3Client() {
      AWSCredentials credentials = new BasicAWSCredentials(accessKey, secretkey);
      this.s3Client = AmazonS3ClientBuilder.standard().withCredentials(new AWSStaticCredentialsProvider(credentials))
            .withRegion(clientRegion).build();
   }

   // upload 메서드 | 단일 파일 업로드
   public void upload(File file, String key) {
      uploadToS3(new PutObjectRequest(this.bucket, key, file));
   }

   // upload 메서드 | MultipartFile을 사용할 경우
   public void upload(File file, String key, String contentType, long contentLength) {
      ObjectMetadata objectMetadata = new ObjectMetadata();
      objectMetadata.setContentType(contentType);
   }

   // PutObjectRequest는 Aws s3 버킷에 업로드할 객체 메타 데이터와 파일 데이터로 이루어져 있다.
   private void uploadToS3(PutObjectRequest putObjectRequest) {
      try {
         this.s3Client.putObject(putObjectRequest);
         System.out.println(String.format("[%s] upload complete", putObjectRequest.getKey()));
      } catch (AmazonServiceException e) {
         e.printStackTrace();
      } catch (SdkClientException e) {
         e.printStackTrace();
      } catch (Exception e) {
         e.printStackTrace();
      }
   }

 

 

이것뿐만 아니라 AWS에서 버킷 정책설정까지 해줘야한다 .정책설정을 하지않는다면

외부에서 스토리지에 접근하는것을 막는다.

 

 

정책설정하는것은 구글링을 통해 하였다. 많은자료가 배포되어있다.

 

업로드가 완료되었다면 스토리지에 URL+파일명이 담겨있을것이다.

 

파일명은 DB에 담아 URL+DB이름명으로 파일을 불러오면 쉽게 파일을 불러오고 저장할수있다.

 

 

728x90

'AWS' 카테고리의 다른 글

EBS(Elastic Beanstalk) 배포  (0) 2023.03.27
AWS EIP 탄력적 IP설정  (0) 2022.12.27
AWS EC2 Gradle 배포시 멈춤현상  (0) 2022.12.25
EC2에 DOCKER설치 및 아파치 서버구동  (1) 2022.11.04
AWS S3 업로드 시 Progress bar  (0) 2022.10.20