使用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 结构体指针。

