AWS Lambda에서 고양이의 이미지를 시간에 한 번 Slack에 게시 🐾
AWS Lambda에서 고양이 이미지를 시간에 한 번 Slack에 게시 🐾
지금까지 일해 온 회사는 모든 회사에 당연한 것처럼 고양이와 관련된 채널이있었습니다.
이번에는 고양이의 이미지로 시보를 알려주는 AWS Lambda의 함수를 만들고 싶습니다.
고양이 이미지 준비 🐈
이미지를 스스로 수집하거나 스토리지에 저장하고 인덱싱하는 것은 어렵습니다.
이번에는 Cat as a Service인 The Cat API를 이용합니다.
The Cat API - Cats as a Service
여담 🐶
개파의 사람도 안심해 주세요, Dog as a Service인 The Dog API도 제대로 있습니다.
The Dog API - Dogs as a Service
Pricing 💰
신경이 쓰이는 가격입니다만, 이번은 Free 플랜으로 충분합니다.
Paid 플랜이라면 추가 기능을 사용할 수 있습니다.
※ 2021년 3월 현재, 아직 Paid 플랜은 이용할 수 없습니다만 차례 대기가 가능합니다.
Thanks for showing interest in the premium version of the Cat API.
We're running a few weeks behind on launching the new subscription service.
The Cat API 가입 및 테스트 📮
이번에는 Free 플랜으로 가입해 봅시다.
SIGNUP FOR FREE
를 클릭하고 이메일 주소를 입력합니다.가입이 완료되면 이메일로 API 키를 받게 됩니다.
또한 전환 대상 페이지에서 샘플 코드를 확인할 수 있습니다.
이메일로 받은 API 키와 샘플 코드를 사용하여 테스트해 보세요.
파이썬 코드 준비 ✏️
어리석게 쓴다.
AWS Lambda에서 사용하기 때문에
requests
대신 urllib
를 사용합니다.※ The Dog API를 이용하는 경우는, URL을 바꿔 주세요
Slack에 게시하는 Incoming Webhook URL을 만들어 둡시다.
# -*- coding: utf-8 -*-
import urllib.request
import json
CAT_API_URL = "https://api.thecatapi.com/v1/images/search"
CAT_API_KEY = "{API_KEY}"
SLACK_URL = "{SLACK_WEBHOOK_URL}"
def get_cat():
headers = {'content-type': 'application/json', 'X-API-KEY': CAT_API_KEY}
req = urllib.request.Request('{}?{}'.format(CAT_API_URL, urllib.parse.urlencode(headers)))
with urllib.request.urlopen(req) as res:
body = res.read().decode()
response = json.loads(body)
for i in response:
return i["url"]
def lambda_handler(event, context):
cat = get_cat()
payload = {
"text": cat
}
data = json.dumps(payload)
headers = {
'Content-Type': 'application/json',
}
req = urllib.request.Request(SLACK_URL, data.encode(), headers)
with urllib.request.urlopen(req) as res:
body = res.read()
AWS Lambda로 이동 ⚙️
Lambda Function 만들기 ✨
AWS Management Console로 이동하여 서비스
Lambda
를 선택합니다.新しい関数
를 작성합니다.Python 3.8
를 선택합니다 코드 배포 📝
화면 중앙에 있는 코드/코드 소스에 Python 코드를 붙여넣습니다.
붙여넣으면
Deploy
를 클릭하여 배포합니다.코드 테스트 👩💻
Deploy
버튼 옆에 있는 Test
를 선택합니다.빈 테스트를 만들고 실행합니다.
(이번 코드에는 테스트 이벤트를 전달할 필요가 없습니다.)
1시간에 1회 실행 🕒
트리거를 만듭니다.
트리거 작성에서
EventBridge (CloudWatch Events)
를 검색하여 선택하십시오.Amazon Event Bridge에서 cron 표현식 트리거 생성
cron(00 1-11 ? * MON-FRI *)
Lambda의 실행 환경측은 GMT 때문에, 9시간 어긋나게 합니다.
👆의 예라면, 일본의 오전 10시~20시에 투고합니다.
고양이가 시보를 알려드립니다 🐾
지정한 트리거로 고양이 이미지가 게시됩니다.
Reference
이 문제에 관하여(AWS Lambda에서 고양이의 이미지를 시간에 한 번 Slack에 게시 🐾), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/nakashun/items/5d807a9f058ca32e9b17텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)