참고
AWS S3 설정하기
NOTE
스프링부트 애플리케이션과 AWS S3 스토리지를 연동시키고, 동시에 여러 파일 데이터를 업로드하고 삭제하는 API 를 개발하는 과정에 대해 소개
implementation 'io.awspring.cloud:spring-cloud-starter-aws:2.3.1'
Groovy
복사
IAM 계정 생성
NOTE
1.
IAM 계정 사용자에 대해 권한을 부여한다.
AmazonS3FullAccess만 있어도 된다.
2.
accessKey 활성화
S3 버킷 설정하기
NOTE
모든 퍼블릭 액세스 차단을 꼭 선택하자!
•
생성은 퍼블릭 액세스 차단을 해제하는 것 말고는 크게 신경쓸게 없음
권한 설정
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AddPerm",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:*",
"Resource": "arn:aws:s3:::버킷 이름/*"
}
]
}
JSON
복사
CORS 설정
[
{
"AllowedOrigins": ["*"],
"AllowedMethods": ["GET", "PUT", "POST", "HEAD"],
"AllowedHeaders": ["*"],
"ExposeHeaders": ["x-amz-server-side-encryption", "x-amz-request-id", "x-amz-id-2"],
"MaxAgeSeconds": 3000
}
]
JSON
복사
Springboot로 S3 파일 업로드
의존성 추가
NOTE
mplementation 'io.awspring.cloud:spring-cloud-starter-aws:2.3.1'
JSON
복사
Spring-Cloud-AWS 의존성 추가
S3 업로드
NOTE
cloud:
aws:
credentials:
access-key: [엑세스 키]
secret-key: [엑세스 시크릿 키]
s3:
bucket: [S3 버킷 이름]
region:
static: ap-northeast-2 (S3 버킷 지역)
auto: false
stack:
auto: false # CloudFormation이 없으면 시작이 안되므로 사용하지 않도록 끈다.
# file upload max size (파일 업로드 크기 설정)
spring:
servlet:
multipart:
max-file-size: 20MB # 파일 하나당 크기
max-request-size: 20MB # 전송하는 총 파일의 크기
YAML
복사
Config 파일
NOTE
@Slf4j
@Configuration
public class AwsS3Config {
@Value("${cloud.aws.credentials.access-key}") // application.yml 에 명시한 내용
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 awsCreds = new BasicAWSCredentials(accessKey, secretKey);
return (AmazonS3Client) AmazonS3ClientBuilder.standard()
.withRegion(region)
.withCredentials(new AWSStaticCredentialsProvider(awsCreds))
.build();
}
}
Java
복사
•
S3용 config 파일을 생성 후, yaml 파일에서 만든 설정정보에 기반하여 설정을 진행한다.