Skip to content

Latest commit

 

History

History
211 lines (123 loc) · 9.64 KB

s3.md

File metadata and controls

211 lines (123 loc) · 9.64 KB
description
Update : 2021-09-03

S3

{% hint style="info" %} 이 랩은 기본 VPC 네트워킹의 다양한 기능을 구성하는 환경입니다. EC2 컴퓨팅 랩과 Networking 랩을 완료하였다면, Task 2를 진행하면 됩니다. {% endhint %}

소개

Amazon Simple Storage Service(Amazon S3)는 업계 최고의 확장성과 데이터 가용성 및 보안과 성능을 제공하는 객체 스토리지 서비스입니다. 즉, 어떤 규모 어떤 산업의 고객이든 이 서비스를 사용하여 웹 사이트, 모바일 애플리케이션, 백업 및 복원, 아카이브, 엔터프라이즈 애플리케이션, IoT 디바이스, 빅 데이터 분석 등과 같은 다양한 사용 사례에서 원하는 만큼의 데이터를 저장하고 보호할 수 있습니다.

Amazon S3는 사용하기 쉬운 관리 기능을 제공하므로 특정 비즈니스, 조직 및 규정 준수 요구 사항에 따라 데이터를 조직화하고 세부적인 액세스 제어를 구성할 수 있습니다. Amazon S3는 99.999999999%의 내구성을 제공하도록 설계되었으며, 전 세계 기업의 수백만 애플리케이션을 위한 데이터를 저장합니다.

목적

본 랩은 아래와 같은 구성을 통해 S3와 VPC 기반의 네트워킹을 통해 클라우드 자원을 효과적으로 연결하고 사용하는 방법에 대해서 학습해 봅니다.

  • S3에 버킷 생성
  • 생성된 S3 버킷에 Object 추가
  • S3내의 Object 확인
  • S3내의 Object 이동
  • 버킷 버전 활성화
  • S3내의 Object 및 버킷 삭제

Task1 : ELB 생성

{% hint style="info" %} Networking LAB의 ELB를 앞서서 수행한 경우에는 추가적으로 Task1.ELB 생성을 수행하지 않아도 됩니다. {% endhint %}

Elastic Load Balancing은 들어오는 애플리케이션 트래픽을 Amazon EC2 인스턴스, 컨테이너, IP 주소, Lambda 함수와 같은 여러 대상에 자동으로 분산시킵니다. Elastic Load Balancing은 단일 가용 영역 또는 여러 가용 영역에서 다양한 애플리케이션 부하를 처리할 수 있습니다. Elastic Load Balancing이 제공하는 세 가지 로드 밸런서는 모두 애플리케이션의 내결함성에 필요한 고가용성, 자동 확장/축소, 강력한 보안을 갖추고 있습니다.

1.로드밸런서 생성

  • AWS 관리 콘솔에서 EC2 서비스를 선택합니다. "로드밸런싱"-"로드밸런서"를 선택합니다. 로드밸런서 유형은 ALB를 선택합니다.

2. 로드밸런서 구성

  • 1단계 로드밸런스 구성을 선택합니다. 로드밸런서 이름을 생성합니다. 리스너는 기본 HTTP , 80을 유지 합니다.

3. 보안 그룹 생성

  • EC2 Computing LAB에서 생성한 보안그룹을 사용합니다. Public 보안 그룹을 사용합니다. 해당 보안그룹에는 80 포트가 허용되어 있어야 합니다.

4. 라우팅 구성

  • 라우팅 대상 그룹 (Real Server)를 선택합니다. Real Server 들의 그룹을 정의하고 대상 유형은 인스턴스로 선택합니다. (PUBLIC-01,02)
  • 상태 검사는 PUBLIC-01,02에 포함되어 있는 웹서비스 URL을 선택합니다. PUBLIC-01,02에는 "/var/www/html/ec2meta-webpage/index.php" 에서 웹서비스를 제공하고 있습니다. 해당 경로에 대해서 상태 검사를 수행합니다.
/ec2meta-webpage/index.php

5. 대상서버 (Real Server)를 등록

  • 대상서버를 등록합니다. 대상서버는 Public Subnet-A,B에 할당된 서버입니다. (PUBLIC-A, PUBLIC-B)

6. 대상 서버 상태 확인

  • 대상서버가 "Healthy" 상태인지를 확인합니다.

7. 웹서비스 확인

  • ELB DNS A레코드 주소로 정상적으로 웹서비스가 제공되는 지 확인합니다. 웹페이지를 Refresh 할 때 마다 페이지의 정보가 다르게 변경됩니다. 라운드로빈으로 로드밸런싱이 이뤄지기 때문입니다.

Task2 : 버킷 생성하기

Amazon S3을 사용하면 웹을 통해 언제 어디서든 원하는 양의 데이터를 저장하고 검색할 수 있습니다. 간편하고 직관적인 웹 인터페이스인 AWS Management 콘솔을 사용하여 이러한 작업을 수행할 수 있습니다.

Amazon S3를 최대한 활용하려면 몇 가지 간단한 개념을 이해해야 합니다. Amazon S3는 데이터를 버킷 내에 객체로 저장합니다. 객체는 파일과 해당 파일을 설명하는 메타데이터(선택 사항)로 구성됩니다. Amazon S3에 객체를 저장하려면 저장할 파일을 버킷에 업로드합니다. 파일을 업로드하면 객체 및 메타데이터에 권한을 설정할 수 있습니다.

버킷은 객체의 컨테이너입니다. 하나 이상의 버킷을 가질 수 있습니다. 각 버킷에 대해, 버킷에 대한 액세스 권한을 제어하고(버킷에 객체를 만들고 삭제하고 확인하는 등의 작업을 수행할 수 있는 사용자 지정) 버킷과 버킷의 객체에 대한 액세스 로그를 확인하고 Amazon S3에서 버킷과 버킷의 콘텐츠를 저장할 지리적 리전을 선택할 수 있습니다.

8.AWS 관리 콘솔에서 S3를 검색하고, 선택합니다.

9. 버킷 생성

  • 버킷 만들기를 선택합니다.

  • 버킷은 고유한 이름으로 반드시 전세계 버킷 이름 중에 고유해야 합니다. 버킷이름을 정의하고, 리전을 ap-northeast-2를 선택합니다. 보안을 위해서 기본 모든 퍼블릭 액세스 차단입니다.

10. 버킷에 업로드

  • 생성된 버킷을 선택합니다.

  • 로컬에서 S3로 서비스 되는 웹페이지에 대한 소스를 다운로드 받습니다. "index.html, image.png" 파일입니다.
https://github.com/whchoi98/awslabutil/tree/master/S3_LAB

또는 Cloud9 또는 linux 콘솔에서 직접 Upload하기 위해서, 아래에서 처럼 Cloud9 또는 리눅스 콘솔에서 Clone 합니다.

git clone https://github.com/whchoi98/general-imd-file
  • 다운로드 받은 파일 "index.html"을 편집기를 통해 수정합니다. location 부분에 ELB DNS A 레코드를 삽입합니다. 예는 아래를 참조합니다. (ELB DNS A 레코드는 Networking 단계에서 생성한 ALB의 DNS A 레코드를 사용합니다.)
<html>
    <head>
        <meta charset="utf-8">
        <title> AWS General Immersion Day S3 HoL </title>
    </head>
    <body>
        <center>
        <br>
        <h2> Click image to be redirected to the EC2 instance that you created </h2>
        <img src="image.png" onclick="window.location='ELB_DNS/ec2meta-webpage/index.php'"/>
        </center>
    </body>
</html>
  • 이제 2개의 파일(image.png, index.html)을 생성한 S3 버킷에 업로드 합니다.

Cloud9 또는 리눅스 콘솔에서 git을 통해 다운로드 받은 경우에는 아래와 같이 업로드 가능합니다.

aws s3 ls
aws s3 cp ./index.html s3://"bucket-name"
aws s3 cp ./image.png s3://"bucket-name"

Task 3. 버킷 객체 접근하기

11. 버킷과 객체에 대한 퍼블릭 접근 권한 설정하기

  • 버킷 내부의 객체(Object, File)들을 확인합니다. 각각의 객체는 고유의 객체 URL을 가지고 있습니다. 클릭하여 정상적으로 브라우져에서 확인이 가능한지 여부를 점검합니다.
  • index.html을 선택해서, 해당 속성의 객체 URL로 접근해 봅니다.

  • 각 객체들이 접속이 되지 않는 이유는 퍼블릭 액세스가 차단되었기 때문입니다. 생성한 버킷을 다시 선택하고 "모든 퍼블릭 액세스 차단을 해제" 합니다. 하단의 객체에 대한 접근권한으로 변경합니다.

  • 버킷 제어에서 객체 단위 제어로 변경하기 위해 "확인" 을 입력합니다.
  • 퍼블릭 액세스 차단이 해제가 정상적으로 되었는지를 확인합니다.

  • 버킷 내부의 객체들(index.html, image.png)에 대해, 권한 설정에서 퍼블릭 액세스 읽기로 설정해 줍니다.

  • index.html "객체URL"을 선택하면 웹사이트를 확인 할 수 있습니다.

  • 객체가 퍼블릭 액세스 허용으로 되었는지를 확인할 수 있습니다.

12. S3 객체 URL 접근

  • index.html 객체 URL을 선택해서 웹페이지가 정상적으로 동작하는 지 확인합니다.

  • S3 객체 URL의 이미지를 선택하면, Task 1에서 생성된 ELB URL로 리다이렉션 됩니다.

{% hint style="success" %} 성공적으로 S3 랩을 마치셨습니다. {% endhint %}