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)
Другие вопросы по тегам