如何在Go函数中获取AWS Lambda Alias



我想在主函数开始执行之前运行一些Lambda别名特定的代码。目前看起来像这个

func init() {
// Trying to get Lambda function alias here
}
func main() {
adapter = chiproxy.New(r)
lambda.start(lambdaHandler)
}
func lambdaHandler(ctx context.Context, req events.APIGatewayProxyRequest) (events.APIGatewayProxyResponse, error) {
c, err := adapter.ProxyWithContext(ctx, req)
return c, err
}

lambdaHandler中的req有我需要的信息,但我不知道如何在init((中获得它?

我认为在向函数传递请求之前,您无法获得别名。lambda自动提供了许多环境变量,但alias不是其中之一。

这可能是因为别名只是指向版本的指针;可以有多个别名指向同一版本,但可以为所有别名初始化相同的函数运行时。因此,在初始化时提供任何特定的别名都没有意义。

我想在我的主函数开始执行之前运行一些Lambda别名特定的代码

但是函数的运行时不是特定于别名的,而是特定于某个版本的。事实上,您可以在实例化版本后创建一个新的别名,并且可以使用相同的缓存运行时。

我想我能理解为什么你可能想让调用程序用不同的别名调用同一个函数,但我不确定这是否是一条低摩擦的途径来实现你想要的别名。考虑是否要创建一组不同的函数,这些函数可以具有相同的代码库,并让init选择一个合适的处理程序,或者根据函数名称而不是其别名进行其他初始化。

最新更新