Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services 如何在运行时识别Lambda版本的第一次执行?_Amazon Web Services_Aws Lambda - Fatal编程技术网

Amazon web services 如何在运行时识别Lambda版本的第一次执行?

Amazon web services 如何在运行时识别Lambda版本的第一次执行?,amazon-web-services,aws-lambda,Amazon Web Services,Aws Lambda,我只想在Lambda版本的第一次执行时运行一些代码。注意:我不是指冷启动场景,因为这种情况会发生多次 不幸的是,computeInstanceInvocationCount在每次冷启动时都重置为0 functionVersion是一个可用属性,但除非我将其存储在lambda之外的内存中,否则我无法计算它是否确实是第一次执行 是否可以根据事件或上下文中的运行时值推断出这一点?或者还有其他方法吗?无法知道这是否是Lambda第一次从传入Lambda的任何信息运行 您必须通过在其他位置设置标志或参数来

我只想在Lambda版本的第一次执行时运行一些代码。注意:我不是指冷启动场景,因为这种情况会发生多次

不幸的是,computeInstanceInvocationCount在每次冷启动时都重置为0

functionVersion是一个可用属性,但除非我将其存储在lambda之外的内存中,否则我无法计算它是否确实是第一次执行


是否可以根据事件或上下文中的运行时值推断出这一点?或者还有其他方法吗?

无法知道这是否是Lambda第一次从传入Lambda的任何信息运行


您必须通过在其他位置设置标志或参数来包含检查功能,但是请记住,可以同时调用Lambda的多个副本,因此任何用于此的数据存储都可能需要是事务性的,以确保它只发生一次。

无法知道这是否是Lambda第一次从传入Lambda的任何信息运行


您必须包括通过在此处设置标志或参数来检查其他位置的功能,但请记住,可以同时调用Lambda的多个副本,因此任何用于此目的的数据存储都可能需要是事务性的,以确保它只发生一次。

您可以尝试的一种方法是使用

在每次部署时,使用更新参数存储值

{"version":"latest","is_firsttime":true}
因此,在部署后运行下面的命令

aws secretsmanager update-secret --secret-id demo --secret-string  '{"version":"latest","is_firsttime":true}'

因此,在部署之前,我们需要确保这一点

现在我们可以在lambda中设置逻辑,在演示中,我们将第一次研究is_

这只是一个在非lambda环境下工作的演示代码,请相应地进行调整

第一次预期响应

{
  ARN: 'arn:aws:secretsmanager:us-west-2:12345:secret:demo-0Nlyli',
  Name: 'demo',
  VersionId: '3ae6623a-1111-4a41-88e5-12345'
}


第二次

init already completed

您可以尝试的一种方法是使用

在每次部署时,使用更新参数存储值

{"version":"latest","is_firsttime":true}
因此,在部署后运行下面的命令

aws secretsmanager update-secret --secret-id demo --secret-string  '{"version":"latest","is_firsttime":true}'

因此,在部署之前,我们需要确保这一点

现在我们可以在lambda中设置逻辑,在演示中,我们将第一次研究is_

这只是一个在非lambda环境下工作的演示代码,请相应地进行调整

第一次预期响应

{
  ARN: 'arn:aws:secretsmanager:us-west-2:12345:secret:demo-0Nlyli',
  Name: 'demo',
  VersionId: '3ae6623a-1111-4a41-88e5-12345'
}


第二次

init already completed

在DynamoDB中存储状态,例如使用Lambda函数/版本作为键,并在原子计数器中保留调用计数。在DynamoDB中存储状态,例如使用Lambda函数/版本作为键,并在原子计数器中保留调用计数。谢谢。出于好奇,你知道两次冷启动是否可能同时发生吗?我认为,只有当isColdStart为真时,才放置逻辑,它将删除事务性要求。从技术上讲,如果您有高流量,lambda可能分布在Firecrible Micro VM上。此外,如果您的流量非常小,您会发现函数本身在其整个生命周期中可能有多个冷启动。最后,如果Lambda节点出现故障或AZ出现故障,则将使用另一个microm,从而导致另一个冷启动故障。出于好奇,你知道两次冷启动是否可能同时发生吗?我认为,只有当isColdStart为真时,才放置逻辑,它将删除事务性要求。从技术上讲,如果您有高流量,lambda可能分布在Firecrible Micro VM上。此外,如果您的流量非常小,您会发现函数本身在其整个生命周期中可能有多个冷启动。最后,如果Lambda节点发生故障或AZ发生故障,则将使用另一个microm,从而导致另一个冷启动