EBS(Elastic Beanstalk) 등장배경

  1. Public Subnet: 로드 밸런서
  2. Private Subnet: 비즈니스 로직을 처리하는 레이어입니다. 보통 웹 애플리케이션 서버
  3. Data Subnet: 데이터를 저장하는 레이어입니다. 보통 데이터베이스 서버, 파일 서버 등이 사용

    대부분의 웹앱은 같은 아키텍처를 가지고 있습니다.

 

    ❓ 그런데 서비스를 만들때마다 같은 인프라를 만들어야 한다면?

 

EBS는 개발자 관점으로 AWS를 접근합니다.

  • DB설정, 로드밸런서 자동 설정
  • 자동으로 스케일링(확장성)을 지원

    3-tier 아키텍처는 애플리케이션의 확장성과 유연성을 향상시키고, 높은 가용성과 성능을 제공합니다. 각 레이어를 독립적으로 확장할 수 있으며, 부하 분산과 장애 극복 기능을 쉽게 추가할 수 있습니다. 또한, 애플리케이션의 유지보수와 업그레이드가 용이하며, 보안성이 높습니다. 

    배포 프로세스를 자동으로 처리하며, 필요한 인프라 자원을 프로비저닝하고, 로드 밸런싱과 오토스케일링 등의 기능을 제공합니다.

 

 

 

 

EBS 개념

  • Application
    • 애플리케이션 코드, 구성 및 관련 파일
    • Elastic Beanstalk는 다양한 프로그래밍 언어와 프레임워크를 지원합니다
  • Environment
    • Amazon EC2 인스턴스, 데이터베이스 인스턴스, 로드 밸런서 등 인프라

 

 

 

 

 

EBS 생성하기

언급되지 않은 것은 기본값으로 세팅

(EC2) 인스턴스, 로드 밸런서, Auto Scaling, S3 등에 자동으로 추가된 것을 확인 할 수 있습니다.

 

https://db.도메인/  으로 접속하기
리스너와 보안에 HTTPS 설정이 빠졌다면 각각 HTTPS 추가하기

 

 

 

 

 

 

HTTP를 HTTPS로 리다이렉트

 

 

'aws' 카테고리의 다른 글

2주차 [Docker] docker  (0) 2023.05.31
1주차 [Docker] Linux  (0) 2023.05.30
10. [aws] CDN  (0) 2023.05.26
09. [aws] S3 (긴 글, 반복 주의)  (0) 2023.05.26
08. [aws] VPC  (0) 2023.05.26

Cloudfront

Content Delivery Network(CDN)

시간과 비용을 절약하기 위해 static한 파일들을 Edge Locations에 캐싱을 한다.

수평적 확장성에 해당한다.

 

장점

  • 향상된 속도 : 지리적으로 가까운 서버에 캐싱된 데이터를 갖고 오기 때문에 무척 빠르다.
  • 안전 : CDN 서비스를 해주는 업체에서 방화벽을 제공할 뿐만 아니라 DDoS 공격(트래픽 공격)이 와도 서버가 분산되어 있고 캐시기능으로 오리진 서버 트래픽은 늘어나지 않는다.

단점

  • 캐시 : 최신 동적 컨텐츠를 제공해야하는 경우에 적합하지 않다.
  • 비용이 추가 발생한다

 

 

 

Cloud front 생성하기

 

이경우 버킷 이름이 동일하지 않아도 된다.

버킷 이름만 설정하고 나머지는 기본값으로 세팅한다.

새로 만든 버킷에 index.html을 업로드
원본 도메인에 새로 만든 버킷을 등록

 

 

 

 

S3 정책 업데이트 방법 1.

 

S3 정책 업데이트 방법2.

복사한 정책을 붙여넣고 저장

 

 

 

 

 

 

 

 

캐싱 인델리데이션

(index.html 수정 적용하기)

 

case1.

https://cdn.도메인/ 으로 접속하기

 

 

 

 

case2. (1이 작동 안 할 때)

https://cdn.도메인/ 으로 접속하기

 

 

 

 

'aws' 카테고리의 다른 글

1주차 [Docker] Linux  (0) 2023.05.30
11. [aws] EBS(Elastic Beanstalk) & http를 https로 리다이렉트  (0) 2023.05.26
09. [aws] S3 (긴 글, 반복 주의)  (0) 2023.05.26
08. [aws] VPC  (0) 2023.05.26
07. [aws] 도메인 HTTPS 연결  (0) 2023.05.26

Amazon Simple Storage Service(S3)

    인터넷 스토리지 서비스입니다. 이 서비스는 개발자나 IT 운영자가 웹 규모 컴퓨팅 작업을 수행하는 데 필요한 데이터 저장 공간을 제공합니다. Amazon S3는 웹 사이트 호스팅, 온라인 백업, 데이터 아카이브, 기업 애플리케이션, Big Data 분석 등 다양한 용도로 사용됩니다. 콘솔창에서 region 상관없이 S3를 모두 확인할 수 있습니다.

* 프론트엔드 - 정적 웹사이트 호스팅 /  백엔드 - 동적 웹사이트 호스팅

 

 

S3 서비스의 사용 예

  • 웹 사이트 호스팅
  • 멀티미디어 파일 저장 및 스트리밍
  • 애플리케이션 데이터 저장
  • 백업 및 복원
  • 아카이브

S3 서비스의 장점

  • 높은 내구성, 가용성 및 안정성
  • 손쉬운 사용 및 관리
  • 보안성
  • 높은 확장성

 

EBS는 단일 인스턴스에 대한 고성능 스토리지 서비스가 필요한 경우. Read/ Write가 빈번한 경우 사용한다.

S3는 비교적 저렵한것이 장점. 정적 웹 사이트도 지원하므로 여러개의 정적 HTML 페이지를 호스팅해야 하는 경우 사용. Write once Read many times 파일 수정 불가(덮어쓰기)

 

EFS EBS S3
NFS 파일 시스템 Block Storage object(객체) Storage
비쌈 평균
빈번한 Read / Write  빈번한 Read / Write  Write once Read many times
여러 AZ에 중복 저장 단일 AZ에 중복 저장 여러 AZ에 중복 저장
파일 수정 가능 파일 수정 가능 덮어쓰기
대규모 사용 사례에 적합  데이터베이스, ERP 시스템, 메일 서버, 쉐어포인트, 웹 서버, 디렉터리 서버, DNS 서버 또는 미들웨어에 적합 정적 웹사이트(프론트) 호스팅에 적합

 

 

Buckets?

버킷이란 데이터를 저장하는 가장 상위 레벨의 폴더 형태의 컨테이너입니다!

S3에 저장되는 파일들을 ‘객체’ 라고 부르고 모든 객체는 ‘키’(디렉토리)로 식별됩니다.

prefix/delimiter/object-name

s3://my-bucket/my_folder/my_file.txt

Amazon S3에서 버킷은 다음과 같은 목적으로 사용됩니다.

  • 데이터를 저장하는 컨테이너 역할
  • 객체에 대한 공용 또는 개인적인 접근 권한을 설정하기 위한 위치
  • 객체에 대한 특별한 이벤트 알림을 설정하기 위한 위치
  • AWS 계정에서 버킷 및 객체 사용에 대한 비용 추적 및 모니터링을 위한 위치

 

버킷 네이밍 컨벤션

  • 대문자 금지, 언더스코어 금지
  • 버킷 이름은 3자(최소)에서 63자(최대) 사이여야 합니다.
  • 버킷 이름은 소문자, 숫자, 점(.) 및 하이픈(-)으로만 구성될 수 있습니다.
  • 버킷 이름은 문자 또는 숫자로 시작하고 끝나야 합니다.
  • 버킷 이름에 두 마침표를 나란히 붙여 사용하면 안 됩니다.
  • 버킷 이름은 IP 주소 형식(예: 192.168.5.4)을 사용하지 않습니다.

 

 

버킷 생성하고 파일 업로드

모든 퍼블릭 액세스 차단 체크 해제

※ 버킷 이름과 apex 도메인 이름이 같아야 한다.

열기로 접속시 작성한 html이 보이지만 object URL 접속시 Access Denied

 

 

 

 

버킷폴리시

  • IAM과 유사하며 JSON 형식의 문서입니다.
  • 버킷의 모든 객체에 대한 액세스를 제어할 수 있습니다.
  • 특정 객체 또는 객체 그룹에 대한 액세스를 제어할 수 있습니다.
  • 특정 객체 또는 객체 그룹에 대한 액세스를 제어할 수 있습니다.
  • 액세스를 허용하는 IP 주소 또는 범위를 지정할 수 있습니다.
  • 액세스할 수 있는 리소스의 범위를 제한할 수 있습니다.
  • 암호화된 연결을 사용하도록 강제할 수 있습니다.

 

폴리시 예시

  • Resource : 버킷 혹은 오브젝트
  • Effect: Allow 혹은 Deny
  • Principal : 대상 유저
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "AllowUserToGetBucket",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::ACCOUNT-ID:user/USERNAME"
            },
            "Action": "s3:GetBucketLocation",
            "Resource": "arn:aws:s3:::BUCKET-NAME"
        }
    ]
}

이 정책은 IAM 사용자 "USERNAME"이

GetBucketLocation 작업을 수행할 수 있도록

지정된 버킷 "BUCKET-NAME"에 대한 액세스를 허용합니다.

 

 

 

버킷 폴리시 설정하기

ARN에 aws Bucket ARN 붙여넣기
Resource 끝에 /*을 붙여 저장

 

 

 

 

 

ARN

  • AWS에서 사용하는 고유한 식별자로 AWS의 모든 리소스에 대한 고유한 식별자 역할을 합니다.
arn:partition:service:region:account-id:resource-id
arn:partition:service:region:account-id:resource-type/resource-id
arn:partition:service:region:account-id:resource-type:resource-id

//예시
arn:aws:iam::123456789012:user/johndoe
arn:aws:s3:::my_corporate_bucket/
arn:aws:ec2:us-east-1:123456789012:vpc/vpc-0e9801d129EXAMPLE
  • ARN은 다음과 같은 형식으로 구성됩니다.
    • arn: AWS 리소스 이름을 가리키는 고정 문자열
    • aws: 리소스가 AWS에서 호스팅되는 것을 나타내는 고정 문자열
    • service: AWS 서비스 이름을 나타내는 문자열 (예: s3, lambda, ec2 등)
    • region: AWS 리전 이름을 나타내는 문자열 (예: us-east-1, ap-northeast-2 등)
    • account-id: AWS 계정 ID를 나타내는 숫자
    • resource-id: 해당 리소스의 고유 식별자 (예: S3 버킷 이름, Lambda 함수 이름 등)

 

 

 

 

html 작성후 버킷에 업로드

<--index.html 파일로 아래 내용을 생성-->
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>프론트엔드</title>
</head>

<body>
    <h1>S3에 베포한 내 정적 사이트</h1>
</body>

</html>

저장

 

 

https://docs.aws.amazon.com/AmazonS3/latest/userguide/WebsiteAccessPermissionsReqd.html

 

<!--policy에 아래 코드 붙여넣기-->
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "PublicReadGetObject",
            "Effect": "Allow",
            "Principal": "*",
            "Action": [
                "s3:GetObject"
            ],
            "Resource": [
                "이부분에 버킷 ARN 붙여넣기/*"
            ]
        }
    ]
}

 

 

 

 

 

 

S3에 도메인 네임 적용하기

버킷 이름과 도메인 이름은 반드시 동일해야합니다.

※ 보통 프론트에 apex 도메인(기본 도메인 ex. xxx.com)을 할당

※ 예시에서는 버킷과 도메인에 front. 를 앞에 붙여 생성했습니다.

위와 동일
버킷의 속성
레코드 이름 = 버킷 이름

※ 레코드 이름으로 접속은 돼는데 https:// 접속이 안됨.

'aws' 카테고리의 다른 글

11. [aws] EBS(Elastic Beanstalk) & http를 https로 리다이렉트  (0) 2023.05.26
10. [aws] CDN  (0) 2023.05.26
08. [aws] VPC  (0) 2023.05.26
07. [aws] 도메인 HTTPS 연결  (0) 2023.05.26
06. [aws] DNS, CNAME vs Alias  (0) 2023.05.23

Virtual Private Cloud(VPC)란?

    AWS에서 제공하는 클라우드 컴퓨팅 리소스를 사용할 수 있는 가상의 사설 네트워크입니다. 사용자는 VPC 내에서 IP 주소 범위, 라우팅 테이블, 서브넷 및 보안 그룹을 설정할 수 있습니다. 또한, VPC를 사용하면 사용자는 가상 서버, 스토리지 및 데이터베이스와 같은 다양한 AWS 리소스를 시작하고 관리할 수 있습니다. 

 

 

 

 

  • EC2, 로드밸런스 생성시 자동으로 VPC가 생성된다.
  • 하나의 VPC는 하나의 Region 안에 있다.
  • VPC 안에는 여러개의 AZ가 존재한다.
  • AZ 안에 서브넷이 존재한다.

 

 

 

 

서브넷, 게이트웨이, NAT

 

    ❓ 서브넷이란?

 

    VPC 내에서 IP 주소 범위를 지정하는 가상의 네트워크입니다. 서브넷은 라우팅 테이블에 연결되며, 각 서브넷은 하나의 라우팅 테이블에만 연결될 수 있습니다. 서브넷을 사용하면 VPC 내에서 다른 서브넷과 격리된 가상 네트워크를 생성할 수 있습니다. 이를 통해 다양한 서비스를 실행하는 데 필요한 보안 요구 사항을 충족시킬 수 있습니다.

 

  • 퍼블릭 서브넷은 인터넷 게이트웨이와 연결된 서브넷으로, 인터넷에 직접 연결되어 있는 서브넷입니다. 퍼블릭 서브넷을 사용하면 인터넷에서 직접 액세스할 수 있는 인스턴스를 실행할 수 있습니다. 이러한 인스턴스는 공인 IP 주소를 사용하며, 인터넷 게이트웨이를 통해 인터넷으로 트래픽을 보낼 수 있습니다.
  • 프라이빗 서브넷은 인터넷과 직접 연결되지 않는 가상의 네트워크입니다. 이러한 서브넷에서 실행되는 인스턴스는 인터넷에 직접 액세스할 수 없습니다. 대신, NAT 게이트웨이를 사용하여 인터넷을 통해 인스턴스에 연결하거나, VPC 피어링 등을 사용하여 다른 VPC와 연결할 수 있습니다.

 

    VPC의 라우팅 테이블(쉽게 말해 서브넷 안의 주소록)은 VPC 내에서 트래픽이 전달되는 방법을 제어하는 데 사용됩니다. 라우팅 테이블은 서브넷과 연결되며, 각 서브넷에는 하나의 라우팅 테이블이 있어야 합니다. 라우팅 테이블은 목적지 IP 주소와 대상 게이트웨이 또는 NAT 게이트웨이와 같은 대상을 매핑합니다. 라우팅 테이블은 여러 개의 라우팅 규칙을 포함할 수 있으며, 이를 사용하여 서브넷에서 트래픽을 전달하는 방법을 제어할 수 있습니다.

 

 

  • IGW (Internet Gateway)
    • VPC와 인터넷 간의 통신을 가능하게 하는 게이트웨이입니다.
    • 인터넷을 통해 인터넷 게이트웨이를 통해 VPC 내부로 들어오는 트래픽을 받아 해당 VPC에 연결된 서브넷으로 라우팅합니다.
  • NAT (Network Address Translation) Gateway
    • 프라이빗 서브넷에서 아웃바운드 인터넷 트래픽을 가능하게 하는 서비스입니다.
    • NAT 게이트웨이는 프라이빗 서브넷 내 인스턴스가 인터넷으로 나가는 트래픽을 대신하여 공인 IP 주소를 사용하고, 인터넷 게이트웨이로부터 들어오는 트래픽을 프라이빗 서브넷으로 라우팅합니다.

'aws' 카테고리의 다른 글

10. [aws] CDN  (0) 2023.05.26
09. [aws] S3 (긴 글, 반복 주의)  (0) 2023.05.26
07. [aws] 도메인 HTTPS 연결  (0) 2023.05.26
06. [aws] DNS, CNAME vs Alias  (0) 2023.05.23
05.5 [aws] Sqlectron  (0) 2023.05.23

HTTPS 연결

 

 

로드 벨런서 보안에 https 추가가 안되어있으면 추가
Status가 pending에서 success로 바뀜

'aws' 카테고리의 다른 글

09. [aws] S3 (긴 글, 반복 주의)  (0) 2023.05.26
08. [aws] VPC  (0) 2023.05.26
06. [aws] DNS, CNAME vs Alias  (0) 2023.05.23
05.5 [aws] Sqlectron  (0) 2023.05.23
05. [aws] RDS  (0) 2023.05.14

+ Recent posts