amazon-s3 - 使用 Airflow 删除 S3 存储桶对象
问题描述
在 Airflow 中使用 S3DeleteObjectsOperator 不会删除指定 S3 存储桶中的对象,即使任务显示已成功删除
delete_s3bucket_files = S3DeleteObjectsOperator(
task_id='delete_s3bucket_files',
start_date=start_date,
bucket='*********************',
keys='*********************',
aws_conn_id='aws_default',
)
所以任务运行显示密钥已删除,但它仍然存在于我的 S3 存储桶中。
[2019-09-16 11:39:25,775] {base_task_runner.py:101} INFO - Job 1346: Subtask delete_s3bucket_files [2019-09-16 11:39:25,775] {cli.py:517} INFO - Running <TaskInstance: daily_database_transfer.delete_s3bucket_files 2019-09-16T09:39:16.873030+00:00 [running]> on host Saurav-macbook.local
[2019-09-16 11:39:25,971] {s3_delete_objects_operator.py:83} INFO - Deleted: ['*********************']
我在这里遗漏了什么,或者有没有办法找出它为什么不删除对象?
解决方案
您可以S3DeleteBucketOperator
在force_delete=True
删除存储桶之前强制删除存储桶中的所有对象。
所以你可以这样做:
from airflow.providers.amazon.aws.operators.s3_bucket import S3DeleteBucketOperator
delete_s3bucket = S3DeleteBucketOperator(
task_id='delete_s3bucket_task',
force_delete=True,
start_date=start_date,
bucket_name='*********************',
aws_conn_id='aws_default',
)
如果您更喜欢单独删除文件和删除存储桶,您可以执行以下操作:
from airflow.providers.amazon.aws.operators.s3_bucket import S3DeleteBucketOperator
from airflow.providers.amazon.aws.operators.s3_delete_objects import S3DeleteObjectsOperator
delete_s3bucket_files = S3DeleteObjectsOperator(
task_id='delete_s3bucket_files',
start_date=start_date,
bucket='*********************',
keys='*********************',
aws_conn_id='aws_default',
)
delete_s3bucket = S3DeleteBucketOperator(
task_id='delete_s3bucket_task',
force_delete=False, #bucket will be deleted only if it's empty.
start_date=start_date,
bucket_name='*********************',
aws_conn_id='aws_default',
)
delete_s3bucket_files >> delete_s3bucket
推荐阅读
- c# - 我如何在 C# 中进行此计算
- autodesk-forge - 在 Forge API 中以 JSON 形式返回 Revit 元素数据
- oauth-2.0 - Microsoft Graph Api ROPC - AADSTS65001
- ruby - 从 Twitter 搜索 API 中排除多词关键字
- android - 无法在firebase动态链接的REST api中的请求正文中传递ofl参数?
- python - matplotlib secondary_xaxis() 函数不起作用
- javascript - 开玩笑,匹配正则表达式
- http - 如何在没有端口范围和 index.html 的情况下访问网页
- mesh-network - 在 batman-adv 网状网络中配置多个网关
- http - Сopas。在请求中传递标头并选择请求方法