【发布时间】:2020-09-09 21:27:32
【问题描述】:
我有一个提供配置对象的 AWS lambda 函数。每当更新此 lambda 函数(即再次部署)时,我需要触发另一个 lambda 函数,该函数检测这些配置对象中的更改并采取一些措施。如何监控这个 lambda 部署,我需要订阅哪个云观察事件?
【问题讨论】:
标签: amazon-web-services aws-lambda
我有一个提供配置对象的 AWS lambda 函数。每当更新此 lambda 函数(即再次部署)时,我需要触发另一个 lambda 函数,该函数检测这些配置对象中的更改并采取一些措施。如何监控这个 lambda 部署,我需要订阅哪个云观察事件?
【问题讨论】:
标签: amazon-web-services aws-lambda
我假设您的 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。
【讨论】:
UpdateFunctionCode 的事件对象的结构,并在此基础上进行修改。例如对于DeleteFunction,函数名称在"requestParameters": { "functionName": "basic-node-task" } 中。可悲的是,我不知道UpdateFunctionCode 的事件结构是什么。您可以按原样运行一次,然后将事件打印到 lambda 函数中的 cloudwatch 日志中,并在那里检查。
根据@Marcin 的建议,使用控制台日志打印事件。以下规则有助于过滤特定功能;
{
"source": [
"aws.lambda"
],
"detail-type": [
"AWS API Call via CloudTrail"
],
"detail": {
"eventSource": [
"lambda.amazonaws.com"
],
"eventName": [
"UpdateFunctionCode20150331v2"
],
"responseElements": {
"functionName": [
"myFunction"
]
}
}
}
【讨论】: