使用Golang通过NewFromConfig实现AWS Kinesis客户端

使用Golang通过NewFromConfig实现AWS Kinesis客户端 我正在尝试使用 NewFromConfig 创建一个 Kinesis 客户端。我想向此方法传递选项。代码如下:

options := kinesis.Options{
    Credentials: cfg.Credentials,
    Region:      "us-east-1",
}
kinesisSvc := kinesis.NewFromConfig(cfg, &options)

我遇到了错误:

cannot use &options (type *"...aws-sdk-go-v2/service/kinesis".Options) as type func(*"...aws-sdk-go-v2/service/kinesis".Options) in argument to "github.com/aws/aws-sdk-go-v2/service/kinesis".NewFromConfig

我是 Golang 的完全新手。有人能在这里帮助我吗?


更多关于使用Golang通过NewFromConfig实现AWS Kinesis客户端的实战教程也可以访问 https://www.itying.com/category-94-b0.html

1 回复

更多关于使用Golang通过NewFromConfig实现AWS Kinesis客户端的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


NewFromConfig 的第二个参数应该是选项函数,而不是直接传递 Options 结构体指针。你需要使用 kinesis.Options 结构体中的字段来创建选项函数。以下是正确的实现方式:

import (
    "context"
    "github.com/aws/aws-sdk-go-v2/aws"
    "github.com/aws/aws-sdk-go-v2/service/kinesis"
)

// 创建配置
cfg, err := config.LoadDefaultConfig(context.TODO(),
    config.WithCredentialsProvider(cfg.Credentials),
    config.WithRegion("us-east-1"),
)
if err != nil {
    // 处理错误
}

// 创建 Kinesis 客户端
kinesisSvc := kinesis.NewFromConfig(cfg, func(o *kinesis.Options) {
    // 这里可以设置额外的选项
    // 例如:o.Region = "us-west-2"
    // 或者:o.BaseEndpoint = aws.String("https://custom-endpoint.com")
})

如果你的 cfg 已经包含了凭证和区域信息,可以直接使用:

kinesisSvc := kinesis.NewFromConfig(cfg)

如果需要覆盖默认选项,使用选项函数:

kinesisSvc := kinesis.NewFromConfig(cfg, func(o *kinesis.Options) {
    o.Region = "us-west-2"  // 覆盖区域
    o.Credentials = customCreds  // 使用自定义凭证
})

错误发生的原因是 NewFromConfig 的签名是:

func NewFromConfig(cfg aws.Config, optFns ...func(*Options)) *Client

它接受一个或多个选项函数,而不是 Options 结构体指针。

回到顶部