나의 탐라 프로젝트에서는 S3 버킷을 사용해 사진 파일을 저장하고 조회한다. 오늘은 S3 버킷을 생성해보자
S3(Simple Storage Service)란 확장성, 데이터 가용성, 보안 및 성능을 제공하는 객체 스토리지 서비스이다.
- S3는 데이터를 버킷 내의 객체로 저장한다.
- 객체는 해당 파일을 설명하는 메타데이터이며, 버킷은 객체에 대한 컨테이너이다.
- REST 인터페이스를 통해 저장 / 삭제 / 조회가 가능합니다.
AWS 콘솔안에서 S3를 검색한다.
버킷 만들기를 클릭한다.
버킷 이름은 고유값으로 설정해야 한다.
Spring을 통해 S3에 파일을 업로드하기 위해서는 ACL을 활성화해야 한다. 비활성화 상태라면 AmazonS3Exception: The bucket does not allow ACL
이 발생한다
S3의 퍼블릭 액세스 권한을 설정한다. 외부에 S3를 공개할 경우 모든 퍼블릭 액세스 차단을 체크 해제하면 된다.
퍼블릭 액세스를 차단할 경우, IAM에서 AWSAccessKeyId, AWSSecretKey를 발급받고 키를 이용해서 S3 객체에 접근할 수 있다.
S3 인스턴스를 클릭한 후 권한 메뉴를 클릭한다. 아래에 버킷 정책에서 편집을 누르면 에딧이 가능한 창으로 변한다.
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AddPerm",
"Effect": "Allow",
"Principal": "*",
"Action": [
"s3:GetObject",
"s3:PutObject",
"s3:DeleteObject"
],
"Resource": "arn:aws:s3:::bucket이름/*"
}
]
}
해당 내용 입력 후 설정을 완료한다.
콘솔창 검색창에 IAM 검색한다.
사용자 추가를 누른다.
사용자 이름을 설정하고 프로그래밍 방식 액세스 방식을 선택한다.
기존 정책 직접 연결을 누르고, AmazonS3FullAccess
조회 후 선택한다.
이후는 다음을 눌러서 추가를 완료한다.
액세스 키, 비밀 액세스 키는 나중에 스프링 설정에서 쓰이기 때문에 메모해두자.