S3 서버 세팅하기 - 버킷 생성하기
Amazon S3
아마존 S3 는 객체 스토리지 서비스라고 불리며, 파일, 데이터 및 다양한 유형의 미디어 등을 저장하고 관리하는데 사용됩니다.
저자의 경우 Echo-eco 의 프로젝트에서 비디오와 파일을 사용하였습니다.
특히 S3 는 저렴하다는 특징을 가지고 있어 많은 기업에서 사용하고 있습니다.
세팅하기
해당 링크를 들어가면 S3 공식 사이트에 접근할 수 있습니다.
S3 를 검색해서 들어가면 다음과 같은 페이지가 나옵니다.
이페이지에서 버킷만들기 버튼을 눌러줍니다.
- 버킷 이름: 사용자가 알아볼 수 이름 설정
한 계정에서 EC2 세팅과 S3 를 세팅할 경우 ACL 비활성화를 눌러줍니다.
ACL : Access Control List 의 줄임말로, 버킷에 대한 접근 권한 방식을 의미합니다.
퍼블릭 엑세스 권한에 대한 내용으로, 파일 같은 데이터를 업로드하거나 다운로드하는 것을 의미합니다.
이 설정은 ACL이나 버킷 정책을 통해 퍼블릭 액세스가 부여되는 것을 막을 수 있습니다.
따라서 필요한 설정을 체크하고 정책을 통해 2단 보안을 설정할 수 있습니다.
여기서 일단 저는 정책을 통해서만 막을 예정이라 퍼블릭 상태로 생성하였습니다.
버킷을 사용하면 아마존에서 버전 관리를 해주는데 사용자가 실수로 삭제했다 하더라도 복구가 가능해집니다.
하지만 활성화를 선택할 경우에 추가비용이 발생하기 때문에 저는 비활성화로 진행했습니다.
태그는 버킷이나 객체에 메타데이터를 추가하여 관리와 비용을 추적을 용이하게 하는데 사용됩니다.
기본 암호화는 버킷에 저장되는 모든 데이터를 암호화했다가 객체를 다운로드 할 때 복호화를 해주는 서비스입니다.
그다음 버킷만들기를 통해 버킷을 만들어줍니다.
생성이 되면 다음 그림처럼 test-1187 이 생성된 것을 알 수 있습니다.
정책 편집하기
우리가 만든 버킷에 이미지를 아무나 올리면 안되기때문에 정책을 통해 관리해야 합니다.
먼저 위에서 만든 이름 ( test-1187 ) 을 선택합니다.
이후 권한 > 편집 을 선택합니다.
그럼 이런 페이지가 나오는데 정책에 저는 json 으로 작성했습니다.
참고) Resource 에 들어가는 arn:aws:s3:::test-1187
는 왼쪽 위 버킷 ARN 에 적혀있습니다.
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowGetObjectAll",
"Effect": "Allow",
"Principal": "*",
"Action": [
"s3:GetObject"
],
"Resource": [
"arn:aws:s3:::test-1187/*",
"arn:aws:s3:::test-1187"
]
},
{
"Sid": "AllowPutObjectSpecificIp",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:PutObject",
"Resource": "arn:aws:s3:::test-1187/*",
"Condition": {
"IpAddress": {
"aws:SourceIp": "<탄력적 ip>/32"
}
}
}
]
}
- Action: 어떤 행동에 대해 정책을 실행할건지 적습니다.
- Resource: /* 가 없는 경우 버킷에 대한 설정, /* 가 있는 경우 그 버킷 내부의 모든 객체에 대한 접근 권한을 가집니다.
정리하면 읽기는 모든 접근에 대해 열려있고, 쓰기의 경우에는 특정 ip 만 허락하여 사용한다는 의미입니다.
SourceIp 에 들어있는 /32 는 CIDR 표기법으로 /32 는 특정 단일 IP 주소를 의미합니다.
여기까지 따라오셨으면 버킷 생성 및 설정은 끝이 났습니다.
EC2 와 S3 연결하기
포스팅이 너무 길어 포스팅을 나눴습니다.
Spring Server 와 S3 연결하기
Spring Server 와 S3 서버를 연결하여 이미지 url 을 얻어 사용할려면 다음 블로그를 참고하시면 됩니다.
Leave a comment