#!/usr/bin/env -S uv --quiet run --script # /// script # requires-python = ">=3.13" # dependencies = [ # "boto3", # ] # /// import boto3 import json from datetime import datetime # Set up sqs = boto3.client('sqs') queue_url = 'https://sqs.us-east-1.amazonaws.com/437795906767/prod-yt-ownership-1' cutoff_timestamp = datetime.fromisoformat('2025-03-04T12:10:00') # Your cutoff date def process_messages(): while True: # Receive messages (adjust MaxNumberOfMessages as needed) response = sqs.receive_message( QueueUrl=queue_url, MaxNumberOfMessages=10, WaitTimeSeconds=10, AttributeNames=['SentTimestamp'] ) if 'Messages' not in response: print("No more messages to process") break for message in response['Messages']: receipt_handle = message['ReceiptHandle'] # Get the message timestamp sent_timestamp = int(message['Attributes']['SentTimestamp']) / 1000 # Convert to seconds message_date = datetime.fromtimestamp(sent_timestamp) # If message is older than cutoff, just delete it if message_date < cutoff_timestamp: print(f"Deleting old message from {message_date}") sqs.delete_message( QueueUrl=queue_url, ReceiptHandle=receipt_handle ) else: # For newer messages, process normally or # change visibility timeout to return it to the queue print(f"Keeping message from {message_date}") # Either process it or: sqs.change_message_visibility( QueueUrl=queue_url, ReceiptHandle=receipt_handle, VisibilityTimeout=0 # Return to queue immediately ) if __name__ == "__main__": process_messages()