登录
首页 >  Golang >  Go问答

session.NewSession 参数无法接受 &cfg 作为 *aws.Config 类型的值

来源:stackoverflow

时间:2024-02-27 13:45:30 294浏览 收藏

大家好,我们又见面了啊~本文《session.NewSession 参数无法接受 &cfg 作为 *aws.Config 类型的值》的内容中将会涉及到等等。如果你正在学习Golang相关知识,欢迎关注我,以后会给大家带来更多Golang相关文章,希望我们能一起进步!下面就开始本文的正式内容~

问题内容

我正在尝试获取如下所示的新 aws 会话:

cfg, err := config.loaddefaultconfig(context.todo())
if err != nil {
    log.fatal(err)
}

awssession, err := session.newsession(&cfg)
if err != nil {
    log.fatal(err)
}

但是我遇到了一个令人困惑的(至少对我来说)错误:

无法使用 &cfg(*aws.config 类型的值)作为 session.newsession 参数中的 *aws.config 值

newsession() 的签名如下所示:

func newsession(cfgs ...*aws.config) (*session, error)

newsession() 是一个可变参数函数这一事实是否在产生此错误中发挥了作用?

如果我像这样传递文字 aws.config{} ,为什么错误会消失?

awsSession, err := session.NewSession(&aws.Config{})

正确答案


您混淆了 AWS 开发工具包版本。

session 存在于 AWS 开发工具包 v1 中,导入路径为 github.com/aws/aws-sdk-go/aws/session,并且需要 “github.com/aws/aws-sdk-go/aws”.Config 类型的参数。 AWS SDK v2 中不存在它。

您加载配置的 config 软件包来自 AWS SDK v2,导入路径为 github.com/aws/aws-sdk-go-v2/config,因此 LoadDefaultConfigs 返回 "github.com/aws/aws-sdk-go-v2/config".Config

它们不是同一类型,编译器会告诉您这一点(尽管有部分有用的错误消息)。

您必须保持 AWS 开发工具包版本一致。对于 v2,您应该使用配置实例化特定的 AWS 服务,而不是会话。例如s3.New(&cfg)

今天带大家了解了的相关知识,希望对你有所帮助;关于Golang的技术知识我们会一点点深入介绍,欢迎大家关注golang学习网公众号,一起学习编程~

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>