목록DevOps/[AWS] (29)
민프

이전 포스팅에서는 CICD를 하지 않고 nestjs를 배포하는 것을 해보았습니다.https://minf.tistory.com/entry/AWSEC2-EC2%EC%97%90-Nestjs-ECR%EC%A0%81%EC%9A%A9%ED%95%B4%EB%B3%B4%EA%B8%B0#google_vignette [AWS][EC2] EC2 + Docker + ECR로 Nestjs 어플리케이션 배포하기 (feat. WARNING: The requested image's platform (linux/ar준비물 - Docker- nestjs Docker Image- IAM (AccessKey, Secret Accesskey)- ECR - EC2 과정- 로컬에서 Nestjs Docker image 생성- ECR에 PUSH- ..

준비물 - Docker- nestjs Docker Image- IAM (AccessKey, Secret Accesskey)- ECR - EC2 과정- 로컬에서 Nestjs Docker image 생성- ECR에 PUSH- EC2(ubuntu)에 적용 1. EC2(ubuntu) - Docker 설치 (SSH) sudo apt update -y sudo apt install -y docker.io sudo systemctl start docker sudo usermod -aG docker $USER 설치확인 docker --version2. EC2 - AWS CLI 설치순차적으로 진행curl "https://awscli.amazonaws.com/awscli-exe-linux-x8..

1. AWS의 구조AWS의 예시 구조를 보면 아래와 같은 구성이 되어있을 것 입니다.우리가 Github, Naver, Netflex를 이용할 때는 다양한 노드를 통해서 Public Internet을 이용해서 접근을 하게 됩니다. AWS 클라우드도 마찬가지 입니다. 이렇게 Public Internet을 이용해서 사용할 수 있는데 예외적인게 있습니다.그게바로 VPC입니다. VPC는 원칙적으로 Public Internet에서 접근이 불가능합니다.그래서 다른 AWS서비스들은 Public을 Endpoint로 접근을 하고 있습니다. 예를 들어서)EC2로 S3로 접근을 하려고 할때AWS내부에 있다고 하더라도 원칙적으로는 바로 접근이 불가능합니다.그럼 어떻게 되느냐?EC2 -> Internet Gateway -..

1. 사설 IP (Private IP)한정된 IP주소를 최대한 활용하기 위해 IP주소를 분할하고자 만든 개념IPv4기준으로 최대 IP갯수는 43억개인데, 요즘 인터넷을 사용하는 인구 대비 턱없이 부족하다.따라서 '사설망'을 구축한다.사설망사설망 내부에는 외부 인터넷 망으로 통신이 불가능한 사설 IP로 구성외부로 통신할 때는 통신 가능한 공인 IP로 나누어 사용보통 하나의 망에는 사설 IP를 부여받은 기기들과 NAT기능을 갖춘 Gateway로 구성참고로 IPv6 최대 IP의 개수는 V4의 48억개보다 많은 2^128개 이다. (2^96)배 더 많다. 2. NAT(Network Address Translation)사설 IP가 공용 IP가 통신할 수 있도록 주소를 변환해 주는 방법3가지 종류Dynamic N..

1. 왜 탄력적 IP가 필요할까?탄력적 IP는 AWS에서 제공하는 고정 된 IPv4 주소 입니다.EC2 인스턴스를 생성하면 자동으로 공용 IP가 할당되지만, 인스턴스를 재시작하게 되면 IP가 변경이 됩니다.이 경우, IP가 바뀌기 때문에 DNS 설정, 서버 접근 등에서 문제가 발생할 수 있습니다. 이 문제를 해결하기 위해서 탄력적 IP가 필요한 겁니다. 2. 적용하기2-1. 탄력적 IP 생성하기 2-2. 탄력적 IP 주소 연결하기적용하고싶은 인스턴스를 선택해서 '완료' 버튼을 누르면 적용이 완료된다. 2-3. 탄력적 IP 주소 연결 확인하기적용한 EC2 인스턴스에 접속하여 탄력적 IP 주소를 확인한다.

이전 포스팅에서는 S3 + CouldFront + MediaConvert를 연동해보았는데요 이번 포스팅에서는 이미지가 변환 전 S3에 넣기만 해도 알아서 MediaConvert가 될 수 있도록 해보려고 합니다. 1. Lambda Function Role 만들기 (MediaConvert Role, Lambda Role) - IAM -> Role -> Create Role - 사용 사례 : MediaConvert - 권한 추가 - 역할 이름 지정 후 생성 Role이 잘 생성된 것을 확인할 수 있습니다. 해당 Role은 Lambda에서 MediaConvert에 Job을 추가할 때 사용됩니다. - role_lambda_vod_execution_test 생성하기 다시 Role 생성하기를 눌러서 이번엔 서비스 또는..

이전 포스팅에서는 S3와 CloudFront를 연동하여서 동영상을 재생시키는 것을 해보았고, 이번 포스팅에서는 S3 + CloudFront + MediaConvert를 연동하여서 .MP4 -> HLS 형식으로 변환하고, 해상도(SD, HD, FHD) 파일들, Thumbnail까지 저장하고 재생까지 시키는 것을 해보겠습니다. 1. 변환 전(Input) S3 폴더 만들고 영상 올리기 - vod/mp4 폴더를 만들어줍니다. - 영상 올리기 2. Output S3에 출력 폴더만들기 - vod/hls 폴더 만들기 3. MediaConvert를 이용하여 MP4를 HLS로 변환하기 -Jop template 생성 - Ouput Group 설정 출력 그룹에서 추가를 누르고 HLS 형식을 누릅니다. HLS형식을 사용하면 ..

이번에 해볼 것은 관리자가 S3에 영상을 넣으면 그것을 MediaConvert를 통해서 내가 원하는 파일 형식과 해상도를 설정 후 변환 후 S3에 CloudFront를 연결하여서 Vod Streaming을 동작시키는 것 입니다. 1. 변환 전, 변환 후 S3 버킷 만들기 - 권한설정 (편의상 FullAccess) - Input(변환 전) 버킷 만들기 - Output(변환 후) 버킷 만들기 2. CloudFront 생성 및 연결 (URL 접근 설정) - 권한설정 (편의상 FullAccess) - 옵션 설정 기존 제어 설정값이 없으면 클릭해서 생성해줍니다. 3. 변환 후 (output) 버킷 정책 업데이트 - 버킷 정책 Ouput 버킷과 연결하고 생성을 누르면 아래와 같은 알림이 나오게 되는데 정책 복사를..

알림은 잘 도착하는데 봇에서 이런 오류 메세지를 보여주었다. stackOverflow에 검색해보았는데 https://stackoverflow.com/questions/56317962/message-notifications-produce-this-content-cant-be-displayed

람다 생성 함수 이름과 런타임 (각자에 맞게 알아서 설정)을 해주면 된다. 오른쪽 사진을 보면 람다가 생성 된 것을 확인할 수 있다. 람다 - 환경 변수 설정 환경 변수 HOOK_URL, SLACK_CHANNEL을 가져오는 방법은 아래 사진들을 참고하면 될 것 같다. 환경 변수를 넣고 등록하면 아래와 같이 URL와 채널 ID가 잘 등록된 것을 확인할 수 있다. Lambda Funtion 코드 작성 및 람다 실행 import boto3 import json import logging import os from base64 import b64decode from urllib.request import Request, urlopen from urllib.error import URLError, HTTPErro..