如何解决googleCloudStorageDeleteOperator URL编码为“ /”
我想删除GCS存储桶中DAG末尾的临时文件。当我在arguments对象中添加值列表时,出现一个错误,即找不到该文件。原因是符号/是URL编码的%2F。
gcs_delete_temp = GoogleCloudStorageDeleteOperator(
task_id="gcs_delete_temp",bucket_name=f"super_bucket",objects=[
"rte/temp/{{ macros.ds_add(ds,-10) }}_injectee.parquet","rte/temp/{{ macros.ds_add(ds,-10) }}_soutiree.parquet"
]
)
我得到了错误:
google.api_core.exceptions.NotFound:404 DELETE https://storage.googleapis.com/storage/v1/b/super_bucket/o/rte%2Ftemp%2F2020-07-25_injectee.parquet:未找到
我试图将其转义,但是**符号也是URL编码。
那是个错误吗?还是功能?
解决方法
我建议首先尝试从GCS存储桶中删除至少一个临时文件,然后开始向对象数组添加过滤器。我相信这可能是由于您在代码中实现了对象列表。似乎Apache Airflow提供了一个代码片段,用于从GCS存储桶中删除对象,有关更多信息,请参见here。
我还建议您查看documentation从Cloud Storage中环境的dags文件夹中删除DAG文件。 但是,此方法需要您script gcloud CLI commands,这也是处理输出和自动执行任务的有效方法。
,我认为编码 URI 的行为是正确的(请查看此页面 https://cloud.google.com/storage/docs/request-endpoints#encoding)
例如,为了删除parquet文件
gs://my_bucket/example0/example1/part-*.parquet
这个配置对我有用:
gcs_delete_temp = GoogleCloudStorageDeleteOperator(
task_id="gcs_delete_temp",bucket_name="my_bucket",prefix= "example0/example1/part"
)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。