AWS, Firebase и уведомления ⇐ Python
-
Anonymous
AWS, Firebase и уведомления
Создать триггеры в S3 Если данные загружены, затем Поместите фиктивный скрипт Python (выведите имена недавно загруженных файлов и их размер). Фиктивный скрипт отправит в приложение 4 числа. Числа должны обозначать день, месяц, год и время выполнения скрипта. Пустой скрипт возьмет загруженные файлы и поместит их в подпапку с названием «обработано», если обработка прошла успешно. Ограничьте фиктивный скрипт обработкой максимум 10 файлов / 10 МБ за раз.
импортировать бото3 импортировать базу64 время импорта # Максимальное количество файлов и ограничение общего размера MAX_FILES = 10 MAX_TOTAL_SIZE_MB = 10 # Укажите имя корзины S3 напрямую Bucket_name = "futter-app-*********************-Мумбаи" Защиту лямбда_handler (событие, контекст): # Проверьте, вызвано ли событие запросом S3 PUT если «Записи» в событии и «s3» в событии ['Записи'][0]: # Получаем ключ объекта из события object_key = событие['Records'][0]['s3']['object']['key'] # Проверяем, является ли загруженный объект папкой если object_key.endswith('/'): print(f"Загружена папка: {object_key}") process_uploaded_folder(object_key) еще: print("Файл загружен. Обработка...") process_uploaded_file(object_key) еще: print("Действительное событие S3 не найдено.") защитаprocess_uploaded_folder(folder_key): # Получить текущую дату и время текущее_время = время.локальноевремя() день, месяц, год, time_str = current_time.tm_mday, current_time.tm_mon, current_time.tm_year, time.strftime("%H:%M:%S", current_time) # Распечатать имя папки и ее размер print("Недавно загруженные папки:") folder_size_mb = get_folder_size_mb(folder_key) print(f"Папка: {folder_key}, Размер: {folder_size_mb} МБ") # Отправьте 4 номера в Firebase send_numbers_to_firebase (день, месяц, год, time_str) # Переместить загруженную папку в подпапку с названием «обработано». move_folder_to_processed(folder_key) защита get_folder_size_mb (folder_key): s3 = boto3.client('s3') ответ = s3.list_objects_v2(Bucket=bucket_name, Prefix=folder_key) total_size_bytes = sum(obj['Size'] для obj в ответе.get('Contents', [])) folder_size_mb = total_size_bytes / (1024 * 1024) # Преобразовать байты в мегабайты вернуть папку_size_mb Защиту Process_uploaded_file (object_key): # Получить текущую дату и время текущее_время = время.локальноевремя() день, месяц, год, time_str = current_time.tm_mday, current_time.tm_mon, current_time.tm_year, time.strftime("%H:%M:%S", current_time) # Распечатать имена файлов и их размер print("Недавно загруженные файлы:") object_size_mb = get_object_size_mb (object_key) print(f"Файл: {object_key}, Размер: {object_size_mb} МБ") # Отправьте 4 номера в Firebase send_numbers_to_firebase (день, месяц, год, time_str) # Переместить загруженный файл в подпапку «обработано». move_object_to_processed(object_key) защита get_object_size_mb (object_key): s3 = boto3.client('s3') ответ = s3.head_object(Bucket=bucket_name, Key=object_key) object_size_mb = ответ['ContentLength'] / (1024 * 1024) # Преобразование байтов в мегабайты вернуть object_size_mb def send_numbers_to_firebase(день, месяц, год, time_str): firebase_database_url = 'https://s3-file-*************************************** **.приложение/' URL = f'{firebase_database_url}/numbers.json' полезная нагрузка = { 'день': день, 'месяц': месяц, 'год': год, 'время': time_str } ответ = запросы.post(url, json=полезная нагрузка) если ответ.код_статуса == 200: print('Числа успешно отправлены в Firebase!') еще: print('Не удалось отправить числа в Firebase:', response.text) защита move_object_to_processed(object_key): s3 = boto3.client('s3') target_key = 'processed/' + object_key # Помещаем файлы в подпапку с названием "processed" copy_source = {'Ведро': имя_ведра, 'Ключ': object_key} # Копируем объект в «обработанную» подпапку s3.copy_object(CopySource=copy_source, Bucket=bucket_name, Key=target_key) защита move_folder_to_processed(folder_key): s3 = boto3.client('s3') target_key = 'processed/' +folder_key # Помещать папки в подпапку с названием "обработано" copy_source = {'Корзина': имя_ведра, 'Ключ': ключ_папки} # Копируем папку в «обработанную» подпапку s3.copy_object(CopySource=copy_source, Bucket=bucket_name, Key=target_key)
Код работает правильно, но в Firebase не было обновлений. в чем проблема в этом коде?
Создать триггеры в S3 Если данные загружены, затем Поместите фиктивный скрипт Python (выведите имена недавно загруженных файлов и их размер). Фиктивный скрипт отправит в приложение 4 числа. Числа должны обозначать день, месяц, год и время выполнения скрипта. Пустой скрипт возьмет загруженные файлы и поместит их в подпапку с названием «обработано», если обработка прошла успешно. Ограничьте фиктивный скрипт обработкой максимум 10 файлов / 10 МБ за раз.
импортировать бото3 импортировать базу64 время импорта # Максимальное количество файлов и ограничение общего размера MAX_FILES = 10 MAX_TOTAL_SIZE_MB = 10 # Укажите имя корзины S3 напрямую Bucket_name = "futter-app-*********************-Мумбаи" Защиту лямбда_handler (событие, контекст): # Проверьте, вызвано ли событие запросом S3 PUT если «Записи» в событии и «s3» в событии ['Записи'][0]: # Получаем ключ объекта из события object_key = событие['Records'][0]['s3']['object']['key'] # Проверяем, является ли загруженный объект папкой если object_key.endswith('/'): print(f"Загружена папка: {object_key}") process_uploaded_folder(object_key) еще: print("Файл загружен. Обработка...") process_uploaded_file(object_key) еще: print("Действительное событие S3 не найдено.") защитаprocess_uploaded_folder(folder_key): # Получить текущую дату и время текущее_время = время.локальноевремя() день, месяц, год, time_str = current_time.tm_mday, current_time.tm_mon, current_time.tm_year, time.strftime("%H:%M:%S", current_time) # Распечатать имя папки и ее размер print("Недавно загруженные папки:") folder_size_mb = get_folder_size_mb(folder_key) print(f"Папка: {folder_key}, Размер: {folder_size_mb} МБ") # Отправьте 4 номера в Firebase send_numbers_to_firebase (день, месяц, год, time_str) # Переместить загруженную папку в подпапку с названием «обработано». move_folder_to_processed(folder_key) защита get_folder_size_mb (folder_key): s3 = boto3.client('s3') ответ = s3.list_objects_v2(Bucket=bucket_name, Prefix=folder_key) total_size_bytes = sum(obj['Size'] для obj в ответе.get('Contents', [])) folder_size_mb = total_size_bytes / (1024 * 1024) # Преобразовать байты в мегабайты вернуть папку_size_mb Защиту Process_uploaded_file (object_key): # Получить текущую дату и время текущее_время = время.локальноевремя() день, месяц, год, time_str = current_time.tm_mday, current_time.tm_mon, current_time.tm_year, time.strftime("%H:%M:%S", current_time) # Распечатать имена файлов и их размер print("Недавно загруженные файлы:") object_size_mb = get_object_size_mb (object_key) print(f"Файл: {object_key}, Размер: {object_size_mb} МБ") # Отправьте 4 номера в Firebase send_numbers_to_firebase (день, месяц, год, time_str) # Переместить загруженный файл в подпапку «обработано». move_object_to_processed(object_key) защита get_object_size_mb (object_key): s3 = boto3.client('s3') ответ = s3.head_object(Bucket=bucket_name, Key=object_key) object_size_mb = ответ['ContentLength'] / (1024 * 1024) # Преобразование байтов в мегабайты вернуть object_size_mb def send_numbers_to_firebase(день, месяц, год, time_str): firebase_database_url = 'https://s3-file-*************************************** **.приложение/' URL = f'{firebase_database_url}/numbers.json' полезная нагрузка = { 'день': день, 'месяц': месяц, 'год': год, 'время': time_str } ответ = запросы.post(url, json=полезная нагрузка) если ответ.код_статуса == 200: print('Числа успешно отправлены в Firebase!') еще: print('Не удалось отправить числа в Firebase:', response.text) защита move_object_to_processed(object_key): s3 = boto3.client('s3') target_key = 'processed/' + object_key # Помещаем файлы в подпапку с названием "processed" copy_source = {'Ведро': имя_ведра, 'Ключ': object_key} # Копируем объект в «обработанную» подпапку s3.copy_object(CopySource=copy_source, Bucket=bucket_name, Key=target_key) защита move_folder_to_processed(folder_key): s3 = boto3.client('s3') target_key = 'processed/' +folder_key # Помещать папки в подпапку с названием "обработано" copy_source = {'Корзина': имя_ведра, 'Ключ': ключ_папки} # Копируем папку в «обработанную» подпапку s3.copy_object(CopySource=copy_source, Bucket=bucket_name, Key=target_key)
Код работает правильно, но в Firebase не было обновлений. в чем проблема в этом коде?