본문 바로가기
반응형

IT/Serverless9

서버리스 api gateway 도메인 적용 목표시스템 AWS api gateway 에 도메인을 적용해서 사용하자 사용기술 serverless framework : 서버리스 개발 프레임워크 serverless-domain-manager : serverless framework 의 도메인 관리 플러그인 api gateway : AWS API gateway 서비스 lambda : AWS 서버리스 서비스 도메인적용방법 Step 1. 도메인 관리 플러그인 설치 (serverless-domain-manager) Step 2. 서버리스 프레임워크의 환경설정에 도메인 설정 추가 Step 3. 커스텀 도메인 생성 Step 4. 서버리스 배포 Step 5. 커스텀 도메인 삭제 Step 1. 도메인 관리 플러그인 설치 (serverless-domain-manager.. 2019. 8. 14.
서버리스 사이트 스크린샷 찍기 (예전방식) 초기에 서버리스 개발방법 배우면서 참고했던 내용입니다 ​방식은 phantomjs 사용해서 URL 변수로 받는 도메인에 접근해서 스크린 샷을 찍고 사이즈 별로 썸네일을 만드는 서버리스 함수 입니다 https://svdgraaf.nl/2016/09/28/Serverless-Screenshot-Service-With-Lambda.html 최근에는 Phantomjs 가 puppeteer 프로젝트 때문에 문 닫았고 썸네일 같은 경우는 미리 만들지 말고 람다 엣지를 이용해서 sharp 모듈로 고객의 웹브라우저에 맞게 webp 형태의 이미지로 제공하는 게 효율적입니다 cloud-front 가 알아서 캐쉬하게 만들면 썸네일을 미리 안만들고도 좋은 성능을 낼 수 있습니다 ​ 요즘 사용하는 방식은 나중에 포스팅 할 예정입.. 2019. 8. 12.
서버리스 웹브라우저 한글폰트 적용하기 문제점 한중일 3개 국가는 프로그래밍 할 때 항상 폰트가 문제 됩니다 puppeteer 을 사용하면서 크로미움을 쓰는데 한글이 지원되지 않습니다 (로컬 윈도우에서 실행시에 로컬PC에 이미 한글폰트가 깔려있어서 한글이 제대로 나옵니다) ​서버리스로 함수 배포하면 한글폰트가 없는 크로미움 웹브라우저가 배포 되기 때문에 한국어 사이트 접속시 한글이 다 깨집니다 한글폰트적용법 한글폰트를 적용하는 두가지 방법이 있습니다 첫번째. 웹폰트를 적용한다 두번째. 크로미움 브라우저를 만들고 한글폰트까지 묶어서 배포 한다 ​ 첫번째 방법. 웹폰트로 한글폰트 적용하기 Step 1. 한글폰트를 다운받기 Step 2. S3 에 한글폰트를 업로드 합니다 Step 3. chrome-aws-lambda 모듈을 사용해서 S3 에 올린 .. 2019. 8. 12.
서버리스 네이버 검색어 가져오기 (serverless) 목표시스템 네이버의 급상승검색어에 접속하여 전체연령대의 실시간 랭킹 검색어를 가져와서 메신저로 공유하는 시스템을 만든다 (두레이) ​ 결과물 네이버 급상승검색어 검색어내용을 두레이 메신저로 전달 ​ 개발환경 설정하기 서버리스 개발환경 설정은 이전의 포스팅 참고해주세요 package.json node 8.10 을 사용하는 이유는 chrome-aws-lambda 가 아직 node 8.10 버전까지만 지원하기 때문입니다 node 버전 제한이 빠져있지만 node 8.10 버전을 사용해주세요 ​ 운영시 사용하는 모듈 · puppeteer : 구글의 크롬 핸들링 모듈 · chrome-aws-lambda : 람다가 사용할 크로미움 브라우저 모듈 (puppeteer 은 웹브라우저가 반드시 필요하다) · request .. 2019. 8. 9.
서버리스 AWS IAM Key 수명관리 목표시스템 AWS 계정관리에서 Access key 를 90일만 사용하도록 권장하고 있다 보안 때문이라도 90일 넘는 Access key 는 삭제하고 다시 새로운 Access key 를 만들어서 사용해야 한다 하지만, 사용자들은 Cli 로만 접근해서 사용한다면 90일 지났는지 알 수 없다 (AWS 콘솔로 들어가야지 확인가능하다) ​ 그래서 람다로 스케쥴을 걸어서 매일 Access key 가 90일이 지난 사용자들이 있는 지 확인해서 90일이 지난 Access key 를 가지오 있는 사용자들에게 메시지를 보내서 알 수 있게 하려고 한다 ​ 사용하는기술 Javascript : 그냥 요즘 javascript 를 많이 쓰고 있어서 serverless framework : 서버리스 프레임워크 중에서 제일 맘에 들어.. 2019. 8. 7.
DynamoDB : Attribute name is a reserved keyword 해결방법 에러 원인 DynamoDB TABLE 의 컬럼명과 DynamoDB 의 예약어가 충돌이 나서 발생하는 에러입니다 해결방법 TABLE 의 컬럼명을 사용할 때 (select 나 update 를 할 때) ExpressionAttributeNames 을 사용합니다 TABLE 컬럼명으로 Data 를 썼더니 사용할 때 마다 reserved keyword 라고 에러가 발생해서 SET 부분에서 Data 를 바로 쓰지 않고 ExpressionAttributeNames 으로 #push_data 라고 변경해서 사용하고 ExpressionAttributeNames 에서 #push_data 는 Data 컬럼이야 라고 지정해주니 잘 되네요 근본적으로는 예약어를 피해서 컬럼명을 만드는 게 좋겠지만 https://docs.aws.am.. 2019. 8. 1.
DeletionPolicy 옵션 사용시 주의사항 편의에 의해서 DynamoDB 를 서버리스 프레임워크의 yml 파일로 정의해서 cloudformation 으로 생성하는데 문제는 서버리스 프레임워크로 deploy 후에 생각없이 remove 하면 (remove 시에 DynamoDB TABLE 은 deletionPolicy 를 retain 으로 설정해서 삭제되지 않는다) 다시 deploy 할 때 에러 납니다 재배포시에 TABLE 설정 부분을 serverless.yml 파일에서 주석처리 해서 실행하는게 맞을 것 같다 2019. 7. 31.
CloudFormation / Serverless Framework 삭제시 리소스 유지 CloudFormation 삭제시 리소스 유지 AWS CloudFormation 으로 테이블 만들고 인프라 만들고 하는데 CloudFormation 을 삭제하면 한번에 싹 지워지기 때문에 좋기는 한데 다른 CloudFormation 과 공유해서 사용하는 자원들의 경우 삭제 하면 안될 경우가 있습니다 그 때를 위해서 STACK 삭제시에도 유지하는 DeletionPolicy 라는 옵션이 있네요 DeletionPolicy 옵션의 값은 3가지가 있습니다 [Retain] 옵션을 지정하면 스택 삭제 시 리소스가 유지됩니다 [Snapshot] 옵션을 지정하면 해당 리소스를 삭제하기 전에 리소스의 스냅샷을 생성합니다 참고: 이 옵션은 스냅샷을 지원하는 리소스에만 사용할 수 있습니다. [Delete] 옵션을 지정하면 스.. 2019. 7. 30.
네이버 블로그 파워링크 클릭 네이버 블로그의 파워링크를 클릭하는 프로그램 만들기 네이버 블로그를 운영하면 광고 수익을 위해서 애드포스트를 추가한다 애드포스트를 추가하면 아래와 같이 파워링크 광고 영역이 생긴다 (티스토리는 구글 애드센스를 광고 배너로 사용) 파워링크를 클릭하는 프로그램을 만드려고 한다 개발환경 Serverless Framework : serverless 로 AWS Lambda 배포할 수 있게 Nodejs : javascript 로 구현할 꺼라서 puppeteer : 크롬브라우저를 컨트롤 하려고 사용 chrome-aws-lambda : AWS Lambda 에 크롬브라우저를 용량을 줄여서 올리기 위해서 사용 개발환경설정 Step 1. 프로그램 설치 nvm 으로 nodejs 를 설치 nvm install 10.16.0 n.. 2019. 7. 30.
반응형