728x90
반응형
# AWS 라이브러리를 활용하여 S3에 이미지를 저장 및 삭제하는 모듈을 만들어보자.
# 개발 환경은 InteliJ를 기반으로 한다.
- InteliJ를 실행 후 pom.xml파일에 Dependency를 추가해준다.
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-java-sdk</artifactId>
<version>1.10.63</version>
</dependency>
- 타임존 문제를 해결하기 위해 joda 라이브러리를 추가해준다.
<dependency>
<groupId>joda-time</groupId>
<artifactId>joda-time</artifactId>
<version>2.4</version>
</dependency>
- 코드에 S3 서비스 엑세스를 위해 IAM Role을 생성하자
- S3 서비스 → 사용자 생성하기 → 프로그래밍방식 엑세스 → 기존 정책 직접연결 → S3 Full Access 정책 선택 → 사용자 만들기 → .CSV로된 키값 다운받아 보관
- 그러면 일단 S3 버킷을 생성하자, 일반 구성에 값들 설정하고 생성을 하자.
- 생성된 버킷을 확인할 수 있습니다.
- S3의 보안정책을 수정 하겠습니다. 테스트 이기 때문에 모든 옵션을 오픈 하도록 하겠습니다.
- 이제 InteliJ에서 JAVA 소스코드를 활용하여 파일을 S3 저장소에 업로드 하는 작업을 수행 하겠습니다.
- pom.xml 에 아래의 디펜던시를 추가 하십시오.
<dependencies>
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-java-sdk-core</artifactId>
<version>1.11.256</version>
</dependency>
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-java-sdk-s3</artifactId>
<version>1.11.256</version>
</dependency>
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
<version>2.3.0</version>
</dependency>
<dependency>
<groupId>joda-time</groupId>
<artifactId>joda-time</artifactId>
<version>2.4</version>
</dependency>
</dependencies>
- 자바 파일을 생성 후 아래 코드를 입력하여 실행 합니다.
import com.amazonaws.AmazonServiceException;
import com.amazonaws.auth.AWSCredentials;
import com.amazonaws.auth.BasicAWSCredentials;
import com.amazonaws.regions.Region;
import com.amazonaws.regions.Regions;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3Client;
import com.amazonaws.services.s3.model.CannedAccessControlList;
import com.amazonaws.services.s3.model.PutObjectRequest;
import java.io.File;
public class AmazonWebServiceUtil {
private static final String BUCKET_NAME = ""; // AWS 에 설정된 버킷명
private static final String ACCESS_KEY = ""; // AWS에 접근하기 위한 키
private static final String SECRET_KEY = ""; // AWS에 접근하기 위한 비밀 키
private AmazonS3 amazonS3;
public AmazonWebServiceUtil() {
AWSCredentials awsCredentials = new BasicAWSCredentials(ACCESS_KEY, SECRET_KEY);
amazonS3 = new AmazonS3Client(awsCredentials);
amazonS3.setRegion(Region.getRegion(Regions.AP_NORTHEAST_2)); // 추가된 코드
System.out.println("객체가 이동합니다.");
}
public void uploadFile(File file) {
if (amazonS3 != null) {
try {
PutObjectRequest putObjectRequest = new PutObjectRequest(BUCKET_NAME, file.getName(), file);
putObjectRequest.setCannedAcl(CannedAccessControlList.PublicRead); // file permission
amazonS3.putObject(putObjectRequest); // upload file
} catch (AmazonServiceException ase) {
ase.printStackTrace();
} finally {
amazonS3 = null;
System.out.println("객체가 이동 완료 되었습니다.");
}
}
}
public static void main(String[] args) throws Exception {
String fileName = "d:\\파일이름.jpg"; //이동할 파일
File tempFile = new File(fileName);
AmazonWebServiceUtil awsService = new AmazonWebServiceUtil();
awsService.uploadFile(tempFile);
System.out.println("객체이동 성공");
}
}
- 실행 : 현재 S3의 저장소에는 아무 파일도 존재 하지 않는다.
- 프로그램 실행 후
- S3 버킷 확인, 자동으로 파일이 로컬에서 S3 버킷으로 복사된것을 확인 할 수 있다.
- 위와같은 방법을 활용하여, 주기적으로 파일을 옮겨야 하는 경우나, 배치성 작업등을 수행하여 데이터를 백업하는 작업 등을 보다 원활히 수행 할 수 있다.
728x90
반응형