Я получаю объекты S3 с помощью приведенного ниже кода и удаляю объекты, относящиеся к предыдущему дню:
today = datetime.now().strftime('%Y-%m-%d')
s3 = boto3.client('s3', region_name='eu-central-1')
s3_objects = s3.list_objects(Bucket='bucket', Prefix ='path/to/folder/')
for o in s3_objects["Contents"]:
if o["LastModified"].strftime('%Y-%m-%d') != today:
s3.delete_object(Bucket='bucket', Key=o['Key'])
Однако измененная временная метка объектов S3 находится в UT C, поэтому я не получаю желаемых результатов. Я могу изменить текущую временную метку на локальную временную метку, используя pytz:
datetime.now(pytz.timezone('Europe/Berlin')).strftime('%Y-%m-%d %H:%M:%S')
Использование того же самого на o ["LastModified"] не работает и выдает ошибку TypeError: 'datetime.datetime' object is not callable
Одним из решений является просто добавление часов разницы во времени, но это невозможно сделать из-за разницы во времени с UT C из-за экономии дневного света.
Может кто-нибудь помочь мне с тем, как преобразовать дату модификации объекта S3 по местному времени (CET)?