簡體   English   中英

每當我向 s3 添加新文件時,如何將文件從 s3 傳輸到我的 ec2 實例?

[英]How do I transfer files from s3 to my ec2 instance whenever I add a new file to s3?

我的 ec2 實例中有一個 py 腳本。 這需要一個視頻文件作為輸入,該文件位於 S3 存儲桶中。 每次將新文件添加到該存儲桶時,如何自動化 ec2 實例開始運行的過程? 我希望 ec2 實例識別這個新文件,然后將其添加到 py 腳本可以使用它並處理它並創建 output 文件的本地目錄。 然后我想將此 output 文件發送回存儲桶並將其存儲在那里。 我知道 boto3 庫用於將 s3 連接到 ec2,但是我不清楚如何自動觸發它並查找新文件,而無需手動啟動我的實例並復制所有內容

編輯:我有一個 python 程序,它基本上獲取一個視頻文件(mp4),然后將其分解為幀並將其縫合以創建一堆小的全景圖像並將其存儲在名為“輸出”的文件夾中。 現在,由於程序需要視頻作為輸入,因此在程序中我引用了一個特定的目錄,它應該從中選擇 mp4 文件並將其作為輸入讀取。 所以我現在想要的是,將有一個 s3 存儲桶來接收來自其他地方的視頻文件。 它將位於特定存儲桶內的文件夾中。 我希望將進入該存儲桶的任何新 mp4 文件復制或發送到我的實例中的輸入目錄。 另外,當發生這種情況時,我希望自動執行存儲在該實例中的 python 程序,並在輸入目錄中找到這個新的視頻文件來處理它並制作小全景圖,然后將其存儲在 output 目錄中,甚至更好,發送它到同一個 s3 存儲桶中的 output 文件夾。

您可以通過多種方式為此設計解決方案。 它們會根據您獲取視頻的頻率、可擴展性、容錯性、您想要並行處理的視頻數量等等而有所不同。 我將只提供一個,假設偶爾會上傳新視頻並且不需要自動縮放組來同時處理大量視頻。

根據上述假設,一種方法可能如下:

  1. 使用S3 事件通知上傳新視頻會觸發 lambda function 。
  2. Lambda 從 S3 事件中獲取視頻詳細信息(例如 s3 路徑),將視頻詳細信息提交到SQS 隊列啟動您的實例
  3. 您在實例上的應用程序一旦啟動,就會拉取 SQS 隊列以獲取要處理的視頻文件的詳細信息。 這將要求您的應用程序以啟動實例啟動的方式進行設計,這可以使用修改后的用戶數據、systemd 單元文件等來完成。

它是一個非常基本的解決方案,正如我提到的,許多其他方法都是可能的,包括自動縮放組、基於 sqs 大小的縮放策略、ssm 運行命令等等。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM