AWS HTTP 프로토콜과 연동되는 스토리지 S3

이재홍 http://www.pyrasis.com 2014.03.24 ~ 2014.06.30

S3 세부 설정하기

이제 S3의 다양한 기능을 활용해보겠습니다. S3는 버킷과 객체를 어떻게 설정하느냐에 따라 기능이 달라집니다. 권한 설정은 파일을 전체 공개하거나 특정 사용자에게만 공개하고 싶을 때 사용합니다. 그리고 버킷 정책을 설정하는 것에 따라 다양한 접근 제어가 가능합니다. 따라서 특정 도메인에서만 S3 객체를 링크할 수 있도록 허용하고 싶을 때, HTTP Referer(Referrer) 접근 제어 설정을 활용할 수 있습니다.

버킷을 정적 웹 서버(정적 웹 호스팅)로 사용하도록 설정하면 버킷 자체로 간단한 웹사이트 운영이 가능합니다. 또한, 버킷 로그 기록 그리고 객체의 스토리지 옵션, 버저닝, 수명 주기Lifecycle 관리도 할 수 있습니다.

S3 객체 권한 관리하기

S3에 올라간 파일을 객체라고 표현합니다. S3에서는 이 객체마다 각각의 접근 권한을 설정할 수 있습니다. 가장 간단한 예제로 S3에 올린 파일을 인터넷에 공개해보겠습니다. S3 버킷의 객체 목록에서 파일을 선택하고 위쪽의 Properties 버튼을 클릭하면 그림 11-17과 같이 객체의 세부 내용이 표시됩니다(파일을 선택하고 마우스 오른쪽 버튼을 클릭해서 나오는 팝업 메뉴에도 Properties가 있습니다). 여기서 Link 부분을 보면 그림 파일의 URL이 표시됩니다. 이 링크를 클릭합니다.


그림 11-17 S3 객체의 링크

웹 브라우저의 새 창이 열리고 링크의 내용이 표시됩니다. 하지만 AccessDenied라는 에러가 표시되고 그림 파일은 열리지 않습니다.


그림 11-18 S3 객체 링크 열기

S3 객체 목록에서 파일을 선택하고 마우스 오른쪽 버튼을 클릭하면 팝업 메뉴가 나옵니다(위쪽 Actions 버튼을 클릭해도 같은 메뉴가 나옵니다). Make Public를 클릭합니다. Make Public은 객체를 인터넷에 공개(Public)하겠다는 것입니다.


그림 11-19 S3 객체 목록에서 객체를 인터넷에 공개

파일을 공개하겠냐는 경고 창이 표시되면 확인 버튼을 클릭합니다.


그림 11-20 S3 객체 Make Public 경고 창

Make Public이 완료되었다는 것이 오른쪽에 표시됩니다. 위의 Properties 버튼을 클릭합니다.


그림 11-21 S3 객체 Make Public 명령 완료

Link 부분을 보면 노란색 자물쇠 아이콘에서 파란색 전파 아이콘으로 바뀐 것을 확인할 수 있습니다. 이제 이 링크를 클릭합니다.


그림 11-22 S3 객체의 링크

웹 브라우저에 S3 객체의 링크 내용이 잘 표시됩니다. 이제 이 그림 파일은 인터넷에 공개된 상태이기 때문에 다른 곳에 링크를 가져가서 이 그림 파일을 보여줄 수 있습니다.


그림 11-23 웹 브라우저에서 S3 객체 링크 열기

많은 파일을 하나하나 Make Public으로 설정하기에는 귀찮은 면이 있습니다. 이럴 때에는 처음에 파일을 올릴 때 S3 버킷에 파일 올리기 부분에서 Set Permissions 화면의 Make everything public에 체크하면 됩니다.

이미 파일을 올렸다면 S3 객체 목록은 파일을 여러 개 선택할 수 있으므로 공개하고자 하는 파일을 모두 선택한 뒤 Make Public으로 설정해주면 됩니다. 방금 공개한 그림 파일을 선택하고 Properties 버튼을 클릭한 뒤 Permissions 탭을 클릭합니다. Grantee에 Everyone이 설정되어 있고 Open/Download가 체크되어 있는 것을 볼 수 있습니다. 이것은 Make Public을 실행하면 자동으로 설정됩니다.


그림 11-24 S3 객체의 Make Public과 권한 설정

Permissions 탭에서 수동으로 Grantee에 Everyone을 설정하고 Open/Download에 체크한 후 Save 버튼을 클릭하면 Make Public을 실행한 것과 똑같은 효과를 가집니다.

Permissions 탭에서 Add more permission를 클릭했을 때 다음 항목을 볼 수 있습니다.

  • Grantee: 권한을 부여할 대상입니다. 보통 여기서는 Everyone과 자기 자신의 ID(Me도 자기자신의 ID를 뜻합니다.)을 선택합니다.
  • 추가적으로 계정을 발급하여 계정 별로 권한을 부여하고 싶을 때가 있습니다. ‘16장 사용자와 그룹을 생성하여 접근제어 및 권한관리를 제공하는 IAM’ 부분을 참조하여 계정을 생성하면 이곳에서 선택할 수 있게 됩니다. IAM 계정은 Access Key와 Secret Key를 이용하여 API로 접근 할 때 사용하게 됩니다.
  • Open/Download: 파일을 열고 다운로드할 수 있는 권한입니다.
  • View Permissions: 권한 내역을 볼 수 있는 권한입니다.
  • Edit Permissions: 권한을 수정할 수 있는 권한입니다. 보통 이런 경우 S3 객체 목록을 이용하지 않고 IAM 계정을 통해 API로 접근하게 됩니다.

저작권 안내

이 웹사이트에 게시된 모든 글의 무단 복제 및 도용을 금지합니다.
  • 블로그, 게시판 등에 퍼가는 것을 금지합니다.
  • 비공개 포스트에 퍼가는 것을 금지합니다.
  • 글 내용, 그림을 발췌 및 요약하는 것을 금지합니다.
  • 링크 및 SNS 공유는 허용합니다.