登录
首页 >  Golang >  Go问答

是否需要将Session和S3定义为全局变量或在每个API请求中创建实例?

来源:stackoverflow

时间:2024-03-10 21:21:27 430浏览 收藏

有志者,事竟成!如果你在学习Golang,那么本文《是否需要将Session和S3定义为全局变量或在每个API请求中创建实例?》,就很适合你!文章讲解的知识点主要包括,若是你对本文感兴趣,或者是想搞懂其中某个知识点,就请你继续往下看吧~

问题内容

我是否必须将 session 和 s3 定义为包变量或在每个 api 请求中创建实例。示例代码如下。非常感谢。

var AWSSession *session.Session
var S3Client *s3.S3

func InitAws() error {

    log.Info("InitAws")

    AWSSession, err := session.NewSession(&aws.Config{
        Region:      aws.String("XXXX"),
        Credentials: credentials.NewStaticCredentials( "XX","XX",""), //just for test
    })

    if err != nil {
        return err
    }

    log.Info("InitAws S3 Client")
    S3Client = s3.New(AWSSession)

    log.Info("InitAws end")
    return nil
}

解决方案


package documentation says

只要会话不被修改,会话就可以安全地并发使用。应尽可能缓存会话,因为创建新会话将从环境中加载所有配置值,并在每次创建会话时加载配置文件。在所有服务客户端之间共享会话值将确保配置加载次数尽可能最少。

一定要创建一个会话并重用它。

是否应该将该单个会话存储在包级变量中或通过函数参数传递它是一个单独的问题,其答案各有不同。

以上就是本文的全部内容了,是否有顺利帮助你解决问题?若是能给你带来学习上的帮助,请大家多多支持golang学习网!更多关于Golang的相关知识,也可关注golang学习网公众号。

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