s3.py 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. from .multi_bucket_s3 import MultiBucketS3DataReader, MultiBucketS3DataWriter
  2. from ..utils.schemas import S3Config
  3. class S3DataReader(MultiBucketS3DataReader):
  4. def __init__(
  5. self,
  6. default_prefix_without_bucket: str,
  7. bucket: str,
  8. ak: str,
  9. sk: str,
  10. endpoint_url: str,
  11. addressing_style: str = 'auto',
  12. ):
  13. """s3 reader client.
  14. Args:
  15. default_prefix_without_bucket: prefix that not contains bucket
  16. bucket (str): bucket name
  17. ak (str): access key
  18. sk (str): secret key
  19. endpoint_url (str): endpoint url of s3
  20. addressing_style (str, optional): Defaults to 'auto'. Other valid options here are 'path' and 'virtual'
  21. refer to https://boto3.amazonaws.com/v1/documentation/api/1.9.42/guide/s3.html
  22. """
  23. super().__init__(
  24. f'{bucket}/{default_prefix_without_bucket}',
  25. [
  26. S3Config(
  27. bucket_name=bucket,
  28. access_key=ak,
  29. secret_key=sk,
  30. endpoint_url=endpoint_url,
  31. addressing_style=addressing_style,
  32. )
  33. ],
  34. )
  35. class S3DataWriter(MultiBucketS3DataWriter):
  36. def __init__(
  37. self,
  38. default_prefix_without_bucket: str,
  39. bucket: str,
  40. ak: str,
  41. sk: str,
  42. endpoint_url: str,
  43. addressing_style: str = 'auto',
  44. ):
  45. """s3 writer client.
  46. Args:
  47. default_prefix_without_bucket: prefix that not contains bucket
  48. bucket (str): bucket name
  49. ak (str): access key
  50. sk (str): secret key
  51. endpoint_url (str): endpoint url of s3
  52. addressing_style (str, optional): Defaults to 'auto'. Other valid options here are 'path' and 'virtual'
  53. refer to https://boto3.amazonaws.com/v1/documentation/api/1.9.42/guide/s3.html
  54. """
  55. super().__init__(
  56. f'{bucket}/{default_prefix_without_bucket}',
  57. [
  58. S3Config(
  59. bucket_name=bucket,
  60. access_key=ak,
  61. secret_key=sk,
  62. endpoint_url=endpoint_url,
  63. addressing_style=addressing_style,
  64. )
  65. ],
  66. )