lambda를 만드는 방법은 여기를 참고해주세요
2023.06.28 - [programing/aws] - [ Lambda ] aws lambda 만들어보기
람다에 api gateway를 연결하는 방법은 여기를 참고해주세요
2023.06.28 - [programing/aws] - [ Lambda ] api gateway 연결하기
람다에서 다른 람다를 부르는 방법은 여기를 참고해주세요
2023.06.28 - [programing/aws] - [ Lambda ] invoke로 lambda에서 lambda 부르기
이번에는 이런 구조로 한번 만들어보겠습니다
이제 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 부르기
권한 설정을 해준 뒤에 다시 추가버튼을 누르면
트리거가 추가되어있는 걸 확인할 수 있습니다.
이제 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에서 온 데이터들을 확인할 수 있습니다
'programing > aws' 카테고리의 다른 글
[ DynamoDB ] mock 사용해보기 (0) | 2023.07.10 |
---|---|
[ Lambda ] invoke로 lambda에서 lambda 부르기 (0) | 2023.06.28 |
[ Lambda ] api gateway 연결하기 (0) | 2023.06.28 |
[ Lambda ] aws lambda 만들어보기 (0) | 2023.06.28 |
[ aws ] VPC(virtual private cloud)란? (0) | 2023.01.18 |
댓글