【问题标题】:Accessing files in EC2 from Lambda从 Lambda 访问 EC2 中的文件
【发布时间】:2017-07-11 10:02:21
【问题描述】:

我在 AWS 中的 EC2 服务器很少。每当磁盘空间超过限制时,我想自动删除 EC2 实例中的一些文件(可能是日志文件夹)。我打算为此使用 Lambda 和 cloudwatch。我可以使用 Lambda 与 EC2 交互吗?如果不可能,实现此功能的替代方法是什么。

【问题讨论】:

  • 您打算如何删除这些文件?使用脚本?
  • 是 windows server EC2 还是 linux 的?
  • 是计划使用脚本删除。它是 windows EC2 服务器。
  • 清理磁盘的意图。脚本是最好的方法吗?其他建议最推荐的方式。
  • 为什么不直接使用windows scheduler和本地bat/cmd文件?

标签: amazon-web-services amazon-ec2 lambda


【解决方案1】:

这不是 AWS Lambda 函数的合适用例。

AWS Lambda 适用于需要计算以响应事件的任务。但是,您的用例是在不需要云计算的 EC2 实例上操作信息。

您可以在每台计算机上运行由计划任务触发的脚本。

或者,您可以使用Systems Manager Run Command(也称为EC2 运行命令),它允许您在多个 Amazon EC2 实例上运行命令并查看结果。这可以用来触发本地脚本,或者它可以传递整个命令来运行(包括脚本)。它专为您描述的任务类型而构建。

【讨论】:

【解决方案2】:

AWS Lambda 可以访问您的实例(如果它们在 Internet 上可用)。如果它们在 Internet 上不可用,则可以使用 VPC 中的 NAT 或实例网关授予对 AWS lambda 的访问权限。

问题是:访问您的实例并不意味着访问实例文件系统。要从 Lambda 中删除文件,您可以使用两种方法:

  1. 在您的实例中配置网络文件系统服务连接 在您的 lambda 函数中使用此服务。使用窗户你会 只是“共享”您的磁盘,但在这种情况下,您将使用一些 SMB lambda 代码中的库,“我认为”没有本机 SMB 支持。请记住,您的安全人员会尖叫 当你提出这个替代方案时大声说出来。
  2. 在您的 EC2 实例中创建一个“代理”并使其作为 Windows 服务并从您的 lambda 函数调用此代理。在 在这种情况下,lambda 将开始执行代理 将负责文件删除。

另一种选择是按照 Ramesh 的建议,创建一个 Powershell 脚本并配置一个 cron 作业。为简单起见,您可以使用此 Powershell 脚本创建一个图像,并使用该图像来初始化每个实例。相同的解决方案将适用于 lambda 替代方案中的“代理”解决方案。

我认为,无论如何,您都需要更改 150 台服务器中的某些内容。使用自定义图像可以帮助您稍微简化这一点,但如果不进行一些更改,您将无法获得解决方案。

【讨论】:

  • 是否可以从 Lambda 调用 EC2 中运行的服务?
  • 是的。 Lambda 在 AWS 管理的容器中运行。如果您将 lambda 配置为使用您的 VPC,则容器将收到您的 VPC 的 IP 地址。如果您没有更改 VPC 配置,则 lambda 将可以访问 Internet。在每种情况下,您都可以在 lambda 代码中运行单个 http 客户端来建立连接并访问您的 EC2 实例。实际上,它不需要是 http 客户端。您可以使用任何 TCP 客户端,但由于安全性,http 很简单。当然,您必须在您的 EC2 中提供一些接受连接的服务。
【解决方案3】:

根据以下线程,除非您使用不同的方法向公众公开文件,否则您无法访问 EC2 虚拟机内的文件。

AWS Forum

从论坛引用

如果您谈论的是底层 EC2 实例,答案是否定的,您无法访问这些文件。

但是,作为解决问题的方法,您可以使用计划作业来清理文件,具体取决于您的使用情况。您可以使用服务或 cron 作业。

【讨论】:

  • 我有大约 150 台服务器,我想要一个可以长期管理的解决方案。运行作业是一项开销,我想在创建新实例时安装服务,并且经常需要更多的努力来验证作业是否正在运行。
  • AWS 论坛线程和您的回复谈到了访问底层 EC2 实例文件系统,或者:运行 lambda 的 EC2 实例/容器的文件系统。 Kamal 需要在自己的 VPC 中访问 EC2 实例文件系统。
  • @GustavoTavares 如果你仔细看,答案实际上是关于这两种情况的。既然它谈到了这两种情况,希望你能撤消反对票:)
  • @RumeshEranga,我看不出这个问题与删除底层 EC2 实例上的文件有什么关系。实际上,它甚至没有提到 Lambda 在 EC2 实例中执行。根据问题,很明显 EC2 实例与现有服务器相​​关,与 Lambda 无关。 AWS From 线程就是专门讨论这个问题的。
  • 当然,我可以撤消否决票,但请尝试向我解释您如何将问题与下属实例联系起来。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-04-03
  • 2020-03-22
  • 1970-01-01
  • 2020-01-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多