Boto3 SQS 큐를 폴링하여 메시지를 받는 방법
AWS SDK의 Boto3에서 SQS가 보유한 큐를 폴링하고 정보를 표시하는 방법을 소개한다.
차리다
권한을 부여하다
EC2에서 실행하든 Lambda에서 실행하든 SQS 메시지를 읽는 데 필요한 IAM 정책()을 사전에 할당하십시오.
(Lambda면 AW S L a mbdaSQSQue ExectionRole.)
IAM 역할 할당은 액세스 키보다 관리 권한 관리가 용이하므로 EC2 또는 람바다 필수 정책에 할당된 IAM 역할을 연계하십시오.
이번에는 EC2에서 임시로 실행되기 때문에 EC2 PowerUserAccess Role을 사용합니다.
대기열과 메시지 준비
SQS 큐를 미리 제작합니다.
URL 표시줄에 기재된 값에 대해서는 Boto3을 통해 정보를 액세스하고 받기 때문에 이 값만 기록합니다.
또한 SQS가 테스트용 정보 대기열을 보유할 수 있도록'메일 발송'버튼을 선택해 적절한 정보를 대기열에 넣는다.
메시지 입력 화면에 텍스트를 입력하고 마지막으로 메시지 보내기를 선택합니다.
이렇게 되면 정보가 대열에 들어간다.
실제로 대기열의 일람화면으로 돌아가면 대기열에 메시지가 있는 것을 발견할 수 있다.
보토3로 이 소식을 꺼내보세요.
Boto3에서 구현(메시지 수신)
receive_message_from_sqs.EC2에서py라는 파일을 제작하고 기술합니다.
pip로boto3 등 필요한 모듈을 미리 설치합니다.
import boto3
queue_url = "https://sqs.ap-northeast-1.amazonaws.com/XXXXXXXXXXX/test-sqs"
region = "ap-northeast-1"
sqs_client = boto3.client("sqs", region_name=region)
response = sqs_client.receive_message(QueueUrl=queue_url, MaxNumberOfMessages=1, VisibilityTimeout=60)
for res in response['Messages']:
if 'Body' in res:
print(res['Body'])
"XXXXXXXXXXXXXXXXX"의 위치는 당신이 사용하는AWS 계정 ID입니다.정상적으로 정보를 꺼낼 때 출력 결과는 다음과 같다.
$ python3 receive_message_from_sqs.py
キューに入れたテストメッセージ
설정된 테스트 메시지를 꺼냅니다.참고로 이 때 대기열의 일람 화면을 한 번 더 보면'가용 정보'의 숫자 1이'처리 중인 정보'로 이동하는 것을 알 수 있다.
Boto3 코드에서 Vissibility Timeout=60으로 설정되어 있기 때문에 이 시간대에 한 번만 호출된 고객(이번은 EC2)은 정보를 독점적으로 처리할 수 있습니다.
이것은 시간이 걸리는 처리를 하는 동안 다른 고객이 조작하고 읽는 것을 방지하기 위한 중요한 메커니즘이다. 이 메커니즘 덕분에 희소한 시스템을 구축할 수 있다.
Reference
이 문제에 관하여(Boto3 SQS 큐를 폴링하여 메시지를 받는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/tmasuyama1114/articles/boto3_receive_message_from_sqs텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)