Итак, у меня есть API, который вызывает сервисы AWS, и я использую Boto3 для этого в своем приложении на python.У меня есть вопрос, касающийся уровня доступа клиента к Boto3.Я думаю, что я понимаю разницу между ними (один - низкоуровневый доступ, другой - высокоуровневый объектно-ориентированный доступ к службам), но мой вопрос в том, можно ли инстанцировать и клиента и ресурса?Например, к некоторым функциям ресурса проще получить доступ через ресурс через клиента, но есть некоторые функции, которые есть только у клиента.Плохо ли создавать экземпляры обоих и использовать самый простой уровень доступа, когда это необходимо, или будет какое-то разъединение при использовании двух отдельных уровней доступа при подключении к одному и тому же ресурсу?
У меня не возникает никаких ошибок с моимкод для подключения к SQS показан ниже, однако я хочу убедиться, что в дальнейшем я не стреляю себе в ногу, произвольно выбирая между клиентом / ресурсом для одного и того же соединения aws.
import boto3
REGION = 'us-east-1'
sqs_r = boto3.resource('sqs', REGION)
sqs_c = boto3.client('sqs', REGION)
def create_queue(queue_name):
queue_attributes = {
'FifoQueue': 'true',
'DelaySeconds': '0',
'MessageRetentionPeriod': '900', # 15 minutes to complete a command, else deleted.
'ContentBasedDeduplication': 'true'
}
try:
queue = sqs_r.get_queue_by_name(QueueName=queue_name)
except:
queue = sqs_r.create_queue(QueueName=queue_name, Attributes=queue_attributes)
def list_all_queues(queue_name_prefix=''):
all_queues = sqs_c.list_queues(QueueNamePrefix=queue_name_prefix)
print(all_queues['QueueUrls'])
print(type(all_queues))
Обаиз вышеупомянутой функции работают должным образом, один создает очередь, а другой перечисляет все очереди в sqs.Однако одна функция использует ресурс, а другая - клиент.Это нормально?