Amazon S3(Simple Storage Service)는 AWS가 제공하는 인터넷상의 스토리지 입니다. 가끔씩 사용자로부터 전달받은 파일을 저장하거나 불러와야 되는 경우에는 서버 내부의 스토리지에 저장하게 되는데요. S3를 이용하면 간편하게 스토리지에 저장하거나 불러올 수 있습니다.
이때, S3에서의 스토리지는 버킷이라고 불리우고 버킷 하위에어는 여러가지 디렉토리 혹은 파일들이 존재할 수 있습니다. S3는 고유한 이름을 가져야 합니다. 따라서, UUID 형식으로 이름을 지정해주는 것이 좋습니다.
콘솔 상단에서 S3를 검색하고 클릭하면 S3 대시보드가 나옵니다. 버킷 생성을 누르면 버킷을 만드는 페이지로 이동할 수 있습니다.
버킷의 이름은 고유해야 하므로 랜덤한 이름을 지정해서 넣어줍니다.
테스트용 버킷이므로 객체 소유권 항목에서 ACL 비활성화를 선택합니다. 그리고 모든 퍼블릭 액세스 차단 체크를 해제합니다.
버킷의 버전관리도 마찬가지로 비활성화를 선택하겠습니다.
암호화 유형에서 서버측 암호화를 선택해주겠습니다. 나머지 설정은 Default값을 그대로 사용하겠습니다.
이제, 하단의 버킷 생성 버튼을 클릭하여 첫번째 버킷을 생성했습니다.
지금 생성한 버킷은 아무런 정책이 적용되어 있지 않습니다. 따라서, 버킷의 파일을 업로드하거나 가져오는 행위가 차단됩니다. 따라서, 버킷의 정책만들어서 적용시키도록 하겠습니다.
편집을 선택하면 버킷의 정책을 편집할 수 있습니다. 편집을 클릭합니다.
정책 생성기를 이용하면 간편하게 정책을 생성할 수 있습니다. 우리는 현재 Root계정에서 버킷을 생성하였고, 버킷의 파일은 Root계정으로만 업로드할 것입니다. 따라서, Root계정은 생성, 삭제, 조회가 가능해야 합니다. 그리고 Url을 통해서 리소스를 확인하기 위해서는 모든 사용자가 조회가 가능해야겠죠. 따라서 아래와 같은 정책을 입력해주겠습니다.
아, 그리고 정책은 전부다 JSON으로 지정하면 됩니다.
{
"Version": "2012-10-17", // 버전이름
"Id": "Policy1720437774949", // 정책 ID
"Statement": [
{
"Sid": "AccessAllowWriteToRoot", // 정책 별칭
"Effect": "Allow", // 정책의 허용, 거부 여부
"Principal": { // 허용 계정 정보
"AWS": [
"[Root 계정 ARN]",
]
},
// 허용 정책 목록
"Action": [
"s3:DeleteObject",
"s3:GetObject",
"s3:PutObject"
],
// 허용 버킷 리소스 URL
"Resource": "arn:aws:s3:::[버킷 이름]/*"
},
{
"Sid": "AccessAllowReadToAll",
"Effect": "Allow",
"Principal": "*", // 전체 허용
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::[버킷 이름]/*"
}
]
}
이제 버킷의 정책이 적용되었으므로, Root 계정에서는 버킷의 파일을 조회, 생성, 삭제가 가능하고 모든 사용자들은 버킷의 파일을 조회만 할 수 있게 되었습니다.