Golang 使用 aws lambda 错误:调用输入未由包 lambda 声明

我正在尝试使用以下代码调用另一个 lambda 函数:


sess := session.Must(

  session.NewSessionWithOptions(

    session.Options{

      SharedConfigState: session.SharedConfigEnable,

    },

  ),

)


svc := lambda.New(sess, &aws.Config{Region: aws.String("ap-east-1")})


result, err := svc.Invoke(&lambda.InvokeInput{

  FunctionName: aws.String(os.Getenv("testLambdaFunc")),

  Payload:      []byte(req.Body),

})

但有两个错误


New not declared by package lambda


InvokeInput not declared by package lambda

我试图初始化go.mod文件,但它不能解决这两个错误。


有什么想法吗?


我的文件的导入:main.go


    "fmt"

    "os"

    "pkg/log"


    "github.com/aws/aws-lambda-go/events"

    "github.com/aws/aws-lambda-go/lambda"

    "github.com/aws/aws-sdk-go/aws"

    "github.com/aws/aws-sdk-go/aws/session"

和文件go.mod


module somefunc


go 1.16


require (

    github.com/aws/aws-lambda-go v1.27.0

    github.com/aws/aws-sdk-go v1.40.59

    pkg/log v0.0.0-00010101000000-000000000000

)


replace pkg/log => ./../../go/common/pkg/log


慕妹3146593
浏览 115回答 1
1回答

侃侃无极

根据您截取的代码,看起来好像您正在使用适用于 Go V2 的 AWS 开发工具包。建议使用适用于 Go 的 AWS 开发工具包 V2(请查看迁移到适用于 Go 的 AWS 开发工具包 V2 文档)。请初始化一个 Go 模块项目(如开发工具包的 Github 页面所述):mkdir YOUR-PROJECTcd YOUR-PROJECTgo mod init YOUR-PROJECT按如下方式添加依赖项:go get github.com/aws/aws-sdk-go-v2/awsgo get github.com/aws/aws-sdk-go-v2/configgo get github.com/aws/aws-sdk-go-v2/service/lambda上述内容应提供一个工作项目,SDK 包的依赖项将在其中解析。相应的 V2 代码将如下所示:cfg, err := config.LoadDefaultConfig(context.TODO(),    config.WithRegion("us-east-1"),)if err != nil {    [...]}svc := lambda.NewFromConfig(cfg)result, err := svc.Invoke(context.TODO(),    &lambda.InvokeInput{        FunctionName: aws.String(os.Getenv("testLambdaFunc")),        Payload: []byte(req.Body),    },)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go