AWS TimeStream Python SDK: невозможно создать правильный клиентский объект
На основе документации AWS TimeStream SDK для Python у меня есть следующий код:
import boto3
def list_databases(self):
print("Listing databases")
try:
result = self.client.list_databases(MaxResults=5)
self._print_databases(result['Databases'])
next_token = result.get('NextToken', None)
while next_token:
result = self.client.list_databases(NextToken=next_token, MaxResults=5)
self._print_databases(result['Databases'])
next_token = result.get('NextToken', None)
except Exception as err:
print("List databases failed:", err)
session = boto3.Session(profile_name='superuser', region_name='eu-west-1')
query_client = session.client('timestream-query')
list_databases(query_client)
Аутентификация для моего пользователя
superuser
вроде работает нормально, но
boto3
сессия, используемая для моего
query_client
не имеет клиентского объекта:
Listing databases
List databases failed: 'TimestreamQuery' object has no attribute 'client'
Что мне не хватает?
1 ответ
Решение
Это имя аргумента в этом методе, вероятно, ошибочно:
# this name is discouraged in non-OO code:
def list_databases(self):
обычно используется в объектно-ориентированном коде Python, чего здесь нет.
Переименуйте его следующим образом:
# this is better:
def list_databases(client):
Затем удалите все упоминания о
self
в теле функции, например:
# this is incorrect:
result = self.client.list_databases(MaxResults=5)
должно быть:
# this should work:
result = client.list_databases(MaxResults=5)