S3_delete_objects_operator не удаляет файлы в корзине - PullRequest
0 голосов
/ 26 сентября 2019

Я реализовал S3DeleteObjectsOperator, но хотя задача показывает, что ключ успешно удален, в действительности объект не удаляется из корзины S3.

delete_s3bucket_files = S3DeleteObjectsOperator(
  task_id='delete_s3bucket_files',
  start_date=start_date,
  bucket='****',
  keys='******************',
  aws_conn_id='aws_default',
)

Даже если задача завершается как выполненная, онане удаляет объекты внутри указанного ключа в корзине.Я вижу журналы ниже:

[2019-09-26 14:19:15,554] {base_task_runner.py:101}INFO - Job 1435: Subtask delete_s3bucket_files [2019-09-26 14:19:15,553] {cli.py:517} INFO - Running <TaskInstance: test_s3_delete.delete_s3bucket_files 2019-09-26T12:18:59.362470+00:00 [running]> on host Saurav-macbook.local
[2019-09-26 14:19:15,883] {s3_delete_objects_operator.py:83} INFO - Deleted: ['******************']

Как понять, что выполняет задание и почему объект не удаляется?

1 Ответ

0 голосов
/ 27 сентября 2019

Не удалось заставить удаление объекта работать с S3DeleteObjectOperator, а также с методом delete_objects() в S3Hook.Поэтому вместо этого я использовал метод boto3 delete() для удаления объекта.

def delete_files():
  s3 = boto3.resource('s3', aws_access_key_id='****', aws_secret_access_key='******************')
  s3_bucket = s3.Bucket('****')
  s3_bucket.objects.all().delete()


delete_s3bucket_files = PythonOperator(
  task_id='delete_s3bucket_files',
  start_date=start_date,
  python_callable=delete_files,
  dag=dag
)

Не уверен, что это правильный способ, но у меня работает на данный момент.

...