no image
[AWS] AWS S3, CloudFront, Lambda@Edge를 통해 이미지 Resize
1. S3 버킷 생성하기   - 이름 : sample-lambda-image-resize- 설정 : 기본값     원하는 버킷 이름을 설정하고 아래 설정은 모두 기본값으로 둔 채, 버킷을 생성한다.    2. CloudFront 생성하기 CloudFront 에서 좌측 네비게이션 바에서 원본 엑세스를 클릭한다.     제어 설정 생성을 누른 다음, 이름과 설명을 입력한 후 생성을 클릭한다.  - 이름 : s3-lambda-edge-image-resize- 설정 : 기본     3. CloudFront 배포하기  좌측 탭에서 배포를 눌러서 배포 생성을 클릭한다.   원본 도메인에서 아까 만든 S3를 선택한다.      원본 엑세스 설정은 공개에서 원본 액세스 제어 설정(권장)으로 바꿔서 선택한다.     ..
2023.11.14
AWS
no image
[AWS] AWS RDS 인스턴스 생성 및 연결하기(PostgreSQL)
이제 AWS 에서 제공해주는 관리형 서비스인 RDS(Relational Database Service)를 생성해 보겠습니다. ✅ RDS란? AWS에서 지원하는 클라우드기반 관계형 데이터베이스 하드웨어 프로비저닝, 데이터베이스 설정, 패치 및 백업과 같이 잦은 운영 작업을 자동화하여 개발자는 개발에만 집중하도록 지원하는 서비스 조정 가능한 용량을 지원하여, 예상치 못한 양의 데이터가 쌓여도 비용만 추가하면 쭉 사용 가능하다 나는 우리 프로젝트의 사용자가 많아졌으면 좋겠다는 큰 꿈을 가지고 더 고급기능을 가지고 확장성이 좋은 PostgreSQL을 선택했다. 그리고 실무에서도 많이 사용한다고 하니 한번쯤은 사용해 보고 싶었다. 프리티어 기간이 지나면, 비용을 지불하면서 RDS를 사용해야 한다. 보통 Amazo..
2023.10.30
AWS
no image
[AWS] EC2 인스턴스 생성하기 (2023 ver.)
AWS EC2 인스턴스를 생성하는 방법에 대해 알아보도록 하자. (2023년 10월 기준 AWS 에서 생성하는 방법이므로 나중에 UI 가 바뀌어 있을 수도 있습니다. ) STEP 1. EC2 인스턴스 생성하기 1. 지역 확인하기 처음 로그인 했을 때는 분명 지역이 아시아 태평양(서울)이었는데, 콘솔에서 EC2 인스턴스를 클릭하고 들어가면 버지니아 북부로 설정되어 있는 경우가 있습니다. 지역이 서울로 되어 있는 지 먼저 확인해 봅시다. 이를 미처 확인하지 모르고 만들어서 처음부터 다시한 경험이.. 2. 인스턴스 생성 버튼 클릭 3. 인스턴스 이름 및 태그 설정 인스턴스 이름을 설정해준다. 그리고 태그 설정은 위 사진에서 추가 태그 추가를 누르면 설정할 수 있다. - 🤔 태그란? 웹 콘솔에서 표기될 태그이다..
2023.10.24
AWS
320x100
728x90

1. S3 버킷 생성하기  

 

- 이름 : sample-lambda-image-resize

- 설정 : 기본값 

 

 

 

 

원하는 버킷 이름을 설정하고 아래 설정은 모두 기본값으로 둔 채, 버킷을 생성한다. 

 

 

 

2. CloudFront 생성하기

 

CloudFront 에서 좌측 네비게이션 바에서 원본 엑세스를 클릭한다. 

 

 

 

 

제어 설정 생성을 누른 다음, 이름과 설명을 입력한 후 생성을 클릭한다.

 

 

- 이름 : s3-lambda-edge-image-resize

- 설정 : 기본

 

 

 

 

 

3. CloudFront 배포하기 

 

좌측 탭에서 배포를 눌러서 배포 생성을 클릭한다.

 

 

 

원본 도메인에서 아까 만든 S3를 선택한다.

 

 

 

 

 

 

원본 엑세스 설정은 공개에서 원본 액세스 제어 설정(권장)으로 바꿔서 선택한다. 

 

 

 

 

 

 

방화벽은 다음과 같이 보안 보호 비활성화로 선택한다. 

 

 

 

 

 

 

4. S3 버킷 정책 수정하기 

 

 

위에서 배포를 하고 나면 상단에 다음과 같이 경고가 뜬다. 

 

 

 

S3 버킷 정책을 본격적으로 수정해보자

 

그전에, cloudfront 배포에서 원본을 선택한 다음, 내 원본을 클릭 후 편집을 누른다.

 

 

 

 

아래로 내려가서 정책 복사를 눌러준다. 

 

 

 

 

 

이제 다시 S3 버킷 권한으로 이동해보자.

 

위에서 s3 버킷 권한으로 이동을 클릭하면 다음과 같은 화면이 보인다. 

 

 

 

 

 

편집을 눌러서 아까 복사한 정책을 붙여넣기로 넣어준다.

 

 

 

 

 

변경 사항 저장 클릭.

 

 

5. S3에 이미지 업로드하기 

 

 

이제 S3에 이미지를 업로드 해 준다.

업로드 하면 다음과 같이 나타난다. 

 

 

 

사진을 눌러서 

 

 

 

 

객체 url 에 들어가보면 다음과 같이 AccessDenied 가 뜨면 성공이다. 

 

 

 

 

 

 

6.  CloudFront 도메인에서 이미지 잘 뜨는 지 확인하기

 

 

 

 

이제 다시 CloudFront 가서 배포 도메인을 복사한 뒤, 내 이미지 사진을 확인해본다. 

 

 

 

이미지가 잘 뜬다. 성공!

 

 

7. CloudFront 캐시 정책 생성하기 

 

 

cloudfront에서 정책을 눌러서 사용자 정의 정책을 생성해준다. 

 

 

 

 

이름과 설명을 넣어준다. 

 

 

 

 

 

캐시 키 설정에서 쿼리 문자열은 모두로 바꾸어 준다. 
이렇게 하면, 나중에 q w h t 이렇게 따로 키 설정을 안해주어도 된다.

 

 

 

 

 

그리고 생성 클릭.

 

 

 

8.  CloudFront 원본 요청 정책 생성 

 

 

아까는 캐시 정책을 생성했다면, 바로 옆 탭을 눌러서 원본 요청 정책을 생성한다. 

 

 

 

 

이름과 설명을 넣은 뒤, 아까와 동일하게 쿼리 문자열을 모두로 설정한다. 

 

 

 

 

 

 

9.  CloudFront 동작 편집 

 

 

배포에서 동작을 클릭한 뒤, 편집을 눌러준다. 

 

 

 

 

 

아까 설정한 캐시 및 원본 정책을 선택해 준다.  (사용자 정의에 있는 것 선택) 

 

 

 

 

 

 

아래 처럼 알맞게 선택 되었는 지 확인 

 

 

 

 

 

10. IAM 권한 설정하기 

 

 

IAM 에서 역할을 눌러 역할 만들기를 클릭한다. 

 

 

 

 

신뢰할 수 있는 엔터티 유형은 AWS 서비스로,

사용 사례는 Lambda를 클릭한다. 

 

 

 

 

 

 

검색창에 AWSLambdaExecute를 검색한 뒤, 선택한다. 

 

 

 

 

 

 

 

 

권한이 잘 들어갔는 지 확인 한 다음,

 

 

 

 

역할 생성을 눌러준다.

 

 

 

11.  IAM 역할 신뢰 정책 편집하기 

 

 

 

엣지를 수행하기 위해서는 "edgelambda.amazonaws.com" 역할도 있어야 한다. 

신뢰 정책 편집을 눌러 추가해준다. 

 

 

{
   "Version": "2012-10-17",
   "Statement": [
      {
         "Effect": "Allow",
         "Principal": {
            "Service": [
               "lambda.amazonaws.com",
               "edgelambda.amazonaws.com"
            ]
         },
         "Action": "sts:AssumeRole"
      }
   ]
}

 

 

 

12. 람다 함수 만들기

 

 

 

중요한 것은 버지니아 북부 지역에서 생성한다는 것이다.  람다 엣지는 버지니아 북부에서 배포해야지만 작동한다. 

그리고 node 로 설정한다. 

 

 

 

 

 

13. 이미지 resize 코드 작성 및 람다에 올리기 

 

 

 

AWS 에서 제공하는 Cloud9을 IDE 를 사용할 수도 있지만,

나는 기존에 사용하던 Visual Studio Code 를 열어서 코드를 작성했다. 

 

 

 

그리고 해당 프로젝트에서 node를 설치에 주었다. 

 

아래는 내가 사용한 이미지 resize 코드이다. 

 

const sharp = require('sharp');
const aws = require('aws-sdk');

const s3 = new aws.S3({
  region: 'ap-northeast-2'
});
const BUCKET = 'S3_버킷_이름_대체';

exports.handler = async (event, _, callback) => {
  const { request, response } = event.Records[0].cf;

  /** 쿼리 설명
   * w : width
   * h : height
   * f : format
   * q : quality
   * t : type (contain, cover, fill, inside, outside)
   */
  const querystring = request.querystring;
  const searchParams = new URLSearchParams(querystring);

  if (!searchParams.get('w') && !searchParams.get('h')) {
    return callback(null, response);
  }

  const { uri } = request;
  const [, imageName, extension] = uri.match(/\/?(.*)\.(.*)/);

  const width = parseInt(searchParams.get('w'), 10);
  const height = parseInt(searchParams.get('h'), 10);
  const quality = parseInt(searchParams.get('q'), 10) || DEFAULT_QUALITY;
  const type = searchParams.get('t') || DEFAULT_TYPE;
  const f = searchParams.get('f');
  const format = (f === 'jpg' ? 'jpeg' : f) || extension;

  try {
    const s3Object = await getS3Object(s3, BUCKET, imageName, extension);
    const resizedImage = await resizeImage(s3Object, width, height, format, type, quality);

    response.status = 200;
    response.body = resizedImage.toString('base64');
    response.bodyEncoding = 'base64';
    response.headers['content-type'] = [
      {
        key: 'Content-Type',
        value: `image/${format}`
      }
    ];
    response.headers['cache-control'] = [{ key: 'cache-control', value: 'max-age=31536000' }];
    return callback(null, response);

  } catch (error) {
    return callback(error);
  }
};

const DEFAULT_QUALITY = 80;
const DEFAULT_TYPE = 'contain';

async function getS3Object(s3, bucket, imageName, extension) {
  try {
    const s3Object = await s3.getObject({
      Bucket: bucket,
      Key: decodeURI(imageName + '.' + extension)
    }).promise();

    return s3Object;
  } catch (error) {
    console.log('s3.getObject error: ', error);
    throw new Error(error);
  }
}

async function resizeImage(s3Object, width, height, format, type, quality) {
  try {
    const resizedImage = await sharp(s3Object.Body)
      .resize(width, height, { fit: type })
      .toFormat(format, {
        quality
      })
      .toBuffer();

    return resizedImage;
  } catch (error) {
    console.log('resizeImage error: ', error);
    throw new Error(error);
  }
}

 

 

이제 프로젝트를 압축해서 람다에 올리면 된다. 

 

 

 

 

 

14. CloudFront 트리거 추가하기 

 

 

이제 해당 람다 함수에 CloudFront 트리거를 추가한다. 

 

 

 

그리고 Deploy to Lambda@Edge 를 클릭한다. 

 

 

 

 

 

- distribution : 기존에 Cloudfront 에 배포한 것을 선택 

- Cache behavior : 본인이 설정한 S3 이미지 경로

- CloudFront event : Origin response 로 설정 

 

 

 

이렇게 설정한 뒤 배포를 눌러준다. 

 

 

 

배포를 하면 이렇게 버전이 생긴다. 나는 4번의 수정, 배포를 거쳐서 네 개의 버젼이 있다. 

 

 

 

 

15. 배포된 이미지 확인하기 

 


이제 본인의 CloudFront 배포 도메인을 통해서 확인해보자 

 

 

 

https://배포_도메인_이름t/images/105.png?w=29&h=60&t=outside

https://배포_도메인_이름t/images/105.png?w=118&h=244&t=outside

 

 

원하는 사이즈와 타입을 넣으면 그에 맞게 사진이 잘 변하는 것을 확인할 수 있다..! 

 

 

 

 

 

 

 

 

이렇게 CloudFront 를 활용하면 S3에 가진 원본 이미지 하나로도 각 요청에 맞는 사이즈 이미지를 전달 가능하다 

 

 

 

728x90
반응형
320x100
728x90

 

 

이제 AWS 에서 제공해주는 관리형 서비스인 RDS(Relational Database Service)를 생성해 보겠습니다.

 

 

 

✅ RDS란?

  • AWS에서 지원하는 클라우드기반 관계형 데이터베이스
  • 하드웨어 프로비저닝, 데이터베이스 설정, 패치 및 백업과 같이 잦은 운영 작업을 자동화하여
    개발자는 개발에만 집중하도록 지원하는 서비스
  • 조정 가능한 용량을 지원하여, 예상치 못한 양의 데이터가 쌓여도 비용만 추가하면 쭉 사용 가능하다

 

 

 

나는 우리 프로젝트의 사용자가 많아졌으면 좋겠다는 큰 꿈을 가지고

더 고급기능을 가지고 확장성이 좋은 PostgreSQL을 선택했다.

 

그리고 실무에서도 많이 사용한다고 하니 한번쯤은 사용해 보고 싶었다. 

 

 

 

 

 

프리티어 기간이 지나면, 비용을 지불하면서 RDS를 사용해야 한다. 

보통 Amazon Aurora(Mysql과 PostgreSQL 을 클라우드 기반에 맞게 재구성한 데이터 베이스) 로 많이 교체한다.

 

하지만 Aurora는 프리티어 대상이 아니고, 최저 비용이 10만원대 이기 때문에 

 

처음 시작할때는 MySQL, MariaDB, PostgreSQL 중에서 선택하는 것을 추천한다. 

 

 

 


 

이제 본격적으로 RDS 인스턴스를 생성해 보겠다. 

 

 

1. RDS 생성에 들어가서 PostgreSQL 을 선택한다.

 

밑에 나오는 데이터 베이스 엔진 버전은 기본 값으로 두었다. 

 

 


 

2. 프리티어 템플릿 선택하기 

 

 

프리티어로 사용하기 위해서는 프리티어 템플릿을 사용하자 

 

 


 

3. DB 인스턴스와 마스터 사용자 설정

 

 

 

 

 

DB 이름과 마스터 사용자 이름을 설정한다.

AWS 자습서에는 아래 예시처럼 이름을 설정해 놓았다. DB에는 하이픈, 이름에는 언더바를 사용하는 듯 하다. 

tutorial-db-instance

tutorial_user

 

Auto generate a password(암호 자동 생성) 옵션은 끈 상태로 둔다. 

 

그리고 암호 입력

 

실제 데이터 베이스에 접근하려면 여기서 설정한 사용자 정보로 접근하므로 사용자 이름과 비밀번호는 따로 적어두자

 

 

 


 

4. 인스턴스 구성 및 스토리지

 

 

 

이때는 기본값인 db.t3.micro 로 유지해 놓는다. 

 

 

 

스토리지도 20GB 기본 값으로 둔다. 

이때, 스토리지 자동 조정을 클릭하면, 활성화가 되어 있는 것을 볼 수 있다. 이를 체크 해제해주자.

안그러면 과금이 발생할지도 모른다!!!

 

 

 


 

 

5.  EC2 연결하기 

 

 

 

앞서 생성한 EC2 인스턴스를 RDS에 연결할 것이다. EC2 컴퓨팅 리소스에 연결을 선택하자 

 

그후 인스턴스를 선택하면 되는 데, 생성한 것이 있으면 자동적으로 밑에 뜰 것이다. 해당 것을 클릭하면 된다.

만약 안뜬다면, EC2와 RDS를 생성한 지역이 동일한지 살펴보자..! 

EC2는 서울에 있는데 RDS는 다른지역에서 생성했으면, 서울에서 생성한 EC2는 보이지 않는다..

 

 

 

+ 추가) 

테스트를 위해서 퍼블릭 엑세스 기능을 활성화 하고 싶다면 다음과 같이 설정하면 된다. 

 

 

이후 보안 그룹에서 지정된 IP 만 접근하도록 막을 예정이다. 

 

 

그리고 보안 그룹도 새로 생성해준다. 

 

포트 번호도 기억해두자..!

 


 

 

6.  데이터 베이스 인증 

 

 

 

위에 설정한 암호로 인증할 것이다. 기본 설정 그대로 암호 인증을 선택한다. 

 


 

7. 모니터링 

 

 

 

모니터링도 혹시나 과금이 될지도 모르니 선택을 해제했다. 

 


 

8. 추가 구성

 

 

추가 구성을 눌러서, 데이터 베이스 이름을 작성한다. 

그리고 백업 기능도 체크 해제!! 스냅샷 생성 또한 과금 발생 우려도 있으며 DB 메모리도 많이 차지하게 된다. 

 

 

그 아래는 기본 설정으로 둔 뒤, 데이터 베이스 생성을 클릭한다. 

 

 

 

 

콘솔로 다시 가면 생성된 것을 볼 수 있다. 

 


 

 

RDS 파라미터 설정하기 

 

 

1. 왼쪽 탭에서 파라미터 그룹 클릭


 

2. 파라미터 그룹 생성을 클릭하여 새로운 그룹을 만든다. 

 

 

 


 

3.  엔진 버전 설정하기 

 

 

생성한 PostgreSQL 엔진과 같은 버전을 맞춰야 한다. 

15.3 버전이므로 15를 선택한다.  

 

 

그 다음, 파라미터 이름과 설명을 설정하고 만들기를 누른다. 

 

 

 

4. 서울 시간으로 설정하기 

 

파라미터 수정에 들어가서 편집을 누르고 timezone 을 검색한다음, UTC+9 를 입력한다. 

 

 

다른 블로그 글을 보다보면, Mysql 로 설정한 경우 Character Set 을 utf8mb4 로 변경해 주는 것을 볼 수 있다. 

하지만 postgresql은 그럴 필요가 없다. 

 

utf8mb4 는 표준 인코딩 방식이 아니며 MySQL 의 UTF-8 이 3 byte만 지원하는 문제를 해결하기 위한 땜질 처방입니다.
PostgreSQL 이나 Oracle, MS-SQL 등을 사용한다면 이런 문제를 고민할 필요가 없습니다

 


 

5. 최대 연결 변경하기 

 

 

좀 더 넉넉한 값으로 최대 연결을 증가시켜준다. 

 

 


 

6. 수정한 파라미터 규칙 적용하기 

 

 

이제 새로 만든 파라미터 규칙을 내가 생성한 RDS에 적용할 것이다. 

RDS 에 들어가서 내가 만든 DB를 선택한 뒤 수정을 눌러준다. 

 

 

 

그 다음 추가 구성을 누른다. 

default 로 되어 있는 것을 내가 새롭게 만든 파라미터 그룹으로 바꿔서 설정한다. 

 

 

 

 

그 다음 즉시 적용을 눌러 DB 인스턴스를 수정한다. 

 

 

 


 

7. 내 PC에서 RDS 접속해보기 

 

 

로컬 PC에서  RDS로 접근하기 위해서 RDS의 보안 그룹에 내 PC의 IP를 추가해야한다. 

 

 

1. RDS 세부 정보 페이지에서 보안그룹 항목 클릭 및 인바운드 규칙 편집 

 

 

 

2. ec2 보안그룹 추가

 

 

이렇게 하면 EC2와 RDS 간에 접근이 가능하다. 

 

 

 

 

 

다음 글에서는 Datagrip 을 사용하여 AWS의 RDS를 접근하는 것을 해 보겠다. 

728x90
반응형
320x100
728x90

 

 

AWS EC2 인스턴스를 생성하는 방법에 대해 알아보도록 하자. 

(2023년 10월 기준 AWS 에서 생성하는 방법이므로 나중에 UI 가 바뀌어 있을 수도 있습니다. )

 

 

 

STEP 1. EC2 인스턴스 생성하기 

 

 

1. 지역 확인하기

 

처음 로그인 했을 때는 분명 지역이 아시아 태평양(서울)이었는데, 콘솔에서 EC2 인스턴스를 클릭하고 들어가면

버지니아 북부로 설정되어 있는 경우가 있습니다. 

지역이 서울로 되어 있는 지 먼저 확인해 봅시다. 

이를 미처 확인하지 모르고 만들어서 처음부터 다시한 경험이.. 

 

 


 

2. 인스턴스 생성 버튼 클릭

 

 

 

 


 

 

3. 인스턴스 이름 및 태그 설정 

 

 

인스턴스 이름을 설정해준다. 

그리고 태그 설정은 위 사진에서 추가 태그 추가를 누르면 설정할 수 있다. 

 

 

- 🤔 태그란?

 

웹 콘솔에서 표기될 태그이다. 해당 인스턴스를 표현하는 여러 이름으로 사용될 수 있다. 

나는 하나의 인스턴스를 사용할 예정이지만, 

만약 여러 인스턴스가 있는 경우, 이를 태그별로 구분하면 검색이나 그룹 짓기가 편할 것이다. 

 

 

추가 태그 추가를 누르면 다음과 같이 뜬다.

 

기본 값은 위와 같다. 

Name 태그 안에 내가 설정한 이름 값이 들어가 있는 것이다. 

 

키 부분에 원하는 태그를 작성하고, 값에 인스턴스 이름을 넣으면 된다. (태그가 같은 것끼리 그룹화하여 쉽게 구분 가능) 

 

 

 


 

 

4. OS 선택하기 

 

 

여러 글들을 보면 주로 기본값인 Amazon Linux로 설정하거나 Ubuntu로 설정하는 듯 하다. 

그래서 이 둘의 차이점 장단점을 찾아 보았다. 

 

 

 

Amazon Linux:

  • AWS에 최적화되어 있으며 통합되어 있다.
  • AWS 환경에서 최적의 성능을 발휘 -> AWS의 각종 서비스와 상성이 좋다.
  • Amazon Machine Image(AMI)로 제공되어 인스턴스를 빠르게 시작 가능하다.
  • AWS에서 자동 업데이트 및 패치 관리를 지원함.
  • Amazon 독자적인 개발 리포지토리를 사용하여 yum 이 매우 빠르다 

 

 

Ubuntu:

  • Ubuntu는 더 범용적인 운영 체제이며, AWS 외의 환경에서도 사용 가능하다.
  • 다양한 릴리스 및 패키지를 지원하며, 원하는 버전을 선택 가능.
  • 큰 커뮤니티와 개발자 지원을 받아 다양한 문제 해결 및 도움말을 얻을 수 있다.

 

 

Ubuntu 설정 환경에서 자료들이 더 많고,

yum 명령어보다 apt 명령어가 더 익숙하여 Ubuntu를 선택했다는 경우를 종종 보았다. 

 

 

하지만 나는 Amazon Linux를 선택하기로 결정.

AWS에서 관리해주고 지원받기 쉬운 것으로 선택했다. 딱히 특정 버전의 우분투 환경이 필요한 것이 아니기도 하고..

 

 

또 중요한 것, 프리 티어 안에서 지원 가능한 os 인지 꼭 살펴보자 

 

 


 

5. 인스턴스 유형 선택 

 

 

요금제를 선택하는 것이다. 

 

 

프리 티어에서 사용가능한 t2.micro 를 선택한다. 

t2 외에도 t3가 존재하며, 이들을 T 시리즈라고 부른다. 

 

 

t2.micro 이외 프리 티어 사용이 아니면 아마 요금이 부과될 것이다.. 그래서 기본 설정으로 두는 것을 추천한다. 

 

 

이 T 시리즈들은 크레딧이라는 일종의 CPU를 사용할 수 있는 포인트 개념이 있다. 

인스턴스 크기에 따라 정해진 비율로 CPU 크레딧을 계속 받게 되며,

사용하지 않을 때는 크레딧을 축적하고, 사용할 때 이 것들을 쓴다. 

 

 

정해진 사양보다 더 높은 트래픽이 오면 크레딧을 적극 사용하다가, 크레딧이 모두 사용되면 더이상 EC2를 사용할 수 없다

 

 

 

 

자세한 것은 다음 링크 참고 

https://docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/burstable-credits-baseline-concepts.html

 

버스트 가능 성능 인스턴스에 대한 주요 개념 및 정의 - Amazon Elastic Compute Cloud

버스트 가능 성능 인스턴스에 대한 주요 개념 및 정의 기존 Amazon EC2 인스턴스 유형은 고정된 CPU 리소스를 제공하는 반면, 성능 순간 확장 가능 인스턴스는 기본 수준의 CPU 사용률을 제공하면서

docs.aws.amazon.com

 

 


 

 

6. 키페어 설정 

 

 

 

새 키 페어 생성을 누른다. 

 

 

 

 

이름을 설정한 뒤, 키 페어 생성을 누르면 pem 키가 다운된다. 

 

 

pem 키인스턴스에 접근하기 위해 필요한 비밀키이다. 

인스턴스는 지정된 pem 키(비밀키)와 매칭되는 공개키를 가지고 있기 때문에,

해당 생성된 pem 키 외에는 접근을 허용하지 않는다. 

 

 

마스터 키 이므로 유출 절대 XX 

잘 관리할 수 있는 디렉토리에 따로 보관해두자.

 

 


 

 

7. 네트워크 설정 

 

 

 

중요한 보안 그룹 설정이다. 

Firewall(방화벽) 에서 보안 그룹을 설정한다. 

 

 

 

 

 

이때, 보통 pem 키가 없으면 접속이 안된다고 전체 오픈(0.0.0.0/0)을 하는 경우가 많다. 

하지만 이는 매우 위험하다.

만약, 실수로 파일 공유 디렉토리나 깃허브에 pem 키가 노출되면 순간 서버에서 가상화폐가 채굴될 것이다..

 

 

 

그러므로, 지정된 IP 에서만 ssh 접속이 가능하도록 구성하는 것이 안전하다. 

일단 내 IP를 기본적으로 추가하고, 이후 다른 곳에서 접속할 때는 해당 장소의 IP를 다시 SSH 규칙에 추가하는 것이 안전하다.

 

 

나는 HTTPS, HTTP 트래픽도 모두 허용했다. 

 

 

 


 

 

7. 스토리지(EBS) 설정 

 

 

 

 

설정의 기본 값은(8GB) 이지만, 파란색 글씨를 읽어보면 30GB 까지 프리티어로 가능한 것을 볼 수 있다. 

나는 최대치인 30GB로 설정했다. 

 

 

하지만 유의할 것은, 볼륨을 확장시키는 것은 가능하지만 늘린 것을 축소시키는 것은 불가능하다고 한다. 

따라서 차차 늘려나갈 계획을 갖고 있다면 30보다 작은 것부터 설정하는 것을 추천한다. 

 

 

 

이후  인스턴스 생성을 누르면 정상적으로 실행되는 것을 볼 수 있다. 

 

 

 

 

 

 


 

 

 

STEP2. Elastic IP 할당하기

 

 

 

인스턴스 생성 시에 항상 새 IP를 할당하는데, 이때 같은 인스턴스를 중지하고 다시 시작할 때도 새 IP가 할당된다. 

즉, 요금을 아끼기 위해 잠깐 인스턴스를 중지하고 다시 시작하면 IP가 변경되는 것이다. 

그렇다면 매번 접속하는 IP가 변경되므로 매우 번거롭고 불편할 것이다. 

 

Elastic IP (탄력적 IP)는 IP가 매번 변경되지 않고 고정 IP를 갖게 하는 기능이다. 

따라서 고정 IP를 할당해보자. 

 

 

 

 

 

인스턴스 생성 후, 왼쪽 사이드 바에서 네트워크 및 보안 탭 안에 탄력적 IP가 보일 것이다. 이를 클릭하자

 

 

 

 

 

탄력적 IP 주소 할당을 클릭한다. 

 

 

 

 

 

그리고 할당을 클릭하면 탄력적 IP가 발급된다. 

 

 

 

 

그리고 작업에서 탄력적 IP 주소 연결을 클릭한다. 

 

 

 

 

 

 

그 후, 인스턴스 탭프라이빗 IP 주소를 탭하면 각각 밑에 내가 생성한 인스턴스 목록내 IP 주소가 뜰 것이다.

각각을 선택해주고 연결을 눌러준다. 

 

 

 

그리고 인스턴스 탭에 가서 만들어진 탄력적 IP 가 잘 연결되어 있는 지 본다. 

새로고침을 하고 봐야 잘 연결된 것이 보인다. 

 

 

 

 

 

 

방금 생성한 Elastic IP생성하고 EC2 서버에 연결하지 않으면 비용이 발생한다. 

 

따라서 생성한 Elastic IP는 무조건 EC2에 바로 연결해야 하며,

인스턴스를 삭제한 경우 반드시 이 탄력적 IP 삭제 해야한다!! 

 

 

 

 

안그러면 비용이 청구된다...

 

 

 

 

 

 

AWS 서비스를 사용할 때, 관련 항목들을 꼼꼼히 읽어보고 하길 추천한다

특히나 요금제 부분.. 뭣도 모른채로 권장사항 그대로 냅두고 많은 비용이 청구됐다ㅜㅜ

다행히 환불 받았지만.. 

 

 

 

728x90
반응형