AWS Lambda에서 무료 트위터 로봇 실행

만약 네가 읽는다면, 나는 지금 시간을 써서 미래에 시간을 절약할 수 있는 것을 건설할 것이라고 매우 믿는다는 것을 알게 될 것이다.이를 위해 Go에 간단한 트위터 로봇을 구축했는데 간혹 제 글의 링크를 올리고 제가 너무 바빠서 사용할 수 없을 때 제 계정의 흥미를 유지합니다.이 트윗들은 내 사이트의 데이터를 향상시키는 데 도움이 되므로 나는 손가락 하나를 움직일 필요가 없다.
나는 아마존 EC2 실례에서 약 한 달 동안bot을 운행했다.나의 AWS 사용 역사상 매우 싸기 때문에 (북미 대부분의 지역의 커피 가격보다 더 싸다) 내가 사용한 작은 실례가 전월의 계산서보다 90퍼센트 높았을 때 나는 놀랐다.나는 AWS가 비싸다고 생각하지 않는다. 분명히 말하지만, 여전히...나는 매우 싸다.나는 나의 트위터 로봇을 원하고, 그것의 가격을 더욱 낮추기를 원한다.
AWS Lamda를 탐험해보고 싶었는데 좋은 기회라고 생각했어요.Lambda는 끊임없이 실행되고 요금이 부과되는 EC2 인스턴스와 달리 각 요청 및 함수 실행 기간에 따라 요금을 부과합니다.또 하나의 무료 층은 전 100만 개의 요청에 일정한 계산 시간을 더하면 모두 무료다.트위터 로봇을 운행하면서 매일 두 번씩 댓글을 남겨주고 매달 람바다를 사용하는 비용은 총계로...그거 들고...아무것도 아니에요.Lambda 함수를 실행한 지 몇 주가 지났습니다. 완전히 무료입니다.
최근에 트위터를 인수하기로 결정했을 때 비슷한 전략을 사용하고 이 기회를 이용하여 이 과정을 기록해 드리기로 했습니다, 사랑하는 독자님.
따라서, 크로스 작업에서 서비스를 제공할 수 있는 작업을 수행하기 위해 현재 전담 실행 실례를 사용하고 있다면, 이 글은 작성한 것입니다.Lambda의 함수를 작성하는 방법, 자동 실행으로 설정하는 방법, 변경이 필요할 때 명령줄에서 함수를 업데이트하는 편리한 bash 스크립트를 소개합니다.자!

람바다 잘 어울려요?


내가 Go에서 나의 트위터 로봇을 위해 코드를 작성할 때, 나는 그것을 AWS 실례에서 운행하게 하고 마이크로소프트의 방법을 대량으로 참고할 계획이다.한동안 이를 수정해 RSS 구독 소스에서 기사를 무작위로 선택하고 매일 두 번씩 트위터에 링크를 보냈다.@free Code CampTO 로봇을 위해 매일 아침 트위터에 프로그래밍에 대한 고무적인 인용문을 올리도록 비슷한 일을 하고 싶습니다.
이것은 Lambda의 아주 좋은 용례이다. 왜냐하면:
  • 프로그램은 한 번 실행해야 한다
  • 이것은 시간을 트리거로 하고 일반적인 계획에 따라 운행한다
  • 자주 실행할 필요가 없음
  • 중요한 점은 사용자가 정의한 이벤트에 응답하기 위해 Lambda가 함수를 한 번 실행하는 것입니다.가장 광범위하게 응용되는 트리거는 간단한cron 표현식이지만, 다른 트리거 이벤트도 연결할 수 있다.개요here를 참조하십시오.

    Lambda 함수 작성


    나는 이것이 바둑에서 매우 간단하다는 것을 발견했다.우선 aws-lambda-go 라이브러리를 획득:
    go get github.com/aws/aws-lambda-go/lambda
    
    그리고 그것을 너의 것으로 만들어라func main():
    func main() {
        lambda.Start(tweetFeed)
    }
    
    그중tweetFeed은 모든 것을 발생시키는 함수의 명칭이다.트위터 로봇 전체를 여기에 쓰지는 않겠지만 내 코드on GitHub를 볼 수 있어.

    AWS Lambda 설정


    나는 네가 이미 AWS 계정을 가지고 있다고 생각한다.없으면 먼저 해야 할 일은: https://aws.amazon.com/free

    1. 당신의 기능 만들기


    서비스 목록에서 AWS Lambda를 찾은 다음 번쩍이는 버튼을 찾습니다.
    우리는 처음부터 함수를 하나 쓰기 시작할 것이다.함수를 명명하고 런타임에 "Go 1.x"를 선택합니다.
    캐릭터 이름 아래에 당신이 좋아하는 모든 이름을 쓰세요.이것은 필수 필드이지만 본 용례와는 무관하다.
    를 클릭하여 함수를 생성합니다.

    2. 기능 설정


    새 기능을 구성하는 화면이 표시됩니다.Handler에서 Go 프로그램의 이름을 입력합니다.
    아래로 스크롤하면 환경 변수를 입력하는 점이 표시됩니다.트위터 API 토큰과 기밀을 입력하기 좋은 곳으로 프로그램이 원하는 변수 이름을 사용한다.AWS Lambda 함수는 여기에 제공된 변수를 사용하여 환경을 만듭니다.
    이 용례는 더 이상 설정할 필요가 없다.페이지 맨 위에 있는 저장을 클릭합니다.

    3. 당신의 코드를 업로드


    기능 코드를 zip 파일로 설정 화면에 업로드할 수 있습니다.Go를 사용하기 때문에 먼저 go build가 필요하고 Lambda에 업로드하기 전에 생성된 실행 파일을 압축합니다.
    ...물론 나는 내 함수를 조정하고 싶을 때마다 수동으로 이렇게 하지는 않을 것이다.이것이 바로 awscli와 이 bash 스크립트의 목적입니다!update.sh
    go build && \
    zip fcc-tweet.zip fcc-tweet && \
    rm fcc-tweet && \
    aws lambda update-function-code --function-name fcc-tweet --zip-file fileb://fcc-tweet.zip && \
    rm fcc-tweet.zip
    
    지금은 내가 조정할 때마다 뛴다bash update.sh.
    아직 사용하지 않으셨다면AWS Command Line Interface,pip install awscli사용하시고 잠시 후에 저에게 감사를 드립니다.Quick Configuration 에서 몇 분 동안 설정 및 구성에 대한 설명을 찾습니다here.

    4. 기능 테스트


    보고 싶으세요?너는 당연히 알고 있지!위쪽 드롭다운 목록에서 구성 테스트 이벤트 를 클릭합니다.
    이 함수는 시간 기반 트리거를 사용하기 때문에 팝업 창에 테스트 이벤트를 정의하는 코드를 입력할 필요가 없습니다.이벤트 이름 아래에 모든 이름을 쓰고 다음 필드에서 JSON을 비우기만 하면 됩니다.그런 다음 생성 을 클릭합니다.
    페이지 맨 위에 있는 테스트를 클릭하십시오. 만약 모든 것이 정상이라면, 당신은 보게 될 것입니다.

    5. CloudWatch 활동 설정


    cron 작업처럼 우리의 함수를 정기적으로 시간 기반 이벤트로 실행하기 위해서 클라우드 워치를 사용합니다.디자이너 사이드바에서 CloudWatch 이벤트를 클릭합니다.
    설정 트리거 아래에서 새 규칙을 만들 것입니다.규칙에 대해 공백이나 문장부호가 없는 설명 이름을 선택하고 '명세서 표현식' 이 선택되어 있는지 확인하십시오.그리고 프로그램이 실행되는 시간을 속도 표현식이나cron 표현식으로 입력하십시오.
    cron 표현식은 다음과 같습니다. cron(0 12 * * ? *)분 단위
    시간
    월일
    월 단위
    요일

    영어로
    0
    12
    *
    *
    ?
    *
    매일 점심(UTC) 달리기
    cron 표현식을 어떻게 작성하는지에 대한 더 많은 정보는 this.
    UTC의 현재 시간을 확인하려면 here.
    프로그램을 하루에 두 번 실행하려면 오전 10시에 한 번, 오후 3시에 한 번, 두 개의 단독 클라우드 워치 이벤트 트리거와cron 표현식 규칙을 설정해야 한다.
    추가를 클릭합니다.

    얘 보고 가.


    이것이 바로 Lambda 함수를 시작하고 실행하는 데 필요한 모든 내용입니다!이제 앉아서 휴식을 취하고 트위터에서 RSS 링크를 공유하는 것보다 더 중요한 일을 할 수 있다.

    좋은 웹페이지 즐겨찾기