【问题标题】:Creating a Lambda event handler with the AWS Go SDK v2使用 AWS Go 开发工具包 v2 创建 Lambda 事件处理程序
【发布时间】:2021-02-11 01:06:26
【问题描述】:

我正在尝试使用 AWS SDK v2 在 Go 中编写事件处理程序,但我收到了 nil 指针取消引用错误,如您在以下代码块中所见:

{
  "errorMessage": "runtime error: invalid memory address or nil pointer dereference",
  "errorType": "errorString",
  "stackTrace": [
    {
      "path": "github.com/aws/aws-lambda-go@v1.22.0/lambda/errors.go",
      "line": 39,
      "label": "lambdaPanicResponse"
    },
    {
      "path": "github.com/aws/aws-lambda-go@v1.22.0/lambda/function.go",
      "line": 36,
      "label": "(*Function).Invoke.func1"
    },
    {
      "path": "runtime/panic.go",
      "line": 969,
      "label": "gopanic"
    },
    {
      "path": "runtime/panic.go",
      "line": 212,
      "label": "panicmem"
    },
    {
      "path": "runtime/signal_unix.go",
      "line": 742,
      "label": "sigpanic"
    },
    {
      "path": "eventHandler/main.go",
      "line": 252,
      "label": "getTargetGroup"
    },
    {
      "path": "eventHandler/main.go",
      "line": 187,
      "label": "HandleRequest"
    },
    {
      "path": "reflect/value.go",
      "line": 476,
      "label": "Value.call"
    },
    {
      "path": "reflect/value.go",
      "line": 337,
      "label": "Value.Call"
    },
    {
      "path": "github.com/aws/aws-lambda-go@v1.22.0/lambda/handler.go",
      "line": 124,
      "label": "NewHandler.func1"
    },
    {
      "path": "github.com/aws/aws-lambda-go@v1.22.0/lambda/handler.go",
      "line": 24,
      "label": "lambdaHandler.Invoke"
    },
    {
      "path": "github.com/aws/aws-lambda-go@v1.22.0/lambda/function.go",
      "line": 64,
      "label": "(*Function).Invoke"
    },
    {
      "path": "reflect/value.go",
      "line": 476,
      "label": "Value.call"
    },
    {
      "path": "reflect/value.go",
      "line": 337,
      "label": "Value.Call"
    },
    {
      "path": "net/rpc/server.go",
      "line": 377,
      "label": "(*service).call"
    },
    {
      "path": "runtime/asm_amd64.s",
      "line": 1374,
      "label": "goexit"
    }
  ]
}

我的导入语句如下。如您所见,我正在导入 lambda-go 运行时:

import (
    "context"
    "fmt"
    "github.com/aws/aws-lambda-go/lambda"
    "github.com/aws/aws-sdk-go-v2/aws"
    "github.com/aws/aws-sdk-go-v2/config"
    "github.com/aws/aws-sdk-go-v2/service/ec2"
    "github.com/aws/aws-sdk-go-v2/service/ecs"
    "github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2"
    "github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2/types"
    "log"
    "strings"
    "time"
)

我的代码如下所示:

func main() {
    lambda.Start(HandleRequest)
}
func HandleRequest(e ECSEvent) error {...}

处理程序签名中的 ECSEvent 是一个与传入 EventBridge 事件匹配的结构。让 Go SDK v2 与 Lambda 一起工作有什么技巧吗?

【问题讨论】:

    标签: aws-lambda aws-sdk-go


    【解决方案1】:

    lambda 函数无权进行 AWS API 调用。

    【讨论】:

      猜你喜欢
      • 2019-05-04
      • 2020-08-16
      • 2021-11-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-04
      • 1970-01-01
      • 2022-11-02
      相关资源
      最近更新 更多