apache-airflow-providers-amazon 8.29.0rc1__py3-none-any.whl → 9.0.0rc1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- airflow/providers/amazon/__init__.py +1 -1
- airflow/providers/amazon/aws/{datasets → assets}/s3.py +10 -6
- airflow/providers/amazon/aws/auth_manager/avp/entities.py +1 -1
- airflow/providers/amazon/aws/auth_manager/aws_auth_manager.py +5 -11
- airflow/providers/amazon/aws/auth_manager/cli/avp_commands.py +2 -5
- airflow/providers/amazon/aws/auth_manager/cli/definition.py +0 -6
- airflow/providers/amazon/aws/auth_manager/views/auth.py +1 -1
- airflow/providers/amazon/aws/hooks/athena.py +3 -17
- airflow/providers/amazon/aws/hooks/base_aws.py +4 -162
- airflow/providers/amazon/aws/hooks/logs.py +1 -20
- airflow/providers/amazon/aws/hooks/quicksight.py +1 -17
- airflow/providers/amazon/aws/hooks/redshift_cluster.py +6 -120
- airflow/providers/amazon/aws/hooks/redshift_data.py +52 -14
- airflow/providers/amazon/aws/hooks/s3.py +24 -27
- airflow/providers/amazon/aws/hooks/sagemaker.py +4 -48
- airflow/providers/amazon/aws/log/s3_task_handler.py +1 -6
- airflow/providers/amazon/aws/operators/appflow.py +1 -10
- airflow/providers/amazon/aws/operators/batch.py +1 -29
- airflow/providers/amazon/aws/operators/datasync.py +1 -8
- airflow/providers/amazon/aws/operators/ecs.py +1 -25
- airflow/providers/amazon/aws/operators/eks.py +7 -46
- airflow/providers/amazon/aws/operators/emr.py +16 -232
- airflow/providers/amazon/aws/operators/glue_databrew.py +1 -10
- airflow/providers/amazon/aws/operators/rds.py +3 -17
- airflow/providers/amazon/aws/operators/redshift_data.py +18 -3
- airflow/providers/amazon/aws/operators/s3.py +12 -2
- airflow/providers/amazon/aws/operators/sagemaker.py +10 -32
- airflow/providers/amazon/aws/secrets/secrets_manager.py +1 -40
- airflow/providers/amazon/aws/sensors/batch.py +1 -8
- airflow/providers/amazon/aws/sensors/dms.py +1 -8
- airflow/providers/amazon/aws/sensors/dynamodb.py +22 -8
- airflow/providers/amazon/aws/sensors/emr.py +0 -7
- airflow/providers/amazon/aws/sensors/glue_catalog_partition.py +1 -8
- airflow/providers/amazon/aws/sensors/glue_crawler.py +1 -8
- airflow/providers/amazon/aws/sensors/quicksight.py +1 -29
- airflow/providers/amazon/aws/sensors/redshift_cluster.py +1 -8
- airflow/providers/amazon/aws/sensors/s3.py +1 -8
- airflow/providers/amazon/aws/sensors/sagemaker.py +2 -9
- airflow/providers/amazon/aws/sensors/sqs.py +1 -8
- airflow/providers/amazon/aws/sensors/step_function.py +1 -8
- airflow/providers/amazon/aws/transfers/base.py +1 -14
- airflow/providers/amazon/aws/transfers/gcs_to_s3.py +5 -33
- airflow/providers/amazon/aws/transfers/redshift_to_s3.py +15 -10
- airflow/providers/amazon/aws/transfers/s3_to_redshift.py +6 -6
- airflow/providers/amazon/aws/transfers/sql_to_s3.py +3 -6
- airflow/providers/amazon/aws/triggers/batch.py +1 -168
- airflow/providers/amazon/aws/triggers/eks.py +1 -20
- airflow/providers/amazon/aws/triggers/emr.py +0 -32
- airflow/providers/amazon/aws/triggers/glue_crawler.py +0 -11
- airflow/providers/amazon/aws/triggers/glue_databrew.py +0 -21
- airflow/providers/amazon/aws/triggers/rds.py +0 -79
- airflow/providers/amazon/aws/triggers/redshift_cluster.py +5 -64
- airflow/providers/amazon/aws/triggers/sagemaker.py +2 -93
- airflow/providers/amazon/aws/utils/asset_compat_lineage_collector.py +106 -0
- airflow/providers/amazon/aws/utils/connection_wrapper.py +4 -164
- airflow/providers/amazon/aws/utils/mixins.py +1 -23
- airflow/providers/amazon/aws/utils/openlineage.py +3 -1
- airflow/providers/amazon/aws/utils/task_log_fetcher.py +1 -1
- airflow/providers/amazon/get_provider_info.py +13 -4
- {apache_airflow_providers_amazon-8.29.0rc1.dist-info → apache_airflow_providers_amazon-9.0.0rc1.dist-info}/METADATA +8 -9
- {apache_airflow_providers_amazon-8.29.0rc1.dist-info → apache_airflow_providers_amazon-9.0.0rc1.dist-info}/RECORD +64 -64
- airflow/providers/amazon/aws/auth_manager/cli/idc_commands.py +0 -149
- /airflow/providers/amazon/aws/{datasets → assets}/__init__.py +0 -0
- {apache_airflow_providers_amazon-8.29.0rc1.dist-info → apache_airflow_providers_amazon-9.0.0rc1.dist-info}/WHEEL +0 -0
- {apache_airflow_providers_amazon-8.29.0rc1.dist-info → apache_airflow_providers_amazon-9.0.0rc1.dist-info}/entry_points.txt +0 -0
@@ -25,12 +25,10 @@ from typing import TYPE_CHECKING, Any
|
|
25
25
|
|
26
26
|
from botocore import UNSIGNED
|
27
27
|
from botocore.config import Config
|
28
|
-
from deprecated import deprecated
|
29
28
|
|
30
|
-
from airflow.exceptions import AirflowException
|
29
|
+
from airflow.exceptions import AirflowException
|
31
30
|
from airflow.providers.amazon.aws.utils import trim_none_values
|
32
31
|
from airflow.utils.log.logging_mixin import LoggingMixin
|
33
|
-
from airflow.utils.log.secrets_masker import mask_secret
|
34
32
|
from airflow.utils.types import NOTSET, ArgNotSet
|
35
33
|
|
36
34
|
if TYPE_CHECKING:
|
@@ -157,15 +155,6 @@ class AwsConnectionWrapper(LoggingMixin):
|
|
157
155
|
"Can't resolve STS endpoint when both "
|
158
156
|
"`sts_connection` and `sts_test_connection` set to True."
|
159
157
|
)
|
160
|
-
elif sts_test_connection:
|
161
|
-
if "test_endpoint_url" in self.extra_config:
|
162
|
-
warnings.warn(
|
163
|
-
"extra['test_endpoint_url'] is deprecated and will be removed in a future release."
|
164
|
-
" Please set `endpoint_url` in `service_config.sts` within `extras`.",
|
165
|
-
AirflowProviderDeprecationWarning,
|
166
|
-
stacklevel=2,
|
167
|
-
)
|
168
|
-
global_endpoint_url = self.extra_config["test_endpoint_url"]
|
169
158
|
|
170
159
|
return service_config.get("endpoint_url", global_endpoint_url)
|
171
160
|
|
@@ -208,15 +197,7 @@ class AwsConnectionWrapper(LoggingMixin):
|
|
208
197
|
self.schema = conn.schema or None
|
209
198
|
self.extra_config = deepcopy(conn.extra_dejson)
|
210
199
|
|
211
|
-
if self.conn_type
|
212
|
-
warnings.warn(
|
213
|
-
f"{self.conn_repr} has connection type 's3', "
|
214
|
-
"which has been replaced by connection type 'aws'. "
|
215
|
-
"Please update your connection to have `conn_type='aws'`.",
|
216
|
-
AirflowProviderDeprecationWarning,
|
217
|
-
stacklevel=2,
|
218
|
-
)
|
219
|
-
elif self.conn_type != "aws":
|
200
|
+
if self.conn_type != "aws":
|
220
201
|
warnings.warn(
|
221
202
|
f"{self.conn_repr} expected connection type 'aws', got {self.conn_type!r}. "
|
222
203
|
"This connection might not work correctly. "
|
@@ -228,15 +209,6 @@ class AwsConnectionWrapper(LoggingMixin):
|
|
228
209
|
extra = deepcopy(conn.extra_dejson)
|
229
210
|
self.service_config = extra.get("service_config", {})
|
230
211
|
|
231
|
-
session_kwargs = extra.get("session_kwargs", {})
|
232
|
-
if session_kwargs:
|
233
|
-
warnings.warn(
|
234
|
-
"'session_kwargs' in extra config is deprecated and will be removed in a future releases. "
|
235
|
-
f"Please specify arguments passed to boto3 Session directly in {self.conn_repr} extra.",
|
236
|
-
AirflowProviderDeprecationWarning,
|
237
|
-
stacklevel=2,
|
238
|
-
)
|
239
|
-
|
240
212
|
# Retrieve initial connection credentials
|
241
213
|
init_credentials = self._get_credentials(**extra)
|
242
214
|
self.aws_access_key_id, self.aws_secret_access_key, self.aws_session_token = init_credentials
|
@@ -245,13 +217,6 @@ class AwsConnectionWrapper(LoggingMixin):
|
|
245
217
|
if "region_name" in extra:
|
246
218
|
self.region_name = extra["region_name"]
|
247
219
|
self.log.debug("Retrieving region_name=%s from %s extra.", self.region_name, self.conn_repr)
|
248
|
-
elif "region_name" in session_kwargs:
|
249
|
-
self.region_name = session_kwargs["region_name"]
|
250
|
-
self.log.debug(
|
251
|
-
"Retrieving region_name=%s from %s extra['session_kwargs'].",
|
252
|
-
self.region_name,
|
253
|
-
self.conn_repr,
|
254
|
-
)
|
255
220
|
|
256
221
|
if self.verify is None and "verify" in extra:
|
257
222
|
self.verify = extra["verify"]
|
@@ -260,13 +225,6 @@ class AwsConnectionWrapper(LoggingMixin):
|
|
260
225
|
if "profile_name" in extra:
|
261
226
|
self.profile_name = extra["profile_name"]
|
262
227
|
self.log.debug("Retrieving profile_name=%s from %s extra.", self.profile_name, self.conn_repr)
|
263
|
-
elif "profile_name" in session_kwargs:
|
264
|
-
self.profile_name = session_kwargs["profile_name"]
|
265
|
-
self.log.debug(
|
266
|
-
"Retrieving profile_name=%s from %s extra['session_kwargs'].",
|
267
|
-
self.profile_name,
|
268
|
-
self.conn_repr,
|
269
|
-
)
|
270
228
|
|
271
229
|
# Warn the user that an invalid parameter is being used which actually not related to 'profile_name'.
|
272
230
|
# ToDo: Remove this check entirely as soon as drop support credentials from s3_config_file
|
@@ -287,24 +245,7 @@ class AwsConnectionWrapper(LoggingMixin):
|
|
287
245
|
config_kwargs["signature_version"] = UNSIGNED
|
288
246
|
self.botocore_config = Config(**config_kwargs)
|
289
247
|
|
290
|
-
|
291
|
-
warnings.warn(
|
292
|
-
f"Host {conn.host} specified in the connection is not used."
|
293
|
-
" Please, set it on extra['endpoint_url'] instead",
|
294
|
-
AirflowProviderDeprecationWarning,
|
295
|
-
stacklevel=2,
|
296
|
-
)
|
297
|
-
|
298
|
-
self.endpoint_url = extra.get("host")
|
299
|
-
if self.endpoint_url:
|
300
|
-
warnings.warn(
|
301
|
-
"extra['host'] is deprecated and will be removed in a future release."
|
302
|
-
" Please set extra['endpoint_url'] instead",
|
303
|
-
AirflowProviderDeprecationWarning,
|
304
|
-
stacklevel=2,
|
305
|
-
)
|
306
|
-
else:
|
307
|
-
self.endpoint_url = extra.get("endpoint_url")
|
248
|
+
self.endpoint_url = extra.get("endpoint_url")
|
308
249
|
|
309
250
|
# Retrieve Assume Role Configuration
|
310
251
|
assume_role_configs = self._get_assume_role_configs(**extra)
|
@@ -359,10 +300,6 @@ class AwsConnectionWrapper(LoggingMixin):
|
|
359
300
|
aws_access_key_id: str | None = None,
|
360
301
|
aws_secret_access_key: str | None = None,
|
361
302
|
aws_session_token: str | None = None,
|
362
|
-
# Deprecated Values
|
363
|
-
s3_config_file: str | None = None,
|
364
|
-
s3_config_format: str | None = None,
|
365
|
-
profile: str | None = None,
|
366
303
|
session_kwargs: dict[str, Any] | None = None,
|
367
304
|
**kwargs,
|
368
305
|
) -> tuple[str | None, str | None, str | None]:
|
@@ -393,13 +330,6 @@ class AwsConnectionWrapper(LoggingMixin):
|
|
393
330
|
aws_access_key_id = session_aws_access_key_id
|
394
331
|
aws_secret_access_key = session_aws_secret_access_key
|
395
332
|
self.log.info("%s credentials retrieved from extra['session_kwargs'].", self.conn_repr)
|
396
|
-
elif s3_config_file:
|
397
|
-
aws_access_key_id, aws_secret_access_key = _parse_s3_config(
|
398
|
-
s3_config_file,
|
399
|
-
s3_config_format,
|
400
|
-
profile,
|
401
|
-
)
|
402
|
-
self.log.info("%s credentials retrieved from extra['s3_config_file']", self.conn_repr)
|
403
333
|
|
404
334
|
if aws_session_token:
|
405
335
|
self.log.info(
|
@@ -422,31 +352,12 @@ class AwsConnectionWrapper(LoggingMixin):
|
|
422
352
|
role_arn: str | None = None,
|
423
353
|
assume_role_method: str = "assume_role",
|
424
354
|
assume_role_kwargs: dict[str, Any] | None = None,
|
425
|
-
# Deprecated Values
|
426
|
-
aws_account_id: str | None = None,
|
427
|
-
aws_iam_role: str | None = None,
|
428
|
-
external_id: str | None = None,
|
429
355
|
**kwargs,
|
430
356
|
) -> tuple[str | None, str | None, dict[Any, str]]:
|
431
357
|
"""Get assume role configs from Connection extra."""
|
432
358
|
if role_arn:
|
433
359
|
self.log.debug("Retrieving role_arn=%r from %s extra.", role_arn, self.conn_repr)
|
434
|
-
|
435
|
-
warnings.warn(
|
436
|
-
"Constructing 'role_arn' from extra['aws_account_id'] and extra['aws_iam_role'] is deprecated"
|
437
|
-
f" and will be removed in a future releases."
|
438
|
-
f" Please set 'role_arn' in {self.conn_repr} extra.",
|
439
|
-
AirflowProviderDeprecationWarning,
|
440
|
-
stacklevel=3,
|
441
|
-
)
|
442
|
-
role_arn = f"arn:aws:iam::{aws_account_id}:role/{aws_iam_role}"
|
443
|
-
self.log.debug(
|
444
|
-
"Constructions role_arn=%r from %s extra['aws_account_id'] and extra['aws_iam_role'].",
|
445
|
-
role_arn,
|
446
|
-
self.conn_repr,
|
447
|
-
)
|
448
|
-
|
449
|
-
if not role_arn:
|
360
|
+
else:
|
450
361
|
# There is no reason obtain `assume_role_method` and `assume_role_kwargs` if `role_arn` not set.
|
451
362
|
return None, None, {}
|
452
363
|
|
@@ -460,76 +371,5 @@ class AwsConnectionWrapper(LoggingMixin):
|
|
460
371
|
self.log.debug("Retrieve assume_role_method=%r from %s.", assume_role_method, self.conn_repr)
|
461
372
|
|
462
373
|
assume_role_kwargs = assume_role_kwargs or {}
|
463
|
-
if "ExternalId" not in assume_role_kwargs and external_id:
|
464
|
-
warnings.warn(
|
465
|
-
"'external_id' in extra config is deprecated and will be removed in a future releases. "
|
466
|
-
f"Please set 'ExternalId' in 'assume_role_kwargs' in {self.conn_repr} extra.",
|
467
|
-
AirflowProviderDeprecationWarning,
|
468
|
-
stacklevel=3,
|
469
|
-
)
|
470
|
-
assume_role_kwargs["ExternalId"] = external_id
|
471
374
|
|
472
375
|
return role_arn, assume_role_method, assume_role_kwargs
|
473
|
-
|
474
|
-
|
475
|
-
@deprecated(
|
476
|
-
reason=(
|
477
|
-
"Use local credentials file is never documented and well tested. "
|
478
|
-
"Obtain credentials by this way deprecated and will be removed in a future releases."
|
479
|
-
),
|
480
|
-
category=AirflowProviderDeprecationWarning,
|
481
|
-
)
|
482
|
-
def _parse_s3_config(
|
483
|
-
config_file_name: str, config_format: str | None = "boto", profile: str | None = None
|
484
|
-
) -> tuple[str | None, str | None]:
|
485
|
-
"""
|
486
|
-
Parse a config file for S3 credentials.
|
487
|
-
|
488
|
-
Can currently parse boto, s3cmd.conf and AWS SDK config formats.
|
489
|
-
|
490
|
-
:param config_file_name: path to the config file
|
491
|
-
:param config_format: config type. One of "boto", "s3cmd" or "aws".
|
492
|
-
Defaults to "boto"
|
493
|
-
:param profile: profile name in AWS type config file
|
494
|
-
"""
|
495
|
-
import configparser
|
496
|
-
|
497
|
-
config = configparser.ConfigParser()
|
498
|
-
try:
|
499
|
-
if config.read(config_file_name): # pragma: no cover
|
500
|
-
sections = config.sections()
|
501
|
-
else:
|
502
|
-
raise AirflowException(f"Couldn't read {config_file_name}")
|
503
|
-
except Exception as e:
|
504
|
-
raise AirflowException("Exception when parsing %s: %s", config_file_name, e.__class__.__name__)
|
505
|
-
# Setting option names depending on file format
|
506
|
-
if config_format is None:
|
507
|
-
config_format = "boto"
|
508
|
-
conf_format = config_format.lower()
|
509
|
-
if conf_format == "boto": # pragma: no cover
|
510
|
-
if profile is not None and "profile " + profile in sections:
|
511
|
-
cred_section = "profile " + profile
|
512
|
-
else:
|
513
|
-
cred_section = "Credentials"
|
514
|
-
elif conf_format == "aws" and profile is not None:
|
515
|
-
cred_section = profile
|
516
|
-
else:
|
517
|
-
cred_section = "default"
|
518
|
-
# Option names
|
519
|
-
if conf_format in ("boto", "aws"): # pragma: no cover
|
520
|
-
key_id_option = "aws_access_key_id"
|
521
|
-
secret_key_option = "aws_secret_access_key"
|
522
|
-
else:
|
523
|
-
key_id_option = "access_key"
|
524
|
-
secret_key_option = "secret_key"
|
525
|
-
# Actual Parsing
|
526
|
-
if cred_section not in sections:
|
527
|
-
raise AirflowException("This config file format is not recognized")
|
528
|
-
else:
|
529
|
-
try:
|
530
|
-
access_key = config.get(cred_section, key_id_option)
|
531
|
-
secret_key = config.get(cred_section, secret_key_option)
|
532
|
-
mask_secret(secret_key)
|
533
|
-
except Exception:
|
534
|
-
raise AirflowException("Option Error in parsing s3 config file")
|
535
|
-
return access_key, secret_key
|
@@ -27,19 +27,14 @@ This module contains different mixin classes for internal use within the Amazon
|
|
27
27
|
|
28
28
|
from __future__ import annotations
|
29
29
|
|
30
|
-
import
|
31
|
-
from functools import cached_property
|
30
|
+
from functools import cache, cached_property
|
32
31
|
from typing import Any, Generic, NamedTuple, TypeVar
|
33
32
|
|
34
|
-
from deprecated import deprecated
|
35
33
|
from typing_extensions import final
|
36
34
|
|
37
|
-
from airflow.compat.functools import cache
|
38
|
-
from airflow.exceptions import AirflowProviderDeprecationWarning
|
39
35
|
from airflow.providers.amazon.aws.hooks.base_aws import AwsGenericHook
|
40
36
|
|
41
37
|
AwsHookType = TypeVar("AwsHookType", bound=AwsGenericHook)
|
42
|
-
REGION_MSG = "`region` is deprecated and will be removed in the future. Please use `region_name` instead."
|
43
38
|
|
44
39
|
|
45
40
|
class AwsHookParams(NamedTuple):
|
@@ -90,13 +85,6 @@ class AwsHookParams(NamedTuple):
|
|
90
85
|
self.botocore_config = params.botocore_config
|
91
86
|
self.foo = foo
|
92
87
|
"""
|
93
|
-
if region := additional_params.pop("region", None):
|
94
|
-
warnings.warn(REGION_MSG, AirflowProviderDeprecationWarning, stacklevel=3)
|
95
|
-
if region_name and region_name != region:
|
96
|
-
raise ValueError(
|
97
|
-
f"Conflicting `region_name` provided, region_name={region_name!r}, region={region!r}."
|
98
|
-
)
|
99
|
-
region_name = region
|
100
88
|
return cls(aws_conn_id, region_name, verify, botocore_config)
|
101
89
|
|
102
90
|
|
@@ -160,16 +148,6 @@ class AwsBaseHookMixin(Generic[AwsHookType]):
|
|
160
148
|
"""
|
161
149
|
return self.aws_hook_class(**self._hook_parameters)
|
162
150
|
|
163
|
-
@property
|
164
|
-
@final
|
165
|
-
@deprecated(
|
166
|
-
reason="`region` is deprecated and will be removed in the future. Please use `region_name` instead.",
|
167
|
-
category=AirflowProviderDeprecationWarning,
|
168
|
-
)
|
169
|
-
def region(self) -> str | None:
|
170
|
-
"""Alias for ``region_name``, used for compatibility (deprecated)."""
|
171
|
-
return self.region_name
|
172
|
-
|
173
151
|
|
174
152
|
@cache
|
175
153
|
def aws_template_fields(*template_fields: str) -> tuple[str, ...]:
|
@@ -86,7 +86,9 @@ def get_facets_from_redshift_table(
|
|
86
86
|
]
|
87
87
|
)
|
88
88
|
else:
|
89
|
-
statement_id = redshift_hook.execute_query(
|
89
|
+
statement_id = redshift_hook.execute_query(
|
90
|
+
sql=sql, poll_interval=1, **redshift_data_api_kwargs
|
91
|
+
).statement_id
|
90
92
|
response = redshift_hook.conn.get_statement_result(Id=statement_id)
|
91
93
|
|
92
94
|
table_schema = SchemaDatasetFacet(
|
@@ -70,7 +70,7 @@ class AwsTaskLogFetcher(Thread):
|
|
70
70
|
# timestamp)
|
71
71
|
# When a slight delay is added before logging the event, that solves the issue
|
72
72
|
# See https://github.com/apache/airflow/issues/40875
|
73
|
-
time.sleep(0.
|
73
|
+
time.sleep(0.001)
|
74
74
|
self.logger.info(self.event_to_str(log_event))
|
75
75
|
prev_timestamp_event = current_timestamp_event
|
76
76
|
|
@@ -28,8 +28,9 @@ def get_provider_info():
|
|
28
28
|
"name": "Amazon",
|
29
29
|
"description": "Amazon integration (including `Amazon Web Services (AWS) <https://aws.amazon.com/>`__).\n",
|
30
30
|
"state": "ready",
|
31
|
-
"source-date-epoch":
|
31
|
+
"source-date-epoch": 1728484310,
|
32
32
|
"versions": [
|
33
|
+
"9.0.0",
|
33
34
|
"8.29.0",
|
34
35
|
"8.28.0",
|
35
36
|
"8.27.0",
|
@@ -672,12 +673,20 @@ def get_provider_info():
|
|
672
673
|
"python-modules": ["airflow.providers.amazon.aws.sensors.quicksight"],
|
673
674
|
},
|
674
675
|
],
|
676
|
+
"asset-uris": [
|
677
|
+
{
|
678
|
+
"schemes": ["s3"],
|
679
|
+
"handler": "airflow.providers.amazon.aws.assets.s3.sanitize_uri",
|
680
|
+
"to_openlineage_converter": "airflow.providers.amazon.aws.assets.s3.convert_asset_to_openlineage",
|
681
|
+
"factory": "airflow.providers.amazon.aws.assets.s3.create_asset",
|
682
|
+
}
|
683
|
+
],
|
675
684
|
"dataset-uris": [
|
676
685
|
{
|
677
686
|
"schemes": ["s3"],
|
678
|
-
"handler": "airflow.providers.amazon.aws.
|
679
|
-
"to_openlineage_converter": "airflow.providers.amazon.aws.
|
680
|
-
"factory": "airflow.providers.amazon.aws.
|
687
|
+
"handler": "airflow.providers.amazon.aws.assets.s3.sanitize_uri",
|
688
|
+
"to_openlineage_converter": "airflow.providers.amazon.aws.assets.s3.convert_asset_to_openlineage",
|
689
|
+
"factory": "airflow.providers.amazon.aws.assets.s3.create_asset",
|
681
690
|
}
|
682
691
|
],
|
683
692
|
"filesystems": ["airflow.providers.amazon.aws.fs.s3"],
|
@@ -1,11 +1,11 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: apache-airflow-providers-amazon
|
3
|
-
Version:
|
3
|
+
Version: 9.0.0rc1
|
4
4
|
Summary: Provider package apache-airflow-providers-amazon for Apache Airflow
|
5
5
|
Keywords: airflow-provider,amazon,airflow,integration
|
6
6
|
Author-email: Apache Software Foundation <dev@airflow.apache.org>
|
7
7
|
Maintainer-email: Apache Software Foundation <dev@airflow.apache.org>
|
8
|
-
Requires-Python: ~=3.
|
8
|
+
Requires-Python: ~=3.9
|
9
9
|
Description-Content-Type: text/x-rst
|
10
10
|
Classifier: Development Status :: 5 - Production/Stable
|
11
11
|
Classifier: Environment :: Console
|
@@ -15,7 +15,6 @@ Classifier: Intended Audience :: System Administrators
|
|
15
15
|
Classifier: Framework :: Apache Airflow
|
16
16
|
Classifier: Framework :: Apache Airflow :: Provider
|
17
17
|
Classifier: License :: OSI Approved :: Apache Software License
|
18
|
-
Classifier: Programming Language :: Python :: 3.8
|
19
18
|
Classifier: Programming Language :: Python :: 3.9
|
20
19
|
Classifier: Programming Language :: Python :: 3.10
|
21
20
|
Classifier: Programming Language :: Python :: 3.11
|
@@ -56,8 +55,8 @@ Requires-Dist: s3fs>=2023.10.0 ; extra == "s3fs"
|
|
56
55
|
Requires-Dist: apache-airflow-providers-salesforce ; extra == "salesforce"
|
57
56
|
Requires-Dist: apache-airflow-providers-ssh ; extra == "ssh"
|
58
57
|
Project-URL: Bug Tracker, https://github.com/apache/airflow/issues
|
59
|
-
Project-URL: Changelog, https://airflow.apache.org/docs/apache-airflow-providers-amazon/
|
60
|
-
Project-URL: Documentation, https://airflow.apache.org/docs/apache-airflow-providers-amazon/
|
58
|
+
Project-URL: Changelog, https://airflow.apache.org/docs/apache-airflow-providers-amazon/9.0.0/changelog.html
|
59
|
+
Project-URL: Documentation, https://airflow.apache.org/docs/apache-airflow-providers-amazon/9.0.0
|
61
60
|
Project-URL: Slack Chat, https://s.apache.org/airflow-slack
|
62
61
|
Project-URL: Source Code, https://github.com/apache/airflow
|
63
62
|
Project-URL: Twitter, https://twitter.com/ApacheAirflow
|
@@ -125,7 +124,7 @@ Provides-Extra: ssh
|
|
125
124
|
|
126
125
|
Package ``apache-airflow-providers-amazon``
|
127
126
|
|
128
|
-
Release: ``
|
127
|
+
Release: ``9.0.0.rc1``
|
129
128
|
|
130
129
|
|
131
130
|
Amazon integration (including `Amazon Web Services (AWS) <https://aws.amazon.com/>`__).
|
@@ -138,7 +137,7 @@ This is a provider package for ``amazon`` provider. All classes for this provide
|
|
138
137
|
are in ``airflow.providers.amazon`` python package.
|
139
138
|
|
140
139
|
You can find package information and changelog for the provider
|
141
|
-
in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-amazon/
|
140
|
+
in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-amazon/9.0.0/>`_.
|
142
141
|
|
143
142
|
Installation
|
144
143
|
------------
|
@@ -147,7 +146,7 @@ You can install this package on top of an existing Airflow 2 installation (see `
|
|
147
146
|
for the minimum Airflow version supported) via
|
148
147
|
``pip install apache-airflow-providers-amazon``
|
149
148
|
|
150
|
-
The package supports the following python versions: 3.
|
149
|
+
The package supports the following python versions: 3.9,3.10,3.11,3.12
|
151
150
|
|
152
151
|
Requirements
|
153
152
|
------------
|
@@ -205,4 +204,4 @@ Dependent package
|
|
205
204
|
====================================================================================================================== ===================
|
206
205
|
|
207
206
|
The changelog for the provider package can be found in the
|
208
|
-
`changelog <https://airflow.apache.org/docs/apache-airflow-providers-amazon/
|
207
|
+
`changelog <https://airflow.apache.org/docs/apache-airflow-providers-amazon/9.0.0/changelog.html>`_.
|