查找谁调用了 AWS Lambda 函数

AWS*_*ner 5 amazon-web-services python-3.x boto3 aws-lambda

我有用 Python 3.7 编写的 Lambda 函数。

某些用户通过 AWS CLI 使用以下命令调用此 Lambda 函数:

  aws lambda invoke --function-name stXXX-XXX out --log-type Tail
Run Code Online (Sandbox Code Playgroud)

我想捕获谁在我的代码中通过 AWS CLI 调用了我的 Lambda 函数。

有什么方法可以找到谁在 python boto3 代码中调用我的 Lambda 函数?

Mar*_*cin 5

是的。通常,您必须在 CloudTrail 中启用日志记录数据事件

默认情况下,lambda 调用的日志记录被禁用,因为它可能会导致生成大量日志。

日志事件包含有关哪个 IAM 用户或角色调用该函数的信息。例如:

      "userIdentity": {
        "type": "IAMUser",
        "principalId": "A1B2C3D4E5F6G7EXAMPLE",
        "arn": "arn:aws:iam::999999999999:user/myUserName",
        "accountId": "999999999999",
        "accessKeyId": "AKIAIOSFODNN7EXAMPLE",
        "userName": "myUserName"
      },
Run Code Online (Sandbox Code Playgroud)


Joh*_*ein 5

看来你的情况是:

  • 您有一个启动 Amazon EC2 实例的 AWS Lambda 函数
  • 您希望 Lambda 函数检测发出了请求,然后在启动 Amazon EC2 实例之前确认他们位于授权列表中

遗憾的是,有关“谁”调用了 Lambda 函数(或者更具体地说,哪个 IAM 实体调用了该函数)的信息不可用。

Python 中的 AWS Lambda 上下文对象不会向 Lambda 函数提供此信息。

一种“更正确”的方法是控制 IAM 权限来确定谁可以调用此 Lambda 函数。只有经过正确授权的人员才有权调用lambda:Invoke此功能。同样,限制谁可以使用iam:PassRole此函数使用的 IAM 角色也很重要,因为它有权启动 EC2 实例,并且可以在其他函数上使用,除非PassRole受到限制。