[英]Luigi write file directly to S3
我正在用Luigi創建一個數據管道,我正在嘗試將處理后的數據直接寫入S3存儲桶。 我使用的代碼是:
import luigi
from luigi.s3 import S3Target, S3Client
class myTask(luigi.Task):
def requires(self):
return otherTask()
def output(self):
client = S3Client('ACCESS_KEY', 'SECRET_KEY')
return S3Target('s3.amazonaws.com/mybucket/myfolder/myfile.tsv', client=client)
def run(self):
fo = self.output().open('w')
with self.input().open('r') as f:
data = dosomething_to_input(f)
fo.write(data)
fo.close()
運行腳本后,我得到錯誤:
S3ResponseError: S3ResponseError: 405 Method Not Allowed
我們可以直接將文件寫入S3存儲桶嗎?
問題解決了! 這是因為s3 buckt的格式。 正確的格式應為's3:// mybucket / myfile'405 ERROR是由boto無法識別存儲桶名稱引起的。 另外需要提一下boto不能用'。'識別桶名。 在Python 2.7。*中,所以你必須使用有效的存儲桶名稱或在配置文件中更改它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.