@@ -536,19 +536,37 @@ def _fetch_bucket(self, bucket_name):
536
536
session = boto3 .session .Session (
537
537
aws_access_key_id = aws_access_key_id ,
538
538
aws_secret_access_key = aws_secret_access_key )
539
- s3_resource = session .resource ('s3' , use_ssl = True )
540
539
541
- # Otherwise, connect anonymously
542
540
else :
543
- iflogger .info ('Connecting to AWS: %s anonymously...' , bucket_name )
541
+ iflogger .info ('Connecting to S3 bucket: %s with IAM role...' ,
542
+ bucket_name )
543
+
544
+ # Lean on AWS environment / IAM role authentication and authorization
544
545
session = boto3 .session .Session ()
545
- s3_resource = session .resource ('s3' , use_ssl = True )
546
+
547
+ s3_resource = session .resource ('s3' , use_ssl = True )
548
+
549
+ # And try fetch the bucket with the name argument
550
+ try :
551
+ self ._get_head_bucket (s3_resource , bucket_name )
552
+ except Exception as exc :
553
+
554
+ # Try to connect anonymously
546
555
s3_resource .meta .client .meta .events .register (
547
556
'choose-signer.s3.*' , botocore .handlers .disable_signing )
548
557
558
+ iflogger .info ('Connecting to AWS: %s anonymously...' , bucket_name )
559
+ self ._get_head_bucket (s3_resource , bucket_name )
560
+
549
561
# Explicitly declare a secure SSL connection for bucket object
550
562
bucket = s3_resource .Bucket (bucket_name )
551
563
564
+ # Return the bucket
565
+ return bucket
566
+
567
+
568
+ def _get_head_bucket (self , s3_resource , bucket_name ):
569
+
552
570
# And try fetch the bucket with the name argument
553
571
try :
554
572
s3_resource .meta .client .head_bucket (Bucket = bucket_name )
@@ -570,8 +588,6 @@ def _fetch_bucket(self, bucket_name):
570
588
% (bucket_name , exc )
571
589
raise Exception (err_msg )
572
590
573
- # Return the bucket
574
- return bucket
575
591
576
592
# Send up to S3 method
577
593
def _upload_to_s3 (self , bucket , src , dst ):
0 commit comments