Python boto3 проверяет сеанс

#python #amazon-s3 #boto3

#питон #amazon-s3 #бото3

Вопрос:

Я запускаю приведенный ниже код всякий раз, когда мне нужно загрузить файлы на S3:

 client = boto3.session.Session().client(self.client_type, use_ssl=True)
# use the client to upload
 

Однако это означает, что я делаю запрос на авторизацию в S3 каждый раз, когда мне нужно загрузить файл. В моем случае есть много файлов, которыми я хочу поделиться, если сеанс все еще открыт для того же клиента, но я не смог найти способ определить через boto3, действителен ли сеанс, есть ли способ?

В настоящее время я отслеживаю 1 час времени в моем приложении, чтобы сделать это:

 class ArchiveStorage(object):

    client = None
    session_duration_seconds = 60 * 60  # One Hour
    client_type = "s3"
    last_session = None

    def __init__(self):
        if ArchiveStorage.client is None or not self._is_session_valid():
            ArchiveStorage.client = self._create_new_s3_session()
        self.client = ArchiveStorage.client

    def _create_new_s3_session(self):
        return boto3.session.Session().client(self.client_type, use_ssl=True)

    def _is_session_valid(self):
        if not self.last_session:
            return False
        now = get_logical_timestamp()
        if now - ArchiveStorage.last_session > self.session_duration_seconds:
            return False
        return True
 

Есть ли способ проверить сеанс S3 без необходимости вычислять время сеанса на стороне приложения?

Комментарии:

1. Зачем вам нужно проверять сеанс? Обычно Session объект заботится о тайм-аутах сеанса и тому подобном

2. Как может истечь срок действия сеанса? Используете ли вы роли IAM для создания сеанса?