AWS

Part 7. S3 버킷 생성하기

cwchoiit 2024. 1. 11. 15:53
728x90
반응형
SMALL
728x90
SMALL

 

이번엔 데이터를 보관하고 읽어들일 수 있는 스토리지인 S3 서비스를 생성해보자.

 

S3 버킷 만들기

Amazon S3에서 데이터들을 담고 보관하는 장소를 버킷이라고 표현한다. 버킷을 만들어보자.

AWS Console에서 'S3'를 검색한다. 

 

메인화면 우측 상단에 'Create bucket' 버튼을 클릭한다.

 

상단부터 버킷 이름지역을 선택한다.

 

'Object ownership'은 기본 설정인 'ACLs disabled'를 선택한다. 이건 모든 오브젝트들은 현재 버킷을 만들고 있는 유저가 전부 Owner인 케이스를 말한다.

 

Block Public Access settings for this bucket 설정은 'Block all public access'를 선택 해제하고 진행한다. 외부에서 바로 이 Object에 접근해보는걸 테스트해보기 위함이다.

 

그 외 나머지 세팅 역시 전부 기본으로 설정된 채로 진행하고 하단 'Create bucket' 버튼을 클릭한다. 그러면 다음처럼 버킷이 생성된다.

 

버킷안으로 들어가보면 여러 탭이 존재하는데 'Objects' 라는 탭이 실제 업로드 되는 데이터들이 모여져 있는 곳이다. 그니까 파일이 3개면 3개 하나하나가 각각 오브젝트 하나하나가 되는 것이다. 여기에 우측 상단 'Upload' 버튼을 눌러 아무 이미지나 업로드해보자.

본인은 이미 이미지 하나를 업로드 한 상태이다.

 

업로드하고 'Permissions' 탭을 눌러 버킷 정책을 설정할 수 있다. 해당 탭을 눌러 화면을 살짝 내려가보면 'Bucket policy' 부분이 있다. 여기서 버킷 정책을 설정할 수 있다. 'Edit' 버튼을 눌러 버킷 정책을 만들어보자.

 

다음과 같이 설정한다.

 

  • Version: '2012-10-17'이 의미하는 건 policy language의 현재 버전을 의미한다. 그래서 반드시 이 값을 사용해야 한다. 이 값 말고 하나 더 유효한 게 2008-10-17이 있다. 이건 이전 버전이다. 이 버전은 사용하지 말고 지금처럼 2012-10-17 버전으로 사용하면 된다. 
  • Statement: 이 요소는 정책에 대해서 주 요소이다. 필수 값이고 하나 이상의 개별적인 statement가 포함된다. 그러니까 쉽게 말해 정책에 대한 실질적인 적용을 하는 부분으로 생각하면 되겠다.
  • Sid: Statement ID의 약자이다. 그냥 policy statement의 identifier라고 생각하면 된다. 없어도 무방하다.
  • Effect: 필수값이며 유효한 값은 "Allow", "Deny"가 있고 Resource에 대한 Action을 허가 또는 제어하는 키워드이다. 
  • Principal: resource-based JSON policy에서 사용되며 resource 기반의 정책에서는 이 값은 필수이다. 쉽게 말해 Resource에 대한 Action을 행하는 대상을 지정하는 것이다. 예를 들면 AWS account가 '123456789012' '555555555555' 인 두명의 유저에 대해서 적용하겠다하면 다음처럼 작성한다.  
"Principal" : { 
"AWS": [ 
  "123456789012",
  "555555555555" 
  ]
}

더 많은 내용은 공식 홈페이지 참조해서 정책에서 사용되는 JSON elements를 공부해보자.

 

AWS JSON policy elements: Principal - AWS Identity and Access Management

If your Principal element in a role trust policy contains an ARN that points to a specific IAM user, then IAM transforms the ARN to the user's unique principal ID when you save the policy. This helps mitigate the risk of someone escalating their privileges

docs.aws.amazon.com

 

 

 

참고로 이 Principal과 같이 알아야할 게 NotPrincipal이 있는데 이건 부정이다. 즉, Effect가 Allow일 때 NotPrincipal은 제외시키는 것이고 Effect가 Deny일 때 NotPrincipal은 허가하는 것.

  • Action: 구체적인 행위를 서술한다. 이 값은 필수값이고 "s3:GetObject"라고 작성하면 S3 서비스의 버킷 오브젝트를 Get하는것에 대한 행위를 말한다.
  • Resource: 말 그대로 리소스를 말한다. arn:aws:s3:::my-first-s3-bucket-cwchoi/* 이렇게 적으면 S3 서비스의 my-first-s3-bucket-cwchoi 이름으로 된 버킷의 모든 오브젝트 리소스를 뜻한다.

 

이렇게 버킷 정책을 만들고 하단 'Save changes' 버튼을 클릭한다. 적용된 화면은 다음과 같다.

 

이제 방금 올린 Object의 리소스를 HTTPS 프로토콜을 통해 접근해보자. 특정 Object에 들어가면 하단 사진처럼 Object URL이 있다.

들어가보면 이미지가 정상 노출되어야 한다. 버킷 정책에서 모든 유저에게 읽기 권한을 부여했으므로. 

 

 

S3 버킷 삭제하기

버킷을 만들었으니 삭제도 해보자. EC2 인스턴스 삭제하는 것과 유사해서 간단하다.

우선 버킷을 삭제하기 전 Object가 있으면 안된다. 그래서 오브젝트를 전체 지우고 버킷을 지워야한다. 

Objects 탭에서 전체 선택해서 'Delete' 버튼 클릭해서 지우자.

 

다 지웠으면 버킷 페이지로 돌아와서 버킷 선택 후 'Delete' 클릭

 

 

728x90
반응형
LIST