본문 바로가기
회고/aws&docker fastcampus

AWS/Docker 클라우드 패스트캠퍼스 챌린지 29일차

코동이 2021. 10. 4.

[Lambda 함수작성 - Layer패키지]

 

Make Image의 람다는 SNS를 이용해서 DynamoDB를 가져온다. 또 S3에서 가져오며 이 내용을 S3에 다시 저장한다.

 

함수 생성을 한다. Python3.7로 설정해서 파이썬 코드로 작성한다. 기존에는 boto3를 사용했는데, 이미지를 만들기 위해서는 PIL을 이용한다. 또한 qrcode가 필요하다. 람다 계층에서 Layer를 얹어준다. PIL과 qrcode를 얹어주어야 하기 때문에 zip파일을 만든다.

 

python에 해당 라이브러리를 깔고 zip을 만들면 된다.

 

pip install pillow qrcode -t python/

 

파이썬 pip 명령어로 qrcode을 설치한다.

 

 계층생성에서 이름을 정하고 설명을 쓴다. 호환 런타임은 여러개를 사용할 수 있는데 Python 3.7만 넣는다.

우리가 만든 함수에서 기본설정에 Layers를 클릭하면 최대 5개의 계층을 넣을 수 있다.

 

 PIL과 qrcode는 OS들에 따라서 output이 다르기 때문에 람다 함수에서 Amazon Linux 환경에 모두 설치해야한다.

ec2에 패키징해서 해결할 수 있다. ec2에서 Amazon Linux로 새로운 인스턴스를 하나 만든다. 보안그룹은 SSH로 나의 IP를 입력하고 시작한다. 

 

 

[Lambda 함수작성 - 참가증 이미지 만들기]

 

 새로만든 make함수에서 업로드 관련 코드를 추가한다. 먼저 bucket에 들어가서 이미지를 업로드한다. s3 사용을 위해서 s3 = boto3.resource('s3')로 자원을 조회한다. tmp 스토리지에 512MB를 저장할 수 있으므로 사진을 BUCKETㅔ엇 다운받아서 tmp에 관리한다. s3.Bucket..download_file()로 이미지를 다운로드한다.

 

 SNS로부터 Make Image를 가져와야 한다. SNS에서 들어오는 데이터는 Topic Notification으로 조회한다. Subject와 Message는 각각 우리가 설정한 1로 값을 넣어준다. 이제 이벤트로 값을 받을 수 있다. records를 받는 것이다.  records = event['Records'] 로 받은다음 get으로 조회해 Subject를 얻어온다. 

 

 dynamoDB를 조회해와야 한다. dynamodb = boto3.resource('dynamodb');로 가져온다. 다시 테이블을 조회하고 환경변수에 추가한다. 테이블에서 Item을 get해온다. 여기서 처음에 만든 칼럼 핸드폰번호, 회사이름, 사용자이름을 얻어올 수 있다. records가 있으면 조회하도록 한다.

 

 

 

마지막으로 이미지를 빌드한다.

 

필수 링크 확인

=> https://bit.ly/37BpXiC

 

패스트캠퍼스 [직장인 실무교육]

프로그래밍, 영상편집, UX/UI, 마케팅, 데이터 분석, 엑셀강의, The RED, 국비지원, 기업교육, 서비스 제공.

 

본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.

 

 

 

 

반응형