<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:cc="http://cyber.law.harvard.edu/rss/creativeCommonsRssModule.html">
    <channel>
        <title><![CDATA[Stories by JinKyou Son on Medium]]></title>
        <description><![CDATA[Stories by JinKyou Son on Medium]]></description>
        <link>https://medium.com/@maytree?source=rss-8a5a48a6fcff------2</link>
        <image>
            <url>https://cdn-images-1.medium.com/fit/c/150/150/0*y6qFnKKQmSIzgulN.</url>
            <title>Stories by JinKyou Son on Medium</title>
            <link>https://medium.com/@maytree?source=rss-8a5a48a6fcff------2</link>
        </image>
        <generator>Medium</generator>
        <lastBuildDate>Thu, 28 May 2026 09:18:21 GMT</lastBuildDate>
        <atom:link href="https://medium.com/@maytree/feed" rel="self" type="application/rss+xml"/>
        <webMaster><![CDATA[yourfriends@medium.com]]></webMaster>
        <atom:link href="http://medium.superfeedr.com" rel="hub"/>
        <item>
            <title><![CDATA[[AWS] AWS Lambda 로 Cron Job 돌리기]]></title>
            <link>https://medium.com/itus-project/aws-aws-lambda-%EB%A1%9C-cron-job-%EB%8F%8C%EB%A6%AC%EA%B8%B0-c1c8875dc288?source=rss-8a5a48a6fcff------2</link>
            <guid isPermaLink="false">https://medium.com/p/c1c8875dc288</guid>
            <category><![CDATA[aws]]></category>
            <category><![CDATA[aws-lambda]]></category>
            <dc:creator><![CDATA[JinKyou Son]]></dc:creator>
            <pubDate>Sun, 22 May 2016 13:36:52 GMT</pubDate>
            <atom:updated>2016-05-22T13:37:40.291Z</atom:updated>
            <content:encoded><![CDATA[<p><a href="https://www.facebook.com/cultrip"><strong>Cultrip</strong></a> 개발 중 (깨알 홍보) 매일 1시에 SMS 를 발송할 필요가 생겨서 고민하던 중에이번 AWS Summit 2016 — <a href="https://www.facebook.com/groups/aws.korea"><strong>AWS KRUG</strong></a> 세미나에서 김승연(Acuros)님이 강연해주신 “AWS Lambda를 통한 API Gateway를 이용한 초경량 REST 서비스 만들기”의 내용에서 도움을 받아 <a href="http://aws.amazon.com/ko/lambda/"><strong>Lambda</strong></a> 를 이용해 작업해보았다.<br>(사실 Rails 에서 cron job 돌리는게 자신 없어서…)</p><p>현재 Lambda 에서는 여러가지 event source 중 <strong>CloudWatch Events-Schedule</strong> 도 지원하여 주기적인 작업을 쉽게 만들어 돌릴 수 있다.</p><p>월 1백만건의 요청까지 무료이기 때문에 돈 부담도 없다.<br>(참조: <a href="https://aws.amazon.com/ko/lambda/pricing/">https://aws.amazon.com/ko/lambda/pricing/</a>)</p><p>결론부터 말하고 시작하자면 정말 쉽다.</p><h3>AWS Lambda function 생성</h3><p>먼저 AWS 에 로그인 하고 Lambda 서비스에 들어간다.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*AJwcN96mgJL6iwSxYvReQg.png" /><figcaption>Lambda 의 위용</figcaption></figure><p>[Get Started Now] 를 누르면 새 Lambda function 을 만들 수 있다.</p><h4>Step1: Select blueprint</h4><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*SGBY5IctGTOQH_H5aoQXgw.png" /></figure><p>이 단계에서는 여러가지 blueprint(sample 이라고 생각하시면 됩니다)를 가져다 쓸 수 있다.<br>하지만 지금은 간단한 기능만 수행할 것이므로 아래의 [Skip] 을 눌러 넘어간다.</p><h4>Step 2: Configure function</h4><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*v47b565JJ56sZz_g5BHpAA.png" /><figcaption>내 모니터 완전 길다!</figcaption></figure><p>여기서부터 실제 Lambda function 을 작성하고 여러가지 설정을 하게 된다.</p><ul><li>Name<br>Lambda function 의 이름.<br>여기서는 간단히 “Test” 라고 하겠다.</li><li>Runtime<br>Lambda function 에 사용될 언어 또는 플랫폼.<br>현재 Java 8, Node.js 0.10, Node.js 4.3, Python 2.7 을 지원한다.<br>여기서는 Python 2.7 을 선택하겠다.</li><li>Code entry type<br>코드를 어떻게 작성할지 인데, 여기서는 [Edit code inline] 을 선택해서 아래 코드 에디터에서 바로 코드를 작성해보겠다.<br>기본적으로 제공되는 라이브러리는 바로 import 해서 사용 가능하다.<br><em>print</em> 를 한 내용은 나중에 log 에서 확인할 수 있기 때문에 여기서는 <em>response.status, response.read()</em> 를 출력하였다.<br>* 외부 라이브러리를 사용하기 위해서는 코드와 라이브러리를 패키징해서 [Upload a .ZIP file] 또는 [Upload a file from Amazon S3] 를 선택해 올려야 한다.</li></ul><pre># reference: <a href="http://blog.awskr.org/step-by-step-api-gateway.html">http://blog.awskr.org/step-by-step-api-gateway.html</a></pre><pre>import httplib<br>import urllib</pre><pre>def lambda_handler(event, context):<br>  connection = httplib.HTTPSConnection(‘API_HOST’)<br>  connection.request(<br>    ‘API_METHOD’,<br>    ‘API_PATH’,<br>    urllib.urlencode({}), #params<br>    {} #header<br>  )<br>  response = connection.getresponse()<br>  print response.status<br>  print response.read()<br>  connection.close()</pre><ul><li>Handler<br>Lambda function 에서 호출될 {모듈이름.함수이름}.<br>Python 2.7 에서는 “lambda_function.lambda_handler” 로 설정되어있다.<br>그래서 위의 코드에서 함수 이름을 <em>lambda_handler</em> 로 했던 것이다.</li><li>Role<br>Lambda function 의 AWS Role.<br>“Create new role”-“* Basic execution role” 을 선택하면 IAM Management 페이지로 연결되어 새로운 role 을 만들 수 있다. (기존에 만들어 놓은 role 이 있다면 아래에서 선택할 수 있다)<br>다른 AWS 서비스를 사용하지 않으므로 기본값으로 만들 것이다.<br>“Show Policy Document” 를 눌러보면 기본적인 log 관련 Action 들만 들어있는 것을 확인할 수 있다.<br>[Allow] 를 누르면 Role 이 생성되고 다시 Lambda 페이지로 돌아온다.</li></ul><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*b4SEaWCR1uwEsO93d0_e3w.png" /></figure><p>[Advanced Settings] 에서는 고급 설정들을 할 수 있다.</p><ul><li>Memory<br>128 MB-1.5 GB 까지 64 MB 단위로 설정할 수 있다.<br>Memory 크기에 비례해서 CPU, Network 의 성능도 결정되고 따라서 가격도 바뀌기 때문에 용도에 맞춰서 잘 설정해야한다.<br>여기서는 성능이 중요한 작업이 아니니 최소인 128 MB 로 설정.</li><li>Timeout<br>말그대로 Lambda function 의 timeout.<br>Lambda 는 사용한 시간(100 ms 단위)에 비례하여 과금이 된다.<br>Timeout 을 3 sec 으로 설정했다고 해서 100 ms 만에 끝난 함수를 3 sec 동안 사용한 것 처럼 과금하지는 않기 때문에, 안전벨트를 착용하는 것이라고 생각하고 여유있게 설정하면 된다.</li><li>VPC<br>AWS 의 보안관련 설정. 여기서는 스킵.</li></ul><h4>Step 3: Review</h4><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*QvCaIWSZONZhIgWkImydEA.png" /></figure><p>위에서 설정한 것들을 간단히 리뷰하고 [Create function] 을 누르면 Lambda function 이 생성된다.</p><h4>Lambda function 생성 완료</h4><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*bFFSYKkC6ynltoncCVsRTA.png" /><figcaption>설명은 길었지만 실제로 하는 것은 얼마 안걸렸으리라 믿는다.</figcaption></figure><p>Lambda function 이 만들어지면 아래와 같은 화면으로 연결되고 여기서 테스트, 수정, Event source 설정, API endpoint 설정, 모니터링 등의 작업이 가능하다.</p><p>[Test] 를 눌러서 작성한 코드가 잘 동작하는지 확인하고 넘어가도록 하자.</p><h3>CloudWatch Events-Schedule 연결</h3><p>위에서 만든 Lambda function 에 CloudWatch Events-Schedule 을 연결해보겠다.</p><p>[Event sources] 를 누르면 Lambda function 에 event source 를 추가하고 관리할 수 있다.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*kiMmMOq_ApnV2eBYdNjaLA.png" /></figure><p>[Add event source] 를 눌러 새 event source 를 추가해보자.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*65b_SypUJ9kdhqLTu-ifNA.png" /></figure><ul><li>Event source type<br>여러가지 event source type 을 지원하는데, 그 중 “CloudWatch Events-schedule”을 선택하자.</li><li>Rule name<br>Event source 의 이름.<br>여기서는 매일 오후 1시를 나타내기 위해 “everyday_1pm_kst” 라고 하겠다.</li><li>Schedule expression<br>여기에 rate 나 cron 으로 원하는 주기를 설정하면 된다.<br>매일 한국 시간 오후 1시에 해당 event 를 실행시키기 위해 아래와 같이 설정하겠다.</li></ul><pre># schedule expression 의 시간 기준은 UTC 이므로 9시간을 빼주었다.<br># 자세한 사용법은 <a href="http://docs.aws.amazon.com/lambda/latest/dg/tutorial-scheduled-events-schedule-expressions.html">http://docs.aws.amazon.com/lambda/latest/dg/tutorial-scheduled-events-schedule-expressions.html</a> 참조</pre><pre>cron(0 4 * * ? *)</pre><p>[Submit] 을 눌러서 event source 추가를 마치자.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*r9C5rCTzyft_BDR_4qGWGg.png" /><figcaption>생성 완료!</figcaption></figure><h3>작동 체크하기</h3><p>Lambda function 페이지에서 [Monitoring] 을 누르면 현재 Lambda function 의 작동 상태를 알 수 있다.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*3lZPgxYSbF6D0ST-jcUy2A.png" /></figure><ul><li>Invocations<br>Lambda function 이 실행된 횟수. (Throttle 된 것은 포함하지 않음)</li><li>Duration<br>Lambda function 이 실행되는 동안 소요된 시간.</li><li>Error<br>429 를 제외한 모든 4xx 에러 횟수.</li><li>Throttles<br>429 에러 횟수. 이 경우에는 자동으로 다시 Lambda function 을 실행한다.</li></ul><p>AWS CloudWatch 서비스로 이동해서 [Logs] 에 들어가면 만들어진 Lambda function 에 대한 log 들도 확인할 수 있다.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*DX7iVGm84QOHh364l-UDVg.png" /></figure><p>Lambda function 에서 <em>print</em> 로 출력했던 결과도 볼 수 있고 Duration, Memory used 등의 정보도 확인할 수 있다.</p><h3>참조</h3><ul><li><a href="http://blog.awskr.org/step-by-step-api-gateway.html">AWSKRUG</a></li><li><a href="http://docs.aws.amazon.com/lambda/latest/dg/with-scheduledevents-example.html">Tutorial: Using AWS Lambda with Scheduled Events</a></li><li><a href="http://docs.aws.amazon.com/lambda/latest/dg/tutorial-scheduled-events-schedule-expressions.html">Schedule Expressions Using Rate or Cron</a></li><li><a href="http://docs.aws.amazon.com/lambda/latest/dg/monitoring-functions-metrics.html">AWS Lambda Metrics</a></li></ul><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=c1c8875dc288" width="1" height="1" alt=""><hr><p><a href="https://medium.com/itus-project/aws-aws-lambda-%EB%A1%9C-cron-job-%EB%8F%8C%EB%A6%AC%EA%B8%B0-c1c8875dc288">[AWS] AWS Lambda 로 Cron Job 돌리기</a> was originally published in <a href="https://medium.com/itus-project">ITus project</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
    </channel>
</rss>