AWS 중점적으로 봐야하는 것들

박형준·2024년 4월 17일

*AWS 개념

  • AWS의 장점 , 리소스(서비스) 종류

    • AWS 장점:

      • 확장성: 필요에 따라 IT 리소스를 신속하게 늘리거나 축소할 수 있는 확장성을 제공합니다.

      • 다양한 서비스: AWS는 컴퓨팅, 스토리지, 데이터베이스, 네트워킹, 분석, 인공지능, IoT 및 기타 다양한 서비스를 제공하여 다양한 비즈니스 요구를 충족시킬 수 있습니다.

      • 안정성 및 신뢰성: AWS는 강력한 보안 및 신뢰성을 제공하여 데이터 보호와 시스템 안정성을 보장합니다. 또한, 글로벌 인프라를 기반으로 하는 서비스 제공으로 지연 시간을 최소화하여 안정적인 서비스를 제공합니다.

      • 비용 효율성: AWS는 pay-as-you-go 모델을 채택하여 필요한 만큼의 리소스를 사용하고 지불하는 형태로 비용을 효율적으로 관리할 수 있습니다.

      • 혁신적인 기술: AWS는 지속적인 혁신을 통해 새로운 기술과 서비스를 지속적으로 제공하며, 이를 통해 사용자는 최신 기술을 활용할 수 있습니다.

    • 리소스 종류:

      • 컴퓨팅 서비스:
        Amazon EC2 (Elastic Compute Cloud): 가상 서버를 제공하는 서비스
        AWS Lambda: 서버리스 컴퓨팅을 제공하는 이벤트 기반 컴퓨팅 서비스
        Amazon ECS (Elastic Container Service): 컨테이너화된 애플리케이션을 실행하는 서비스

      • 스토리지 및 데이터베이스:
        Amazon S3 (Simple Storage Service): 객체 스토리지 서비스
        Amazon RDS (Relational Database Service): 관계형 데이터베이스를 호스팅하는 서비스
        Amazon DynamoDB: 관리형 NoSQL 데이터베이스 서비스

      • 네트워킹:
        Amazon VPC (Virtual Private Cloud): 가상 네트워크를 제공하는 서비스
        Amazon Route 53: DNS 웹 서비스를 제공하는 서비스
        AWS Direct Connect: 전용 네트워크 연결을 제공하는 서비스

      • 관리 및 보안:
        AWS IAM (Identity and Access Management): AWS 리소스에 대한 보안 및 권한을 관리하는 서비스
        Amazon CloudWatch: AWS 리소스의 모니터링 및 로깅 서비스
        AWS Config: AWS 리소스의 구성을 평가하고 관리하는 서비스

      • 인공지능 및 머신 러닝:
        Amazon SageMaker: 머신 러닝 모델을 구축, 훈련 및 배포하는 서비스
        Amazon Rekognition: 이미지 및 비디오 분석을 위한 서비스
        Amazon Comprehend: 자연어 처리를 위한 서비스

  • AWS 구조 및 용어 ( 리전, AZ, VPC, IGW, 라우팅 테이블 등... )

  • 리전(Region):

    • AWS의 리전은 지리적으로 분산된 데이터 센터 그룹을 나타냅니다. 각 리전은 독립적이며, 고객은 여러 리전에 걸쳐 리소스를 프로비저닝할 수 있습니다.
    • 예를 들어, 미국 동부(버지니아 북부), 아시아 태평양(도쿄), 유럽(런던) 등이 리전의 예시입니다.
  • 가용 영역(Availability Zone, AZ):

    • 리전 내의 물리적으로 독립된 데이터 센터를 의미합니다.
    • 각 가용 영역은 고가용성 및 재해 복구를 위한 격리된 공간으로 구성되어 있습니다.
  • 가상 사설 클라우드(Virtual Private Cloud, VPC):

    • AWS에서 제공하는 가상 네트워킹 환경으로,
    • 사용자는 AWS 내에서 리소스를 프로비저닝하고 이를 격리된 네트워크 환경에서 실행할 수 있습니다.
  • 인터넷 게이트웨이(Internet Gateway, IGW):

    • VPC와 외부의 인터넷과의 통신을 가능하게 하는 게이트웨이입니다.
    • IGW를 통해 VPC 내의 리소스가 외부와 통신할 수 있습니다.
  • 라우팅 테이블(Routing Table):

    • VPC 내에서 네트워크 트래픽을 전달하는 데 사용되는 라우팅 규칙의 집합입니다.
    • 라우팅 테이블을 통해 트래픽이 목적지로 전달됩니다.

*IAM

-IAM 개념

  • IAM(Identity and Access Management):
    • AWS(Amazon Web Services)에서 제공하는 서비스로, 사용자와 리소스에 대한 보안을 관리하는 데 사용됩니다.
    • IAM을 사용하면 AWS 계정 내에서 사용자, 그룹, 역할 등을 생성하고 관리하여 AWS 리소스에 대한 접근 권한을 제어할 수 있습니다.

-사용자, 그룹 생성, 역할 및 정책 생성

  • 사용자(User) 생성:

    • AWS Management Console에 로그인한 후 IAM 대시보드로 이동합니다.
    • "사용자 추가"를 클릭하고 원하는 사용자 이름을 입력한 후 액세스 유형을 선택합니다(콘솔 액세스, 프로그래밍 액세스 등).
    • 암호를 설정하거나 자격증명을 생성한 후 권한을 부여합니다.
  • 그룹(Group) 생성:

    • IAM 대시보드에서 "그룹 추가"를 클릭합니다.
    • 그룹 이름을 정하고 해당 그룹에 사용할 권한을 선택합니다.
    • 사용자를 그룹에 추가하여 해당 그룹의 권한을 상속받도록 설정합니다.
  • 역할(Role) 생성:

    • IAM 대시보드에서 "역할 추가"를 클릭합니다.
    • 역할 유형을 선택하고, 역할을 신뢰할 수 있는 엔터티(예: AWS 서비스)를 지정합니다.
    • 필요에 따라 역할에 권한을 부여하고 정책을 연결합니다.
  • 정책(Policy) 생성:

    • IAM 대시보드에서 "정책 추가"를 클릭합니다.
    • 정책을 직접 작성하거나, 기존의 정책을 수정하여 새로운 정책을 생성합니다.
    • 정책에서는 특정 작업에 대한 권한을 정의하고, 해당 정책을 역할, 사용자, 그룹 등에 연결하여 권한을 부여합니다.

*EC2

-EC2개념

  • EC2(Elastic Compute Cloud):
    • 가상 서버를 제공하는 웹 서비스입니다. EC2를 사용하면 사용자는 필요에 따라 가상 컴퓨팅 환경을 프로비저닝하고 실행할 수 있습니다.

-요금 지불 방법

  • 온디맨드 요금:

    • 이 요금 모델은 실제로 사용한 만큼만 지불하는 방식입니다.
    • 시간 단위로 청구되며, 인스턴스를 시작하고 중지할 때까지의 사용량에 따라 과금됩니다.
  • 예약 인스턴스:

    • 예약 인스턴스를 예약하면 특정 유형의 인스턴스를 일정 기간 동안 예약할 수 있으며,
    • 미리 지불하고 할인된 가격으로 사용할 수 있습니다.
  • 스팟 인스턴스:

    • 스팟 시장에서 유휴 용량을 활용하여 저렴한 비용으로 인스턴스를 실행할 수 있습니다.
    • 스팟 가격은 수요와 공급에 따라 변동하므로 유의해야 합니다.
  • 예약 용량:

    • 예약 용량을 예약하면 일정 기간 동안 특정 유형의 인스턴스를 예약할 수 있으며,
    • 최대 75%의 할인 혜택을 받을 수 있습니다.

-EC2 생성 및 배포, 스냅샷, 볼륨 생성

  • EC2 인스턴스 생성 및 배포:

    • AWS Management Console에 로그인한 후 EC2 대시보드로 이동합니다.
    • "인스턴스 시작"을 클릭하여 인스턴스 설정 마법사를 시작합니다.
    • AMI(Amazon Machine Image)를 선택하고, 인스턴스 유형, 네트워크 설정, 스토리지 등을 구성합니다.
    • 보안 그룹 및 키 페어를 선택하고, 마지막으로 인스턴스를 시작합니다.
  • 스냅샷 생성:

    • AWS Management Console에서 EC2 대시보드로 이동합니다.
    • "볼륨" 섹션으로 이동하여 스냅샷을 생성할 EBS(Elastic Block Store) 볼륨을 선택합니다.
    • "작업" 메뉴에서 "스냅샷 만들기"를 선택하고, 스냅샷에 이름을 지정하고 설명을 추가한 후 스냅샷을 생성합니다.
  • 볼륨 생성:

    • AWS Management Console에서 EC2 대시보드로 이동합니다.
    • "볼륨" 섹션으로 이동하여 새 볼륨을 생성하려는 가용 영역을 선택합니다.
    • "볼륨 생성"을 클릭하고, 볼륨 유형, 크기 및 가용 영역을 설정한 후 볼륨을 생성합니다.

-SSH를 통한 접속 방법

  • 키페어(Key Pair) 생성:

    • AWS Management Console에서 EC2 대시보드로 이동합니다.
    • "키페어"를 선택하고 "키페어 생성"을 클릭합니다.
    • 키페어에 이름을 지정하고 "키페어 다운로드"를 클릭하여 .pem 형식의 개인 키 파일을 저장합니다.
  • SSH 클라이언트 설정:

    • SSH 클라이언트를 사용하여 EC2 인스턴스에 연결합니다. 예를 들어, macOS 및 Linux 사용자는 터미널을, Windows 사용자는 PuTTY와 같은 SSH 클라이언트를 사용할 수 있습니다.
  • SSH 명령어를 통한 접속:

    • 키 파일을 보안 폴더에 이동한 후 해당 폴더에서 터미널 또는 명령 프롬프트를 엽니다.
    • SSH 명령어를 사용하여 인스턴스에 연결합니다. (ssh ec2-user@인스턴스공인IP)
    • 사용자이름은 EC2 인스턴스의 운영 체제에 따라 ec2-user, ubuntu, admin 등이 될 수 있으며, 인스턴스공인IP는 EC2 인스턴스의 공인 IP 주소입니다.

*RDS

-RDS 개념
RDS (Relational Database Service):

  • Amazon Web Services (AWS)에서 제공하는 완전 관리형 관계형 데이터베이스 서비스입니다.
  • RDS를 사용하면 사용자는 데이터베이스 관리 및 유지보수에 대한 부담을 줄이고 안정적이고 확장 가능한 관계형 데이터베이스를 쉽게 구축하고 운영할 수 있습니다

-EC2생성 과 RDS 연동(mySQL)

  • RDS(MySQL) 인스턴스 생성:

    • AWS Management Console에서 RDS 대시보드로 이동합니다.
    • "데이터베이스 생성"을 클릭하여 MySQL 데이터베이스를 생성합니다.
    • 데이터베이스 엔진으로 MySQL을 선택하고, 인스턴스 사양, 인증 정보, 데이터베이스 이름 등을 구성합니다.
  • 보안 그룹 및 네트워크 구성:

    • RDS 보안 그룹을 생성하고,
    • 필요에 따라 인바운드 및 아웃바운드 규칙을 추가하여 애플리케이션 서버(EC2)에서 RDS에 접근할 수 있도록 설정합니다.
  • RDS 접속 정보 확인:

    • RDS 콘솔에서 생성한 MySQL 데이터베이스의 호스트 주소, 포트, 데이터베이스 이름, 사용자 이름 및 암호를 확인합니다.
  • 애플리케이션 설정:

    • 애플리케이션의 데이터베이스 연결 설정 파일 또는 환경 변수에 RDS의 접속 정보를 입력합니다.
    • 이는 애플리케이션이 RDS에 연결할 때 사용됩니다.
  • 애플리케이션 코드 수정:

    • 애플리케이션 코드에서 데이터베이스 연결 부분을 RDS의 호스트, 포트, 데이터베이스 이름, 사용자 이름, 암호에 맞게 수정합니다.
  • 테스트 및 배포:

    • 수정된 애플리케이션을 테스트하고,
    • 정상적으로 RDS와의 연결이 이루어지는지 확인한 후 애플리케이션을 배포합니다.

-스냅샷을 이용한 데이터 베이스 백업

  • RDS 콘솔로 이동:

    • AWS Management Console에서 RDS 대시보드로 이동합니다.
  • 스냅샷 생성:

    • 백업하려는 RDS 인스턴스를 선택합니다.
    • "스냅샷 생성"을 클릭하여 수동으로 스냅샷을 생성합니다.
    • 스냅샷에 대한 설명을 입력하고, "스냅샷 생성"을 클릭합니다.
  • 자동 스냅샷 설정 (옵션):

    • RDS 콘솔에서 해당 RDS 인스턴스를 선택하고, "인스턴스 작업" > "수정"을 클릭합니다.
    • "백업" 섹션에서 자동 백업을 활성화하고, 자동 백업 주기 및 보관 기간을 설정합니다.
  • 스냅샷을 통한 복원:

    • RDS 콘솔에서 "스냅샷" 탭으로 이동하여 백업된 스냅샷 목록을 확인합니다.
    • 복원을 원하는 스냅샷을 선택하고, "스냅샷 작업" > "복원"을 클릭합니다.
    • 복원할 RDS 인스턴스의 설정을 구성하고, "복원"을 클릭하여 스냅샷을 사용하여 데이터베이스를 복원합니다.

-엔드포인트를 이용해서 RDS에 접속하기

  • RDS 콘솔로 이동:

    • AWS Management Console에서 RDS 대시보드로 이동합니다.
  • 엔드포인트 확인:

    • 접속하려는 RDS 인스턴스를 선택하고, "엔드포인트 및 포트" 정보를 확인합니다.
    • 이 정보에는 엔드포인트 주소와 포트 번호가 포함됩니다.
  • MySQL 클라이언트 사용:

    • MySQL 클라이언트 또는 다른 데이터베이스 관리 도구를 사용하여 RDS에 접속합니다.
    • 터미널 또는 명령 프롬프트에서 MySQL 클라이언트를 실행하고, 다음과 같은 명령을 사용하여 RDS에 접속합니다.
      • mysql -h 엔드포인트주소 -P 포트번호 -u 사용자이름 -p
    • 여기서 엔드포인트 주소는 RDS 엔드포인트 주소, 포트번호는 RDS의 포트 번호, 사용자이름은 데이터베이스에 접속할 사용자의 이름입니다. -p 옵션을 사용하면 비밀번호를 입력할 수 있습니다.
  • 비밀번호 입력:

    • 위 명령을 실행하면 비밀번호를 입력하라는 프롬프트가 나타납니다. RDS 데이터베이스에 접속할 사용자의 비밀번호를 입력합니다.
    • 이와 같이 RDS 엔드포인트를 사용하여 MySQL 클라이언트를 통해 RDS에 접속할 수 있습니다.

*S3 ( AWS 스토리지 )

-버킷 생성 및 버킷 정책

*S3에서 버킷 생성하기:

  • AWS Management Console로 이동:

    • AWS Management Console에 로그인한 후, S3 콘솔로 이동합니다.
  • 버킷 생성:

    • "버킷 만들기"를 클릭합니다.
    • 버킷 이름을 입력하고, 지역을 선택합니다.
    • 추가 구성을 설정하고, "만들기"를 클릭하여 버킷을 생성합니다.

*S3 버킷에 정책 추가:

  • 버킷 선택:

    • S3 콘솔에서 생성한 버킷을 선택합니다.
  • 속성 탭으로 이동:

    • "권한" 섹션으로 이동합니다.
  • 버킷 정책 추가:

    • "버킷 정책 편집"을 클릭하여 새로운 정책을 추가합니다.
  • 정책 작성:

    • JSON 형식으로 버킷 정책을 작성합니다. 예를 들어, 모든 사용자에 대해 읽기 권한을 허용하는 간단한 버킷 정책은 다음과 같이 작성할 수 있습니다.
    • 위 예시에서 "버킷이름"은 생성한 버킷의 이름으로 대체되어야 합니다.
  • 정책 저장:

    • 정책을 작성한 후에는 "정책 저장"을 클릭하여 정책을 버킷에 적용합니다.

-버킷에 파일 업로드 및 ACL을 통한 접근 허용/차단

*S3 버킷에 파일 업로드:

  • AWS Management Console로 이동:

    • AWS Management Console에 로그인한 후, S3 콘솔로 이동합니다.
      버킷 선택:

    • 파일을 업로드하려는 버킷을 선택합니다.

  • 파일 업로드:

    • "업로드" 버튼을 클릭하여 로컬 컴퓨터에서 파일을 선택하고 업로드합니다.
    • *ACL을 통한 접근 허용/차단:
  • 파일 선택:

    • 업로드한 파일을 선택하고, "속성"을 클릭합니다.
  • ACL 설정:

    • "권한" 섹션으로 이동하여 객체에 대한 ACL을 설정합니다.
  • ACL 편집:

    • "편집"을 클릭하여 새로운 ACL을 추가하거나 기존 ACL을 수정합니다.
  • ACL 설정:

    • 다음은 ACL을 설정하는 예시입니다.
      • 특정 사용자 또는 그룹에 대한 읽기/쓰기 권한을 허용하려면 해당 사용자 또는 그룹의 IAM 역할 및 정책을 구성하여 ACL을 설정합니다.
      • 모든 사용자에 대한 읽기 권한을 허용 또는 차단하려면 "AllUsers" 또는 "AuthenticatedUsers"에 대한 권한을 설정합니다.
  • ACL 저장:

    • ACL을 설정한 후에는 변경 사항을 저장합니다.

-EBS, EFS, S3 개념 및 각각의 사용법 과 3가지 연동

  • EBS (Elastic Block Store):

    • EBS는 EC2 인스턴스에 연결하여 사용하는 블록 수준 스토리지 서비스입니다.
    • 사용법: EC2 인스턴스에 EBS 볼륨을 연결하여 파일 시스템을 생성하거나 데이터를 저장합니다. 일반적으로 데이터베이스, 파일 시스템, 애플리케이션 데이터 등을 저장하는 데 사용됩니다.
  • EFS (Elastic File System):

    • EFS는 여러 EC2 인스턴스에서 공유할 수 있는 네트워크 파일 시스템 서비스입니다.
    • 사용법: EFS 파일 시스템을 생성하고 여러 EC2 인스턴스에 마운트하여 공유 스토리지로 사용합니다. 여러 EC2 인스턴스 간에 데이터를 공유하거나 확장 가능한 파일 스토리지가 필요한 경우에 사용됩니다.
  • S3 (Simple Storage Service):

    • S3는 객체 스토리지 서비스로, 웹 서비스, 백업 및 복원, 정적 웹 사이트 호스팅 등에 사용됩니다.
    • 사용법: 파일이나 객체를 S3 버킷에 업로드하여 저장하고, 필요에 따라 버킷 내에서 관리하거나 웹에서 직접 액세스할 수 있습니다.
  • 3가지 스토리지를 연동하는 방법:

    • EBS 볼륨에 저장된 데이터를 정기적으로 S3에 백업하여 데이터의 보존 및 재해 복구를 위한 안전한 보관을 수행할 수 있습니다.
    • EFS를 사용하여 여러 EC2 인스턴스 간에 데이터를 공유하고, 이러한 데이터를 S3로 백업하여 추가적인 보안 및 재해 복구 기능을 제공할 수 있습니다.
    • S3 버킷에 저장된 정적 웹 사이트 컨텐츠를 EC2 인스턴스에 배포하여 웹 호스팅을 구현하거나, 필요에 따라 EBS 또는 EFS와 연동하여 동적 콘텐츠를 제공할 수 있습니다.

*CloudWatch

-CloudWatch 개념 및 모니터링 종류

CloudWatch 개념

  • CloudWatch:
    • AWS의 모니터링 및 관찰 서비스로, 다양한 AWS 리소스의 성능을 모니터링하고 로깅할 수 있습니다.
    • 이를 통해 시스템의 건강 상태를 파악하고 성능 문제를 식별할 수 있습니다.

모니터링 종류

  • 표준 모니터링:

    • 5분 간격으로 지표를 수집하며, EC2 인스턴스, ELB 등의 AWS 리소스에 대한 기본적인 지표를 제공합니다.
  • 세분화된 모니터링:

    • 1분 간격으로 지표를 수집하며, 추가 요금이 발생하지만 더 자세한 모니터링이 가능합니다.
  • 사용자 지정 지표:

    • 애플리케이션 및 비즈니스 지표와 같이 사용자가 지정한 지표를 생성하고 수집할 수 있습니다.

또한 CloudWatch는 로그 모니터링을 통해 로그 데이터를 수집, 저장하고 분석할 수 있으며, 경보 및 대시보드를 통해 운영 상태를 시각화할 수 있습니다.

-경보의 생성 및 경보 알림

  • 경보 생성:

    • AWS Management Console에 로그인한 후, CloudWatch 콘솔로 이동합니다.
    • 좌측 네비게이션에서 "알람"을 선택한 후 "알람 만들기" 버튼을 클릭합니다.
    • 원하는 서비스 및 지표를 선택하고, 조건을 설정합니다 (예: CPU 사용률이 70% 이상).
    • 경보를 트리거할 조건과 경보 상태를 정의한 후, 경보에 이름을 지정하고 경보를 생성합니다.
  • 알림 설정:

    • 경보가 생성되면, 해당 경보에 대한 알림을 설정할 수 있습니다.
    • 경보 상태가 변경될 때 알림을 받을 수 있는 SNS 주제를 선택하고, 알림을 받을 구독자(이메일, SMS 등)를 추가합니다.
    • 알림을 받을 구독자의 권한을 확인하고 구독을 활성화합니다.

*Lambda

-람다의 정의

  • AWS Lambda:
    • 서버리스 컴퓨팅 서비스로, 코드를 실행하기 위한 컴퓨팅 리소스를 프로비저닝하거나 관리하지 않고도 코드를 실행할 수 있게 해줍니다.
    • Lambda 함수를 사용하면 코드를 실행할 수 있는 환경을 프로비저닝하거나 유지 관리할 필요 없이, 필요할 때마다 코드를 실행할 수 있습니다.

-람다 함수 생성 및 실행

  • Lambda 함수 생성:

    • AWS Management Console에 로그인한 후, Lambda 콘솔로 이동합니다.
    • "함수 만들기"를 클릭하고, 새로운 함수를 생성할 때 사용할 템플릿을 선택합니다.
    • 함수 이름, 런타임(예: Node.js, Python), 실행 역할 및 기타 구성을 지정합니다.
    • 코드를 직접 업로드하거나, Amazon S3 또는 AWS CodeCommit과 같은 저장소에서 코드를 가져와 Lambda 함수에 배포합니다.
  • 이벤트 트리거 구성:

    • Lambda 함수가 실행될 때를 지정하기 위해 이벤트 트리거를 구성합니다. 예를 들어, API Gateway, S3 이벤트, CloudWatch 이벤트 등을 이용하여 함수를 트리거할 수 있습니다.
  • Lambda 함수 실행:

    • Lambda 콘솔에서 생성한 함수를 선택하고, "테스트"를 클릭하여 이벤트를 시뮬레이션하고 함수를 실행합니다.
    • 함수가 성공적으로 실행되면 실행 결과를 확인할 수 있습니다.

-람다와 CloudWatch 연동 및 확인

  • CloudWatch 로그 그룹 생성:

    • 먼저, Lambda 함수에서 생성되는 로그를 수집할 CloudWatch 로그 그룹을 생성합니다.
  • Lambda 함수에 로깅 구성:

    • Lambda 함수의 코드에 로그 기록을 추가하여 실행 중 발생하는 이벤트 및 정보를 로깅합니다.
    • 이를 위해 대부분의 프로그래밍 언어에는 쉽게 사용할 수 있는 로깅 라이브러리가 있습니다.
  • CloudWatch 로그 스트림 확인:

    • Lambda 함수가 실행될 때, 해당 함수가 생성하는 로그는 CloudWatch 로그 그룹에 스트림으로 전송됩니다.
    • AWS Management Console을 통해 CloudWatch 콘솔로 이동하여 해당 로그 그룹과 로그 스트림을 확인합니다.
  • CloudWatch 경보 생성:

    • Lambda 함수의 로그 기록을 모니터링하고 특정 조건이 충족될 때 경보를 받기 위해 CloudWatch 경보를 생성합니다.
    • 예를 들어, 특정 오류 메시지가 로깅될 때 경보를 받도록 설정할 수 있습니다.
  • 실시간 모니터링:

    • CloudWatch 대시보드를 사용하여 Lambda 함수의 실행, 로그 및 성능 지표를 실시간으로 모니터링할 수 있습니다.
    • 이를 통해 Lambda 함수의 상태를 신속하게 파악하고, 성능 문제를 식별할 수 있습니다.

-S3 버킷 연동과 Lambda함수를 통한 실행방법

  • S3 이벤트 트리거 설정:

    • AWS Management Console에서 Lambda 콘솔로 이동하여 새로운 Lambda 함수를 생성하거나 기존의 함수를 선택합니다.
    • "트리거 추가"를 클릭하고, S3를 선택하여 Lambda 함수를 S3 버킷과 연동할 수 있는 트리거를 설정합니다.
  • 이벤트 유형 및 버킷 설정:

    • 트리거를 추가할 때 이벤트 유형을 선택하고, 연동할 S3 버킷을 지정합니다.
    • 예를 들어, 객체가 생성되었을 때, 수정되었을 때 등의 이벤트를 선택할 수 있습니다.
  • Lambda 함수 구성:

    • Lambda 함수 코드를 작성하고, S3 이벤트가 발생했을 때 실행될 코드를 구현합니다.
    • 이를 통해 S3 이벤트가 발생했을 때 Lambda 함수가 작동하도록 할 수 있습니다.
  • 권한 설정:

    • Lambda 함수가 S3 버킷과 상호 작용할 수 있도록 권한을 부여합니다.
    • 이를 통해 Lambda 함수가 S3 객체를 읽거나 쓸 수 있도록 권한을 설정할 수 있습니다.
  • 테스트 및 실행:

    • Lambda 함수와 S3 버킷이 연동되었으므로, S3 버킷에 원하는 이벤트를 발생시키고 Lambda 함수가 예상대로 작동하는지 확인합니다.
    • 이를 통해 S3 버킷과 Lambda 함수를 연동하여, S3 버킷에서 발생하는 이벤트에 대한 자동화된 작업을 Lambda 함수를 통해 실행할 수 있습니다.

*CloudFront = CDN

-CloudFront의 특징

  • CloudFront:
    • AWS의 Content Delivery Network(CDN) 서비스로,
    • 전 세계의 사용자에게 안정적이고 빠른 콘텐츠 전송을 지원합니다.
    • CloudFront를 사용하면 사용자가 가까운 엣지 로케이션에서 콘텐츠를 로드할 수 있어 웹 사이트 및 애플리케이션의 성능을 향상시킬 수 있습니다.

-CloudFront의 주요 특징:

  • 글로벌 커버리지:

    • 전 세계 여러 지역에 위치한 엣지 로케이션을 통해 사용자에게 빠른 응답 속도를 제공합니다.
  • 보안:

    • HTTPS를 통한 안전한 콘텐츠 전송과 DDoS 공격 방어를 제공합니다.
  • 고성능 콘텐츠 전송:

    • 캐싱, 압축, 스트리밍 등을 통해 빠르고 효율적인 콘텐츠 전송을 지원합니다.
  • 다양한 콘텐츠 유형 지원:

    • 정적 및 동적 콘텐츠, 비디오 스트리밍, 애니메이션, 이미지 등 다양한 콘텐츠 유형을 지원합니다.

-"엣지 로케이션"과 "오리진"(CloudFront의 핵심 개념):

  • 엣지 로케이션:

    • 엣지 로케이션은 전 세계 여러 지역에 위치한 CDN 서버입니다.
    • 사용자가 콘텐츠를 요청할 때, 해당 콘텐츠는 엣지 로케이션에서 가장 가까운 곳에서 제공되어 더 빠르게 전송됩니다.
  • 오리진:

    • 오리진은 실제 콘텐츠가 저장된 원본 서버를 가리킵니다.
    • 이는 Amazon S3 버킷, EC2 인스턴스, Elastic Load Balancer, 혹은 사용자 정의 오리진 서버 등이 될 수 있습니다.
    • CloudFront는 오리진에서 콘텐츠를 가져와 엣지 로케이션에 캐싱하여 사용자에게 전달합니다.

-CloudFront CDN 생성 및 URL을 통한 접근

  • CloudFront 배포 생성:

    • AWS Management Console에 로그인한 후, "CloudFront" 서비스로 이동합니다.
    • "Create Distribution"을 클릭하여 새로운 배포를 생성합니다.
    • "Web" 또는 "RTMP"를 선택하고, 원하는 설정을 구성합니다. 이때 "Origin Domain Name"은 원본 서버의 도메인이나 엔드포인트를 입력해야 합니다.
    • 기타 옵션들을 구성하고 "Create Distribution"을 클릭하여 배포를 생성합니다.
  • 배포 생성 후 URL 획득:

    • CloudFront 배포가 생성되면 해당 배포의 상세 정보에서 "Domain Name"을 확인합니다.
    • 이는 CloudFront 배포에 대한 엔드포인트 주소가 됩니다.
  • URL을 통한 접근:


*VPC

-VPC의 정의 와 역할

  • VPC(Virtual Private Cloud):
    • AWS(Amazon Web Services)에서 제공하는 가상 네트워크 서비스로, 사용자가 AWS 리소스를 구동하고 네트워크를 구성하는 데 사용하는 가상 네트워크입니다.
    • VPC는 사용자가 정의한 가상 네트워크 내에서 AWS 리소스를 실행할 수 있도록 지원하며, 이를 통해 보안, 격리, 라우팅 및 관리를 제어할 수 있습니다.

-VPC 생성 및 설정, SSH를 통한 접속

  • VPC 생성:

    • AWS Management Console에 로그인한 후, "VPC" 서비스로 이동합니다.
    • "VPC 대시보드"에서 "VPC 시작하기"를 클릭하여 새 VPC를 생성합니다.
    • VPC의 이름, IP 주소 범위(CIDR 블록), 서브넷 등을 설정하여 VPC를 생성합니다.
  • 인터넷 게이트웨이 연결:

    • VPC를 생성한 후, "인터넷 게이트웨이"를 생성하여 VPC에 연결합니다.
    • VPC 라우팅 테이블을 편집하여 인터넷 게이트웨이를 대상으로 하는 라우팅을 추가합니다.
  • 서브넷 생성:

    • VPC에 서브넷을 생성하여 EC2 인스턴스를 배치할 수 있는 서브넷을 만듭니다.
  • 보안 그룹 및 네트워크 ACL 설정:

    • 보안 그룹을 생성하여 SSH 접속을 허용하는 규칙을 추가합니다. SSH의 기본 포트인 22번 포트를 열어야 합니다.
    • 네트워크 ACL을 구성하여 필요한 네트워크 트래픽을 허용합니다.
  • EC2 인스턴스 생성:

    • VPC 내에 SSH를 통해 접속할 EC2 인스턴스를 생성합니다.
    • 인스턴스를 생성할 때, 해당 VPC와 서브넷을 선택하고 보안 그룹 및 키페어를 연결합니다.
  • SSH를 통한 접속:

    • SSH 클라이언트를 사용하여 공용 IP 주소 또는 DNS를 통해 EC2 인스턴스에 접속합니다.
    • 예를 들어, 터미널에서 다음 명령어를 사용하여 SSH로 접속할 수 있습니다

*AutoScaling

-오토 스케일링의 정의

  • 오토 스케일링:
    • 클라우드 환경에서 사용되는 자동 확장 기능으로, 서버 또는 컴퓨팅 리소스의 수요에 따라 자동으로 인프라를 확장하거나 축소하는 기술입니다.
    • 이를 통해 서비스의 부하에 따라 자원을 동적으로 조절하여 안정적이고 효율적인 운영을 할 수 있습니다.

-EC2 오토스케일링 구성 및 관리 방법

  • 오토스케일링 그룹 생성:

    • AWS Management Console에 로그인한 후, "Auto Scaling" 서비스로 이동합니다.
    • "Create an Auto Scaling group"을 선택하여 새로운 오토스케일링 그룹을 생성합니다.
    • 그룹의 구성에는 AMI(Amazon Machine Image), 인스턴스 유형, 시작 구성, 네트워크, 보안 그룹 등을 설정합니다.
  • 스케일링 정책 설정:

    • 오토스케일링 그룹에는 트리거 조건에 따라 스케일링 정책을 설정할 수 있습니다.
    • 예를 들어, CPU 사용률이 특정 임계값을 넘으면 인스턴스를 추가하도록 설정할 수 있습니다.
  • 로드 밸런싱 설정:

    • 필요에 따라 오토스케일링 그룹을 로드 밸런서와 연결하여 트래픽을 분산시킬 수 있습니다.
  • 알림 설정:

    • 스케일링 이벤트에 대한 알림을 받기 위해 CloudWatch나 SNS를 사용하여 알림을 설정할 수 있습니다.
  • 스케일링 활동 모니터링:

    • 오토스케일링 그룹의 활동을 모니터링하여 자원의 확장 및 축소가 올바르게 이루어지는지 확인합니다.
  • 정책 및 그룹 업데이트:

    • 필요에 따라 스케일링 정책이나 오토스케일링 그룹의 구성을 업데이트하여 비즈니스 요구사항에 맞게 조정합니다.

*ELB

-ELB 정의 및 종류

  • ELB(로드 밸런서):
    • 클라우드 환경에서 트래픽을 여러 대상으로 분산시키는데 사용되는 서비스입니다.
    • ELB는 고가용성, 확장성 및 안정성을 제공하여 웹 애플리케이션 및 마이크로서비스 아키텍처에서 중요한 역할을 합니다.

-ALB , NLB 로드밸런싱 개념 및 역할

  • 어플리케이션 로드 밸런서 (ALB):

    • ALB는 OSI 7계층(Layer 7)에서 동작하는 로드 밸런서로, HTTP 및 HTTPS 트래픽을 기반으로 요청을 분배합니다.
    • 동적 호스트 기반 라우팅, 컨텐츠 기반 라우팅, WebSocket 지원 등 다양한 기능을 제공하여 모던 웹 애플리케이션에 적합합니다.
    • 역할: ALB는 웹 애플리케이션의 트래픽을 여러 대상 그룹으로 분산시키고, 각각의 요청에 대해 효율적인 서버로 라우팅하여 안정적이고 빠른 웹 애플리케이션 서비스를 제공합니다.

네트워크 로드 밸런서 (NLB):

  • NLB는 OSI 4계층(Layer 4)에서 동작하는 로드 밸런서로, TCP 및 UDP 트래픽을 로드 밸런싱할 수 있습니다.
  • 초당 수백만 개의 연결을 처리할 수 있고, 고성능 및 초저지연을 제공하여 빠른 응답이 필요한 애플리케이션에 적합합니다.
  • 역할: NLB는 네트워크 수준에서 트래픽을 여러 대상으로 분산시키고, 연결 상태를 유지하면서 안정적인 네트워크 서비스를 제공합니다.

-구성 및 동작 방법

어플리케이션 로드 밸런서(ALB)의 구성 및 동작 방법:

  • 구성:

    • AWS Management Console에 로그인한 후, "EC2" 서비스로 이동합니다.
    • "로드 밸런서" 부분에서 "로드 밸런서 생성"을 선택하고, 원하는 유형으로 ALB를 생성합니다.
    • 로드 밸런서를 생성할 때, 대상 그룹을 설정하여 트래픽을 분산시킬 대상 인스턴스를 정의합니다.
  • 동작:

    • ALB는 클라이언트의 요청을 받아 대상 그룹에 정의된 인스턴스들 중에서 적절한 대상을 선택하여 트래픽을 분산시킵니다.
    • HTTP 또는 HTTPS 요청에 따라 동적 호스트 기반 라우팅, 컨텐츠 기반 라우팅 등을 통해 요청을 적절한 대상으로 라우팅합니다.

네트워크 로드 밸런서(NLB)의 구성 및 동작 방법:

  • 구성:

    • AWS Management Console에 로그인한 후, "EC2" 서비스로 이동합니다.
    • "로드 밸런서" 부분에서 "로드 밸런서 생성"을 선택하고, 원하는 유형으로 NLB를 생성합니다.
    • 로드 밸런서를 생성할 때, 대상 그룹을 설정하여 트래픽을 분산시킬 대상 인스턴스를 정의합니다.
  • 동작:

    • NLB는 클라이언트의 TCP 또는 UDP 트래픽을 받아 대상 그룹에 정의된 인스턴스들 중에서 적절한 대상을 선택하여 트래픽을 분산시킵니다.
    • OSI 4계층에서 동작하기 때문에, 연결 상태를 유지하면서 트래픽을 적절히 분산시키고, 고성능 및 초저지연을 제공합니다.

*DynamoDB

-DynamoDB 의 정의 및 DB테이블 생성

  • DynamoDB:
    • 아마존 웹 서비스(AWS)에서 제공하는 완전 관리형 NoSQL 데이터베이스 서비스입니다.
    • DynamoDB는 고성능, 무제한 확장성, 안정성 및 유연성을 제공하여 모바일 애플리케이션, 웹 애플리케이션, 게임, IoT 기기 등 다양한 응용 프로그램에 대한 데이터 저장 및 관리를 지원합니다.

-쿼리와 스캔의 정의 및 차이점.

  • 쿼리(Query):

    • 쿼리는 데이터베이스에서 특정 조건을 만족하는 항목들을 선택하여 반환하는 작업을 말합니다.
    • 쿼리를 사용하면 인덱스를 활용하여 특정 키 조건에 맞는 항목들을 검색하고 반환할 수 있습니다.
    • 쿼리는 데이터베이스 테이블의 크기에 관계없이 일관된 성능을 제공하며, 일반적으로 효율적인 데이터 조회에 사용됩니다.
  • 스캔(Scan):

    • 스캔은 데이터베이스 테이블의 모든 항목을 읽어와서 조건에 상관없이 모든 항목을 평가하는 작업을 말합니다.
    • 스캔은 테이블의 모든 데이터를 읽어오므로 큰 데이터셋을 가진 테이블의 경우에는 성능 저하가 발생할 수 있습니다.
    • 일반적으로 스캔은 필터링이나 정렬이 필요하지 않은 경우에 사용되며, 특정 조건에 맞는 항목을 찾는 데는 쿼리가 더 효율적입니다.
  • 차이점:

    • 쿼리는 특정 조건을 만족하는 항목을 선택하여 반환하는 데 사용되며, 인덱스를 활용하여 효율적으로 작동합니다.
    • 스캔은 테이블의 모든 항목을 읽어와서 조건에 상관없이 모든 항목을 평가하는 데 사용되며, 인덱스를 활용하지 않고 전체 테이블을 탐색합니다.

-데이터 입력 방법 및 호출 방법

데이터 입력 방법:

  • SQL 데이터베이스:

    • SQL 데이터베이스에서는 INSERT 쿼리를 사용하여 데이터를 입력합니다.
    • 예를 들어, INSERT INTO 테이블명 (칼럼1, 칼럼2, ...) VALUES (값1, 값2, ...);와 같은 형태로 사용합니다.
  • NoSQL 데이터베이스:

    • NoSQL 데이터베이스의 경우에는 해당 데이터베이스의 API 또는 SDK를 사용하여 데이터를 입력합니다.
    • 예를 들어, DynamoDB의 경우에는 PutItem API를 사용하여 데이터를 삽입합니다.
  • 파일 데이터:

    • 파일 형식의 데이터의 경우, CSV, JSON 등의 형식으로 데이터를 작성한 후, 해당 파일을 데이터베이스나 저장소에 import하는 방법을 사용할 수 있습니다.

데이터 호출 방법:

  • SQL 데이터베이스:

    • SQL 데이터베이스에서는 SELECT 쿼리를 사용하여 데이터를 호출합니다.
    • 예를 들어, SELECT * FROM 테이블명 WHERE 조건;과 같은 형태로 사용합니다.
  • NoSQL 데이터베이스:

    • NoSQL 데이터베이스의 경우에는 해당 데이터베이스의 API 또는 SDK를 사용하여 데이터를 조회합니다.
    • 예를 들어, DynamoDB의 경우에는 GetItem API를 사용하여 데이터를 가져옵니다.
  • 파일 데이터:

    • 파일 형식의 데이터의 경우, 파일을 읽는 프로그래밍 언어의 기능을 사용하여 데이터를 호출하거나 처리합니다.

0개의 댓글