클라우드 엔지니어/클라우드 캠프과정

AWS의 스토리지 S3 , EBS, CloudFront

해아's 2022. 9. 26. 16:25

 

09. AWS의 스토리지
  1) 스토리지 관련 클라우드 서비스
      - Glacier
저비용 데이터 보관 및 백업 서비스. 자주 사용되지 않는 데이터를 보관 및 백업하는데 유용한 서비스 
 저장만 제공 입출력을 제공하지않음 > 입출력 유료


      - S3 (Simple Storage Service)
객체 스토리지 서비스. 웹에서 바로 접근 할 수도 있고, EC2에서 mount해서 사용할 수도 있다.
스토리지 혼자 존재 가능

ex) 구글드라이브,아이클라우드,등등


      - EBS (Elastic Block Storage)
EC2 인스턴스에서 사용할 수 있는 블록 스토리지. 용량, IOPS 설정등이 가능하다. 
스토리지 혼자 존재 불가능
* S3는 네트워크 스토리지, EBS는 서버에 추가할 수 있는 하드웨어 스토리지(SATA 하드 같은)와 같은 개념.  

      - CloudFront
콘텐츠 전송용 웹서비스. CDN과 비슷한 서비스로, 
EC2나 S3같은 서비스에서 사용시 가장 가까운 엣지로 자동 라우팅되서 콘텐츠 전송 속도를 향상할 수 있다.   
 
      - Storage Gateway
aws의 스토리지와 로컬 스토리지를 연동해주는 서비스. 로컬에 있는 DAS, NAS, SAN 과 같은 장비와 
S3를 연동해서 메인 데이터는 S3에 두고 접근빈도가 높은 데이터는 로컬 스토리지에 케싱하거나, 
모든 데이터는 로컬 스토리지에 두고 일정 시간에 따라 주시적으로 데이터의 스냅샷을 S3에 저장하는 등의 서비스를 구축할 수 있다.
 
      - Import / Export
대용량 데이터를 이동식 디바이스에 직접 import / export 해 주는 서비스. 
외장 하드같은 디바이스를 Amazon에 우편으로 보낸 다음, 데이터를 Import 또는 Export 후 다시 돌려받는 방식. 

실습  EC2 인스턴스 생성

 

 

하드를 추가할경우 > 가용영역을 같은곳으로 해야함!!! 나는 ap-northeast-2a 이곳에 ec2가있다.

볼륨연결

echo로 인식

자동으로 echo인식안해도 인식되있다.

파티션 생성

lvm타입 변경

lv생성(pv vg lv)

파일시스템

마운트

 



  2) EBS 활용하기
    (1) 볼륨 용량 조절
lsblk 확인 xvda 8G
  xvda1 8G

EBS 용량을 15G로 늘린후 

13기가로 조정

파티션 및 파일시스템은 안늘어나므로 늘려주는 명령어를 해야한다.
lsblk 확인 xvda 15G
  xvda1 8G


growpart /dev/xvda 1 파티션 늘리는 명령어



lsblk 확인 xvda 15G
  xvda1 15G


df -h /dev/xvda1       7.7G  1.2G   6.5G   8% /

resize2fs /dev/xvda1

df -h /dev/xvda1       15G  1.2G   14G   8% /


S3 >  버킷으로 나누어진다.
버킷이름은 아이디와 같아서 중복확인이된다.

업로드된 파일들을 객체라고 부른다.

 
xml > 구시대

json > 서버와 통신할떄 양식

yaml  > 설정파일 양식?

버킷을 퍼블릭으로 외부액서스 되게 만들어보기

https://aws.amazon.com/ko/premiumsupport/knowledge-center/read-access-objects-s3-bucket/

S3 > 버킷 > 권한 > 소유권편집

 
S3 > 버킷 > 권한 >  퍼블릭엑서스 차단 편집

S3 > 버킷 > 권한 >  버킷정책
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": "*",
      "Action": "s3:GetObject",
      "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*",
      "Condition": {
        "StringEquals": {
          "s3:ExistingObjectTag/public": "yes"
        }
      }
    }
  ]
}
 "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*", << 이부분에 내 버킷이름을 적용한다.
객체별로 권한지정 변경

s3 실제 사용용도 Resources-and Static Content (리소스 및 정적 콘텐츠)

틀 > 웹서버(ec2)

내용채우는거> 어플리케이션 서버(ec2)

ec2 는 시간당 요금책정

 

CDN 서버로 사용한다 왜나면 캐쉬서버처럼 리전이 따로없어서 ...


  3) S3를 굳이  EC2에 마운트해서 사용하기
apt-get update
apt install s3fs awscli -y

IAM 키 파일 다운          >>>>>> IAM 키파일은 유출되면 대형사고임!!!

vi ~/.s3fs-creds
ACCESS_KEY_ID:SECRET_ACCESS_KEY

chmod 600 ~/.s3fs-creds
mkdir [특정 디렉토리]
s3fs  [버킷 이름]  [특정 디렉토리]  -o passwd_file=~/.s3fs-creds


umount  [특정 디렉토리]



* 특정 디렉토리를 마운트 포인트라고 한다.

 

 

CloudFront

 

CloudFront에서 사용자에게 콘텐츠를 제공하는 방법

콘텐츠를 제공하도록 CloudFront를 구성한 후에 사용자가 객체를 요청하면 다음과 같은 결과를 얻습니다.

  1. 사용자가 웹 사이트 또는 애플리케이션에 액세스하고 이미지 파일 및 HTML 파일 같은 하나 이상의 객체에 대한 요청을 보냅니다.
  2. DNS가 요청을 최적으로 서비스할 수 있는 CloudFront POP(엣지 로케이션)로 요청을 라우팅합니다. 이 위치는 일반적으로 지연 시간과 관련해 가장 가까운 CloudFront POP이며, 요청을 엣지 로케이션으로 라우팅합니다.
  3. CloudFront는 해당 캐시에 요청된 객체가 있는지 확인합니다. 객체가 캐시에 있으면 CloudFront는 객체를 사용자에게 반환합니다. 객체가 캐시에 없으면 CloudFront가 다음을 수행합니다.
    1. CloudFront는 배포의 사양과 요청을 비교하고 요청을 해당하는 객체로 사용자의 원본 서버(예: Amazon S3 버킷 또는 HTTP 서버)에 전달합니다.
    2. 원본 서버는 객체를 다시 엣지 로케이션으로 보냅니다.
    3. 오리진에서 첫 번째 바이트가 도착하면 CloudFront가 객체를 사용자에게 전달하기 시작합니다. CloudFront는 다음에 다른 사용자가 객체를 요청할 때 캐시에 해당 객체를 추가합니다.
728x90
반응형