From 9d303b6b1b22e6a5215d8358e383efc218b579b9 Mon Sep 17 00:00:00 2001 From: Ruslan Kuprieiev Date: Thu, 23 Aug 2018 10:17:11 +0300 Subject: [PATCH] s3: properly configure session and clients Fixes #1020 Signed-off-by: Ruslan Kuprieiev --- dvc/remote/s3.py | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/dvc/remote/s3.py b/dvc/remote/s3.py index 5e07abc88..5f60b35e4 100644 --- a/dvc/remote/s3.py +++ b/dvc/remote/s3.py @@ -57,6 +57,7 @@ class RemoteS3(RemoteBase): else: creds = {} + self.creds = creds self.region = creds.get('region', self.region) self.aws_access_key_id = creds.get('aws_access_key_id', None) self.aws_secret_access_key = creds.get('aws_secret_access_key', None) @@ -71,12 +72,14 @@ class RemoteS3(RemoteBase): @property def s3(self): - session = boto3.session.Session(profile_name=self.profile) - return session.client('s3', - aws_access_key_id=self.aws_access_key_id, - aws_secret_access_key=self.aws_secret_access_key, - region_name=self.region, - endpoint_url=self.endpoint_url) + if not self.creds: + session = boto3.session.Session(profile_name=self.profile) + else: + session = boto3.session.Session( + aws_access_key_id=self.aws_access_key_id, + aws_secret_access_key=self.aws_secret_access_key, + region_name=self.region) + return session.client('s3', endpoint_url=self.endpoint_url) def get_etag(self, bucket, key): try: