본문 바로가기
programing/aws

[ Lambda ] Lambda랑 SQS 연결하기

by 궈능비 2023. 6. 29.
728x90
반응형
반응형

 

lambda를 만드는 방법은 여기를 참고해주세요

2023.06.28 - [programing/aws] - [ Lambda ] aws lambda 만들어보기

 

[ Lambda ] aws lambda 만들어보기

Lambda란? 서버리스 컴퓨팅 플랫폼입니다. 이벤트가 발생했을 때 코드를 실행해주는 서비스입니다. 사실 말로만 보면 조금 어려워보일지도 모르지만, 그냥 배치파일이랑 비슷합니다. 그럼 지금부

kwon-eb.tistory.com

 

람다에 api gateway를 연결하는 방법은 여기를 참고해주세요

2023.06.28 - [programing/aws] - [ Lambda ] api gateway 연결하기

 

[ Lambda ] api gateway 연결하기

lambda를 만드는 방법은 여기를 참고해주세요 2023.06.28 - [programing/aws] - [ Lambda ] aws lambda 만들어보기 [ Lambda ] aws lambda 만들어보기 Lambda란? 서버리스 컴퓨팅 플랫폼입니다. 이벤트가 발생했을 때 코

kwon-eb.tistory.com

 

람다에서 다른 람다를 부르는 방법은 여기를 참고해주세요

2023.06.28 - [programing/aws] - [ Lambda ] invoke로 lambda에서 lambda 부르기

 

[ Lambda ] invoke로 lambda에서 lambda 부르기

lambda를 만드는 방법은 여기를 참고해주세요 2023.06.28 - [programing/aws] - [ Lambda ] aws lambda 만들어보기 [ Lambda ] aws lambda 만들어보기 Lambda란? 서버리스 컴퓨팅 플랫폼입니다. 이벤트가 발생했을 때 코

kwon-eb.tistory.com

 

 

이번에는 이런 구조로 한번 만들어보겠습니다

 

이제 SQS를 만들어볼게요

 

이름을 설정해줍니다

그리고 다른 설정은 일단 괜찮으니까 바로 만들기를 눌러주세요

 

그러면 이렇게 SQS가 만들어지게 됩니다.

우리는 url을 복사해놓을게요

 

이제 lambda를 작성해보겠습니다.

 

getSqs.py 입니다

import json
import boto3
import datetime

def lambda_handler(event, context):
    # TODO implement
    print(event)
    
    sqs_client = boto3.client('sqs')
    
    for item_record in event['Records']:
        queue_url = "https://sqs.ap-northeast-1.amazonaws.com/236902378415/mySqs" # 위에서 복사한 sqs url
        sqs_client.delete_message(
            QueueUrl=queue_url, ReceiptHandle=item_record['receiptHandle'])
    

    return {
        'statusCode': 200,
        'body': json.dumps('Hello from Love!')
    }

sqs에서 오는 데이터는 전부 event['Records']에 담겨 있습니다.

sqs에서의 데이터를 받는 데 성공했으면 데이터는 더이상 필요가 없기때문에 데이터를 지워주는 처리도 같이 해보겠습니다.

sqs는 일정 시간이 지나면 데이터를 자동으로 지워주기때문에 지워주는 처리는 안해줘도 무방합니다.

지금은 디폴트 설정이기때문에 데이터를 지우는 처리를 하지 않으면 4일이 지나야 데이터가 지워집니다.

 

코드를 작성했으면 SQS랑 연결해보겠습니다

sqs를 검색해주세요

 

이름에 mySqs를 검색하고 클릭한 뒤에 추가해주세요

그러면 또 에러가 날겁니다

권한이 없어서 나는 에러입니다

AmazonSQSFullAccess 라는 귄한 설정을 추가해주세요

 

권한 설정에 대한 설명은 여기를 참고해주세요

2023.06.28 - [programing/aws] - [ Lambda ] invoke로 lambda에서 lambda 부르기

 

[ Lambda ] invoke로 lambda에서 lambda 부르기

lambda를 만드는 방법은 여기를 참고해주세요 2023.06.28 - [programing/aws] - [ Lambda ] aws lambda 만들어보기 [ Lambda ] aws lambda 만들어보기 Lambda란? 서버리스 컴퓨팅 플랫폼입니다. 이벤트가 발생했을 때 코

kwon-eb.tistory.com

권한 설정을 해준 뒤에 다시 추가버튼을 누르면

트리거가 추가되어있는 걸 확인할 수 있습니다.

 

이제 SQS를 부르는 setSqs.py 입니다

import json
import boto3
import time

def lambda_handler(event, context):
    # TODO implement
    print(event)
    
    sqs = boto3.resource('sqs', region_name='ap-northeast-1')   # 내 aws 계정 위치
    que = sqs.get_queue_by_name(QueueName="mySqs")              # 내 Que 이름
    
    message = [{
        "Id" : str(int(time.time())),
        "MessageBody" : json.dumps({"data" : str(int(time.time()))})
    }]
    
    response = que.send_messages(Entries=message)
    
    return {
        'statusCode': 200,
        'body': json.dumps('Hello from Love!')
    }

 

9번 라인이랑 10번 라인을 주목해주세요

aws 계정 위치에 맞게 설정해주는게 중요합니다

 

이제 test를 해보면

성공한걸 볼 수 있습니다

 

로그를 확인해보면

SQS에서 온 데이터들을 확인할 수 있습니다

728x90
반응형

댓글