개발 14

[AWS] AWS 계정 생성 시 해야할 일

신규 AWS 계정을 생성하는 경우 계정의 용도를 떠나 무조건 해야하는 일들이 3가지가 있다. 보안과 내 호주머니속의 작고 소중한 돈을 지키기 위해서..! 1. Admin 계정 생성하기 IAM으로 이동해서, Root 권한을 가진 유저가 아닌 Admin 권한을 가진 계정을 생성한다. Root 계정을 사용하다가 Root 권한을 가진 유저가 탈취될 경우 그 계정은 더 이상 사용하지 못하는 상황이 발생하기 때문에 당신의 비즈니스가 한 순간에 무너지는 리스크를 지게 된다. 그러므로 꼭 Admin 권한을 가진 계정을 신규 생성하여 사용하자. IAM 서비스로 이동해서 사용자 그룹으로 이동한 후 사용자를 생성한다. 사용자를 생성하기 위한 여러 정보를 입력해주고 그룹 생성을 누른 뒤 AdministratorAccess ..

개발/개발꿀팁 2023.12.21

Linux screen

리눅스에서 긴 백그라운드 작업을 실행하는게 귀찮을 때가 있다. 리눅스에서 작업을 하다보면, 아주 큰 파일을 복사하거나 배치작업을 수행하거나 등등 시간이 오래 걸리는 작업을 수행하는 경우가 있다. 이런 경우에, 네트워크 문제가 발생하여 세션 연결이 끊기거나 작업중인 것을 깜빡하고 터미널을 닫는 경우 아주 곤란해지곤 한다. 물론 nohub이라는 아주 좋은 프로세스를 백그라운드로 실행하는 방법이 있다. 하지만 nohub도 몇가지 불편한 점이 있는데. 1. nohub의 경우 프로세스 자체가 백그라운드로 돌기 때문에 프로세스의 표준 출력이나 표준 에러를 잘 기록하도록 설정해주어야 한다. 2. 작업을 중단하려는 경우 프로세스를 죽여야한다. 프로세스를 죽이는 명령어를 자주 까먹곤 한다. 3. 작업의 중간에 입력을 ..

개발/Linux 2023.12.14

[AWS] Elasticbeanstalk 소스코드 위치

소스코드 위치 : /var/app/current AWS Elasticbeanstalk을 사용할 때, 빌드는 성공해서 소스코드는 배포가 되었는데 자꾸 502 에러가 발생하는 경우가 있다. 502 에러를 만나는 경우 대부분의 경우에 elasticbeanstalk에 의해 생성된 ec2 인스턴스에서 웹서버가 동작중이지 않은 경우가 많다. 그렇다면 왜 서버가 동작중이지 않을까? 뭐 여러가지 이유가 있겠지만 내가 겪었던 문제는 1. 권한이 없어 로그를 저장하는 폴더를 생성하지 못하고 죽는다. 2. 시작 명령어가 잘못되서 /src/main.js를 실행해야하는데 /main.js만 주구장창 실행중이다. 3. 80포트를 점유하지 못하고 죽는다. 등등이 있었다. 이 문제는 직접 인스턴스에 접속해서 서버를 실행해보면 쉽게 파..

개발/개발꿀팁 2023.12.12

Q Learning과 DQN

목차 1. Q learning이란? 2. Q러닝을 이용한 미로찾기 3. Q러닝을 이용한 Cartpole 4. DQN을 이용한 Cartpole 1. Q learning이란? Q러닝이란? 모델이 없는 Model-Free상태에서 학습하는 강화학습으로 유한한 마르코프 결정과정(FMDP)에서 특정 Agent가 특정 상황에서 특정 행동을 할 수 있는 최적의 Policy를 배우는 것. 현재 상태로부터 시작해 모든 연속적인 단계들을 거쳤을 때 전체 보상의 예측값을 극대화하는 것을 목표로 한다. 특정 State에서 행하는 Action의 가치를 평가하고, 그 가치를 극대화 하는 쪽으로 행동하는 것이라고 볼 수 있겠습니다. 위 식에서 감마는 Discount Factor인데, 0~1사이로 현재로부터 멀리 떨어진 보상의 가치가..

개발 2023.12.09

AWS Amplify build 문제 : cannot find module 'semver/functions/cmp'

sopt.org 공식 홈페이지 frontend 배포시 aws amplify 서비스를 사용했다. vercel과 같은 원클릭 배포 서비스인 것 같은데 ci/cd 부터 https 인증서 적용 + cloudfront 서비스까지 클릭만으로 배포가 되니 참 편하다. elasticbeanstalk과 같은 서비스라고 보면 될 것 같다. 첫 어플리케이션을 만들고 첫 배포는 정상적으로 진행이 된다. 잘 되나 싶었는데 두번째 빌드부터 빌드 단계에서 문제가 생겼다. 왜그런고,,, 프로비저닝 OK 프론트엔드 빌드 단계에서 Error: [BABEL]: Cannot find module 'semver/functions/cmp' 해당 모듈을 찾을 수 없다. 아니 첫번째 빌드할땐 됐잖아요. 왜 두번째 빌드는 안되죠? 곰곰히 생각하고,..

개발 2022.12.06

crontab으로 서버 health check 시스템 만들기

아무래도 서버 개발을 하다 보면 이 서버가 잘 돌아가고 있는지 모니터링 하는 시스템이 필요하다. 거창한 서비스 필요 없이 crontab과 curl 을 사용하면 쉽게 간단한 모니터링 시스템을 만들 수 있다. 하지만 정말 동작하는지 아닌지만 확인할 수 있다. .sh 파일을 하나 만들어준다. vi health\_check.sh #!/bin/bash nowdate=$(date +"%Y-%m-%d %H:%M:%S") url="검사하고 싶은 url" status_code=$(curl -LI ${url} -o /dev/null -w '%{http_code}\n' -s) if [ $status_code != '200' ] then curl -X POST -H 'Content-type..

개발 2022.11.30

Terraform 액세스 키 환경변수 등록

Terraform 은 HashCorp에서 오픈소스로 개발중인 IaC 도구이다. Terraform을 사용해 AWS 인프라를 구축하기 위해 여러 셋팅을 해줘야한다. 바로 Access Key를 발급받아서 등록을 해줘야하는 것 . IAM 사용자가 없다면 관리자 권한으로 사용자를 만들어주자. IAM > 사용자 > 보안자격 증명 > 액세스 키 만들기 생성된 액세스 키는 공개적으로 노출이 될 경우 보안에 큰 영향을 미칠 수 있기 때문에 환경변수로 등록을 해준다. 노출이 된다면 악의적인 사용자의 공격으로 AWS 비용이 2억이 청구될수도,,,, https://www.clien.net/service/board/park/17225662 펌) AWS 해킹 당해서 사용료 3억이 넘게 나왔습니다. : 클리앙 원문입니다 >http..

개발 2022.09.08

Nestjs e2e 테스트 세팅

nestjs는 테스트 도구로 jest를 사용한다. npm run test:e2e 또는 yarn run test:e2e를 사용해 test를 진행할 수 있다. 근데 테스트를 진행해보면 다음 오류가 뜬다. Cannot find module 'src/comments/schemas/comment.schema' from '../src/cocktails/cocktails.module.ts' 즉 모듈을 찾을 수 없다는 것. 찾아보니 Nestjs에서 사용하는 파일 경로와 Jest에서 사용하는 경로가 서로 다른 것 같다. 이를 해결하기 위해 test 디렉토리의 jest-e2e.json에 다음 속성을 추가한다. "moduleNameMapper": { "^src/(.*)$": "/../src/$1" }, jest에서 e2e테..

개발 2022.08.31