【问题标题】:Invoke a lambda function when another lambda function is deployed部署另一个 lambda 函数时调用 lambda 函数
【发布时间】:2020-09-09 21:27:32
【问题描述】:

我有一个提供配置对象的 AWS lambda 函数。每当更新此 lambda 函数(即再次部署)时,我需要触发另一个 lambda 函数,该函数检测这些配置对象中的更改并采取一些措施。如何监控这个 lambda 部署,我需要订阅哪个云观察事件?

【问题讨论】:

    标签: amazon-web-services aws-lambda


    【解决方案1】:

    我假设您的 lambda 部署不是由 CodeDeploy 管理的。如果是这样,我建议考虑创建一个CloudTrial trial

    使用默认设置创建 CT 试用版后,它将监控所有 management API calls 到您的 lambda 函数。其中之一是UpdateFunctionCode。因此,您可以为 AWS API Call via CloudTrail 创建 CloudWatch 规则。该规则将在函数更新 API 调用时触发。

    此类规则的示例:

    {
      "source": [
        "aws.lambda"
      ],
      "detail-type": [
        "AWS API Call via CloudTrail"
      ],
      "detail": {
        "eventSource": [
          "lambda.amazonaws.com"
        ],
        "eventName": [
          "UpdateFunctionCode"
        ]
      }
    }
    

    然后您可以根据捕获的第一个函数的更新事件触发第二个 lambda。

    【讨论】:

    • 是的,lambda 部署是使用节点无服务器包完成的。我会尝试你在这里提到的方法。非常感谢。
    • 嗨 Marcin,我在哪里可以在规则中指定特定的函数名称?
    • @pras007 您必须检查UpdateFunctionCode 的事件对象的结构,并在此基础上进行修改。例如对于DeleteFunction,函数名称在"requestParameters": { "functionName": "basic-node-task" } 中。可悲的是,我不知道UpdateFunctionCode 的事件结构是什么。您可以按原样运行一次,然后将事件打印到 lambda 函数中的 cloudwatch 日志中,并在那里检查。
    【解决方案2】:

    根据@Marcin 的建议,使用控制台日志打印事件。以下规则有助于过滤特定功能;

    {
      "source": [
        "aws.lambda"
      ],
      "detail-type": [
        "AWS API Call via CloudTrail"
      ],
      "detail": {
        "eventSource": [
          "lambda.amazonaws.com"
        ],
        "eventName": [
          "UpdateFunctionCode20150331v2"
        ],
        "responseElements": {
          "functionName": [
            "myFunction"
          ]
        }
      }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-12-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多