2015-11-05 153 views
0

我可以訪問S3存儲桶。我不擁有這個桶。我需要檢查是否有新文件添加到存儲桶中,以便對其進行監視。如何使用boto使用python監控AWS S3存儲桶?

我看到桶可以觸發事件,並且可以利用Amazon的Lambda來監視和響應這些事件。但是,我無法修改存儲桶的設置以允許此設置。

我的第一個想法是篩選所有文件並獲得最新的文件。但是,該存儲桶中有很多文件,這種方法證明效率很低。

具體問題:

  1. 有沒有一種方法能夠有效地獲得在桶中最新的文件?
  2. 有沒有一種方法可以監視使用boto上傳到存儲桶?

以下具體問題:

  • 你會如何解決這個問題?假設你必須把最新的文件放在一個桶裏並打印出它的名字,你會怎麼做?

謝謝!

回答

0

對不起,您可以在將對象添加到Amazon S3存儲桶或從中刪除對象時觸發AWS Lambda。也可以發送郵件至Amazon SNSAmazon SQS。這些設置需要由具有桶權限的人員配置。

如果您沒有這種權限,但您有權調用GetBucket(),則可以檢索存儲桶中的對象列表。每個API調用最多返回1000個對象。

還有沒有API調用可用於「獲取最新文件」。

沒有「監控」上傳到存儲桶的原始代碼。您需要編寫列出存儲桶內容的代碼,然後標識新的對象。

我該如何解決這個問題?我會要求存儲桶的所有者添加一些功能來觸發Lambda/SNS/SQS,或者提供文件提要。如果這是不可能的,我會編寫自己的代碼來掃描整個存儲桶,並按定期計劃執行。

+0

你好。感謝你的回答!我做了類似於你的建議/我最初的想法。在while循環中,我得到項目列表,按日期排序並提取第一個項目。我也保留最後一個新文件。如果當前最新的文件與最新的最新文件不同,這是一個新文件,所以我會做這件事。儘管如此,我認爲這種方法根本不算優雅,但需要近半分鐘的時間才能訂購桶中的所有物品。迭代一次找到最新的也沒有太大的改進。 – RandomGuyqwert

+0

是的,有更好的方法(Lambda,SQS,SNS,或者甚至將信息存儲在DynamoDB表中),但它們都需要對存儲桶本身進行權限。只有讀權限,只有有限的選項。 –

相關問題