글

lamda와 cloudwatch를 이용한 개발계 시스템 주중에만 작동 하도록 하기

목표: 개발계 시스템 주중 업무시간에만 작동하도록 자동화 한다. 아래 대로 진행하면 해당 인스턴스 시작, 정지를 자동화 할 수 있다. 1. lambda 설정 2. cloudwatch rule 설정 3. trigger 등록 1. lambda 설정 *stop server code(node.js) var AWS = require('aws-sdk'); exports.handler = function(event, context) {  var ec2 = new AWS.EC2({region: 'EC2 region'});  ec2.stopInstances({InstanceIds : ['EC2 instance ID'] },function (err, data) {  if (err) console.log(err, err.stack); // an error occurred  else console.log(data); // successful response  context.done(err,data);  }); }; *start server code(node.js) var AWS = require('aws-sdk'); exports.handler = function(event, context) {  var ec2 = new AWS.EC2({region: 'EC2 region'});  ec2.startInstances({InstanceIds : ['EC2 instance ID'] },function (err, data) {  if (err) console.log(err, err.stack); // an error occurred  else console.log(data); // successful response  context.done(err,data);  }); }; *role policy { "Versio...

AWS를 이용한 Serverless 환경 구축 3 - AWS API Gateway를 통해 기존 DynamoDB 접근

이미지
Lambda와 DynamoDB를 연결한 상태에서 외부에서 접근하여 쓰기 및 읽기를 할 수 있도록 AWS API Gateway를 추가 해보자. 이번에 해 볼 것은 API 생성 및 설정이다. API 설정(GET, POST) 1. API Gateway를 생성한다. 2. OK 버튼 클릭 후 "New API" 선택, API name 기입, 생성 한다. 3. Resource 항목의 Actions를 pull-down하여 Create Resource를 선택한다. Get, Post를 위한 각각 Resource를 만든다. 4. 각 Resource 아래 "Create Method" 통해 GET, POST를 생성함.(v 표 클릭해서 완성) 5. GET, POST method를 클릭하여 세부설정을 해 준다. 각각 DynamoDB에 GET, POST 한 Lambda 함수를 지역과 이름을 지정해 준다. 6. GET method를 선택하고 오른쪽에 있는 Method Execution에서 Method Request를 선택한다. "URL Query String Parameters"에 "id"를 추가 해 준다. 7. Method Execution에서 Integration Request를 선택한다. 하단의 "Body Mapping Templates"을 펼 친후 Content-Type에 "application/json"을 추가 한다. 아래 소스를 붙여 넣어 준다. #set($inputRoot = $input.path('$')) { "id": "$input.params('id')" } 8. Method Execution의 첫 화면으로 돌아 가서 "Test'를 클릭한다. 9. Query String "id"에  전 화...

AWS를 이용한 Serverless 환경 구축 2 - Lambda로 DynamoDB 쓰고 읽기

이미지
지난 번에 Lamda로 hello_world만 찍기만 하여 demo의 성격 이었다면 이번은 실제로 DynamoDB에 쓰고 읽기를 해보자. 순서는 아래와 같다. DynamoDB table 생성 후 IAM 권한 추가(Access DynamoDB) Lambda 함수의 쓰기, 읽기를 만들 것이다. DynamoDB table 생성 1. "Create table"을 선택한다.   2. "Table name", "Primary key"에 값을 입력한 후 "Create"를 클릭한다.(예 Table name: Page, Primary key: id) 3. DynamoDB table이 간단하게 생성 되었다. IAM DynamoDB 접근권한 추가 기존 Role에는 DynamoDB 접근권한이 없으므로 권한을 추가해야 한다. 1. 기존에 사용하던 " lambda_basic_execution" Role에 Jason을 추가 해 주면 된다.("Statement"[]안에 추가) { "Sid": "Stmt1428341300017", "Action": [ "dynamodb:DeleteItem", "dynamodb:GetItem", "dynamodb:PutItem", "dynamodb:Query", "dynamodb:Scan", "dynamodb:UpdateItem" ], "Effect": "Allow", "Resource": "*" } Lambda 쓰기 함수 만들기 이번에는 L...

AWS를 이용한 Serverless 환경 구축 1 - Lambda 서비스 하기& S3를 이용한 자동배포

이미지
S3에 코드 파일(.zip)이 업로드 되면 자동으로 AWS Lambda에 배포되는 환경을 만들어 보자. 필요한 AWS 서비스 S3 - 코드 업로드를 위한 bucket Lambda 2개 - code upload 과 실행하기 위한 함수 IAM - S3 Access와 lambda 코드 갱신 Role 설정 S3버켓생성 제일 먼저 S3를 만들어 준다. 1. S3 버켓 만들기 적당한 이름의 S3를 만들어 준다. S3 만드는 화면은 생략하겠다. 진짜로 어렵지 않다. 다만 지금 만드는 서비스를 위해 Lambda와 같은 지역에서 만들어야 작동 한다. 2. 그리고 "hellow_world"를 찍는 .js파일을 만든 후 해당파일 .zip파일로 만들고 그 파일을 S3에 업로드 한다. 예) bucket명: codetest      zip파일명: code.zip ===> s3://codetest/code.zip Lambda 생성 먼저 실행 Lambda를 생성한다. (hellow_world를 찍는 lambda로 하자) 1. lambda 서버를 생성한다. 2. 과감하게 넘어간다. 3. 이름에 Hello_World를 넣고 "Code entry type" 은 S3에서 Upload를 선택한 후 "S3 link URL"은 위에서 만든 S3의 .zip 파일의 URL을 넣으면 된다. 그리고 아래 Handler에는  .zip 파일 안의 실행할 .js 파일의 이름을 넣는다.(예 code.js이면 code.handler) 상단 그림에서 Role 부분에  pull down 메뉴 중 Basic execution role을 선택하면 아래 하면으로 새탭이 열린다. 과감하게 Allow를 누르면 된다. 그리고 상단 그림의 "Next"버튼을 누르면 된다. 이제 upload lambda를 구현해 보자. 1. lambda 서버를 생성한다. 첫번째와 동일하다. 2....

AWS Certificate Manager(ACM) ELB와 CloudFront에 적용하기

이미지
ACM ELB 적용 1. 필요한 ELB로 이동하여 하단의 "Listeners" 탭을 누르고 맨 아래 "Edit"를 누른다. 기존 것을 변경 하던지 상단의 "Add"버튼으로 포트를 추가 한 후 Https를 선택하면 된다.(VPC의 private에 위치한 instance라면 instance 포트는 80으로 해도 무방하다.) 그리고 SSL Certificate 항목의 "Change"를 누른다.  2. ACM을 선택 한 후 아래 인증받은 도메인을 선택 후 "Save" 하면 탑재 완료다. 3. 선택한 ACM을 "Save" 하면 최종 마무리이다. ACM CloudFront 적용(ACM은 반드시 US East (N. Virginia) 지역에서 생성해야 한다. http://docs.aws.amazon.com/acm/latest/userguide/acm-services.html ) 1. 운영 중인 CloudFront에 접근하여 Edit를 위해 Distribution Setting 부분으로 이동한다. Custom SSL Certificate의  Pull-down메뉴에서 생성한 ACM을 선택 후 하단의 "Edit"버튼을 클릭하면 된다. 배포 시간은 15분 정도 예상된다.

AWS Ceritificate Manger 이용방법

이미지
간편하게 SSL 서비스를 이용할 수 있는 방법으로 AWS Ceritficate Managemer(이하 ACM) 서비스가 출시 되었다. Virginia 지역에서만 가능하던 것이 이제 전 지역에서 사용가능하다. 기존 SSL 을 이용하는 것과 비교하여 매우 쉬워졌다. https://aws.amazon.com/ko/blogs/aws/new-aws-certificate-manager-deploy-ssltls-based-apps-on-aws/ ACM은 기존 SSL인증 업체에 해당 키 값을 받아 Amazon 서비스에 등록하고 매년 갱신 하는 불편함을 제거 해 주는 서비스이다. 기존 SSL 인증업체 같은 경우 보안사고가 발생하였을때, 보험금을 통해 해당 사고를 보상 해주지만 ACM은 무료이니 보상이라는 개념은 없어 보인다. 적용하고 보니 최상위 인증기관Certificate Authorities(CA)은 Starfiled Service이다. https://en.wikipedia.org/wiki/Starfield_Technologies 소유주가 GoDaddy이다. CA업체에 관한 정보는 이러하다. https://en.wikipedia.org/wiki/Certificate_authority 결론적으로 판단은 본인이 하겠지만 믿고 써도 된다고 본다. 본격적으로추가하는 방법은 매우 간단하다. 1. ACM 페이지를 방문하여 시작한다.(Get started) - ELB에 추가하려면 해당 지역에서 추가 해야 하는 것으로 알고 있다. 2. Domain입력 지점에 필요한 domain명을 입력하고(www.example.com) Review and request를 누르면 거의 완료다. 여러개 추가 하려고 하면 "Add another name to this certificate" 나 *(wildcard)를 이용한다. 3. confirm하면 생성은 끝났다.. 4. validation을 위해 e-mail 인증을 한다. 해당 e-mail을 찾아...

Gitlab CI에 grunt를 통한 테스트 환경 구현(Nodejs)

Runner를 통해 진행 해야 하므로 .gitlab-ci.yml을 작성한다. 작성 예시는 아래와 같다.(Docker 환경) 1. NodeJS를 설치한다. ( https://nodejs.org/en/download/package-manager/#debian-and-ubuntu-based-linux-distributions ) 참고 2. Grunt 설치 npm install -g grunt-cli http://gruntjs.com/getting-started  참고 3. 추가 패키지들을 설치 해 준다. 4. grunt 실행 gurnt test .gitlab-ci.yml 내용 before_script : - curl -sL https://deb.nodesource.com/setup_4.x | bash - - apt-get install -y nodejs - npm install -g grunt-cli - npm install job : script : " grunt test"

Gitlab CI 설정

이미지
-build 수행 프로젝트 페이지로 이동하여 설정부분(Setting)의 build가 활성화 되지 않았으면 활성화 시킨다. repository 최상단에 .gitlab-ci.yml을 작성하여 올린다.(  http://doc.gitlab.com/ee/ci/yaml/README.html ) README 파일과 같은 위치 .gitlab-ci.yml 작성법은  https://gitlab.com/help/ci/yaml/README.md#script  참고한다. add, commit 후 push하면 자동으로 build가 진행된다. -Runner 설치 build를 진행 하려면 Runner를 설치해야한다. ( https://gitlab.com/gitlab-org/gitlab-ci-multi-runner/blob/master/docs/install/linux-repository.md ) 참고하면 된다. Runner 설치 시  URL과 token은 해당 프로젝트의 Runner 화면을 확인한다.(아래 빨간 선 부분) 위 화면까지 했으면 Specific Runner를 생성하였을 것이다. Shared Runner를 생성하려면  https://gitlab.com/help/ci/runners/README.md  을 참고한다. (해당 내용을 보면 Shared와 Specific Runner의 차이를 알 수 있다. 원하는 것을 선택하여 사용하면 된다.) Runner가 설치 되었으면 Build에서 pending 상태의 작업들이 성공 되어 있는 것을 알 수 있다. 구미에 맞게 .gitlab-ci.yml을 작성하여 CI를 진행하면 된다.

Gitlab 6.6.5에서 8.7.0으로 업그레이드 하기

6.6.5버전에서 8.7.0으로 바로 업그레이드 하면 오류가 발생하여 부득하게 7.10.4 omni버전으로 업그레이드 후 8.7.0버전으로 업그레이드 하였다. *이전(Migration) - 이전이 필요 없을 경우 바로 7.10.4 omni버전으로 업그레이드 후 8.7.0 버전으로 업그레이드 하면 된다. 1. 백업 /home/git/gitlab$ sudo -u git -H bundle exec rake RAILS_ENV=production gitlab:backup:create (backing up at old gitlab server, source compile version)  소스로 컴파일한 버전의 경우 위와 같이 백업 한다. omnibus 버전인 경우는  sudo gitlab-rake gitlab:backup:create 2. 복구 서버 사양은 2core 2G 이상의 RAM을 가지고 있어야 원활하게 작동한다.  (참고  http://doc.gitlab.com/ce/install/requirements.html ) 해당 서버가 마련 되었으면 아래 명령어를 이용하여 6.6.5버전을 설치한다.(Ubuntu에 설치) sudo apt-get install openssh-server sudo apt-get install postfix # sendmail or exim is also OK sudo dpkg -i gitlab-x.y.z.deb # this is the .deb you downloaded(6.6.5) sudo gitlab-ctl reconfigure 6.6.5버전은 https://about.gitlab.com/downloads/archives/ 경로를 통해 얻을 수 있다.(wget 혹은 다운로드 후 직접 서버에 업로드) 백업한 파일을 서버에 올린다.(e.g. /home/git/gitlab/tmp/backups/1461220799_gitlab_backu...

SSL Key 생성 후 AWS ELB에 적용하기

이미지
*SSL key 생성 openssl 을 통해 CA 키 생성 ( 자가키 ) http://ohgyun.com/429 을 참고 1. 먼저 인증 기관 (CA) 의 개인키를 생성한다 .     $ openssl genrsa -des3 -out server.key 1024 2. 서버 인증서 발급을 위한 요청 파일인 CSR을  생성한다     $ openssl req -new -days 365 -key server.key -out server.csr   *csr(certificate singing request ) - CA 에 보내 정식인증을 신청할 수 있다 . 정식인증하지 않은 경우 사설인증으로 처리되며 사설인증을 한 경우는 브라우저에서 첫 인증기관 검증은 하지 않고 두번째인 서버 public key 값을 전송 받는 것으로 확인 된다 . 입력값 (Common Name 은 접속 시 브라우저에서 도메인을 확인 하는 내용임 .) Country Name (2 letter code) [GB]:kr State or Province Name (full name) [Berkshire]:Seoul Locality Name (eg, city) [Newbury]:Seoul Organization Name (eg, company) [My Company Ltd]:Test Copr Organizational Unit Name (eg, section) []:supper Common Name (eg, your name or your server's hostname) []:mail.test.com Email Address []:admin@test.com 다음 내용은 “ 옵션 ”으로 꼭 입력 할 필요는 없다. 3. 자가 서명 인증서를 생성한다 .      $ openssl x509 -req -days 365 -in serv...

Talend에서 build 한 파일 shell에서 context 변수 설정하기

Talend Job Design 에서 적용한 context variable을 서버에  archive 파일로 전송 후 적용하는 방법 1. Talend에서 context variable을 만든다.  - 만들 때 tab 중 values as tree 부분에서 "v"표 체크 할 수 있는 부분에 표시 해 준다.(나중에  Run 혹은 Debug 시 변수 값을 입력할 수 있는 부분으로 생각된다. 값 이름도 없다.) 2. Run 혹은 Debug로 테스트 하거나 문제 없다고 하면 Job Design에서 오른쪽 버튼을 클릭 후 build job을 수행하여 적당한 폴더에 넣어 둔다. 3. 서버에 업로드 한다. 4. 업로드한 archive 파일을 풀고 나서 .sh 파일의 수행 권한을 준다. 5. .sh 파일을 편집기로 열어 --context=Default 다음에 " --context_param 변수 명= $1" 을 넣어준다. (Talend에서 변수 값을 ParamA라고 했다면 --context_param ParamA=$1 하면 된다. 그리고 .sh 파일 실행 시에 변수를 추가하는 것으로 하면 간편하다. .sh ABC 이런 식...)

가습기 구매

여기저기 구매하려 조사하다 보니 소음이 가장 신경 쓰여 해당 업체에 전화 해보아 정리한 내용이 아래와 같더라.  1. LG- 제습용량 10L짜리가 36db 정도라고 함.  2. 위닉스- 제습용량이 15L이상인 최신형은 36db이고(1m 떨어져서 '약'으로 했을 경우를 측정 했다고 함) 그 아래 제습용량 제품은 더 시끄럽다함. 적은 용량 제습기는 구형 컴프레셔를 써서 그런 듯. 3. 위니아- 제습용량 11L 짜리가 31db에서 35db 라고 함. 여기도 1m 떨어져서 쟀다하고 최소치와 최대치를 알려줌. 통상 33db 된다함. 위니아 구매했는데, 33db가 생각만큼 조용하진 않음. 다른 것은 켜놓고 잠 못 잘듯함. 

인플레 발생하면 집값 뛴다고?

인플레이션과 집값의 관계를 설명한 기사입니다. 참고 하면 좋을 듯 합니다. -기사원문 http://land.naver.com/news/labColumnView.nhn?artcl_seq=91&lab_id=lab01 한국경제신문 부동산 투자 기사입니다. 위 기사와는 상대적으로 다른 의견입니다. 입지 좋고 분양가 할인…숨겨진 `알짜 미분양` 골라볼까 -기사원문 http://www.hankyung.com/news/app/newsview.php?aid=2010121315811&sid=0101&nid=&page=

부동산에 관한 상반된 기사

모건스탠리, 한국 부동산 투자 손뗀다 예전과 다르게 투자환경이 매우 어려워 졌나 봅니다. -기사 원문 http://realestate.daum.net/news/recent/main/MD20101214183319941.daum&nil_profile=estatetop&nil_newstop=news1list 또 다른 의견도 있습니다. 아파트 거래가 살아났다..가격도 '들썩' -기사 원문 http://realestate.daum.net/news/recent/main/MD20101215110230897.daum

연금저축펀드, 보험에 관한 기사

*연금저축펀드기사 1.  http://www.fnnews.com/view?ra=Sent0301m_View&corp=fnnews&arcid=0922145135&cDateYear=2010&cDateMonth=11&cDateDay=15 2.  http://www.naeil.com/News/economy/ViewNews.asp?nnum=583409&sid=E&tid=6 3.  http://news.mk.co.kr/v2/view.php?sc=40200003&cm=MONEY%20&%20RICHES&year=2010&no=632551&selFlag=&relatedcode=&wonNo=&sID=402 4.  http://www.segye.com/Articles/NEWS/ECONOMY/Article.asp?aid=20101121001687&subctg1=&subctg2= *연금저축보험기사 5.  http://fntimes.com/sub/list_view.asp?num=0220101108008 3

연금저축상품의 종류와 효과

1. 소득공제효과 ( 연금저축상품에 연간 300 만원 적립 시 ) 과세표준① 세율 ( 주민세포함 ) ② 납부세액 ( ① x ②) ③ 실제 환급 금액 8,800 만원 초과 38.5%  1,749 만원 초과  1,155,000 원  4,600 만원 초과 ~8,800 만원 이하 26.4%  640 만원 초과 ~1,749 만원 이하  792,000 원  1,200 만원 초과 ~4,600 만원 이하 16.5%  79 만원 초과 ~640 만원 이하  495,000 원  1,200 만원 이하 6.6%  79 만원 이하  198,000 원 *2011 년 ( 내년 ) 부터 300 만원 한도에서 400 만원 한도로 100 만원 올라 감 ( 추가가입 가능함 . 환급액이 더 늘어남 ) 2. 연금저축 상품 선택방법 금융회사 증권사 생명보험사 화재보험사 선택포인트 - 투자수익극대화 - 수수료저렴 - 비 정기납입 가능 - 원금보장 - 종신연금수령 - 복리이자 - 원금보장 - 사업비저렴 ( 생명보험대비 ) - 복리이자 알아야 할 사항 - 원금보장 되지 않음 - 변동금리 - 변동금리 공통 각 금융회사간 이전 가능 ( 연금저축펀드 ↔ 연금저축보험 ) 55 세 이후 5 년 이상 연금으로 수령 하지 않을 시 해지세 부과 3. 연금수령방법     - 55 세부터 5 년간 ( 혹은 10 년간 ) 연금저축으로 연금을 수령하고    60 세 ( 혹은 65 세 ) 부터 공무원 ( 혹은 국민 ) 연금을 수령하면 55 세부터 연금을 수령 가능 *추가 정보 사항  - 55세 이전에 해지를 하거나...

연말정산시 소득공제 가능한 금융상품은?

작년(2009년)까지만 하더라도 장기주택마련상품과 장기주식형펀드가 가능하였지만 올해는 혜택이 사라져서 아래와 같은 상품만 가능합니다. 1. 연금저축상품(납입액 전액이 300만원 한도에서 소득공제된다. 2011년 부터는 400만원으로 증액됨) 2. 보장성보험(자동차 혹은 종신, 상해보험등 개인보험에서 년간 100만원까지 소득공제됨) * 소득공제란 ?  - 연말정산 시 소득(근로, 사업 등)의 총금액에서 해당 금액만큼 소득액을 빼 과표(최종 세금을 내야할 소득금액)를 낮추는 것 * 연말정산이란 ?   - 매달 국가가 미리 징수한 근로소득세 일년 합계 금액이 내야 할 실제 세금보다 적은지 많은지 정산 , 조정하는 행위 미리 걷은 세금이 많으면 ( 세금공제 상품 혹은 공제되는 항목이 많으면 ) 돌려 ( 환급 ) 주고 , 그렇지 않고 적으면 ( 세금공제 상품 혹은 공제되는 항목이 적으면 ) 내야 ( 추징 ) 함