![](/img/trans.png)
[英]How to start an ec2 instance using sqs and trigger a python script inside the instance
[英]How to trigger ec2 instance and a python script inside when a new object is added to s3 bucket?
每當將新文件添加到 s3 存儲桶時,我想在我的 ec2 實例中自動運行 py 腳本。 截至目前,我已將我的存儲桶連接到 lambda function ,只要將文件添加到存儲桶,就會觸發事件通知。 我如何進一步使用它來觸發我的 ec2 實例開始執行 python 文件? 我想將該文件從存儲桶發送到實例,python 程序將使用該文件作為輸入。 我讀到我可以在添加 object 時觸發 lambda function。 現在我如何使用它或 SQS 自動啟動我的實例並在文件從存儲桶發送到實例后開始在其中運行 python 腳本?
如您所寫,在可能觸發 lambda function 的事件中將文件上傳到 s3 存儲桶。 lambda 可能是 python 代碼本身 - 在這種情況下,無需在 ec2 實例上運行它。 但是,您有執行時間限制(15 分鍾)。 如果這還不夠並且 ec2 實例正常停止,您可以使用 boto3 啟動您的 ec2 實例( 您可以使用此處描述的 lambda 代碼來執行此操作,並將實例配置為在啟動時運行 python 腳本(例如 @reboot entry在 /etc/crontab 中)
當創建新的 object 時,S3 可以生成事件https://docs.aws.amazon.com/AmazonS3/latest/userguide/NotificationHowTo.ZFC35FDC70D5FC69D2693ZEE7A5
一種類型的事件目的地可能是 SNS 主題https://docs.aws.amazon.com/AmazonS3/latest/userguide/notification-how-to-event-types-and-destinations.html
一種 SNS 訂閱類型是 HTTP/S POST https://docs.aws.amazon.com/sns/latest/api/API_Subscribe.html
因此,如果您的腳本可以實現一個簡單的 HTTP 偵聽器/api,它將幾乎立即被 SNS 觸發。
有幾種選擇:
/var/lib/cloud/scripts/per-boot/
中放置一個腳本,該腳本將在實例啟動時自動運行。 該腳本應該觸發應用程序,與上面的第二個選項相同,它從 SQS 隊列中讀取。 清空隊列后,腳本可以停止實例以最小化成本。 有關更多詳細信息,請參閱: EC2 實例完成任務時自動停止 - DEV 社區
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.