Skip to content
egoing edited this page May 8, 2022 · 78 revisions

아래 google docs로 대체 되었습니다.

https://docs.google.com/document/d/1M2qKOseysYz42YtwV7gFpIO5Dz3bu7N0xC36kITXHjc/edit#heading=h.rvo5f8tpfb5v

https://bit.ly/_AWS_ 을 브라우저에 입력해서 이곳으로 올 수 있어요.

수업의 목표

이 수업은 웹애플리케이션을 클라우드 플랫폼인 AWS 위에서 구동하는 방법을 익힙니다. 단순한 웹애플리케이션이 복잡해지는 과정에서 클라우드 컴퓨팅이 어떤 장점을 제공하는지를 경험해보는 수업입니다.

준비작업

  1. aws에 회원가입합니다.
  2. git을 설치합니다. https://git-scm.com/ (git과 vscode를 동시에 설치하지 마세요)
  3. vscode( https://code.visualstudio.com/ )를 설치합니다. portable 버전은 설치하지 마세요.

혼자 학습하기

웹 기본 강의 : https://opentutorials.org/course/3084
AWS 기본 강의 : https://opentutorials.org/module/3814
더 많은 강의는 지식지도 서말 (https://seomal.com/map/1/35)을 통해서 찾을 수 있습니다.

예제 파일

수업에서 사용되는 예제는 아래 경로의 저장소에 있습니다. http://bit.ly/aws-example-

WEB 기본 수업

웹의 기초를 학습합니다.

예제파일

index.html

<html>
    <body>
        <h1><a href="index.html">CLOUD</a></h1>
        <ul>
            <li><a href="s3.html">S3</a></li>
            <li><a href="ec2.html">EC2</a></li>
        </ul>
        Welcome Cloud
    </body>
</html>

s3.html

<html>
    <body>
        <h1><a href="index.html">cloud</a></h1>
        <ul>
            <li><a href="s3.html">s3</a></li>
            <li><a href="ec2.html">ec2</a></li>            
        </ul>
        <h2>S3</h2>
        S3 is simple storage service.
    </body>
</html>

ec2.html

<html>
    <body>
        <h1><a href="index.html">cloud</a></h1>
        <ul>
            <li><a href="s3.html">s3</a></li>
            <li><a href="ec2.html">ec2</a></li>            
        </ul>
        <h2>EC2</h2>
        EC2 is Elastic Compute Cloud.
    </body>
</html>

클라우드 컴퓨팅이란 무엇인가?

클라우드 컴퓨팅의 분류

클라우드 컴퓨팅은 IaaS, PaaS, SaaS로 나눌 수 있습니다. 클라우드 컴퓨팅의 분류 분류 별 서비스들

Identity and Access Management(IAM)

  1. access key 비활성화
  2. MFA 설정 (https://youtu.be/YktUxcWRE8A?t=110)

S3

목표

S3는 AWS의 파일 서버입니다.

  • PaaS에 대한 이해
  • 클라우드의 편의성에 대한 공감

온라인 강의

https://opentutorials.org/module/3815

실습절차

  1. 리존을 선택한다.
  2. 버킷을 생성한다.
  3. 버킷으로 파일을 업로드 한다.
  4. 파일을 다운로드 한다.
  5. 파일을 누구나 다운로드 할 수 있도록 한다. => 권한 : 모든 퍼블릭 엑세스 차단 해제 => 퍼블릭으로 지정
  6. 웹서버로서 s3를 사용한다.
  7. 요금체계 : https://aws.amazon.com/ko/s3/pricing/
  8. 클래스별 요금 체계 : https://bit.ly/37TQ4lv
  9. 가용성과 내구성
    1. 가용성 : 99.99 - 년간 52.56분 다운타임
    2. 내구성 : 99.999999999 - 년간 0.000000001% 손실(10,000,000개의 객체를 저장할 경우 1만 년 동안 객체 1개가 손실될 확률)
  10. S3의 클래스를 변경해본다.

EC2

목표

  • IaaS에 대한 이해
  • 컴퓨터를 임대하는 개념에 대한 이해

온라인 강의

https://www.youtube.com/watch?v=Pv2yDJ2NKQA

EC2

리눅스의 주요명령을 사용할 수 있어야 합니다.

  • 현재 디렉토리 확인 : pwd
  • 파일 확인 : ls
  • 디렉토리 생성 : mkdir
  • 디렉토리 이동 : cd
  • 디렉토리 및 파일 삭제 : rm
  • 원격제어 : ssh -i key.pem ubuntu@ip
  • 업로드 : scp -i key.pem * ubuntu@ip:/var/www/html
  • VI
    • ESC => 명령어 모드
    • i => 입력 모드
    • x => 한글자 cut
    • dd => 한줄 cut
    • u => undo
    • :w => 저장
    • :q => 종료
    • :wq => 저장 & 종료
  • Nano
    • Ctrl + o : save
    • Ctrl + w : search
    • M (메타키) : ESC
    • M + a : 블록시작, 블록종료
    • M + 6 : 클립보드 복사
    • Ctrl + u : 클립보드 붙여넣기
    • ^_ : 원하는 행으로 이동
    • M-} : 들여쓰기
    • M-{ : 내어쓰기
    • M-M : 마우스 모드 on / off

실습절차

  1. 인스턴스를 생성한다. (ubuntu 20 이상 버전을 사용해야 EC2 instant connect를 설정없이 사용할 수 있습니다)
    1. OS : ubuntu
    2. type : t2.nano or t2.micro
    3. security group : 22 (80은 일부러 개방하지 않음)
    4. key pair 다운로드
    5. unix 계열 OS 에서는 chmod 400 key_pair.pem 로 권한을 제한한다.
  2. EC2 instance connect로 접속한다.
    1. 클라우드 콘솔에서 연결을 하거나, ssh -i key_pair.pem ubuntu@ip로 접속
  3. Apache 설치
    1. sudo apt update; sudo apt install apache2
  4. cd /var/www/html : 웹페이지가 위치하는 폴더로 이동한다.
  5. 웹사이트에 접속해본다. => 접속이 안된다.
  6. Security Group을 설정한다. => http 인바운드를 80번 포트로 변경한다.
  7. 웹서버에 접속한다. => 접속이 된다.
  8. sudo rm index.html : 웹페이지를 삭제해본다. => 페이지를 찾을 수 없다고 나온다. 이 파일이 홈페이지임을 확인한다.
  9. sudo nano index.html : 웹페이지를 만들고 다시 접속해본다.
  10. EC2의 가격 정책을 확인한다.

CloudFront

목표

  • Edge, Region에 대한 이해
  • CDN에 대한 이해
  • 분산된 인프라의 효용에 대한 이해

온라인 강의

https://opentutorials.org/module/3838

CloudFront의 동작원리

절차

  1. Distribution 생성
    • Origin : 도메인 지정 (ip는 사용하면 안됨)
    • Cache and origin request settings => Create a new policy => Minimum TTL => 300
  2. 슬로우 앱을 만든다.
    1. sudo apt update; sudo apt install php;
    2. sudo wget https://raw.githubusercontent.com/egoingsb/offline/master/AWS/loadtest.php
  3. 캐쉬의 개념을 살펴본다.
    1. ㅣloadtest.php에 접속해본다.
    2. developer tools의 network 기능의 소요시간을 관찰한다.
    3. cpu 점유율을 관찰한다.
  4. http load test global 과 같은 검색어로 도구를 찾아서 속도 테스트를 한다.
    캐쉬를 만들기 위해서 여러번 접속한 후 결과를 확인한다.
  5. 가격 정책을 확인한다. https://amzn.to/3kz34Ci
    • origin -> edge : free
    • edge -> origin : 유료
    • edge -> client : 유료
    • http request : 유료

Middleware - PHP

backend, middle, php, application server의 개념을 이해한다.

온라인 강의

https://opentutorials.org/course/3130

절차

  1. sudo apt update && sudo apt install php
  2. sudo cp /usr/lib/php/7.4/php.ini-development /etc/php/7.4/apache2/php.ini; sudo service apache2 restart; # php의 환경설정을 개발모드로 전환한다.
  3. remote : sudo chmod -R 777 /var/www/html # 실습의 편의를 위해서 보안을 낮은 수준으로 설정했습니다. 현실에서는 이렇게 하면 안됩니다.
  4. tail -f /var/log/apache2/error.log : apache, php의 오류를 출력한다.
  5. 배열을 이용한 index.php를 만든다.
    • wget -O index.php https://raw.githubusercontent.com/egoingsb/offline/master/AWS/index.array.php
  6. json을 이용한 index.php를 만든다.
    • wget https://raw.githubusercontent.com/egoingsb/offline/master/AWS/topic.json
    • wget -O index.php https://raw.githubusercontent.com/egoingsb/offline/master/AWS/index.json.php

RDS - Database - MySQL

목표

  • 데이터베이스의 이해
  • 클라우드 환경에서 운영하는 방법의 이해

데이터베이스 강의

절차

  1. RDS 인스턴스 생성
    • 제품 : MySQL
    • 모드 : 프리티어
    • 마스터 사용자 이름과 마스터 암호 입력 - admin, qwertyuiop (절대로 실제 서비스에 이런 아이디/비밀번호를 이용하면 안됩니다)
    • DB 인스턴스 크기 : 버스터블 클래스 - micro
    • 스토리지 : 마그네틱
    • 가용성 및 내구성 : 대기 인스턴스를 생성하지 마십시오.
    • 퍼블릭 엑세스 가능 : 예
  2. 접속
    • sudo apt install mysql-client : mysql client 설치
    • mysql -uadmin -p -hdatabase-1.cdbrt00yi2pa.ap-northeast-2.rds.amazonaws.com => 접속 안됨
    • EC2 인스턴스의 보안그룹 이름을 RDS VPC 보안 그룹의 허용 엑세스 포인트로 등록
      • 예: MySQL/Aurora, port : 3306, source : sg-051d8bcb0def21458
    • mysql -uadmin -p -hdatabase-1.cdbrt00yi2pa.ap-northeast-2.rds.amazonaws.com => 접속 됨
  3. 데이터베이스 생성
    • CREATE DATABASE mydb;
  4. 데이터베이스 선택
    • use mydb;
  5. 테이블 생성
    • CREATE TABLE topic( id int NOT NULL AUTO_INCREMENT PRIMARY KEY, title char(20) NOT NULL, description TINYTEXT, thumbnail varchar(200) NULL );
  6. 데이터 입력
INSERT INTO topic (id,title,description) VALUES(1, 'S3', 'S3 is ..');
INSERT INTO topic (id,title,description) VALUES(2, 'EC2', 'EC2 is ..');
INSERT INTO topic (id,title,description) VALUES(3, 'CF', 'CF is ..');

PHP & MySQL

목표

  • 데이터베이스를 웹프로젝트에 도입
  • 데이터베이스를 이용하는 이유에 대한 이해

온라인강의

https://opentutorials.org/course/3167

절차

  1. sudo apt install php-mysql : php & mysql 연동
  2. sudo service apache2 restart : apache2 재시작
  3. cd /var/www/html/;sudo wget https://raw.githubusercontent.com/egoingsb/offline/master/AWS/php-mysql.php
  4. index.php
<?php
$conn = mysqli_connect('database-1.cdbrt00yi2paz.ap-northeast-2.rds.amazonaws.com', 'admin', 'qwertyuiop', 'mydb');
$sql = 'SELECT * FROM topic';
?>
<html>
    <body>
        <h1><a href="/index.php">CLOUD</a></h1>
        <ul>
            <?php
            $query = mysqli_query($conn, $sql);
            while($row = mysqli_fetch_array($query)){
            ?>
                <li><a href="index.php?id=<?php echo $row['id'];?>"><?php echo $row['title'];?></a></li>
            <?php
            }
            ?>
        </ul>
        <?php
        if(empty($_GET['id'])){
        ?>
            Hello is ..
        <?php
        } else {
            $query = mysqli_query($conn, "SELECT * FROM topic WHERE id = ".$_GET['id']);
            $result = mysqli_fetch_array($query);
        ?> 
            <h1><?php echo $result['title'];?></h1>
            <?php echo $result['description']; ?>
        <?php
        } 
        ?>
        <?php
            print($_SERVER['SERVER_ADDR']);
        ?>
    </body>
</html>

Scalability

  1. 준비
  2. CPU 점유율을 기준으로 인스턴스가 조정되도록 설정하기 위해서 아래와 같은 코드를 위치시킨다. https://raw.githubusercontent.com/egoingsb/offline/master/AWS/loadtest.php
  3. Jmeter 1. jMeter 다운로드 후 실행 : https://github.com/egoingsb/offline/blob/master/AWS/jmeter-5.3.zip 1. Thread Group > Http Request > Summary Report 추가 1. Thread Group : Number of thread 1, Loop Count 100 1. 온라인 강의 : https://www.youtube.com/watch?v=1AyxqIePusA

Scale up

  1. 더 높은 사양의 인스턴스로 교체한다. 이때 ip 주소가 변경되는 문제는 도메인 주소를 부여하는 것을 통해서 ip 주소의 변동성에 대응 할 수 있다.
  2. EC2 인스턴스를 이미지로 만든다.
    1. 이미지가 생성될 때 접속이 잠시 끊길 수 있다.
    2. 인스턴스는 아이피가 변경된다. 아이피를 고정하기 위해서는 elastic ip를 사용해야 한다.
  3. 보안 그룹이 RDS에 연결될 수 있도록 조치한다. 이전 인스턴스의 보안 그룹을 재사용하는 것이 바람직하다.

Launch Template

목표

간편하게 자주 사용하는 설정을 적용해서 인스턴스를 만들고 싶다.

온라인 강의

https://youtu.be/ue7Rk20p_EA

절차

  1. Launch Template은 자주 생성하는 인스턴스의 설정을 저장했다가 원클릭으로 인스턴스를 생성해주는 기능이다. 온라인 강의 : https://youtu.be/ue7Rk20p_EA
  2. EC2 인스턴스를 이용해서 이미지를 생성한다.
  3. 생성된 이미지로 Launch Template을 생성한다.
    1. 인스턴스 타입으로 t2를 사용하면 현시점에서 The t2.nano instance type does not support specifying CpuOptions 와 같은 오류가 발생한다. t3계열을 사용한다.
  4. Launch Template을 이용해서 인스턴스를 생성한다.

Scale out (주인공 : ELB)

Scale up은 하나의 컴퓨터 사양을 높이는 방법이고, Scale out은 여러대의 컴퓨터가 협력해서 하나의 일을 수행하도록 하는 방법이다. ELB를 이용해서 scale out 하는 방법을 익힌다.

온라인 강의

https://youtu.be/s9FHdj6jd_U

단순한 분산 컴퓨팅

  1. EC2
    1. AMI 이미지를 이용해서 인스턴스 두개를 만든다. RDS에 접속이 가능한 보안그룹을 선택하거나 설정한다.
  2. Target group
    1. 타겟 그룹은 ELB에 장착될 인스턴스들을 지정한다.
    2. 타겟그룹을 생성한다.
    3. 그룹의 이름을 지정한다.
    4. 인스턴스 2개를 타켓으로 지정한다.
  3. Elastic Load Balancer
    1. ELB를 생성한다.
    2. Application Load Balancer를 선택한다.
    3. ELB의 이름을 지정한다.
    4. Listener의 포트를 81로 지정한다. : 80번 포트를 여러 요소에서 쓰고 있으므로 차이를 비교 할 수 있게 일부러 80번 포트를 쓰지 않았다.
    5. VPC는 기본, 가용 영역은 모든 곳을 지정한다.
    6. 새로운 보안 그룹을 생성한다. 이떄 81번 포트가 개방되어 있는지 확인한다.
    7. 라우팅 단계에서 대상 그룹을 기존 대상 그룹으로 지정하고, 이전 단계의 타겟그룹을 선택한다. 이 때 포트가 80인 것에 주목한다. 여기서 80은 origin 쪽의 인바운드 포트의 번호이다.
    8. ELB가 생성되었는지 상태를 확인한 후에 접속해본다. 이 때 81번 포트로 접속해야 한다. 예: http://hana-elb-578601292.ap-northeast-2.elb.amazonaws.com:81/
    9. 접속 할 때마다 인스턴스가 변경되는 것을 확인한다.

Blue/Green Deploy

  1. 타겟그룹
    1. 타겟그룹을 두개 만든다. 그룹 이름은 TG1, TG2
    2. 각 타겟그룹별로 인스턴스를 하나씩 배정한다.
  2. ELB
    1. ELB를 생성하거나 재활용한다.
    2. 리스터에 2개의 타겟 그룹을 붙인다. 리스너의 포트는 ELB의 포트와 동일하게 해야 한다. 이전 예제에서는 81번이다. 타겟그룹들의 가중치를 50%씩 부여한다.
    3. 가중치를 조절하면서 서비스되는 애플리케이션을 전환한다.

AutoScaling

자동으로 인스턴스의 숫자가 변경되도록 하는 기능

AutoScaling 절차

  1. Target group 생성 : AutoScaling으로 만들어진 인스턴스가 자동으로 등록된다.
  2. ELB 생성 후 전단계의 타겟그룹을 리스터로 연결
  3. Auto Scaling Groups 생성
  4. 시작템플릿 지정
  5. 네트워크에서 서브넷 지정
  6. 고급옵션 구성 1. 로드밸런싱에서 기존 타겟 그룹 연결선택 및 선택 1. 상태확인 옵션 체크 1. 상태 확인 유예 기간 : 0초로 변경 1. cloudwatch 내에서 지표 수집 활성화 켜기
  7. 그룹 크기 1. 최소 용량 1, 최대 용량 3 1. 조정정책 : 대상 추적 조정 정책
  8. 그룹생성
  9. ELB 에 /loadtest.php로 접속해서 로드 테스트를 진행한다.

AWS SDK

AWS의 서비스를 SDK로 이용하는 방법을 소개합니다. 여기서는 EC2, RDS. S3, IAM을 사용합니다.

RDS 생성 및 설정

  1. RDS 생성
  2. 데이터베이스 생성
    • CREATE DATABASE mydb;
  3. 데이터베이스 선택
    • use mydb;
  4. 테이블 생성
    • CREATE TABLE topic(id int NOT NULL AUTO_INCREMENT PRIMARY KEY, title char(20) NOT NULL, description TINYTEXT, thumbnail varchar(200) NULL);

S3 버킷 생성

  1. 퍼블릭 액세스 차단 정책을 비활성화합니다.

IAM 보안 설정

  1. IAM으로 접속
  2. 역할생성
    1. 사용사례선택에서 EC2 선택
    2. 권한 정책 연결에서 S3 Full Access 선택
    3. 역할이름 지정 - S3-ACCESS

EC2 생성 및 PHP 애플리케이션

  1. EC2 인스턴스 생성시 S3-ACCESS을 역할로 지정
  2. apache, php, php mysql extension 설치 sudo apt update; sudo apt install apache2 php php-mysql php-mbstring mysql-client php-xml; sudo service apache2 restart;
  3. RDS VPC security에 EC2 보안 규칙을 허용
  4. index.php cd /var/www/html/; sudo wget https://raw.githubusercontent.com/egoingsb/offline/master/AWS/sdk/index.php 데이터베이스 hostname, user, password 수정
<?php
$conn = mysqli_connect('db.cdbrt00yi2pz.ap-northeast-2.rds.amazonaws.com', 'admin', 'qwertyuiop', 'mydb');
$sql = 'SELECT * FROM topic';
?>
<html>
    <body>
        <h1><a href="/index.php">CLOUD</a></h1>
        <ul>
            <?php
            $query = mysqli_query($conn, $sql);
            while($row = mysqli_fetch_array($query)){
            ?>
                <li><a href="index.php?id=<?php echo $row['id'];?>"><?php echo $row['title'];?></a></li>
            <?php
            }
            ?>
        </ul>
        <?php
        if(empty($_GET['id'])){
        ?>
            Hello is ..
        <?php
        } else {
            $query = mysqli_query($conn, "SELECT * FROM topic WHERE id = ".$_GET['id']);
            $result = mysqli_fetch_array($query);
        ?>
            <h1><?php print($result['title']);?></h1>
            <?php print($result['description']); ?>
            <br><img src="<?php print($result['thumbnail']); ?>" width="100"><br>
        <?php
        }
        ?>
        <?php
            print($_SERVER['SERVER_ADDR']);
        ?>
        <a href="write.php">write</a>
    </body>
</html>
  1. write.php sudo wget https://raw.githubusercontent.com/egoingsb/offline/master/AWS/sdk/write.php
<html>
    <body>
        <form action="write_process.php" method="POST" encType="multipart/form-data">
                <p><input type="text" name="title" placeholder="title"></p>
                <p><textarea name="description" placeholder="description"></textarea></p>
                <p><input type="file" name="uploaded_file"></p>
                <p><input type="submit"></p>
        </form>
    </body>
</html>
  1. sdk 설치
sudo wget https://docs.aws.amazon.com/aws-sdk-php/v3/download/aws.zip;
sudo apt install -y unzip;
sudo unzip aws.zip -d aws;
  1. write_process.php https://raw.githubusercontent.com/egoingsb/offline/master/AWS/sdk/write_process.php sudo wget https://raw.githubusercontent.com/egoingsb/offline/master/AWS/sdk/write_process.php s3 bucket name, database hostname, user, password 수정
<?php
require 'aws/aws-autoloader.php';
use Aws\S3\S3Client;
use Aws\Exception\AwsException;
//Create a S3Client
$s3Client = new Aws\S3\S3Client([
    'version' => 'latest',
    'region' => 'ap-northeast-2'
]);
// Send a PutObject request and get the result object.
$result = $s3Client->putObject([
    'ACL'=>'public-read',
    'Bucket' => 'my-photo-server',
    'Key' => $_FILES['uploaded_file']['name'],
    'SourceFile' => $_FILES['uploaded_file']['tmp_name']
]);
$s3URL = $result->toArray()['ObjectURL'];
$conn = mysqli_connect('db.cdbrt00yi2pz.ap-northeast-2.rds.amazonaws.com', 'admin', 'qwertyuiop', 'mydb');
$sql = "INSERT INTO topic (title, description, thumbnail) VALUES('{$_POST['title']}', '{$_POST['description']}', '{$s3URL}')";
mysqli_query($conn, $sql);
header('Location: index.php');
  • Uncaught Error: Class 'SimpleXMLElement' not found : xml 파서 라이브러리가 없음 => apt install php-xml;
  • Uncaught exception 'Aws\S3\Exception\S3Exception' with message,(중략) AWS HTTP error resulted in a 403 Forbidden (중략) Access Denied : 버킷에 권한이 없음 => 버킷의 퍼블릭 엑세스 차단 설정을 끔
  • The specified bucket does not exist : 버킷이 존재하지 않음 => 코드 상의 버킷의 이름을 변경
  • 첨부파일 없이 업로드하면 에러가 발생합니다.
  • 파일의 용량이 너무 크면 업로드가 안되기 때문에 에러가 발생할 수 있습니다.

Elastic Beanstalk (EB)

웹애플리케이션을 운영하기 위해서 필요한 기능을 종합적으로 제공하는 서비스

  • 런타임 : Java, .NET, PHP, Node.js, Python, Ruby, Go, Docker

  • 서버 : Apache, Nginx, Passenger, IIS

  • 기능 : 용량 프로비저닝, 로드 밸런싱, 오토스케일링, 모니터링, 배포

  • EB 자체는 무료

  • environment는 실제로 서비스되는 웹애플리케이션 하나를 위해서 필요한 EC2 인스턴스, AutoScaling, 각종 환경설정등을 그룹핑한 것

  • Application은 연관된 environment의 그룹

  1. 애플리케이션을 생성한다.
  2. 전단계에서 생성한 애플리케이션에 속한 환경을 생성한다.
    1. 환경티어 : 웹서버 환경
    2. 플랫폼 : PHP
    3. 애플리케이션 코드 : 샘플
    4. 추가옵션구성
      1. 구성 사전 설정 : 단일 인스턴스(프리티어 사용가능)
      2. 용량 : 자신에게 필요한 타입 지정
      3. 인스턴스 보안그룹 지정
  3. 환경의 주소로 접속한다.
  4. 코드를 업로드 한다.
  5. 환경의 주소로 접속한다. => 업로드된 코드가 반영되었는지 확인한다.
  6. 코드를 수정해서 다시 업로드 한다.
  7. 환경의 주소로 접속한다. => 업로드된 코드가 반영되었는지 확인한다.
  8. 방금 올린 버전을 취소하고 이전 버전으로 롤백을 해본다.
  9. 구성>소프트웨어>환경 속성의 값을 설정한다.
    1. DBHOST, DBUSER, DBPASSWORD의 값을 지정한다. 이때 이름으로는 알파벳대문자와 숫자 언더바 기호만 사용할 수 있다. 다른 값을 사용하면 무시된다.
    2. 설정한 값이 애플리케이션에 반영되었는지 확인한다. php $conn = mysqli_connect($_SERVER['DBHOST'], $_SERVER['DBUSER'], $_SERVER['DBPASSWORD'], 'mydb');

Serverless (Lambda + API Gateway)

Lambda

온라인 강의

https://www.youtube.com/watch?v=t8sjTFM_tfE

절차

  1. 함수생성
    1. 새로작성 선택
    2. 함수 이름 작성
    3. 런타임 - Python 3.8
    4. 함수생성 버튼 클릭
  2. lambda_handler(event, context)함수 작성
    1. https://raw.githubusercontent.com/egoingsb/offline/master/AWS/lambda.py 를 에디터에 입력
    2. Deploy 버튼 클릭

API gateway

온라인 강의

https://youtu.be/60goWpADp-I

절차

  1. API 유형선택
    1. HTTP API 구축선택
  2. API 생성 화면
    1. API 이름의 값 입력
    2. 검토 및 생성 버튼 클릭
    3. 생성 버튼
  3. / 경로 설정
    1. 사이드바에서 경로 선택
      1. create 버튼 클릭
      2. / 입력 후 생성 버튼 클릭
      3. any 선택 후 통합연결 버튼 클릭
    2. 통합
      1. 통합 생성 및 연결 버튼 클릭
      2. 통합 대상에서 통합 유형으로 lambda 선택
      3. 통합 세부 정보에서 통합대상으로 이전에 생성한 Lambda 함수 선택
      4. 생성 버튼 클릭
  4. /{id} 경로 설정
    1. 사이드바에서 경로 선택
      1. create 버튼 클릭
      2. /{id} 입력 후 생성 버튼 클릭
      3. any 선택 후 통합연결 버튼 클릭
    2. 통합
      1. 통합 생성 및 연결 버튼 클릭
      2. 통합 대상에서 통합 유형으로 lambda 선택
      3. 통합 세부 정보에서 통합대상으로 이전에 생성한 Lambda 함수 선택
      4. 생성 버튼 클릭

Clone this wiki locally