본문 바로가기

개발/AWS20

Error: EISDIR: illegal operation on a directory, read 문제 이 블로그를 참고해서 VScode와 AWS EC2 SFTP로 연결하던중 발생한 에러 Error: EISDIR: illegal operation on a directory, read 해결 privateKeyPath 에서 .pem 을 빼먹어서 난 오류.. 사소한 실수였다 2020. 11. 6.
AWS Lambda 웹콘솔에서 함수 다운로드하기 문제 배포 프레임워크를 사용하지않고 웹 콘솔에서 작업하다보면 함수 용량이 커서 내용을 볼수없는 경우가있다. 해결 그럴때는 이렇게 해당함수 페이지로 접속해서 작업 > 함수내보내기 > 배포패키지 다운로드 를 클릭하면 ZIP 파일을 다운로드할수있다. 2020. 8. 17.
AWS Lambda와 RDS connection 관리 삽질 이글은 대부분이 링크로 되어있는, 삽질의 흐름을 작성한 글 입니다. Lambda + DynamoDB만 사용하다가, Lambda + RDS를 사용해보니 말로만 듣던 둘의 궁합이 별로 안좋다는것을 몸소 느끼게 되었다. DynamoDB와 다르게 RDS는 커넥션관리를 잘해줘야한다. 터지기 시작하는 에러 RDS(mysql)를 새로 도입한뒤 Lambda와 RDS를 연결하고 insert 테스트를 했는데 몇분지나지않아서 바로 에러가 터지기 시작했다. 에러내용은 too many connections 으로, max connection 이 가득 찼다는소리다 show variables like 'max_connections' 이 쿼리를 입력하면 RDS의 max_connections이 몇인지 알수있다 사용중인 RDS는 테스트용.. 2020. 6. 6.
AWS Lambda(node.js)로 Slack bot 구현하기 유저와 상호작용이 없고 주기적으로 서비스 상태를 보고하는 봇입니다. 일정 시간마다 서비스의 상태를 파악하고, 문제가 있다면 슬랙으로 알람메시지를 보내는 봇을 구현해봤습니다. 코드와 Lambda에 대한 설명은 자세하게 하지않았습니다. slack, node.js, AWS Lambda 기본 지식이 없다면 글 내용을 이해하기 어려울수있습니다. Slack API: Applications | Slack Your Apps Don't see an app you're looking for? Sign in to another workspace. api.slack.com 먼저 위 링크로 접속해서 slack 앱을 만들어야합니다 slack 로그인이 필요합니다. 로그인 되어있다면, 위같은 화면이 나옵니다. Create an AP.. 2020. 5. 17.
EC2 ssh 접속시 키 에러 문제 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: UNPROTECTED PRIVATE KEY FILE! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ Permissions 0666 for 'test.pem' are too open. It is required that your private key files are NOT accessible by others. This private key will be ignored. AWS EC2 에 ssh 로 접속하는데 위와같은 에러가 발생함. pem파일의 권한이 0666으로 너무 열려있다고한다 해결 chmod 600 p.. 2020. 4. 20.
DynamoDB Pagination 삽질 기록 Pagination을 해야할 일이 생겼다. 문제는 지금 사용중인 DB가 DynamoDB 라는것. 오래전에 RDBMS를 이용해서 게시판을 구현해본적은있지만 DynamoDB같은 nosql로 구현해본적은 없었다 결론부터 말하자면, 포기했다. 애초에 DynamoDB로 게시판같은 Pagination을 하려는게 문제(?)였다 삽질 정리내용 우선 기획자님의 요구사항은 개인메모장같은 기능이었다. 페이지마다 5개씩 글을 볼수있어야했다 일단 쿼리 params에 아래의 옵션을 추가해야한다 ScanIndexForward: false Limit: 5 ScanIndexForward는 오름차순, 내림차순을 정하는 옵션이다 기본적으로 DDB는 정렬 순서가 오름차순인데 게시판처럼 최근글일수록 위로 오게하려면 내림차순으로 바꿔야한다. .. 2020. 3. 12.
aws lambda 콘솔창 코드 정렬 단축키 가끔 모듈하나도 필요없는 단순한 함수는 웹콘솔창에서 작성하기도하는데, 코드 정렬키를 몰라서 짜증났었다. 코드 정렬 단축키는 맥북기준으로 command + shift + B 윈도우는 아마 control + shitf + B 일듯 단축키는 오른쪽 상단에 톱니바퀴 모양을누르고 KEYBINGINGS 에 가면 볼수있다 . 2020. 2. 20.
AWS Lambda + RDS 연결하기 삽질.. RDS Mysql 8.0 과 Lambda를 연결해야될일이 생겼다 람다도 서버리스라고 뭐 특별할거없이 그냥 node.js랑 mysql 연결하듯이 하면된다 사실 공부하던시절에는 php를 썼지 node.js 를 써본적이 없어서 처음해보는것이었다..ㅋ 단순하게 예제 몇개보고 그냥 mysql 모듈설치후, 람다에 올려서 테스트를 해보려고했는데 connection.connect 함수자체가 실행이안된다.. 왜안되는지 겁나 삽질했다 .. 근데 이렇게 (event)=> 앞에 async를 제거하니까 잘된다.. 띠용 알고보니 Mysql 모듈에선 async await 이안된다고.. ㅋㅋ Mysql2 모듈설치해서 바로 해결했다. 2020. 2. 17.
AWS Lambda 시간관련 에러 호출되면 호출된 시간 기준으로 가장 최근 데이터를 꺼내오는 람다 함수를 새로 만들었다. 잘 동작하는 거 같았고, 뭔가 버그가 생길 정도로 복잡한 함수도 아니었다 그런데! 해당 데이터는 시간이 지날수록 점점 커져야 되는데, 일정시간 후에 실행해봐도 계속 같은 값을 반환하는 현상이 발생했다. DB를 확인해보니 DB에 저장된 값은 정상적으로 계속 커지고 있었다. 잠깐 멍 때리다가 cloudwatch에 있는 로그를 보니, 함수가 호출된 시간으로 값을 뽑아 오는 게 아니라 특정 시간의 값만 계속 꺼내오고 있었다. 아마도 currentTime을 exports.handler = async(event) => { } 밖에 선언해서, 람다가 새로 호출되어도, 이전에 저장해 두고 잇던 currentTime을 계속 갖다 쓰는.. 2020. 2. 11.
DynamoDB TTL 설정하기 DynamoDB에서 기본제공해주는 TTL(Time To Live)은 데이터를 자동으로 삭제해주는 기능이다 TTL을 epoch 시간 값으로 저장하면 그 시간이 지났을때, 48시간내에 해당데이터가 삭제된다 직접 해보면 이해가 더 잘된다. 먼저 test라는 테이블을 만들자 아직 데이터는 하나도 넣지않은상태이다 그다음 테이블 세부정보화면에 TTL(Time to live) 속성 에서 TTL 관리를 누른다 TTL 속성칸에 본인이 TTL을 걸고싶은 속성명을 입력하면된다 나는 deleteTime 을 입력했다 TTL이 적용됐다 이제 항목으로가서 항목만들기를 누르고 데이터를 넣어보자 TTL은 epoch 시간 값을 넣어야한다 나는 이렇게 데이터를 저장했다. deleteTime 속성에 (TTL) 이 자동으로 붙었다 TTL 속.. 2019. 12. 5.