ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • aws - Lambda, Elastic Beanstalk, Terraform
    Cloud/aws 2022. 6. 22. 09:13

    aws

    Lambda

    - aws에서 간단한 함수를 실행하기 위한 서비스

    - 짧은 코드를 수없이 많이 반복하는 경우에 적합

    - 고객 : 개발자

    - 동작 : 행위 (Trigger : 방아쇠)가 발생되면 사전에 정의된 방식 (함수)으로 작업을 합니다.

    - 사례

    사진을 업로드하면 크기를 줄이는 역할

    사진을 업로드하면 썸네일 만들기 ex) 사진 썸네일, 동영상 썸네일 등

    - 5분 이내로 실행 완료되는 짧은 코드만 가능

     

    aws Elastic Beanstalk

    : EC2와 다르게 PaaS로서 서버 구성, Auto Scaling, 배포 자동화, 모니터링 등 서버 운영에 필요한 대부분의 작업을 최대한 자동화해서 제공하는 서비스입니다.

     

    - 개발자가 코드를 작성해서 zip 파일로 업로드하면 aws리소스에서 프로비전 업무를 대신 처리 (PaaS)

    - 기업용 소프트웨어를 실행할 수 있습니다. ex) 초대장 보내기, Printer Driver 다운로드

    - Application과 데이터까지 이용자(개발자)의 책임

    - 다양한 언어가 지원됩니다.

    (JAVA - Tomcat, PHP - Apache, Python - Apache, Node.js - NginX/Apache, Ruby - Passenger/puma, .NET - IIS, JavaSE, Docker, Go)

     

    - 아무도 없는 리전에서 기본 VPC를 생성하고 실행

    - app.js 파일에 있는 내용을 수정하면 됨

    - 압축을 푼 다음 app.js package.json, package-lock.json 세 개를 따로 zip으로 압축해서 업로드하면 됩니다.

     

    실습

     

    참고 도서 : p266 ~

    참고 사이트 : https://github.com/deopard/aws-exercise-a

     

    GitHub - deopard/aws-exercise-a

    Contribute to deopard/aws-exercise-a development by creating an account on GitHub.

    github.com

    참고 사이트로 들어갑니다. 왼쪽의 master로 되어있는 branche를 elastic-beanstalk으로 변경하고 우측의 Code를 눌러 Download ZIP을 눌러줍니다.
    압축을 풀어줍니다.
    파일을 확인해보면 내용은 위와 같습니다.
    위의 세 개의 파일을 따로 압축해줍니다.
    Elastic Beanstalk을 검색해서 들어가고 Create Application을 눌러줍니다.
    이름을 정해줍니다.
    플랫폼은 Node.js, 애플리케이션 코드는 코드 업로드를 체크해줍니다.
    아래의 소스 코드 오리진 탭에서 로컬 파일을 체크해주고 아까 압축했던 파일을 업로드 해줍니다.
    업로드 된 것을 확인할 수 있습니다.
    생성중
    생성이 완료된 것을 확인할 수 있습니다.
    해당 URL로 접속해보면 배포한 애플리케이션이 정상적으로 올바르게 실행된 것을 알 수 있습니다.
    이름, 상태, URL 등을 확인해줍니다.

     


     

    Terraform

    Terraform 실습

    sudo apt-get update && sudo apt-get install -y gnupg software-properties-common curl
    curl -fsSL https://apt.releases.hashicorp.com/gpg | sudo apt-key add -
    sudo apt-add-repository "deb [arch=amd64] https://apt.releases.hashicorp.com $(lsb_release -cs) main"
    sudo apt-get update && sudo apt-get install terraform
    terraform -install-autocomplete
    mkdir terraform-docker-demo && cd $_ Secret access key
    export AWS_ACCESS_KEY_ID='Access Key'            #액세스 키 직접 입력
    export AWS_SECRET_ACCESS_KEY='Secret Access Key' #시크릿 액세스 키 직접 입력

    참고 사이트 : https://registry.terraform.io/providers/hashicorp/aws/latest/docs

     

    Terraform Registry

     

    registry.terraform.io

    vi main.tf
    #################### 내용 ####################
    terraform {
      required_providers {
        aws = {
          source  = "hashicorp/aws"
          version = "~> 3.27"
        }
      }
    
      required_version = ">= 0.14.9"
    }
    
    provider "aws" {
      profile = "default"
      region  = "us-west-1"                             #자신이 사용하고 있는 리전 직접 입력
    }
    
    resource "aws_instance" "app_server" {
      ami           = "ami-0d9858aa3c6322f73"           #AMI-ID 직접 입력, 저는 Amazon Linux
      instance_type = "t2.micro"
      key_name = "hsh"                                  #확장자를 제외하고 키 입력
      vpc_security_group_ids = ["sg-02b1d53c157ffb6b6"] #보안그룹 ID 직접 입력
      subnet_id = "subnet-058f24caf03d7fcf9"            #Subnet ID 직접 입력
    
    
      tags = {
        Name = "today_terra_instance2"                  #생성할 인스턴스 이름 입력
      }
    }

    terraform init
    terraform fmt
    terraform validate
    terraform apply

    성공적으로 인스턴스가 생성된 것을 확인할 수 있습니다.
    연결을 시도해봅니다.
    연결 완료

    혹시 연결하다가 ~~ timed out으로 표시될 시 보안 그룹의 문제일 확률이 높습니다.

    'Cloud > aws' 카테고리의 다른 글

    aws - Redshift, 보안 가이드 감사  (0) 2022.07.01
    aws - DevOps, Lambda  (0) 2022.06.23
    aws - Cloud Watch  (0) 2022.06.21
    aws - DevOps, Cloud Formation  (0) 2022.06.21
    aws - ECS, Docker, DynamoDB, NoSQL, System Architecture Design  (0) 2022.06.20

    댓글

Designed by Tistory.