【发布时间】:2021-01-07 17:32:20
【问题描述】:
我已经实现了 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] 确实需要
S3DeleteObjectOperator,因为S3Hook已经公开了delete_objects()method(您可以在python_callable中调用它)PythonOperator)? [2] 这看起来不像是Airflow问题;而是python/botocore/boto3环境问题或 AWS 权限(credentials-profile / IAM 角色)问题。您是否通过Pythonshell(与Airflow在同一台机器上)运行代码来检查是否能够完成相同的删除功能? -
谢谢,我也尝试了 S3Hook delete_objects() 方法,但无法删除文件。相反,我只是使用 boto3 delete() 方法来删除对象