S3

Amazon S3(Simple Storage Service)를 생성합니다.

Task1 S3 생성하기

AWS Management Console의 서비스 찾기에서 “S3”를 검색하고 선택합니다.

1-1 버킷 만들기

Amazon S3는 데이터를 버킷 내에 객체(Object)로 저장합니다. 객체는 파일과 해당 파일을 설명하는 메타데이터(Metadata)로 구성됩니다. 하나이상의 버킷을 생성 할 수 있으며, 버킷에 대한 액세스 권한을 제어할 수 있습니다.

[Create bucket]을 선택합니다.

버킷 이름은 전 세계적으로 고유한 이름으로 생성되어야 합니다. 버킷이름을 입력하고 리전을 선택합니다.

  • Bucket name - imd-<이름>-<날짜> (예, imd-wjlee-20210421) 입력

  • AWS Region - ap-northeast-2

1-2 파일 업로드

생성된 버킷에 업로드할 웹페이지 소스를 다운 받습니다.

다운로드 받은 파일 "index.html"파일을 편집기를 통해 수정합니다.

  • ELB_DNS를 생성한 ALB의 DNS name (Computing > Elastic Load Balancer)으로 변경합니다.

<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개의 파일, index.html 과 image.png, 을 생성한 버킷에 업로드 합니다.

1-3 버킷 객에 접근하기

버킷의 객에 접근하기 위해서는 Public 접근 권한을 변경해야 합니다.

S3 버킷에 공개적으로 액세스가 가능한 퍼블릭 접근 허용 시, 보안에 대한 확인이 반드시 필요합니다.

참고 링크 : https://docs.aws.amazon.com/ko_kr/AmazonS3/latest/userguide/access-control-block-public-access.html

어카운트 계정에 대한 버킷 정책을 확인합니다. 퍼블릭 접근이 차단되어 있는 경우 [Edit]를 클릭하여 설정을 변경합니다.

설정변경 후 [Save changes]를 클릭 시, 변경에 대한 확인(comfirm) 팝업 창이 나오며, 이에 대한 "confirm" 을 입력 합니다.

생성한 버킷에 대한 접근 권한도 확인합니다.

동일하게 [Edit]를 눌러 퍼블릿 접근 권한을 변경합니다.

설정변경 후 [Save changes]를 클릭 시, 변경에 대한 확인(comfirm) 팝업 창이 나오며, 이에 대한 "confirm" 을 입력 합니다.

객체 "index.html" 에 대한 퍼블릭 읽기 권한을 설정합니다.

  • Everyone(public access) 에 Object Read 를 체크

Object URL을 확인합니다. Index.html의 URL을 클릭하여 웹페이지가 정상적으로 동작 하는지 확인합니다.

이미지를 클릭하여 Application Load Balancer로 redirection 되는지 확인합니다.

1-4 Versioning 활성화

S3 버킷에 저장되는 객체에 대해서 버킷 Versioning 기능을 통하여 데이터 보호 및 백업 용도로 사용할 수 있습니다.

생성한 버킷에 대한 Versioning을 활성화 합니다. Properties > Bucket Versioning 으로 이동하여 [Edit]를 클릭합니다.

  • Edit Bucket Versioning 창에서 "Enable" 체크

1-5 EC2에서 S3에 접근하기

EC2에서 S3에 접근하기 위해서는 이에 해당되는 권한이 필요하게 되며, IAM(Identity and Access Management)을 통하여 권한을 생성합니다.

AWS Management Console의 서비스 찾기에서 “IAM”를 검색하고 선택합니다.

좌측 IAM 메뉴에서 Roles를 선택 후, [Create role]를 클릭합니다.

  • AWS service - EC2 선택

  • Next: Permission 클릭

  • S3 로 관련 정책을 검색하여 "AmazonS3FullAccess" 선택

  • [Next: Tags] 클릭

  • [Next: Review] 클릭

  • Role name - "EC2_S3fullaccess" 입력

  • [Create role] 클릭

EC2 메뉴로 이동하여 PUBLIC-EC2 에 생성된 권한 "EC2_S3fullaccess" 부여합니다.

  • PUBLIC-EC2-A01 선택

  • [Actions] > [Security] > [Modify IAM role]

  • "EC2_S3fullAccess" 선택

Role을 부여 받은 EC2에 접속하여 S3 접근을 확인합니다.

aws s3 ls
aws s3 ls <bucket name>

S3 스토리지를 사용하기 위해서는 AWS CLI를 사용하며, 기본적으로 EC2에 설치 되어 있습니다.

AWS CLI에 대한 참고 링크 : https://aws.amazon.com/ko/cli/

1-6 Versioning 관리하기

접속한 EC2에서 새로운 index.html 파일을 생성하여 S3 버킷에 복사합니다.

vi editor로 index.html 파일을 생성하여 아래 html 을 붙여넣기 합니다. 그리고 저장하여 vi editor를 빠져 나옵니다.

vi index.html
<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>Sample Deployment</title>
  <style>
    body {
      color: #ffffff;
      background-color: #0188cc;
      font-family: Arial, sans-serif;
      font-size: 14px;
    }
    
    h1 {
      font-size: 500%;
      font-weight: normal;
      margin-bottom: 0;
    }
    
    h2 {
      font-size: 300%;
      font-weight: normal;
      margin-bottom: 0;
    }
  </style>
</head>
<body>
  <div align="center">
    <h1>This is the latest version of index.html</h1>
    <h2>If you want more detail for versioning, Read the <a href="https://docs.aws.amazon.com/ko_kr/AmazonS3/latest/userguide/versioning-workflows.html"> Version management</a>.</h2>
  </div>
  <center>
  <img src="image.png"/>
  </center>
</body>
</html>

새로 생성한 index.html 파일을 버킷으로 복사합니다.

aws s3 cp index.html s3://<Bucket name>/

복사된 파일을 확인합니다.

aws s3 ls <Bucket name>

Versioning이 활성화 되어있지, aws s3의 상위 레벨 명령어 ls 는 최신(latest) 객체만 확인할 수 습니다. 다시하위 레벨 명령어인 s3api 명령어로 확인합니다.

aws s3api list-object-versions --bucket <Bucket name> --prefix index.html

AWS 콘솔에서 versioning을 확인할 수 있습니다.

aws cli를 사용하면 다양한 애플리케이션에서도 S3 를 쉽게 사용할 수 있으며 확장해 갈 수 있습니다.

S3 cli 명령어 : https://docs.aws.amazon.com/ko_kr/cli/latest/userguide/cli-services-s3-commands.html

S3api 명령어 : https://docs.aws.amazon.com/ko_kr/cli/latest/userguide/cli-services-s3-apicommands.html

변경된 "index.html" 객체의 URL로 웹 페이지를 확인합니다.

S3의 정적 웹 호스팅 기능을 바로 사용할 수도 있습니다. https://docs.aws.amazon.com/ko_kr/AmazonS3/latest/userguide/WebsiteHosting.html

S3 Lab을 성공적으로 완료하였습니다.

Last updated