在EC2实例上运行AWS Lambda运行命令并获取结果

Tan*_*bey 6 lambda amazon-ec2 amazon-web-services

我有一个运行几个进程的EC2实例.我还有一个通过各种方式触发的Lambda脚本.我希望这个Lambda脚本与我的EC2实例通信并从中获取正在运行的进程列表(基本上ps aux在EC2框上运行,并读取输出).

现在只需一个实例及其instance-id即可.只需SSH,运行命令,获取输出,并在我的路上.但是,我想将其扩展为多个EC2实例,其中只有instance-id已知且可能没有给出SSH密钥.

Lambda和Boto(或其他库)是否可以进行这样的配置?或者我只需要在我的每个实例上运行一个微服务器,它将回复给定的信息(我真的想避免的事情)

小智 11

您可以通过EC2 Run Command轻松完成此操作 - https://aws.amazon.com/ec2/run-command/

EC2 Run Command提供了一种在实例组上远程执行管理任务的简单方法,而无需SSH.

特别:

  • 使用Lambda函数中的send-command API获取一组实例上的所有进程的列表.您可以通过提供实例列表甚至标记查询来完成此操作
  • 您还可以使用CloudWatch Events直接触发Run Command


Yes*_*rni 0

我认为对于这种情况没有现成可用的东西。

不要询问,而是尝试其他方法。在所有 ec2 实例上安装代理,该代理将所需信息报告给中央服务或可能是 DynamoDB 表,其中 HashKey 作为 InstanceId。

您可能希望将此脚本烘焙为 AMI 本身中的 cron 作业(可能每小时执行一次?)。

通过此实施,您可以降低在每个 EC2 实例上管理和运行单独的 Web 服务的复杂性。

按需查询 DynamoDB 表。由于数据可能不是实时的,因此会存在延迟,但您始终可以根据需要缩短 CRON 间隔。