Amazon: S3通过Lambda

AWS Lambda允许您独立于服务器和应用程序运行代码。当连接到AWS S3时,S3桶中的事件可以触发Lambda函数。

您可以将AWS S3桶连接到InsightOps,以便从AWS Lambda跟踪事件和函数。

为了连接它们,您必须:

你也可以使用an工作代码示例

在你开始之前

确保您使用的是Python的证书。你可以在这里阅读更多关于证书:https://github.com/certifi/python-certifihttps://certifi.io/en/latest/

用例

你可以在几种不同的情况下使用AWS Lambda insight:

  • 转发AWS ELB和CloudFront日志。
  • 向前OpenDNS日志
  • 转发CloudTrail日志(如果您已经配置了CloudTrail S3集成)

获取日志Token

下载包后,必须获取至少一个日志令牌。基于令牌的输入是一个单一的TCP连接,其中每个日志行包含一个唯一标识目标日志的令牌。

获取日志令牌:

  1. 登录您的InsightOps帐户。
  2. 按照下面的说明获取日志令牌:TCP日志标记

或者,您可以使用现有的令牌来聚合日志。

部署一个脚本到AWS Lambda

现在,您必须在AWS Lambda中创建一个函数,该函数将调用一个脚本来运行并触发一个事件以供AWS S3跟踪。

您必须完成以下操作:

配置功能

按照下面的说明在AWS Lambda中创建一个新函数:https://docs.aws.amazon.com/lambda/latest/dg/getting-started-create-function.html

配置新功能。

  1. 登录到AWS控制台。
  2. 从“服务”下拉菜单中选择λ从“计算”部分。
  3. 从左侧导航菜单中选择功能然后点击橘子创建新函数右边的按钮。
  4. 在“蓝图”部分,搜索并选择s3-get-object-python蓝图。
  1. 单击下一个按钮。
  2. 在“触发器”部分中,搜索并选择S3作为触发器。
  1. 在“Bucket”中选择存储要使用的日志数据的S3 Bucket。
  2. 对于“事件类型”,选择事件类型对象创建(全部)。
  1. 检查启用触发复选框。
  2. 单击下一个按钮。

上传功能代码

  1. 你的函数名称。
  2. 可选地提供描述。
  3. 将“runtime”下拉框中的python运行时版本设置为python 3.6。
  4. 在您的资产上,创建一个.ZIP文件,包含r7insight_lambdas3.py和文件夹certifi你可在此下载:https://github.com/rapid7/r7insight_lambdaS3
    • 确保文件和证书文件夹位于ZIP归档文件的根目录中
  5. 在“代码输入类型”下,单击上传ZIP文件单选按钮。
  6. 选择在前面的步骤中创建的归档zip文件。
  7. 在“Handler”字段中,将处理程序名称设置为r7insight_lambdas3.lambda_handler
  1. 在“角色”字段中,分配或创建一个允许的新角色getobject在您选择的S3桶上。在AWS Lambda中创建角色会自动授予所需的权限。
  2. 在“Memory”下,将内存限制设置为足够高的值,以便于日志解析和发送。
  3. 在“Timeout”下,将Timeout设置为足够高的值,以便于日志解析和发送。
  4. “VPC”设置为“无VPC”。如果您选择使用VPC,请在这里查阅Amazon文档:https://docs.aws.amazon.com/vpc/index.html#lang/en_us
  5. 在“环境变量”中,将以下内容设置为键值对:
    • 区域-您的洞察区域(如欧盟、美国等)
    • Token -之前配置的Token UUID
  1. 单击下一个按钮。
  2. 查看功能配置后,单击创建函数按钮。
  3. 您可以在下一个屏幕中测试功能配置。
  4. 单击关闭并保存保存功能配置。

一旦S3桶吸收了日志文件,Lambda函数就会触发。

示例代码

下面是一个工作代码示例:

         
1
当前AWS自动将根目录名设置为lambda函数名
2
├──certifi /
3.
│├──
4
│├──__init__ . py
5
│├──__main__.py
6
│├──cacert.pem
7
│├──core.py
8
│├──old_root.pem
9
│└──weak.pem
10
├──r7insight_lambdas3.py”
11
' '
12
13
注意:通过github下载的Zip文件将所有文件放在一个子目录下;因此,将下载的zip文件直接上传到AWS将不起作用。

在insight中配置数据

通过S3桶完成AWS Lambda的配置:

  1. 1 .登录insight tops。
  2. 选择数据收集页左边的菜单。
  3. 选择AWSλS3图标,从“系统数据”部分。
  4. 在“日志名称”字段中,输入您希望在日志搜索中看到的该数据的名称。
  5. 选择要将此日志添加到的现有日志集,或键入名称以创建新的日志集。
  6. 单击完成按钮。

一旦AWS S3桶开始接收日志文件数据,Lambda函数就会启动,您将看到log Search页面上反映的日志。日志以JSON的形式出现,大约需要30秒。