#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 для создания сеанса?