登录
首页 >  Golang >  Go问答

AWS S3 会话是否会自动失效?

来源:stackoverflow

时间:2024-02-06 10:36:21 438浏览 收藏

在Golang实战开发的过程中,我们经常会遇到一些这样那样的问题,然后要卡好半天,等问题解决了才发现原来一些细节知识点还是没有掌握好。今天golang学习网就整理分享《AWS S3 会话是否会自动失效?》,聊聊,希望可以帮助到正在努力赚钱的你。

问题内容

我有一项从 s3 存储桶下载文件的服务。

为此,我需要一个 *session.session

我认为自己有两个选择。

选项 1

type s3client struct {
    session *session.session
}

func news3client(region string) (*s3client, error) {
    sess, err := session.newsession(&aws.config{region: aws.string(region)})
    if err != nil {
        return nil, err
    }

    return &s3client{
        session: sess,
    }, nil
}

然后我可以使用客户端下载给定会话的内容。

选项 2

每次需要下载文件时打开一个新会话。

func DownloadFromS3(region, bucket, file string) (string, error) {
    sess, err := session.NewSession(&aws.Config{Region: aws.String(region)})
    if err != nil {
        return "", err
    }

    // download using the session

问题:选项 1 是否可行,或者会话是否有某种过期机制?


正确答案


名称 session 具有误导性。它被替换为 config 提供的简化配置系统适用于 Go V2 的 AWS 开发工具包中的 包。请参阅配置加载

会话包的文档明确指出如果可能的话应缓存会话:

包会话提供 SDK 服务客户端的配置。会话可以在共享相同基本配置的服务客户端之间共享。

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

以上就是《AWS S3 会话是否会自动失效?》的详细内容,更多关于的资料请关注golang学习网公众号!

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