В приложении Go 1.12, когда он имеет дело с AWS S3, для операции вставки или удаления каждый раз, когда создается новый объект сеанса, будет плохой идеей, может кто-то помочь поделиться, как мы можем создать только один сеанс в приложении? Ниже приведен пример кода для создания объекта 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.")
}