Search
Duplicate
📝

[AWS Study] 0x. S3 이미지서버 구축

상태
완료
수업
AWS Study
주제
AWS
4 more properties
참고

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
spring-cloud-aws
awspring
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 파일에서 만든 설정정보에 기반하여 설정을 진행한다.