Как сохранить один сеанс AWS S3 в приложении? - PullRequest
1 голос
/ 17 июня 2019

В приложении 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.")
}

1 Ответ

2 голосов
/ 17 июня 2019

bigS3 := s3.New(sess) присваивает значение новой переменной, локальной для функции, а не той, которую вы хотите. Измените его на:

bigS3 = s3.New(sess)

и значение больше не будет равно нулю.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...