|
3 | 3 |
|
4 | 4 | from typing import Dict, List, Optional
|
5 | 5 | import awswrangler as wr
|
| 6 | +from boto3.session import Session |
6 | 7 | from pandas import DataFrame
|
7 | 8 | from singer_sdk import Target
|
8 | 9 | from singer_sdk.sinks import BatchSink
|
@@ -35,7 +36,16 @@ def __init__(
|
35 | 36 | ) -> None:
|
36 | 37 | super().__init__(target, stream_name, schema, key_properties)
|
37 | 38 |
|
| 39 | + self._session = Session() if self._is_using_hmac() else Session( |
| 40 | + aws_access_key_id=self.config.get("aws_access_key_id"), |
| 41 | + aws_secret_access_key=self.config.get("aws_secret_access_key"), |
| 42 | + ) |
| 43 | + |
38 | 44 | self._glue_schema = self._get_glue_schema()
|
| 45 | + |
| 46 | + def _is_using_hmac(self) -> bool: |
| 47 | + return isinstance(self.config.get("aws_access_key_id"), str) and \ |
| 48 | + isinstance(self.config.get("aws_secret_access_key"), str) |
39 | 49 |
|
40 | 50 | def _get_glue_schema(self):
|
41 | 51 |
|
@@ -92,6 +102,7 @@ def process_batch(self, context: dict) -> None:
|
92 | 102 | partition_cols=["_sdc_started_at"],
|
93 | 103 | schema_evolution=True,
|
94 | 104 | dtype=dtype,
|
| 105 | + boto3_session=self._session, |
95 | 106 | )
|
96 | 107 |
|
97 | 108 | self.logger.info(f"Uploaded {len(context['records'])}")
|
|
0 commit comments