개요
2022.09.29 - [aws cli] SQS 관련 정보 확인에서 AWS CLI로 SQS의 정보를 확인했다. 이번 글에서는 같은 일을 Python AWS SDK인 boto3을 이용해서 확인해보려고 한다. 필요한 권한은 모두 부여되어 있다고 가정한다.
자격 증명 확인
SQS를 다루기 위한 자격 증명은 아래 함수로 얻을 수 있다. profile, access key, EC2에 부여된 role 등을 사용할 수 있다.
def get_session(profile_name=None):
session = boto3.Session(profile_name=profile_name)
return session
def get_client(aws_access_key_id=None, aws_secret_access_key=None,
region_name='ap-northeast-2',
profile_name=None):
# use aceess key
if aws_access_key_id is not None:
client = boto3.client('sqs',
aws_access_key_id=aws_access_key_id, aws_secret_access_key=aws_secret_access_key,
region_name=region_name)
# use profile
elif profile_name is not None:
session = get_session(profile_name=profile_name)
client = session.client('sqs', region_name=region_name)
# use default profile or EC2 role
else:
client = boto3.client('sqs', region_name=region_name)
return
SQS 목록 확인
list_queues 함수를 이용하면 SQS URL 목록을 확인할 수 있다.
response = client.list_queues(QueueNamePrefix='QueueNamePrefix')
결과
{
'QueueUrls': [
'https://ap-northeast-2.queue.amazonaws.com/000024180000/test'
],
'ResponseMetadata': {
'RequestId': 'a17ff1bf-4faa-540f-9651-aa7a8a2dc3df',
'HTTPStatusCode': 200,
'HTTPHeaders': {
'x-amzn-requestid': 'a17ff1bf-4faa-540f-9651-aa7a8a2dc3df',
'date': 'Sun, 16 Oct 2022 08:39:35 GMT',
'content-type': 'text/xml',
'content-length': '333'
},
'RetryAttempts': 0
}
}
다만, boto3를 이용해서 리소스의 정보를 요청하면 ResponseMetadata 속성으로 응답의 메타데이터 정보까지 함께 전달받는다. 만약 응답의 메타데이터 정보가 필요하지 않다면 get 함수를 이용해 원하는 요청한 정보만 반환하면 된다. Dictionary이므로 대괄호 내에 키 값을 적어도 된다.
response = client.list_queues(QueueNamePrefix='QueueNamePrefix').get('QueueUrls')
결과
특정 큐의 URL 확인
SQS 이름을 전달받아, 해당 SQS의 URL 정보를 확인한다.
response = client.get_queue_url(QueueName='QueueName').get('QueueUrl')
결과
특정 큐의 속성 확인
SQS 이름을 전달받아, 해당 SQS의 속성 정보를 확인한다.
response = client.get_queue_attributes(QueueUrl=QueueUrl, AttributeNames=['All']).get('Attributes')
결과
{
'QueueArn': 'arn:aws:sqs:ap-northeast-2:000024180000:test',
'ApproximateNumberOfMessages': '0',
'ApproximateNumberOfMessagesNotVisible': '0',
'ApproximateNumberOfMessagesDelayed': '0',
'CreatedTimestamp': '1665819960',
'LastModifiedTimestamp': '1665908867',
'VisibilityTimeout': '30',
'MaximumMessageSize': '262144',
'MessageRetentionPeriod': '345600',
'DelaySeconds': '0',
'Policy': '{"Version":"2008-10-17","Id":"__default_policy_ID","Statement":[{"Sid":"__owner_statement","Effect":"Allow","Principal":{"AWS":"arn:aws:iam::000024180000:root"},"Action":"SQS:*","Resource":"arn:aws:sqs:ap-northeast-2:000024180000:test"}]}',
'ReceiveMessageWaitTimeSeconds': '0',
'SqsManagedSseEnabled': 'true'
}
특정 SQS의 TAG 확인
SQS 이름을 전달받아, 해당 SQS의 태그 정보를 확인한다.
response = client.list_queue_tags(QueueUrl='QueueUrl').get('Tags')
결과
참고 문서
https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sqs.html#client