簡體   English   中英

如何使用 AWS Lambda 函數將文件從 S3 存儲桶復制到 EC2 Windows 實例

[英]How to copy a file from S3 bucket to an EC2 Windows instance using AWS Lambda function

我正在嘗試通過 AWS Lambda 函數將上傳到 S3 的文件復制到 EC2 Windows 實例。 我的要求是 AWS Lambda 函數應該在文件上傳到 S3 存儲桶時觸發,並且應該將同一文件復制到 EC2 實例。

AWS Lambda 函數如何連接到 EC2 Windows 實例? 請讓我如何實現這個場景。

您可以通過兩種方式解決此問題:

  1. 為您的 Lambda 和 EC2 創建共享文件系統。 https://aws.amazon.com/blogs/aws/new-a-shared-file-system-for-your-lambda-functions/

  2. 在您的 EC2 上創建 API 服務以接收文件。

第一種方法是最安全的,可能也是更好的方法。 第二種方法更有趣。 您可以創建一個 Node+Express API 來接收文件並在 POST 請求中從您的 Lambda 發送它。

AWS Lambda 函數EC2 實例之外運行。 實際上,您可以將其視為非常臨時的 EC2 實例。

因此,您的問題的答案是“好吧,您如何將某些內容從 EC2 Linux 實例復制到 Windows 實例?”

最大的問題是良好的安全性意味着將東西“推”到 EC2 實例中並不容易。 例如,我無法將東西推送到您當前使用的計算機中。 因此,最好的答案是與其“推”文件,不如“拉”文件。 這里有幾個方法:

系統管理器運行命令

AWS Lambda 函數可以觸發AWS Systems Manager Run Command ,它可以在 EC2 實例上執行腳本。 此腳本可以將文件從 S3“拉”到實例上。

這是可能的,因為 EC2 實例安裝了 Systems Manager 代理,它可以接收請求並觸發腳本。

輪詢 Amazon SQS 隊列

AWS Lambda 函數可以向 Amazon SQS 隊列發送消息。 實例上的腳本可能會不斷輪詢 SQS 隊列以查找消息。 當它收到一條消息時,它使用該信息將文件從 S3“拉”到實例中。 (對 SQS 隊列使用長輪詢以減少請求數。)

事實上,Amazon S3 可以將消息直接發送到 Amazon SQS 隊列,而無需 Lambda 函數。

使用網絡服務器

AWS Lambda 函數可以通過運行在 EC2 實例上的 Web 服務器發布文件,該服務器正在“偵聽”此類請求。

共享文件系統

正如@mimetist 所建議的,AWS Lambda 函數可以連接到 Amazon EFS 文件系統。 因此,它可以將文件存儲在文件系統上,如果 EC2 實例也安裝了相同的文件系統,則可以立即使其可訪問。

現在通過使用 AWS Lambda 和 S3 解決了這個問題,系統管理器為我工作。 我創建了一個 node.js 腳本來從 s3 獲取自動事件並將詳細信息推回系統管理器運行 powershell 腳本文檔,從而復制到按預期工作的 ec2 實例。

您需要根據從 s3 到 EC2 的文件傳輸選擇正確的實例類型

暫無
暫無

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

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