클라우드 Cloud 15

AWS ECS(Elastic Container Service)를 활용한 HTTP 서버 구축 실습 예시

ECS란?"Amazon Elastic Container Service(Amazon ECS)는 컨테이너 애플리케이션을 쉽게 배포, 관리 및 확대할 수 있도록 도와주는 완전 관리형 컨테이너 오케스트레이션 서비스"(출처: Amazon Elastic Container Service란 무엇입니까?) 쿠버네티스Kubernetes 같은 컨테이너 오케스트레이션을 제공해주되 AWS가 완전 관리해줘서 좀 더 쉽고 편하게 쓸 수 있습니다.   ECS 서비스 화면 들어가기검색창에 ecs를 입력하면 Elastic Container Service가 맨 위에 나옵니다. 해당 서비스를 클릭합니다. 아래 같은 화면이 보입니다. 클러스터 생성실습을 위한 것이니 고민하지 않고 클러스터 이름에 ecs-cluster 라고 입력합니다. 인프라..

Q. AWS EC2에 설치한 MongoDB를 하루에 한번씩 백업해서 S3에 저장하는 방법은?

A. MongoDB 백업 코드를 작성하고, crontab에 추가해서 날마다 특정시간에 해당 코드가 EC2에서 실행하도록 하면 된다. 아래 글 3개를 차례대로 학습하면 쉽게 구현할 수 있다! Q. MongoDB 데이터베이스 백업Dump과 복원Restore 하는 방법은? Q. Python으로 AWS S3에서 파일 업로드 다운로드 하는 방법은? Q. cron이란? ubuntu에서 crontab 사용법은? S3 버킷 만들기 먼저 S3 버킷을 하나 만든다. 이름은 전세계에서 겹치면 안 되므로, 계정을 붙이든 겹치지 않도록 만들면 된다. 내 경우 taptorestart-mongodb-backup이라고 만들었다. ec2에 접속 mongodb가 설치된 ec2에 접속한다. 또는 다른 ec2에 접속해도 작동한다. 내 경우..

클라우드를 사용한다면 반드시 해야할 일은? MFA! 2차인증 설정하기!

반드시 Mulfi-factor authentication을 해야 한다. 번역하면 다중 요소 인증이다. 간단히 말하면 로그인 + 알파로 OTP든 문자든 2가지 이상으로 인증하는 것을 말한다. 왜 필요한가? 해킹 당해서 해커가 당신의 계정으로 ec2 인스턴스를 막 생성해서 돌리기 시작하면 엄청난 금액이 과금된다. 순식간에 백만원 천만원이 과금될 수 있다. AWS AWS security_credential에 가서 Activate MFA를 하면 된다. 미리 구글 OTP를 전화기에 설치하자. 안드로이드 Playstore나 애플 앱스토어에서 검색해서 앱을 받자. 주의사항은 전화기를 잃어버리면 AWS 접속 불가 상태가 될 수 있다. 전화기를 잃어버리지 않고 초기화해도 마찬가지다. AWS에 전화해서 본인임을 입증해야 ..

클라우드 Cloud 2022.08.05

Q. Python으로 AWS S3에서 파일 업로드 다운로드 하는 방법은?

A. S3 버킷 추가 → S3 업로드 다운로드 권한을 가진 그룹 추가 → S3 사용자 추가해서 Access key ID, Secret access key 얻기 → 업로드 구현 → 다운로드 구현 순으로 진행해보면 된다. S3 버킷 생성하기 먼저 버킷을 생성하자. 버킷 생성하기로 가자. 버킷 이름은 전세계에서 유일해야 한다. 회사이름이나 본인 이름을 접두사로 하거나 본인 도메인을 접두사로 하면 중복을 피할 수 있다. 테스트를 위한 것이니 내 경우 'taptorestart-test-s3'라고 만들었다. S3 업로드 다운로드 권한을 가진 그룹과 사용자 추가하기 우선 그룹을 추가한다. 그룹 명은 S3FullAccess Create group을 눌러서 그룹을 추가한다. 이번에는 사용자를 추가한다. Set permi..

Q. AWS EC2에 외부 접속 가능하게 하려면?

A. AWS EC2 inbound rules와 우분투라면 서버 방화벽 설정을 동시에 해줘야 한다. Inbound rules란? 인바운드, 가상 서버로 들어오는 규칙을 뜻한다. 생성한 EC2의 Security 탭을 누르면 아래와 같은 정보가 나타난다. 인바운드 규칙은 포트는 22번 프로토콜은 TCP만 소스는 0.0.0.0/0이니 아무데나 열어놓은 거다. 현재는 아무 ip주소에서 .pem파일만 있으면 22번 포트로 ssh 접속이 가능한 상태인 거다. Security groups 밑의 파란색 글씨를 누르면 보안 설정을 변경할 수 있다. 아웃바운드 규칙은 포트는 All, 프로토콜도 ALL, 대상도 0.0.0.0/0 아무데나로 되어 있는 걸 확인할 수 있다. 아웃바운드는 해당 서버에서 나가는 규칙이다. 보안 설정..

Q. AWS EC2에 Elastic IP 연결하는 방법은?

Elastic IP는 무엇인가? 고정 IP라고 생각하면 된다. Elastic IP는 왜 연결해야 하는가? 연결하지 않으면 IP주소가 변경될 수 있기 때문이다. 웹서버라면? 어느날 갑자기 IP 주소가 바뀌어서 접속이 안 되는 상황이 발생할 수 있다. Elastic IP 연결하기 연결방법은 어렵지 않다. 우선 EC2를 만들어야 한다. 이전 글 Q. AWS EC2란? EC2 만들고 .pem 파일로 접속하는 방법은?을 참고하자. EC2 Dashboard 대시보드를 보면 Elastic IPs가 보인다. 그걸 누르자. Allocate Elastic IP address란 버튼이 보인다. 그걸 누른다. Allocate을 누른다! 이제 할당 받았다. 할당 받으면 아래처럼 된다. 해당 주소가 Public IP주소다. 위에..

Q. AWS EC2에 MongoDB 설치하고 외부 접속 가능하게 만드는 방법은?

EC2에 MongoDB를 설치해보자. NoSQL로 유명한 MongoDB 연습삼아 무료로 쓰고 싶다면 일단 t2.micro EC2에 설치해서 써볼 수 있다. 사전 작업 아래 글을 보고 그대로 따라하자. 접속까지는 성공해야 한다. Q. AWS EC2란? EC2 만들고 .pem 파일로 접속하는 방법은? MongoDB 설치 잘 나온 튜토리얼이 있다. Install MongoDB Community Edition 일단 접속한 상태에서 아래 순서대로 실행하자. Ubuntu20.04 기준으로 다른 버전의 경우에는 위 튜토리얼을 보고 참고하자. $ wget -qO - https://www.mongodb.org/static/pgp/server-5.0.asc | sudo apt-key add - $ echo "deb [ a..

Q. AWS EC2란? EC2 만들고 .pem 파일로 접속하는 방법은?

EC2란? 보통 가상서버라고 부르는 그거다. 전체 명칭은 Elastic Compute Cloud이다. Elastic Compute Cloud를 줄여서 ECC -> C가 2개라서 EC2가 된 거 같다. 서울 리전에 인스턴스를 추가하자 서울 리전 EC2 홈으로 가자. instances를 누른다. ec2 인스턴스 새로 추가 launch instances를 누른다. name에 원하는대로 입력한다. 우분투로 설치할 거라 ubuntu-server로 입력했다. free-tier라고 적혀 있는 걸 고르자. 우분투 20.04 LTS를 골랐다. LTS는 Long Term Service의 줄임말이다. LTS가 붙어 있으면 길게 보안 업데이트 등을 해준다. 기존 security group이 없다면 Create security..

아마존웹서비스AWS와 구글 클라우드Google Cloud 무료 프로그램 비교

아마존웹서비스의 점유율이 높은 건 바로 이 무료 프로그램 덕분인 거 같다. 2022년 7월 3일 기준 아마존웹서비스 프리 티어 전체 보기 자세히 봐야 한다. 언제나 무료가 있고 12개월 무료가 있다. 가장 많이 쓰는 EC2, S3, RDS의 경우 12개월 무료다. EC2 750시간 하루 24시간 * 31일 = 744시간이므로 EC2 하나는 12개월동안 무료로 쓸 수 있다. 12개월 지나자마자 돈이 나가기 시작한다. 계정 만든 날을 꼭 일정관리에 포함시켜 놓을 것! 구글 클라우드는 300$ 90일 무료 체험이다. 구글 클라우드 무료 프로그램 소개 페이지 무료 프로그램 기준 AWS가 훨씬 좋았다. 일단 1년이나 무료로 테스트할 수 있으니. 구글 클라우드 경우 90일은 금방 다가고 300$ 다 쓰기 쉽지 않았..

클라우드 Cloud 2022.07.03

.gcloudignore에 .gitignore가 포함되도록 하는 방법

구글 앱엔진에 배포할 때 쓸데 없는 파일이 너무 많이 올라갔다. .gitignore에 있는 내용을 다시 또 적자니 삽질처럼 느껴졌다. 이럴 때 .gcloudignore에 그냥 한줄만 추가하면 된다. #!include:.gitignore 물론 조심해야 한다. .gitignore git에서는 무시해야하지만 gcloud에는 반드시 올라가야할 파일도 있으니까.

구글 앱엔진Google appengine에서 python으로 cloud sql 접속시 sqlalchemy를 써야 하는 거 같다

그냥 pymysql로 접속했을 때 로컬에서는 잘 작동했다. 하지만 앱엔진에 올리고 나면 연결 오류가 났다. 1. 장고Django 내 settings.py에서 설정할 경우 정상 접속되었다. MYSQL_HOST: "/cloudsql/::" 로 해서 app.yaml에 추가했다. if os.getenv('GAE_APPLICATION', None): # Running on production App Engine, so connect to Google Cloud SQL using # the unix socket at /cloudsql/ DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'HOST': os.getenv('MYSQL_HOST'), 'US..

구글 앱 엔진 장고 Nginx 502 Bad gateway 뜨는 이유

구글 앱 엔진에 장고 앱을 배포했다. 사이트로 들어갔는데 "502 Bad gateway"가 떴다. 여기서 알 수 있는 건 구글 앱 엔진은 nginx를 쓴다는 점이다. 이유는 main.py 설정 오류였다. from mysite.wsgi import application # App Engine by default looks for a main.py file at the root of the app # directory with a WSGI-compatible object called app. # This file imports the WSGI-compatible object of your Django app, # application from mysite/wsgi.py and renames it app so..

파이썬 플라스크flask 로컬에서는 이미지가 뜨는데, 구글 앱엔진app engine에서 이미지가 안 뜨는 이유는?

A. 내 경우는 이미지 확장자 대소문자 때문이었다. 로컬에서 테스트할 때는 대소문자 구분 없이 잘 이미지가 나왔다. 이미지 경로에 파일 이름을 1.jpg로 적어도 1.JPG 파일을 잘 불러 왔다. 그래서 gcloud app deploy로 구글 앱엔진에 배포를 했더니 이미지가 뜨지 않았다. 원인이 무엇인가 이것저것 살펴보니 확장자 때문이었다. 파일 이름을 1.jpg로 소문자로 적은 경우 업로드한 파일 이름도 1.JPG가 아니라 1.jpg로 맞춰주니 정상 작동했다. 일관되게 소문자로 처리해야겠다.

Google firebase Firestore의 아쉬운 점, 검색

Firestore 장점 서버리스. 서버 없이 앱 개발도 가능하다. 실시간 동기화와 오프라인 모드 지원. 여러 기기에 앱을 사용해도 자동 동기화된다. Firestore는 NoSQL 데이터를 문서 컬렉션으로 저장한다. 참고. Firebase 실시간 데이터베이스와 Firebase Firestore 비교 실제 개발해봤을 때 아쉬운 점. 검색 검색이다. MySQL 같은 보통 DBMS에서 제공해주는 검색이 안 된다. 특히 Like 검색이 안 된다. "a%" a로 시작하는 "%a" a로 끝나는 "%a%" 가운데 a가 있는 등의 검색이 안 된다. 간단한 쿼리들만 가능하다. Firestore 문서 익혀보고 코드 익히고 다 개발했는데, 시작할 때는 like 검색도 될 줄 알았는데... 역시 문서를 꼼꼼이 봐야하는 거 같다..