일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 체육시설환급
- 간헐적단식타이머
- codedeploy
- 간헐적단식 다이어트
- 간단
- 헬스장할인쿠폰
- 방송편성표
- 챔피언이름
- 플러터애드몹미디에이션
- 헬스장환급
- 간헐적단식
- 롤퀴즈
- ecs
- 간헐적단식앱
- 운닥
- 운동닥터
- 재방송
- 간헐적단식식사
- codepipeline
- 논현역헬스장
- 간헐적단식관리어플
- aws
- 간헐적단식 관리어플
- 체육시설할인쿠폰
- 간단앱
- 체육시설3만원
- 간단어플
- codebuild
- 간헐적단식이란
- 간헐적단식어플
- Today
- Total
리브어트
AWS Lambda로 FCM 전송하기 본문
1. AWS Lambda 란 무엇인가.
Amazon Web Service에서 제공하는 Serverless function이다.
Serverless는 말 그대로 서버가 없는 실행 코드들을 의미한다.
그럼 궁금할 것이다. 어떻게 관리하는 서버가 없는데 코드가 돌아가? 결국은 서버가 있는거잖아!
맞다. 서버가 없는 실행 코드는 없다.
다만 내가 관리하는 서버가 없을뿐.
Serverless는 Cloud를 제공하는 서버에 나의 코드를 실행하는 시스템이다.
나는 개발팀인 것이고, AWS, GCP는 우리의 배포 및 운영 팀이 되는 것이다.
우리가 만든 코드에 필요한 의존성을 명시하고 코드를 클라우드 서버로 올려놓게 되면, 코드 실행은 클라우드 사에서 책임 지므로 우리는 관리하는 서버가 없어진다. 이러므로 Serverless가 된다.
나는 현재 이 Lambda를 통해서 서버에서 Third party api call(문자 전송, 푸시 전송, 이메일 전송, 이미지 업로드 등) 서버에게 블락킹 코드를 실행하는 부분을 lambda를 사용해서 활용하고 있다. (초기 스타트업에겐 lambda는 사랑입니다.)
2. Lambda 생성법(python)
** Aws cli 환경 설정은 되어있다는 가정입니다. (설정 방법에 대한 포스팅 예정)
virtualenv lambda-venv source lambda-venv/bin/activate pip install pyFCM cd lambda-venv/lib/python3.7/site-packages zip -r9 ../Lambda/fcmpush.zip * # 압축해줍니다. cd ~/lambda_env/fcmpush/ zip -g fcmpush.zip fcmpush.py aws lambda create-function --function-name apiFCMServer \ --zip-file fileb://~/Lambda/pyfcm.zip \ --role IAM역할 \ --handler fcmpush.fcmPush \ --runtime python3.6
- 람다를 배포할 가상 환경을 생성합니다.
- 생성한 가상환경에 필요한 패키지를 설치한 뒤 site-packages를 zip파일로 압축합니다.
- 배포 하려고 하는 코드를 패키지를 압축한 zip파일 안에 넣어줍니다.
- aws-cli를 통해서 함수를 생성해줍니다.
- function-name : 함수를 호출할때 사용할 이름
zip-file : 생성한 zip 파일의 경로
role : lambda를 생성할 때 사용할 iam role
handler : 실제 람다가 실행할 함수
runtime : 어떤 플랫폼을 사용할 지 선택
3. Lambda 업데이트
aws lambda update-function-code --function-name apiFCMServer \ --zip-file fileb://zip 경로
4. Lambda 호출
import boto3 client = boto3.client("lambda") client.invoke(FunctionName="apiFCMServer", InvocationType="Event", Payload=bytes(json.dumps(payload), "utf-8"))
Source Code: https://github.com/Yunhoo-Kim/fcmLambda
Yunhoo-Kim/fcmLambda
fcmLambda. Contribute to Yunhoo-Kim/fcmLambda development by creating an account on GitHub.
github.com
'Tech > Others' 카테고리의 다른 글
AWS Codepipeline을 이용해서 서버 배포 자동화(Codecommit, Codebuild, Codedeploy, ECR, ECS) - 1 (0) | 2019.04.24 |
---|---|
[Python] Slack Bot 사용하기 (0) | 2019.04.24 |
Dockerfile을 통해서 이미지 생성 및 Dockerhub push 하기 (0) | 2019.04.23 |
[AWS][Python] AWS Serverless Framework Chalice 사용하기 (0) | 2019.01.28 |
Docker + DockerHub(Automated Build) + Bitbucket 사용하기 (0) | 2018.03.27 |