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이름명으로 파일을 불러오면 쉽게 파일을 불러오고 저장할수있다.
'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 |