AWS

S3_hands-on

JAEJUNG 2021. 8. 10. 14:39
Overview

1. S3에 파일 저장 및 검색하기

2. 파일에 대한 퍼블릭 액세스 권한 부여하기

3. S3 버킷 삭제하기

4. Lifecycle 관리하기

5. Permission 관리하기


Step1. S3에 파일 저장 및 검색하기

- [버킷 만들기]를 통해 새로운 S3 버킷을 생성한다.

 

- s3의 버킷 이름은 고유해야 하므로 각자의 버킷 이름은 다르게 설정된다.

이름을 설정한 후 [버킷 만들기]를 통해 버킷을 생성한다.

 

- 이제 이 버킷에 파일을 업로드 해보자

 

- Drag&Drop 혹은 클릭을 통해 파일을 업로드한 후 [업로드] 버튼을 클릭한다.

 

- S3에 업로드 된 이미지를 웹을 통해 접속해보자.

 

- 접속하면 아래와 같이 "Access Denied"가 표시된다.

이는 이 객체에 접근할 권한이 없기 때문에 발생하는 오류이다.

 

Step2. 파일에 대한 퍼블릭 액세스 권한 부여하기

- penguin.jpeg란 파일은 현재 s3handson-20210810라는 버킷에 들어있기 때문에 버킷의 권한을 수정해주어야 한다.

처음 버킷을 생성할 때 권한 부분을 변경한 것이 없기 때문에 기본적으로 "모든 퍼블릭 액세스 차단"이 설정돼있어

외부에서 접근이 불가능하기 때문이다.

 

- [편집]을 통해 "모든 퍼블릭 액세스 차단" 옵션에서 체크를 제거해준다.

 

- 권한 변경/삭제 등의 중요한 작업은 재확인이 필요하기 때문에 "확인"을 입력해준다.

 

- 업로드했던 파일을 클릭하여 [퍼블릭으로 설정]을 클릭한다.

 

- 아까 접속했던 URL을 다시 접속해보면 업로드했던 파일에 접근하여 이미지를 확인할 수 있다.

 

S3 버킷 삭제하기

- 실습이 끝난 후엔 생성했던 버킷을 꼭 삭제해준다.

 

- 버킷에 객체가 있으면 삭제가 되지 않으니, 업로드했던 파일을 모두 삭제한 후에 버킷 삭제를 진행한다.

 

Step4. LifeCycle 관리하기

LifyCycle을 관리하기에 앞서 먼저 S3의 버저닝 기능을 살펴보자.

 

- 버킷을 생성하는 경우 Default로 버저닝이 비활성화 돼있다.

- 이 기능을 활성화시켜보자

 

- S3 버킷의 버전 관리를 활성화시키면 업로드된 객체에 대한 버전 ID가 부여되면서, 삭제/변경 등의 변화가 

기록되기 때문에 혹시 모를 사용자의 실수를 방지할 수 있다.

 

- 이 상태에서 해당 파일을 삭제해보자

 

- 얼핏 보기엔 객체가 삭제된 것처럼 보이지만

 

- [버전 표시]를 ON하면 삭제된 객체에 "삭제 마커"가 표시돼있는 것을 확인할 수 있다.

 

- "버전 관리" 기능을 사용하면 이처럼 다시 다운로드 받거나 열기 등의 작업이 가능하므로, 삭제 혹은 변경 등의

작업에 대해 복원이 가능하다는 장점이 있다. 

 

S3의 버전 관리가 어떤 것인지 파악했으니 이제 수명 주기를 관리해보자.

 

S3 버킷에 업로드 된 객체들의 효율적 관리를 위해 LifeCycle을 관리해야 한다.

객체의 특징은 크게 아래 세 가지와 같을 것이다.

 

1. 자주 액세스 되는 경우

2. 제한된 기간만 자주 액세스 -> 이후엔 가끔씩만 액세스

3. 백업, 보관 용도로 거의 액세스 되지 않음

 

S3는 크게 Standard, Infrequent Access, Glacier로 구분하여 비용과 액세스 속도에 차이를 두고 있다.

뿐만 아니라 오래된 파일을 삭제하는 데에도 사용된다.

 

- [수명 주기 규칙 생성]을 통해 기간을 설정하여 좀 더 비용 효율적으로 스토리지를 관리할 수 있고

필요 없는 객체를 삭제할 수도 있다.

 

- LifeCycle에 대한 작업은 총 5가지로 구분된다.

스토리지 클래스 간에 객체의 현재 버전 전환
- 원하는 스토리지 클래스 전환을 선택하고 객체 생성 후 지정된 경과 기간이 지나면
스토리지 클래스가 전환됨.

스토리지 클래스 간에 객체의 이전 버전 전환
- 현재 버전 전환의 방법과 동일하다.

객체의 현재 버전 만료
- 기간을 설정하고 해당 기간이 경과되면 만료 상태로 변경되며, 버전관리가 활성화돼있다면
삭제 마커가 달리고 시간이 좀 더 지난 후 해당 객체는 삭제됨.
버저닝이 활성화돼지 않은 경우 그 객체는 바로 삭제되니 주의 필요.

객체의 이전 버전 영구 삭제
- 이전 버전은 설정된 경과 기간이 지나면 영구 삭제

만료된 삭제 마커 또는 완료되지 않은 멀티파트 업로드 삭제
- S3에는 객체를 업로드 할 때, multipart uploading이라는 기능을 제공한다.
이는 파일을 여러 개의 블럭으로 나누어서 동시에 여러 개의 connection을 통해서 업로드 하는 방식인데
객체에 표시된 삭제 마커를 삭제하거나 완료되지 않은 멀티파트 업로드를 삭제하여 성능을 개선할 수 있다.

 

- 옵션을 지정하면 [타임라인 요약]을 통해 정의할 수명 주기를 요약해준다.

 

- 정의한 수명 주기를 확인한다.

 

Step5. Permission 관리하기

S3의 권한 관리는 크게 3가지로 구분된다.

 

1. Public Access

2. Bucket Policy

3. ACL

 

먼저 Public Access부터 살펴보자

기본적으로 모든 퍼블릭 액세스 차단이 활성화돼있다.

이는 외부에서 S3에 대한 접근이 아예 불가능하다는 뜻이다.

설정을 변경하여 모두에게 퍼블릭 액세스 접근을 허용할 것인지, 아니면 임의의 사용자에게만 허용/차단할 것인지 설정할 수 있다.

 

Bucket Policy이다.

 

버킷 정책은 [정책 생성기]를 제공하는데,

- 아래와 같이 특정 사용자에 대해 버킷에 대한 특정 조작을 Allow/Deny 할 수 있다.

 

Principle:

-> 특정 사용자에 대해 권한을 제어하고 싶을 때 사용, AWS의 다른 계정 혹은 IAM 계정 등

(EX. arn:aws:iam:AWS-account-ID:user/IAMID)

 

Actions:

-> 버킷에 대한 CRUD 작업을 세분화하고, 옵션을 체크하여 사용

(EX. CreateBucket, DeleteBucket) 

 

ARN(Amazon Resource Name):

-> S3 Bucket에 대해 AWS가 정의한 고유한 값, 접근 권한을 주고자 하는 버킷을 지정한다.

(EX. arn:aws:s3:::handson/*)

 

- [Generate Policy]를 클릭하면 Json 형식의 정책을 생성해주는데, 이를 복사해서 붙여넣기 하면 된다.

 

- Json 형식의 템플릿을 아래 버킷 정책에 넣어주면 정책이 생성된다.

 

마지막으로 ACL에 대해 살펴보자

ACL은 버킷이나 객체에 대해 요청자의 권한 허용 범위를 어디까지 설정할 것인지 정의할 수 있다.

"모든 퍼블릭 액세스 차단" 옵션이 활성화 돼있다면, ACL에서 퍼블릭 액세스에 대한 권한을 변경하여도

적용되지 않으니 이 점을 유의한다.

 

'AWS' 카테고리의 다른 글

AWS CLI를 통한 Amazon S3 데이터 업로드  (0) 2021.08.11
VPC_hands-on  (0) 2021.08.10
EC2_hands-on  (0) 2021.08.10
AWS CloudWatch를 통한 장애 탐지 및 모니터링  (0) 2021.07.21
VPC(Virtual Private Cloud)란?  (0) 2021.07.21