https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-aws
여기서

이 중에 암거나 눌러서

저거를 가져와서
내 프로젝트 Maven 에 넣는다.
cloud.aws.credentials.accessKey=your-access-key
cloud.aws.credentials.secretKey=your-secret-key
cloud.aws.region.static=your-region
cloud.aws.s3.bucket=your-bucket-name
이렇게 추가 함.
여기서 cloud.aws.region.static=ap-northeast-2 이거는
AWS 데이터 센터의 물리적 위치를 뜻함.
ap-northeast-2 는 서울임.
@Configuration
public class S3Config {
@Value("${cloud.aws.credentials.access-key}")
private String accessKey;
@Value("${cloud.aws.credentials.secret-key}")
private String secretKey;
@Value("${cloud.aws.region.static}")
private String region;
@Bean
public AmazonS3Client amazonS3Client() {
BasicAWSCredentials credentials = new BasicAWSCredentials(accessKey, secretKey);
return (AmazonS3Client) AmazonS3ClientBuilder
.standard()
.withRegion(region)
.withCredentials(new AWSStaticCredentialsProvider(credentials))
.build();
}
}
@Service
@RequiredArgsConstructor
public class S3UploadService {
private final AmazonS3 amazonS3;
@Value("${cloud.aws.s3.bucket}")
private String bucket;
public String saveFile(MultipartFile multipartFile) throws IOException {
String originalFilename = multipartFile.getOriginalFilename();
ObjectMetadata metadata = new ObjectMetadata();
metadata.setContentLength(multipartFile.getSize());
metadata.setContentType(multipartFile.getContentType());
amazonS3.putObject(bucket, originalFilename, multipartFile.getInputStream(), metadata);
return amazonS3.getUrl(bucket, originalFilename).toString();
}
}
putObject() 메소드가 파일을 저장해주는 메소드
getURl()을 통해 파일이 저장된 URL을 return 해주고, 이 URL로 이동 시 해당 파일이 오픈됨 (버킷 정책 변경을 하지 않았으면 파일은 업로드 되지만 해당 URL로 이동 시 accessDenied 됨)
참고 문서 : https://chb2005.tistory.com/200