@@ -53,6 +53,8 @@ class S3Reader(BasePydanticReader, ResourcesReaderMixin, FileSystemReaderMixin):
53
53
Default is None.
54
54
aws_access_id (Optional[str]): provide AWS access key directly.
55
55
aws_access_secret (Optional[str]): provide AWS access key directly.
56
+ region_name (Optional[str]): AWS region for the S3 bucket. If not provided,
57
+ the default environment region or AWS config will be used.
56
58
s3_endpoint_url (Optional[str]): provide S3 endpoint URL directly.
57
59
58
60
"""
@@ -73,6 +75,7 @@ class S3Reader(BasePydanticReader, ResourcesReaderMixin, FileSystemReaderMixin):
73
75
aws_access_id : Optional [str ] = None
74
76
aws_access_secret : Optional [str ] = None
75
77
aws_session_token : Optional [str ] = None
78
+ region_name : Optional [str ] = None
76
79
s3_endpoint_url : Optional [str ] = None
77
80
custom_reader_path : Optional [str ] = None
78
81
invalidate_s3fs_cache : bool = True
@@ -84,11 +87,16 @@ def class_name(cls) -> str:
84
87
def _get_s3fs (self ):
85
88
from s3fs import S3FileSystem
86
89
90
+ client_kwargs = {}
91
+ if isinstance (self .region_name , str ) and self .region_name .strip ():
92
+ client_kwargs ["region_name" ] = self .region_name .strip ()
93
+
87
94
s3fs = S3FileSystem (
88
95
key = self .aws_access_id ,
89
96
endpoint_url = self .s3_endpoint_url ,
90
97
secret = self .aws_access_secret ,
91
98
token = self .aws_session_token ,
99
+ client_kwargs = client_kwargs or None ,
92
100
)
93
101
if self .invalidate_s3fs_cache :
94
102
s3fs .invalidate_cache ()
0 commit comments