在Go 1.12应用程序中,在处理AWS S3时,对于每次创建新 session 对象的插入或删除操作都是一个坏主意,有人可以帮助共享我们如何在整个应用程序中仅创建单个 session 吗?尝试以下示例代码在应用启动时生成bigS3对象:
var bigS3 *s3.S3
func main() {
sess, awsSessionErr := session.NewSession(&aws.Config{
Region: aws.String(awsRegion),
Credentials: credentials.NewStaticCredentials(awsAccessKeyID, awsSecretAccessKey, awsSessionToken),
})
isError(awsSessionErr, "Error creating aws session: ")
bigS3 := s3.New(sess)
_, awsListBucketErr := bigS3.ListBuckets(nil) //Used to just built the session
isError(awsListBucketErr, "Unable to list AWS bucket(s): ")
}
然后尝试在其他函数中像下面一样使用它,但是由于在下面的方法中bigS3为nil,因此失败。
func listObjectsInsideBucket(bucketName string) {
resp, awsListObjectsErr := bigS3.ListObjects(&s3.ListObjectsInput{Bucket: aws.String(bucketName)})
isError(awsListObjectsErr, "Unable to list items in bucket.")
}
最佳答案
bigS3 := s3.New(sess)
将值分配给函数本地的新变量,而不是所需的变量。更改为:
bigS3 = s3.New(sess)
该值将不再为零。
关于go - 如何在应用程序中保留单个AWS S3 session ?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56623036/