@@ -53,6 +53,8 @@ class S3Reader(BasePydanticReader, ResourcesReaderMixin, FileSystemReaderMixin):
5353 Default is None.
5454 aws_access_id (Optional[str]): provide AWS access key directly.
5555 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.
5658 s3_endpoint_url (Optional[str]): provide S3 endpoint URL directly.
5759
5860 """
@@ -73,6 +75,7 @@ class S3Reader(BasePydanticReader, ResourcesReaderMixin, FileSystemReaderMixin):
7375 aws_access_id : Optional [str ] = None
7476 aws_access_secret : Optional [str ] = None
7577 aws_session_token : Optional [str ] = None
78+ region_name : Optional [str ] = None
7679 s3_endpoint_url : Optional [str ] = None
7780 custom_reader_path : Optional [str ] = None
7881 invalidate_s3fs_cache : bool = True
@@ -84,11 +87,16 @@ def class_name(cls) -> str:
8487 def _get_s3fs (self ):
8588 from s3fs import S3FileSystem
8689
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+
8794 s3fs = S3FileSystem (
8895 key = self .aws_access_id ,
8996 endpoint_url = self .s3_endpoint_url ,
9097 secret = self .aws_access_secret ,
9198 token = self .aws_session_token ,
99+ client_kwargs = client_kwargs or None ,
92100 )
93101 if self .invalidate_s3fs_cache :
94102 s3fs .invalidate_cache ()
0 commit comments