AWS Cloud

[클라우드] AWS Simple Storage S3 사용하기

트리스탄1234 2023. 8. 3. 05:29
728x90
반응형

AWS S3 Storage 자료출처 Amazon

안녕하세요 이웃님들 ^.^
오늘은 Amazon에서 제공하는 객체 스토리지인 S3의 사용 방법에 대해서 포스팅을 해보려고 합니다.
 
S3는 객체 스토리지로 Key와 value의 형태로 객체를 저장합니다. 정형적인 데이터 보다는 비 정형적인 데이터인.
비디오, 사진, 백업 데이터.. 분석 데이터 등 다양한 객체를 저장할 수 있는 스토리지 입니다.
 
Amazon은 S3 스토리지에 다양한 기능을 제공을 하는데요. 데이터의 접근제어, 백업 데이터 저장, 등 많은 기능을 제공하고 있습니다.
 
이런 데이터들은 버킷이라고 하는 윈도우에서는 폴더와 비슷한 객체에 저장이되는데요. 
어떻게 S3를 사용하는지 살펴 보겠습니다.
 

버킷 만들기. 

우선 AWS에 서비스 검색창에서 S3를 입력 하고 S3를 클릭을 하고, 버킷 만들기를 클릭 합니다.
버킷 이름은 3~63자 사이에서 작을 해야 되고, 이름은 소문자, 숫자, 하이픈만 포함할 수 있습니다.
또 하나 주의할 점은 계정이나 Reason에 상관없이 모든 S3에서 유일한 이름을 사용 해야 합니다.
버킷 생성하기를 누른 후 필요한 값들을 위와 같이 입력 하고, 스크롤 다운한 뒤 맨 아래의 버킷 만들기를 클릭 합니다.

Amazon S3에 객체를 추가할 때 객체에 사용자 지정 메타데이터를 포함하고 객체에 접근할 수 있는 권한을 만들어서 사용자에게 부여 하거나 하는 정책을 구현할 수 있습니다.

반응형


 

파일 업로드 하기

위의 화면과 같이 버킷이 생성이 되었습니다. 그럼 만들어진 버킷의 체크박스를 클릭 하고 아래화면과 같이 업로드 버튼을 클릭 합니다.

아래 화면에서 파일추가 버튼을 클릭을 합니다. 

그럼파일 브라우저 화면이 나타 납니다. 브러우저에서 업로드할 파일을 선택 하고 아래 화면과 같이 업로드 버튼을 누릅니다.

아래화면과 같이 녹색 화면의 성공 메세지가 나타나고, 업로드한 파일이 아래와 같이 보입니다. 그럼 닫기 버튼을 클릭 합니다. 

이제 이상테에서는 객체를 업로드한 사용자만이 해당 파일에 접속을 할 수 있는 상태 입니다. 이 상태에서 권한을 부여를 하고 ec2에서 S3의 업로드한 파일에 접속 가능하게 만들어 보겠습니다. 
 

객체를 공개된 상태로 만들기

위의 화면에서 업로드된 파일을 클릭을 하고 아래 화며에서 보듯이 객체 url값을 메모장에 복사를 해둡니다.

접근이 가능한지 확인해 보기 위해 웹 브라우저를 열고 위에서 메모장에 복사한 주소를 입력 후 접속을 해봅니다.

위의 그림과 같이 접속이 안되는걸 확인할 수 있습니다. 현재 객체의 상태를 공개를 해놓은 상태가 아니라 접속이 되지 않습니다.  이제 객체 속성창에서 아래 그림과 같이 acl을 사용하여 퍼블릭으로 설정을 클릭 합니다. 

그럼 아래 화면과 같이 객체가 퍼블릭 공개가 막혀 있는 상태이기 때문에 퍼블릭으로 전환을 할수 없다는 메세지가 표시가 됩니다. 

취소 버튼을 클릭한 후 아래 화면과 같이 버킷창으로 이동하고 권한 버튼을 클릭 합니다. 

그럼 아래 화면에서 편집을 클릭 합니다.

그럼 아래 화면에서 모든 퍼블릭 엑세스 차단의 체크박스를 해제를 하고 변경 사항 저장 버튼을 누릅니다.

그럼 아래 그림과 같이 퍼블릭으로 전환 하는게 맞냐고 묻는 창이 나옵니다. 여기서 확인을 입력 하고 확인 버튼을 누릅니다.

그럼 아래와 같이 성공이라는 녹색창의 메세지가 나오고. 퍼블릭으로 전환이 완료 되었습니다.

이제 아래 화면과 같이 객체 텝을 클릭을 합니다. 

이제 앞서 업로드한 파일을 클릭 합니다.

작업 버튼을 누르고 acl을 사용하여 퍼블릭으로 설정 버튼을 클릭 합니다.

퍼블릭으로 설정 버튼을 클릭을 합니다. 

그럼 이제 아래와 같이 성공적으로 퍼블릭으로 전환되었다는 메세지가 나옵니다.

이제 우측 상단의 닫기 버튼을 클릭 한후 앞서 객체에 접속하기 위해 열었던 웹브라우저로 돌아가서 새로 고침 버튼을 눌러 봅니다.

그럼 이제 성공적으로 객체를 불어 올수 있는 환경이 되었습니다.

EC2 인스턴스에서 객체에 접속하기

이제 ec2 인스턴스를 만들어서 ec2에서 s3에 업로드된 파일에 접속이 되게 만들어 보겠습니다.
AWS 서비스 검색창에서 EC2를 입력 한후 인스턴스를 클릭 합니다.

인스턴스를 미리 만들어 두었습니다. 미리 만들어진 EC2를 클릭해서 위의 화면과 같이 SSH연결을 위해서 연결을 클릭 하고. 세션 매니저텝을 클릭 후 연결을 클릭 합니다.

위의 그림처럼 cd /home/ssm-user/ 명령을 입력해 ssm-user 디렉토리로 이동을 합니다.
S3의 버킷을 조회 하기 위해 아래의 명령을 입력 하고 결과로 나오는 버킷 리스트들을 확인 합니다.

ec2 인스턴스가 버킷을 조회할수 있는 이유는  프로필(인증 대상 사용자 정의)과 역할(인증 후 수행할 수 있는 작업 정의)이ec2생성시 미리 만들어 두었기 때문에 접속을 할수 있습니다.
 
그럼 이제 버킷에 어떤 파일이 있는지 아래 명령을 통해 조회를 해봅니다.

아래 그림과 같이 cd reports라는 명령으로 reports 디렉토리로 이동 후 ls라는 명령으로 어떤 파일이 있는지 조회를 하고
ws s3 cp report-test1.txt s3://testbucket123124562 라는 명령으로 로컬에 있는 파일이 s3로 업로드가 되는지 확인을 해보면 아래와 같이 업로드가 되지 않는걸 확인할 수 있습니다.

버킷 정책 생성하기

이제 다른 파일을 업로드 후 버킷 정책을 생성하여 읽기/쓰기가 가능하게 만들어 보겠습니다. 
AWS 서비스 검색창에서 S3를 검색 후에 S3를 클릭 합니다.

위의 화면과 같이 생성해 놨던 버킷을 클릭을 하고. 앞에서 했던 방법과 같이 다른 파일을 업로드 합니다. 

업로드가 성공이 되면 닫기 버튼을 클릭 하고 업로드된 파일을 클릭 후 속성창에서 객체 URL을 별도의 메모장에 복사를 해둡니다. 

복사한 주소를 새 웹브라우저창을 연후 주소창에 붙여 넣은 후 접속이 되는지 확인을 해봅니다.
그럼 아래와 같이 접속이 거부가 되는것을 확인할 수 있습니다.

이제 AWS 서비스 검색창에서 IAM를 입력 하고 아래 화면과 같이 역확을 클릭 합니다. 

검색창에 EC2InstanceProfileRole을 입력후 검색을 하고 아래 그림과 같이 검색 결과를 클릭 합니다.
EC2InstanceProfileRole은 EC2가 S3에 연결하는 AWS에서 미리 생성해 놓은 Role 입니다.

이제 아래 그림과 같이 role arn값을 복사해 메모장에 붙여 둡니다. 

이제 다시 AWS 서비스 검색창에서 S3를 입력 하고 클릭을 한후 생성했던 버킷을 클릭을 합니다. 

권한 텝을 클릭하고 편집 버튼을 클릭 합니다. 
 

 Bucket policy editor가 표시가 되고, 버킷 정책을 수동으로 작성하거나 AWS 정책 생성기로 작성을 할수 있습니다.
Amazon Resource Name의 형식을 아래와 같습니다. 
arn:partition:service:region:account-id:resource
 
위의 그림에서 버킷 ARN값을 복사 후 정책창에서 복사한 내용을 위와 같이 붙여 넣고 정책 생성기를 클릭 합니다.

그럼 새로운 json 정책 생성창이 열립니다. 이 창은  AWS 서비스에 대한 세분화된 권한을 구성하는 데 사용됩니다. JSON으로 정책을 수동으로 작성할 수 있지만 AWS 정책 생성기를 사용하면 친숙한 웹 인터페이스를 사용하여 정책을 만들 수 있습니다.

Select Type of Policy는 S3를 선택을 합니다.
Effect: Allow
Principal: 앞서 복사한 Role의 ARN값을 붙여 넣습니다.
Action: Get object, Put Object를 클릭 하니다.
Amazon Resource Name: 버킷의 arn값을 붙여 넣고 뒤에 /*입력해 줍니다.(해당 버킷의 모든 리소스)
위와 같이 입력후 add statement를 클릭 합니다.

그럼 위와 같이 principal이 하나 추가 되고 Generate Policy를 클릭 하면 아래와 같이 정책 관려된 JSON 코드가 보입니다.
 

위에 생성된 코드를 복사 후에 버킷 정책 편집창에 붙여 넣고 아래와 같이 변경사항 저장 버튼을 클릭 합니다. 

이제 다시 위에서 ec2에 ssh를 연결한 방법과 같이 다시 ec2의 cli창으로 접속을 합니다.
cd /home/ssm-user/reports 명령으로 reports 디렉토리로 아래와 같이 이동을 합니다. 

aws s3 ls 명령을 사용해서 버킷 리스트를 출력을 하고. 해당 버킷 이름으로 버킷안에 있는 객체 리스트를 조회 합니다.
aws s3 ls s3://testbucket123124562

이제 ls명령을 이용해 reports 디렉토리에 있는 파일을 조회 한후 한개의 파일을 아래의 그림과 같이 s3 버킷에 업로드를해 봅니다. 
ls -al
aws s3 cp report-test1.txt s3://testbucket123124562/report-test1.txt

그럼 아까와는 다르게 upload가 성공을 하는것을 볼수 있습니다.

aws s3 ls s3://testbucket123124562 명령으로 업로드가 되었는지 확인 합니다.
이제 반대로 s3에서 ec2로 아래 명령을 이용해서 다운로드해 보겠습니다. 

버킷 버전 관리하기

버전 관리는 같은 버킷에 여러 객체 변형 버전을 유지하는 방법입니다. 쉽게 애기 하면 객체에 내용이 변경(업로드/삭제. 등)이 발생했을때 실수로 지운 파일을 복구 하려면 이전 버전으로 돌린다던지 하면 복구를 할수 있는 기능 입니다.
 
그럼 이제 이 기능을 사용해 보도록 하겠습니다.
S3의 버킷창에서 앞서 사용한 버킷을 클릭을 합니다.

아래 그림 처럼 속성창을 클릭을 하고 편집을 클릭 합니다. 

아래 그림 처럼 버킷 버전 관리 활성화를 체크를 하고 변경사항 저장을 클릭을 하면 이제 버킷 안의 모든 객체에 대해서 버전관리가 시작이 됩니다. 

그럼 이제 객체 텝을 클릭 후 아래 그림과 같이 버전 보기 버튼을 클릭을 합니다. 

앞서 업데이트한 SIMPLE.TXT파일을 열고 내용을 아래와 같이 변경을 하고 업로드 절차에 따라서 해당 파일을 s3에 업로드 합니다.

버킷에서 조금전에 업로드한 SIMPLE.TXT파일을 클릭을 하고 버전텝을 클릭을 해보면. 위의 화면에서 한개의 라인을 추가한 파일이 현재 버전이고, 및에 NULL로 표시된(이전에 버전 관리 기능을 켜기전에 업로드를 해서 버전 표기 안됨)파일이 한개의 라인을 추가하기전 파일 입니다. 

이제 테스트를 위해 SIMPLE.TXT파일을 아래의 화면과 같이 선택 후 삭제를 합니다. 

아래와 같이 객체[ 삭제 창이 나타나고 여기서 확인을 위해 삭제를 입력 후 객체 삭제 버튼을 클릭 합니다. 

삭제후 버킷창으로 돌아와 파일을 조회 해보면 삭제가 된것을 알수 있습니다. 
 

아래 화면과 같이 다시 버전 표시를 클릭을 해보면 삭제 마커라고 되어 있는 파일이 조금전에 삭제한 파일 입니다. 

가장 최신 버전은 삭제 마커로 표시가 되어 있고, 이전 버전 두 개도 표시가 됩니다. 버킷에서 버전 관리를 활성화한 경우 객체가 즉시 삭제되지 않고  대신 Amazon S3는 현재 객체 버전이 되는 삭제 마커를 삽입 합니다.  객체의 이전 버전은 제거되지 않습니다. 
 
그럼 이제 삭제 마커가 표시된 파일의 체크 박스를 선택하고 삭제를 클릭 합니다.

아래와 같이 영구 삭제를 입력 후 객체 삭제를 클릭 합니다.

 
그럼 아래와 같이 삭제가 성공이 된 화면이 나옵니다 닫기 버튼을 클릭 합니다. 

버킷창으로 돌아가서 버전표시를 꺼보면 SIMPLE.TXT파일이 복구된것을 확인할 수 있습니다. S3에서 삭제 마커를 제거를 하면 최신 버전으로 복구가 됩니다. 

그럼 이제 특정 버전을 삭제해 보겠습니다. 버킷 탐색 창에서 null버전을 선택을 하고 삭제를 합니다.

삭제 후 다시 버킷 탐색창으로 돌아와 보면 simple.txt.파일이 하나만 표시되는 것을 확인할 수 있습니다.
 객체의 특정 버전을 삭제할 때는 삭제 마커가 생성않고 영구적으로 삭제됩니다. S3는 최신 버전만 복구를 할수 있습니다.

자세하게 적을려다 보니. 내용이 너무 많아 진것 같네요. ^.^
 
오늘 하루도 행복한 하루 되세요 ^.^
도움이 되었다면... 구독과... 광고클릭 해주세용 ^.^
 
 

728x90
반응형