apache-airflow-providers-amazon 8.28.0__tar.gz → 8.29.0__tar.gz

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.
Files changed (255) hide show
  1. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/PKG-INFO +13 -13
  2. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/README.rst +8 -8
  3. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/__init__.py +1 -1
  4. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/auth_manager/aws_auth_manager.py +4 -0
  5. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/auth_manager/security_manager/aws_security_manager_override.py +5 -1
  6. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/executors/batch/batch_executor.py +1 -1
  7. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/executors/ecs/ecs_executor_config.py +13 -4
  8. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/executors/ecs/utils.py +8 -2
  9. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/hooks/s3.py +1 -1
  10. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/log/cloudwatch_task_handler.py +2 -3
  11. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/log/s3_task_handler.py +2 -4
  12. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/operators/ecs.py +9 -0
  13. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/operators/glue_databrew.py +53 -16
  14. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/sensors/batch.py +1 -3
  15. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/sensors/ecs.py +4 -4
  16. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/sensors/glue.py +1 -5
  17. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/transfers/redshift_to_s3.py +13 -7
  18. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/transfers/s3_to_redshift.py +65 -11
  19. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/triggers/glue_databrew.py +35 -8
  20. apache_airflow_providers_amazon-8.29.0/airflow/providers/amazon/aws/utils/openlineage.py +136 -0
  21. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/utils/waiter_with_logging.py +26 -6
  22. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/waiters/stepfunctions.json +1 -1
  23. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/get_provider_info.py +4 -3
  24. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/pyproject.toml +5 -5
  25. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/LICENSE +0 -0
  26. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/__init__.py +0 -0
  27. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/auth_manager/__init__.py +0 -0
  28. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/auth_manager/avp/__init__.py +0 -0
  29. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/auth_manager/avp/entities.py +0 -0
  30. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/auth_manager/avp/facade.py +0 -0
  31. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/auth_manager/avp/schema.json +0 -0
  32. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/auth_manager/cli/__init__.py +0 -0
  33. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/auth_manager/cli/avp_commands.py +0 -0
  34. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/auth_manager/cli/definition.py +0 -0
  35. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/auth_manager/cli/idc_commands.py +0 -0
  36. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/auth_manager/constants.py +0 -0
  37. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/auth_manager/security_manager/__init__.py +0 -0
  38. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/auth_manager/user.py +0 -0
  39. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/auth_manager/views/__init__.py +0 -0
  40. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/auth_manager/views/auth.py +0 -0
  41. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/datasets/__init__.py +0 -0
  42. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/datasets/s3.py +0 -0
  43. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/exceptions.py +0 -0
  44. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/executors/Dockerfile +0 -0
  45. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/executors/__init__.py +0 -0
  46. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/executors/batch/__init__.py +0 -0
  47. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/executors/batch/batch_executor_config.py +0 -0
  48. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/executors/batch/boto_schema.py +0 -0
  49. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/executors/batch/utils.py +0 -0
  50. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/executors/ecs/__init__.py +0 -0
  51. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/executors/ecs/boto_schema.py +0 -0
  52. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/executors/ecs/ecs_executor.py +0 -0
  53. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/executors/utils/__init__.py +0 -0
  54. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/executors/utils/base_config_keys.py +0 -0
  55. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/executors/utils/exponential_backoff_retry.py +0 -0
  56. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/fs/__init__.py +0 -0
  57. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/fs/s3.py +0 -0
  58. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/hooks/__init__.py +0 -0
  59. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/hooks/appflow.py +0 -0
  60. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/hooks/athena.py +0 -0
  61. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/hooks/athena_sql.py +0 -0
  62. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/hooks/base_aws.py +0 -0
  63. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/hooks/batch_client.py +0 -0
  64. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/hooks/batch_waiters.json +0 -0
  65. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/hooks/batch_waiters.py +0 -0
  66. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/hooks/bedrock.py +0 -0
  67. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/hooks/chime.py +0 -0
  68. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/hooks/cloud_formation.py +0 -0
  69. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/hooks/comprehend.py +0 -0
  70. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/hooks/datasync.py +0 -0
  71. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/hooks/dms.py +0 -0
  72. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/hooks/dynamodb.py +0 -0
  73. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/hooks/ec2.py +0 -0
  74. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/hooks/ecr.py +0 -0
  75. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/hooks/ecs.py +0 -0
  76. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/hooks/eks.py +0 -0
  77. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/hooks/elasticache_replication_group.py +0 -0
  78. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/hooks/emr.py +0 -0
  79. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/hooks/eventbridge.py +0 -0
  80. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/hooks/glacier.py +0 -0
  81. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/hooks/glue.py +0 -0
  82. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/hooks/glue_catalog.py +0 -0
  83. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/hooks/glue_crawler.py +0 -0
  84. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/hooks/glue_databrew.py +0 -0
  85. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/hooks/kinesis.py +0 -0
  86. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/hooks/kinesis_analytics.py +0 -0
  87. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/hooks/lambda_function.py +0 -0
  88. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/hooks/logs.py +0 -0
  89. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/hooks/neptune.py +0 -0
  90. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/hooks/opensearch_serverless.py +0 -0
  91. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/hooks/quicksight.py +0 -0
  92. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/hooks/rds.py +0 -0
  93. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/hooks/redshift_cluster.py +0 -0
  94. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/hooks/redshift_data.py +0 -0
  95. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/hooks/redshift_sql.py +0 -0
  96. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/hooks/sagemaker.py +0 -0
  97. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/hooks/secrets_manager.py +0 -0
  98. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/hooks/ses.py +0 -0
  99. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/hooks/sns.py +0 -0
  100. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/hooks/sqs.py +0 -0
  101. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/hooks/ssm.py +0 -0
  102. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/hooks/step_function.py +0 -0
  103. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/hooks/sts.py +0 -0
  104. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/hooks/verified_permissions.py +0 -0
  105. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/links/__init__.py +0 -0
  106. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/links/athena.py +0 -0
  107. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/links/base_aws.py +0 -0
  108. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/links/batch.py +0 -0
  109. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/links/emr.py +0 -0
  110. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/links/glue.py +0 -0
  111. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/links/logs.py +0 -0
  112. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/links/step_function.py +0 -0
  113. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/log/__init__.py +0 -0
  114. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/notifications/__init__.py +0 -0
  115. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/notifications/chime.py +0 -0
  116. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/notifications/sns.py +0 -0
  117. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/notifications/sqs.py +0 -0
  118. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/operators/__init__.py +0 -0
  119. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/operators/appflow.py +0 -0
  120. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/operators/athena.py +0 -0
  121. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/operators/base_aws.py +0 -0
  122. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/operators/batch.py +0 -0
  123. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/operators/bedrock.py +0 -0
  124. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/operators/cloud_formation.py +0 -0
  125. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/operators/comprehend.py +0 -0
  126. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/operators/datasync.py +0 -0
  127. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/operators/dms.py +0 -0
  128. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/operators/ec2.py +0 -0
  129. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/operators/eks.py +0 -0
  130. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/operators/emr.py +0 -0
  131. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/operators/eventbridge.py +0 -0
  132. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/operators/glacier.py +0 -0
  133. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/operators/glue.py +0 -0
  134. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/operators/glue_crawler.py +0 -0
  135. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/operators/kinesis_analytics.py +0 -0
  136. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/operators/lambda_function.py +0 -0
  137. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/operators/neptune.py +0 -0
  138. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/operators/quicksight.py +0 -0
  139. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/operators/rds.py +0 -0
  140. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/operators/redshift_cluster.py +0 -0
  141. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/operators/redshift_data.py +0 -0
  142. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/operators/s3.py +0 -0
  143. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/operators/sagemaker.py +0 -0
  144. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/operators/sns.py +0 -0
  145. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/operators/sqs.py +0 -0
  146. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/operators/step_function.py +0 -0
  147. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/secrets/__init__.py +0 -0
  148. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/secrets/secrets_manager.py +0 -0
  149. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/secrets/systems_manager.py +0 -0
  150. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/sensors/__init__.py +0 -0
  151. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/sensors/athena.py +0 -0
  152. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/sensors/base_aws.py +0 -0
  153. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/sensors/bedrock.py +0 -0
  154. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/sensors/cloud_formation.py +0 -0
  155. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/sensors/comprehend.py +0 -0
  156. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/sensors/dms.py +0 -0
  157. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/sensors/dynamodb.py +0 -0
  158. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/sensors/ec2.py +0 -0
  159. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/sensors/eks.py +0 -0
  160. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/sensors/emr.py +0 -0
  161. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/sensors/glacier.py +0 -0
  162. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/sensors/glue_catalog_partition.py +0 -0
  163. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/sensors/glue_crawler.py +0 -0
  164. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/sensors/kinesis_analytics.py +0 -0
  165. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/sensors/lambda_function.py +0 -0
  166. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/sensors/opensearch_serverless.py +0 -0
  167. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/sensors/quicksight.py +0 -0
  168. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/sensors/rds.py +0 -0
  169. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/sensors/redshift_cluster.py +0 -0
  170. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/sensors/s3.py +0 -0
  171. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/sensors/sagemaker.py +0 -0
  172. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/sensors/sqs.py +0 -0
  173. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/sensors/step_function.py +0 -0
  174. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/transfers/__init__.py +0 -0
  175. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/transfers/azure_blob_to_s3.py +0 -0
  176. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/transfers/base.py +0 -0
  177. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/transfers/dynamodb_to_s3.py +0 -0
  178. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/transfers/exasol_to_s3.py +0 -0
  179. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/transfers/ftp_to_s3.py +0 -0
  180. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/transfers/gcs_to_s3.py +0 -0
  181. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/transfers/glacier_to_gcs.py +0 -0
  182. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/transfers/google_api_to_s3.py +0 -0
  183. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/transfers/hive_to_dynamodb.py +0 -0
  184. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/transfers/http_to_s3.py +0 -0
  185. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/transfers/imap_attachment_to_s3.py +0 -0
  186. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/transfers/local_to_s3.py +0 -0
  187. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/transfers/mongo_to_s3.py +0 -0
  188. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/transfers/s3_to_dynamodb.py +0 -0
  189. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/transfers/s3_to_ftp.py +0 -0
  190. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/transfers/s3_to_sftp.py +0 -0
  191. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/transfers/s3_to_sql.py +0 -0
  192. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/transfers/salesforce_to_s3.py +0 -0
  193. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/transfers/sftp_to_s3.py +0 -0
  194. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/transfers/sql_to_s3.py +0 -0
  195. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/triggers/README.md +0 -0
  196. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/triggers/__init__.py +0 -0
  197. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/triggers/athena.py +0 -0
  198. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/triggers/base.py +0 -0
  199. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/triggers/batch.py +0 -0
  200. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/triggers/bedrock.py +0 -0
  201. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/triggers/comprehend.py +0 -0
  202. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/triggers/ec2.py +0 -0
  203. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/triggers/ecs.py +0 -0
  204. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/triggers/eks.py +0 -0
  205. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/triggers/emr.py +0 -0
  206. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/triggers/glue.py +0 -0
  207. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/triggers/glue_crawler.py +0 -0
  208. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/triggers/kinesis_analytics.py +0 -0
  209. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/triggers/lambda_function.py +0 -0
  210. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/triggers/neptune.py +0 -0
  211. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/triggers/opensearch_serverless.py +0 -0
  212. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/triggers/rds.py +0 -0
  213. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/triggers/redshift_cluster.py +0 -0
  214. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/triggers/redshift_data.py +0 -0
  215. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/triggers/s3.py +0 -0
  216. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/triggers/sagemaker.py +0 -0
  217. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/triggers/sqs.py +0 -0
  218. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/triggers/step_function.py +0 -0
  219. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/utils/__init__.py +0 -0
  220. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/utils/connection_wrapper.py +0 -0
  221. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/utils/eks_get_token.py +0 -0
  222. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/utils/emailer.py +0 -0
  223. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/utils/identifiers.py +0 -0
  224. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/utils/mixins.py +0 -0
  225. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/utils/rds.py +0 -0
  226. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/utils/redshift.py +0 -0
  227. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/utils/sagemaker.py +0 -0
  228. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/utils/sqs.py +0 -0
  229. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/utils/suppress.py +0 -0
  230. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/utils/tags.py +0 -0
  231. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/utils/task_log_fetcher.py +0 -0
  232. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/utils/waiter.py +0 -0
  233. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/waiters/README.md +0 -0
  234. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/waiters/__init__.py +0 -0
  235. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/waiters/appflow.json +0 -0
  236. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/waiters/athena.json +0 -0
  237. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/waiters/base_waiter.py +0 -0
  238. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/waiters/batch.json +0 -0
  239. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/waiters/bedrock-agent.json +0 -0
  240. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/waiters/bedrock.json +0 -0
  241. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/waiters/comprehend.json +0 -0
  242. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/waiters/databrew.json +0 -0
  243. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/waiters/dynamodb.json +0 -0
  244. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/waiters/ecs.json +0 -0
  245. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/waiters/eks.json +0 -0
  246. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/waiters/emr-containers.json +0 -0
  247. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/waiters/emr-serverless.json +0 -0
  248. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/waiters/emr.json +0 -0
  249. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/waiters/glue.json +0 -0
  250. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/waiters/kinesisanalyticsv2.json +0 -0
  251. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/waiters/neptune.json +0 -0
  252. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/waiters/opensearchserverless.json +0 -0
  253. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/waiters/rds.json +0 -0
  254. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/waiters/redshift.json +0 -0
  255. {apache_airflow_providers_amazon-8.28.0 → apache_airflow_providers_amazon-8.29.0}/airflow/providers/amazon/aws/waiters/sagemaker.json +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: apache-airflow-providers-amazon
3
- Version: 8.28.0
3
+ Version: 8.29.0
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>
@@ -23,7 +23,6 @@ Classifier: Programming Language :: Python :: 3.12
23
23
  Classifier: Topic :: System :: Monitoring
24
24
  Requires-Dist: PyAthena>=3.0.10
25
25
  Requires-Dist: apache-airflow-providers-common-compat>=1.1.0
26
- Requires-Dist: apache-airflow-providers-common-compat>=1.1.0
27
26
  Requires-Dist: apache-airflow-providers-common-sql>=1.3.1
28
27
  Requires-Dist: apache-airflow-providers-http
29
28
  Requires-Dist: apache-airflow>=2.8.0
@@ -33,9 +32,10 @@ Requires-Dist: botocore>=1.34.90
33
32
  Requires-Dist: inflection>=0.5.1
34
33
  Requires-Dist: jmespath>=0.7.0
35
34
  Requires-Dist: jsonpath_ng>=1.5.3
35
+ Requires-Dist: python3-saml>=1.16.0
36
36
  Requires-Dist: redshift_connector>=2.0.918
37
37
  Requires-Dist: sqlalchemy_redshift>=0.8.6
38
- Requires-Dist: watchtower>=3.0.0,<4
38
+ Requires-Dist: watchtower>=3.0.0,!=3.3.0,<4
39
39
  Requires-Dist: aiobotocore[boto3]>=2.13.0 ; extra == "aiobotocore"
40
40
  Requires-Dist: apache-airflow-providers-apache-hive ; extra == "apache.hive"
41
41
  Requires-Dist: apache-airflow-providers-cncf-kubernetes>=7.2.0 ; extra == "cncf.kubernetes"
@@ -56,8 +56,8 @@ Requires-Dist: s3fs>=2023.10.0 ; extra == "s3fs"
56
56
  Requires-Dist: apache-airflow-providers-salesforce ; extra == "salesforce"
57
57
  Requires-Dist: apache-airflow-providers-ssh ; extra == "ssh"
58
58
  Project-URL: Bug Tracker, https://github.com/apache/airflow/issues
59
- Project-URL: Changelog, https://airflow.apache.org/docs/apache-airflow-providers-amazon/8.28.0/changelog.html
60
- Project-URL: Documentation, https://airflow.apache.org/docs/apache-airflow-providers-amazon/8.28.0
59
+ Project-URL: Changelog, https://airflow.apache.org/docs/apache-airflow-providers-amazon/8.29.0/changelog.html
60
+ Project-URL: Documentation, https://airflow.apache.org/docs/apache-airflow-providers-amazon/8.29.0
61
61
  Project-URL: Slack Chat, https://s.apache.org/airflow-slack
62
62
  Project-URL: Source Code, https://github.com/apache/airflow
63
63
  Project-URL: Twitter, https://twitter.com/ApacheAirflow
@@ -125,7 +125,7 @@ Provides-Extra: ssh
125
125
 
126
126
  Package ``apache-airflow-providers-amazon``
127
127
 
128
- Release: ``8.28.0``
128
+ Release: ``8.29.0``
129
129
 
130
130
 
131
131
  Amazon integration (including `Amazon Web Services (AWS) <https://aws.amazon.com/>`__).
@@ -138,7 +138,7 @@ This is a provider package for ``amazon`` provider. All classes for this provide
138
138
  are in ``airflow.providers.amazon`` python package.
139
139
 
140
140
  You can find package information and changelog for the provider
141
- in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-amazon/8.28.0/>`_.
141
+ in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-amazon/8.29.0/>`_.
142
142
 
143
143
  Installation
144
144
  ------------
@@ -152,25 +152,25 @@ The package supports the following python versions: 3.8,3.9,3.10,3.11,3.12
152
152
  Requirements
153
153
  ------------
154
154
 
155
- ========================================== ==================
155
+ ========================================== ======================
156
156
  PIP package Version required
157
- ========================================== ==================
157
+ ========================================== ======================
158
158
  ``apache-airflow`` ``>=2.8.0``
159
159
  ``apache-airflow-providers-common-compat`` ``>=1.1.0``
160
160
  ``apache-airflow-providers-common-sql`` ``>=1.3.1``
161
161
  ``apache-airflow-providers-http``
162
- ``apache-airflow-providers-common-compat`` ``>=1.1.0``
163
162
  ``boto3`` ``>=1.34.90``
164
163
  ``botocore`` ``>=1.34.90``
165
164
  ``inflection`` ``>=0.5.1``
166
- ``watchtower`` ``>=3.0.0,<4``
165
+ ``watchtower`` ``>=3.0.0,!=3.3.0,<4``
167
166
  ``jsonpath_ng`` ``>=1.5.3``
168
167
  ``redshift_connector`` ``>=2.0.918``
169
168
  ``sqlalchemy_redshift`` ``>=0.8.6``
170
169
  ``asgiref`` ``>=2.3.0``
171
170
  ``PyAthena`` ``>=3.0.10``
172
171
  ``jmespath`` ``>=0.7.0``
173
- ========================================== ==================
172
+ ``python3-saml`` ``>=1.16.0``
173
+ ========================================== ======================
174
174
 
175
175
  Cross provider package dependencies
176
176
  -----------------------------------
@@ -205,4 +205,4 @@ Dependent package
205
205
  ====================================================================================================================== ===================
206
206
 
207
207
  The changelog for the provider package can be found in the
208
- `changelog <https://airflow.apache.org/docs/apache-airflow-providers-amazon/8.28.0/changelog.html>`_.
208
+ `changelog <https://airflow.apache.org/docs/apache-airflow-providers-amazon/8.29.0/changelog.html>`_.
@@ -42,7 +42,7 @@
42
42
 
43
43
  Package ``apache-airflow-providers-amazon``
44
44
 
45
- Release: ``8.28.0``
45
+ Release: ``8.29.0``
46
46
 
47
47
 
48
48
  Amazon integration (including `Amazon Web Services (AWS) <https://aws.amazon.com/>`__).
@@ -55,7 +55,7 @@ This is a provider package for ``amazon`` provider. All classes for this provide
55
55
  are in ``airflow.providers.amazon`` python package.
56
56
 
57
57
  You can find package information and changelog for the provider
58
- in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-amazon/8.28.0/>`_.
58
+ in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-amazon/8.29.0/>`_.
59
59
 
60
60
  Installation
61
61
  ------------
@@ -69,25 +69,25 @@ The package supports the following python versions: 3.8,3.9,3.10,3.11,3.12
69
69
  Requirements
70
70
  ------------
71
71
 
72
- ========================================== ==================
72
+ ========================================== ======================
73
73
  PIP package Version required
74
- ========================================== ==================
74
+ ========================================== ======================
75
75
  ``apache-airflow`` ``>=2.8.0``
76
76
  ``apache-airflow-providers-common-compat`` ``>=1.1.0``
77
77
  ``apache-airflow-providers-common-sql`` ``>=1.3.1``
78
78
  ``apache-airflow-providers-http``
79
- ``apache-airflow-providers-common-compat`` ``>=1.1.0``
80
79
  ``boto3`` ``>=1.34.90``
81
80
  ``botocore`` ``>=1.34.90``
82
81
  ``inflection`` ``>=0.5.1``
83
- ``watchtower`` ``>=3.0.0,<4``
82
+ ``watchtower`` ``>=3.0.0,!=3.3.0,<4``
84
83
  ``jsonpath_ng`` ``>=1.5.3``
85
84
  ``redshift_connector`` ``>=2.0.918``
86
85
  ``sqlalchemy_redshift`` ``>=0.8.6``
87
86
  ``asgiref`` ``>=2.3.0``
88
87
  ``PyAthena`` ``>=3.0.10``
89
88
  ``jmespath`` ``>=0.7.0``
90
- ========================================== ==================
89
+ ``python3-saml`` ``>=1.16.0``
90
+ ========================================== ======================
91
91
 
92
92
  Cross provider package dependencies
93
93
  -----------------------------------
@@ -122,4 +122,4 @@ Dependent package
122
122
  ====================================================================================================================== ===================
123
123
 
124
124
  The changelog for the provider package can be found in the
125
- `changelog <https://airflow.apache.org/docs/apache-airflow-providers-amazon/8.28.0/changelog.html>`_.
125
+ `changelog <https://airflow.apache.org/docs/apache-airflow-providers-amazon/8.29.0/changelog.html>`_.
@@ -29,7 +29,7 @@ from airflow import __version__ as airflow_version
29
29
 
30
30
  __all__ = ["__version__"]
31
31
 
32
- __version__ = "8.28.0"
32
+ __version__ = "8.29.0"
33
33
 
34
34
  if packaging.version.parse(packaging.version.parse(airflow_version).base_version) < packaging.version.parse(
35
35
  "2.8.0"
@@ -36,6 +36,7 @@ from airflow.providers.amazon.aws.auth_manager.cli.definition import (
36
36
  from airflow.providers.amazon.aws.auth_manager.security_manager.aws_security_manager_override import (
37
37
  AwsSecurityManagerOverride,
38
38
  )
39
+ from airflow.providers.amazon.aws.auth_manager.views.auth import AwsAuthManagerAuthenticationViews
39
40
 
40
41
  try:
41
42
  from airflow.auth.managers.base_auth_manager import BaseAuthManager, ResourceMethod
@@ -423,6 +424,9 @@ class AwsAuthManager(BaseAuthManager):
423
424
  ),
424
425
  ]
425
426
 
427
+ def register_views(self) -> None:
428
+ self.appbuilder.add_view_no_menu(AwsAuthManagerAuthenticationViews())
429
+
426
430
  @staticmethod
427
431
  def _get_menu_item_request(resource_name: str) -> IsAuthorizedRequest:
428
432
  return {
@@ -27,7 +27,11 @@ except ImportError:
27
27
 
28
28
 
29
29
  class AwsSecurityManagerOverride(AirflowSecurityManagerV2):
30
- """The security manager override specific to AWS auth manager."""
30
+ """
31
+ The security manager override specific to AWS auth manager.
32
+
33
+ This class is only used in Airflow 2. This can be safely be removed when min Airflow version >= 3
34
+ """
31
35
 
32
36
  def register_views(self):
33
37
  """Register views specific to AWS auth manager."""
@@ -448,7 +448,7 @@ class AwsBatchExecutor(BaseExecutor):
448
448
  airflow_cmd=ti.command_as_list(),
449
449
  queue=ti.queue,
450
450
  exec_config=ti.executor_config,
451
- attempt_number=ti.prev_attempted_tries,
451
+ attempt_number=ti.try_number,
452
452
  )
453
453
  adopted_tis.append(ti)
454
454
 
@@ -35,6 +35,8 @@ from json import JSONDecodeError
35
35
  from airflow.configuration import conf
36
36
  from airflow.providers.amazon.aws.executors.ecs.utils import (
37
37
  CONFIG_GROUP_NAME,
38
+ ECS_LAUNCH_TYPE_EC2,
39
+ ECS_LAUNCH_TYPE_FARGATE,
38
40
  AllEcsConfigKeys,
39
41
  RunTaskKwargsConfigKeys,
40
42
  camelize_dict_keys,
@@ -56,13 +58,15 @@ def _fetch_config_values() -> dict[str, str]:
56
58
 
57
59
 
58
60
  def build_task_kwargs() -> dict:
61
+ all_config_keys = AllEcsConfigKeys()
59
62
  # This will put some kwargs at the root of the dictionary that do NOT belong there. However,
60
63
  # the code below expects them to be there and will rearrange them as necessary.
61
64
  task_kwargs = _fetch_config_values()
62
65
  task_kwargs.update(_fetch_templated_kwargs())
63
66
 
64
- has_launch_type: bool = "launch_type" in task_kwargs
65
- has_capacity_provider: bool = "capacity_provider_strategy" in task_kwargs
67
+ has_launch_type: bool = all_config_keys.LAUNCH_TYPE in task_kwargs
68
+ has_capacity_provider: bool = all_config_keys.CAPACITY_PROVIDER_STRATEGY in task_kwargs
69
+ is_launch_type_ec2: bool = task_kwargs.get(all_config_keys.LAUNCH_TYPE, None) == ECS_LAUNCH_TYPE_EC2
66
70
 
67
71
  if has_capacity_provider and has_launch_type:
68
72
  raise ValueError(
@@ -75,7 +79,12 @@ def build_task_kwargs() -> dict:
75
79
  # the final fallback.
76
80
  cluster = EcsHook().conn.describe_clusters(clusters=[task_kwargs["cluster"]])["clusters"][0]
77
81
  if not cluster.get("defaultCapacityProviderStrategy"):
78
- task_kwargs["launch_type"] = "FARGATE"
82
+ task_kwargs[all_config_keys.LAUNCH_TYPE] = ECS_LAUNCH_TYPE_FARGATE
83
+
84
+ # If you're using the EC2 launch type, you should not/can not provide the platform_version. In this
85
+ # case we'll drop it on the floor on behalf of the user, instead of throwing an exception.
86
+ if is_launch_type_ec2:
87
+ task_kwargs.pop(all_config_keys.PLATFORM_VERSION, None)
79
88
 
80
89
  # There can only be 1 count of these containers
81
90
  task_kwargs["count"] = 1 # type: ignore
@@ -105,7 +114,7 @@ def build_task_kwargs() -> dict:
105
114
  "awsvpcConfiguration": {
106
115
  "subnets": str(subnets).split(",") if subnets else None,
107
116
  "securityGroups": str(security_groups).split(",") if security_groups else None,
108
- "assignPublicIp": parse_assign_public_ip(assign_public_ip),
117
+ "assignPublicIp": parse_assign_public_ip(assign_public_ip, is_launch_type_ec2),
109
118
  }
110
119
  }
111
120
  )
@@ -40,6 +40,9 @@ CommandType = List[str]
40
40
  ExecutorConfigFunctionType = Callable[[CommandType], dict]
41
41
  ExecutorConfigType = Dict[str, Any]
42
42
 
43
+ ECS_LAUNCH_TYPE_EC2 = "EC2"
44
+ ECS_LAUNCH_TYPE_FARGATE = "FARGATE"
45
+
43
46
  CONFIG_GROUP_NAME = "aws_ecs_executor"
44
47
 
45
48
  CONFIG_DEFAULTS = {
@@ -247,9 +250,12 @@ def _recursive_flatten_dict(nested_dict):
247
250
  return dict(items)
248
251
 
249
252
 
250
- def parse_assign_public_ip(assign_public_ip):
253
+ def parse_assign_public_ip(assign_public_ip, is_launch_type_ec2=False):
251
254
  """Convert "assign_public_ip" from True/False to ENABLE/DISABLE."""
252
- return "ENABLED" if assign_public_ip == "True" else "DISABLED"
255
+ # If the launch type is EC2, you cannot/should not provide the assignPublicIp parameter (which is
256
+ # specific to Fargate)
257
+ if not is_launch_type_ec2:
258
+ return "ENABLED" if assign_public_ip == "True" else "DISABLED"
253
259
 
254
260
 
255
261
  def camelize_dict_keys(nested_dict) -> dict:
@@ -238,7 +238,7 @@ class S3Hook(AwsBaseHook):
238
238
  valid_s3_virtual_hosted_format = "https://bucket-name.s3.region-code.amazonaws.com/key-name"
239
239
  format = s3url.split("//")
240
240
  if re.match(r"s3[na]?:", format[0], re.IGNORECASE):
241
- parsed_url = urlsplit(s3url)
241
+ parsed_url = urlsplit(s3url, allow_fragments=False)
242
242
  if not parsed_url.netloc:
243
243
  raise S3HookUriParseFailure(
244
244
  "Please provide a bucket name using a valid format of the form: "
@@ -71,13 +71,12 @@ class CloudwatchTaskHandler(FileTaskHandler, LoggingMixin):
71
71
  :param base_log_folder: base folder to store logs locally
72
72
  :param log_group_arn: ARN of the Cloudwatch log group for remote log storage
73
73
  with format ``arn:aws:logs:{region name}:{account id}:log-group:{group name}``
74
- :param filename_template: template for file name (local storage) or log stream name (remote)
75
74
  """
76
75
 
77
76
  trigger_should_wrap = True
78
77
 
79
- def __init__(self, base_log_folder: str, log_group_arn: str, filename_template: str | None = None):
80
- super().__init__(base_log_folder, filename_template)
78
+ def __init__(self, base_log_folder: str, log_group_arn: str, **kwargs):
79
+ super().__init__(base_log_folder)
81
80
  split_arn = log_group_arn.split(":")
82
81
 
83
82
  self.handler = None
@@ -42,10 +42,8 @@ class S3TaskHandler(FileTaskHandler, LoggingMixin):
42
42
 
43
43
  trigger_should_wrap = True
44
44
 
45
- def __init__(
46
- self, base_log_folder: str, s3_log_folder: str, filename_template: str | None = None, **kwargs
47
- ):
48
- super().__init__(base_log_folder, filename_template)
45
+ def __init__(self, base_log_folder: str, s3_log_folder: str, **kwargs):
46
+ super().__init__(base_log_folder)
49
47
  self.handler: logging.FileHandler | None = None
50
48
  self.remote_base = s3_log_folder
51
49
  self.log_relative_path = ""
@@ -373,6 +373,10 @@ class EcsRunTaskOperator(EcsBaseOperator):
373
373
  When capacity_provider_strategy is specified, the launch_type parameter is omitted.
374
374
  If no capacity_provider_strategy or launch_type is specified,
375
375
  the default capacity provider strategy for the cluster is used.
376
+ :param volume_configurations: the volume configurations to use when using capacity provider. The name of the volume must match
377
+ the name from the task definition.
378
+ You can configure the settings like size, volume type, IOPS, throughput and others mentioned in
379
+ (https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_TaskManagedEBSVolumeConfiguration.html)
376
380
  :param group: the name of the task group associated with the task
377
381
  :param placement_constraints: an array of placement constraint objects to use for
378
382
  the task
@@ -420,6 +424,7 @@ class EcsRunTaskOperator(EcsBaseOperator):
420
424
  "overrides",
421
425
  "launch_type",
422
426
  "capacity_provider_strategy",
427
+ "volume_configurations",
423
428
  "group",
424
429
  "placement_constraints",
425
430
  "placement_strategy",
@@ -450,6 +455,7 @@ class EcsRunTaskOperator(EcsBaseOperator):
450
455
  overrides: dict,
451
456
  launch_type: str = "EC2",
452
457
  capacity_provider_strategy: list | None = None,
458
+ volume_configurations: list | None = None,
453
459
  group: str | None = None,
454
460
  placement_constraints: list | None = None,
455
461
  placement_strategy: list | None = None,
@@ -479,6 +485,7 @@ class EcsRunTaskOperator(EcsBaseOperator):
479
485
  self.overrides = overrides
480
486
  self.launch_type = launch_type
481
487
  self.capacity_provider_strategy = capacity_provider_strategy
488
+ self.volume_configurations = volume_configurations
482
489
  self.group = group
483
490
  self.placement_constraints = placement_constraints
484
491
  self.placement_strategy = placement_strategy
@@ -614,6 +621,8 @@ class EcsRunTaskOperator(EcsBaseOperator):
614
621
 
615
622
  if self.capacity_provider_strategy:
616
623
  run_opts["capacityProviderStrategy"] = self.capacity_provider_strategy
624
+ if self.volume_configurations is not None:
625
+ run_opts["volumeConfigurations"] = self.volume_configurations
617
626
  elif self.launch_type:
618
627
  run_opts["launchType"] = self.launch_type
619
628
  if self.platform_version is not None:
@@ -17,20 +17,22 @@
17
17
  # under the License.
18
18
  from __future__ import annotations
19
19
 
20
- from functools import cached_property
20
+ import warnings
21
21
  from typing import TYPE_CHECKING, Any, Sequence
22
22
 
23
23
  from airflow.configuration import conf
24
- from airflow.models import BaseOperator
24
+ from airflow.exceptions import AirflowException, AirflowProviderDeprecationWarning
25
25
  from airflow.providers.amazon.aws.hooks.glue_databrew import GlueDataBrewHook
26
+ from airflow.providers.amazon.aws.operators.base_aws import AwsBaseOperator
26
27
  from airflow.providers.amazon.aws.triggers.glue_databrew import GlueDataBrewJobCompleteTrigger
27
28
  from airflow.providers.amazon.aws.utils import validate_execute_complete_event
29
+ from airflow.providers.amazon.aws.utils.mixins import aws_template_fields
28
30
 
29
31
  if TYPE_CHECKING:
30
32
  from airflow.utils.context import Context
31
33
 
32
34
 
33
- class GlueDataBrewStartJobOperator(BaseOperator):
35
+ class GlueDataBrewStartJobOperator(AwsBaseOperator[GlueDataBrewHook]):
34
36
  """
35
37
  Start an AWS Glue DataBrew job.
36
38
 
@@ -47,14 +49,30 @@ class GlueDataBrewStartJobOperator(BaseOperator):
47
49
  :param deferrable: If True, the operator will wait asynchronously for the job to complete.
48
50
  This implies waiting for completion. This mode requires aiobotocore module to be installed.
49
51
  (default: False)
50
- :param delay: Time in seconds to wait between status checks. Default is 30.
52
+ :param delay: Time in seconds to wait between status checks. (Deprecated).
53
+ :param waiter_delay: Time in seconds to wait between status checks. Default is 30.
54
+ :param waiter_max_attempts: Maximum number of attempts to check for job completion. (default: 60)
51
55
  :return: dictionary with key run_id and value of the resulting job's run_id.
56
+
57
+ :param aws_conn_id: The Airflow connection used for AWS credentials.
58
+ If this is ``None`` or empty then the default boto3 behaviour is used. If
59
+ running Airflow in a distributed manner and aws_conn_id is None or
60
+ empty, then default boto3 configuration would be used (and must be
61
+ maintained on each worker node).
62
+ :param region_name: AWS region_name. If not specified then the default boto3 behaviour is used.
63
+ :param verify: Whether or not to verify SSL certificates. See:
64
+ https://boto3.amazonaws.com/v1/documentation/api/latest/reference/core/session.html
65
+ :param botocore_config: Configuration dictionary (key-values) for botocore client. See:
66
+ https://botocore.amazonaws.com/v1/documentation/api/latest/reference/config.html
52
67
  """
53
68
 
54
- template_fields: Sequence[str] = (
69
+ aws_hook_class = GlueDataBrewHook
70
+
71
+ template_fields: Sequence[str] = aws_template_fields(
55
72
  "job_name",
56
73
  "wait_for_completion",
57
- "delay",
74
+ "waiter_delay",
75
+ "waiter_max_attempts",
58
76
  "deferrable",
59
77
  )
60
78
 
@@ -62,21 +80,25 @@ class GlueDataBrewStartJobOperator(BaseOperator):
62
80
  self,
63
81
  job_name: str,
64
82
  wait_for_completion: bool = True,
65
- delay: int = 30,
83
+ delay: int | None = None,
84
+ waiter_delay: int = 30,
85
+ waiter_max_attempts: int = 60,
66
86
  deferrable: bool = conf.getboolean("operators", "default_deferrable", fallback=False),
67
- aws_conn_id: str | None = "aws_default",
68
87
  **kwargs,
69
88
  ):
70
89
  super().__init__(**kwargs)
71
90
  self.job_name = job_name
72
91
  self.wait_for_completion = wait_for_completion
92
+ self.waiter_delay = waiter_delay
93
+ self.waiter_max_attempts = waiter_max_attempts
73
94
  self.deferrable = deferrable
74
- self.delay = delay
75
- self.aws_conn_id = aws_conn_id
76
-
77
- @cached_property
78
- def hook(self) -> GlueDataBrewHook:
79
- return GlueDataBrewHook(aws_conn_id=self.aws_conn_id)
95
+ if delay is not None:
96
+ warnings.warn(
97
+ "please use `waiter_delay` instead of delay.",
98
+ AirflowProviderDeprecationWarning,
99
+ stacklevel=2,
100
+ )
101
+ self.waiter_delay = delay
80
102
 
81
103
  def execute(self, context: Context):
82
104
  job = self.hook.conn.start_job_run(Name=self.job_name)
@@ -88,7 +110,14 @@ class GlueDataBrewStartJobOperator(BaseOperator):
88
110
  self.log.info("Deferring job %s with run_id %s", self.job_name, run_id)
89
111
  self.defer(
90
112
  trigger=GlueDataBrewJobCompleteTrigger(
91
- aws_conn_id=self.aws_conn_id, job_name=self.job_name, run_id=run_id, delay=self.delay
113
+ job_name=self.job_name,
114
+ run_id=run_id,
115
+ waiter_delay=self.waiter_delay,
116
+ waiter_max_attempts=self.waiter_max_attempts,
117
+ aws_conn_id=self.aws_conn_id,
118
+ region_name=self.region_name,
119
+ verify=self.verify,
120
+ botocore_config=self.botocore_config,
92
121
  ),
93
122
  method_name="execute_complete",
94
123
  )
@@ -97,7 +126,12 @@ class GlueDataBrewStartJobOperator(BaseOperator):
97
126
  self.log.info(
98
127
  "Waiting for AWS Glue DataBrew Job: %s. Run Id: %s to complete.", self.job_name, run_id
99
128
  )
100
- status = self.hook.job_completion(job_name=self.job_name, delay=self.delay, run_id=run_id)
129
+ status = self.hook.job_completion(
130
+ job_name=self.job_name,
131
+ delay=self.waiter_delay,
132
+ run_id=run_id,
133
+ max_attempts=self.waiter_max_attempts,
134
+ )
101
135
  self.log.info("Glue DataBrew Job: %s status: %s", self.job_name, status)
102
136
 
103
137
  return {"run_id": run_id}
@@ -105,6 +139,9 @@ class GlueDataBrewStartJobOperator(BaseOperator):
105
139
  def execute_complete(self, context: Context, event: dict[str, Any] | None = None) -> dict[str, str]:
106
140
  event = validate_execute_complete_event(event)
107
141
 
142
+ if event["status"] != "success":
143
+ raise AirflowException("Error while running AWS Glue DataBrew job: %s", event)
144
+
108
145
  run_id = event.get("run_id", "")
109
146
  status = event.get("status", "")
110
147
 
@@ -23,7 +23,7 @@ from typing import TYPE_CHECKING, Any, Sequence
23
23
  from deprecated import deprecated
24
24
 
25
25
  from airflow.configuration import conf
26
- from airflow.exceptions import AirflowException, AirflowProviderDeprecationWarning, AirflowSkipException
26
+ from airflow.exceptions import AirflowException, AirflowProviderDeprecationWarning
27
27
  from airflow.providers.amazon.aws.hooks.batch_client import BatchClientHook
28
28
  from airflow.providers.amazon.aws.triggers.batch import BatchJobTrigger
29
29
  from airflow.sensors.base import BaseSensorOperator
@@ -265,6 +265,4 @@ class BatchJobQueueSensor(BaseSensorOperator):
265
265
  return False
266
266
 
267
267
  message = f"AWS Batch job queue failed. AWS Batch job queue status: {status}"
268
- if self.soft_fail:
269
- raise AirflowSkipException(message)
270
268
  raise AirflowException(message)
@@ -35,7 +35,7 @@ if TYPE_CHECKING:
35
35
  from airflow.utils.context import Context
36
36
 
37
37
 
38
- def _check_failed(current_state, target_state, failure_states, soft_fail: bool) -> None:
38
+ def _check_failed(current_state, target_state, failure_states) -> None:
39
39
  if (current_state != target_state) and (current_state in failure_states):
40
40
  raise AirflowException(
41
41
  f"Terminal state reached. Current state: {current_state}, Expected state: {target_state}"
@@ -86,7 +86,7 @@ class EcsClusterStateSensor(EcsBaseSensor):
86
86
  cluster_state = EcsClusterStates(self.hook.get_cluster_state(cluster_name=self.cluster_name))
87
87
 
88
88
  self.log.info("Cluster state: %s, waiting for: %s", cluster_state, self.target_state)
89
- _check_failed(cluster_state, self.target_state, self.failure_states, self.soft_fail)
89
+ _check_failed(cluster_state, self.target_state, self.failure_states)
90
90
 
91
91
  return cluster_state == self.target_state
92
92
 
@@ -132,7 +132,7 @@ class EcsTaskDefinitionStateSensor(EcsBaseSensor):
132
132
  )
133
133
 
134
134
  self.log.info("Task Definition state: %s, waiting for: %s", task_definition_state, self.target_state)
135
- _check_failed(task_definition_state, self.target_state, [self.failure_states], self.soft_fail)
135
+ _check_failed(task_definition_state, self.target_state, [self.failure_states])
136
136
  return task_definition_state == self.target_state
137
137
 
138
138
 
@@ -172,5 +172,5 @@ class EcsTaskStateSensor(EcsBaseSensor):
172
172
  task_state = EcsTaskStates(self.hook.get_task_state(cluster=self.cluster, task=self.task))
173
173
 
174
174
  self.log.info("Task state: %s, waiting for: %s", task_state, self.target_state)
175
- _check_failed(task_state, self.target_state, self.failure_states, self.soft_fail)
175
+ _check_failed(task_state, self.target_state, self.failure_states)
176
176
  return task_state == self.target_state
@@ -21,7 +21,7 @@ from functools import cached_property
21
21
  from typing import TYPE_CHECKING, Any, Sequence
22
22
 
23
23
  from airflow.configuration import conf
24
- from airflow.exceptions import AirflowException, AirflowSkipException
24
+ from airflow.exceptions import AirflowException
25
25
  from airflow.providers.amazon.aws.hooks.glue import GlueDataQualityHook, GlueJobHook
26
26
  from airflow.providers.amazon.aws.sensors.base_aws import AwsBaseSensor
27
27
  from airflow.providers.amazon.aws.triggers.glue import (
@@ -177,8 +177,6 @@ class GlueDataQualityRuleSetEvaluationRunSensor(AwsBaseSensor[GlueDataQualityHoo
177
177
 
178
178
  if event["status"] != "success":
179
179
  message = f"Error: AWS Glue data quality ruleset evaluation run: {event}"
180
- if self.soft_fail:
181
- raise AirflowSkipException(message)
182
180
  raise AirflowException(message)
183
181
 
184
182
  self.hook.validate_evaluation_run_results(
@@ -300,8 +298,6 @@ class GlueDataQualityRuleRecommendationRunSensor(AwsBaseSensor[GlueDataQualityHo
300
298
 
301
299
  if event["status"] != "success":
302
300
  message = f"Error: AWS Glue data quality recommendation run: {event}"
303
- if self.soft_fail:
304
- raise AirflowSkipException(message)
305
301
  raise AirflowException(message)
306
302
 
307
303
  if self.show_results:
@@ -44,11 +44,12 @@ class RedshiftToS3Operator(BaseOperator):
44
44
  :param s3_bucket: reference to a specific S3 bucket
45
45
  :param s3_key: reference to a specific S3 key. If ``table_as_file_name`` is set
46
46
  to False, this param must include the desired file name
47
- :param schema: reference to a specific schema in redshift database
48
- Applicable when ``table`` param provided.
49
- :param table: reference to a specific table in redshift database
50
- Used when ``select_query`` param not provided.
51
- :param select_query: custom select query to fetch data from redshift database
47
+ :param schema: reference to a specific schema in redshift database,
48
+ used when ``table`` param provided and ``select_query`` param not provided
49
+ :param table: reference to a specific table in redshift database,
50
+ used when ``schema`` param provided and ``select_query`` param not provided
51
+ :param select_query: custom select query to fetch data from redshift database,
52
+ has precedence over default query `SELECT * FROM ``schema``.``table``
52
53
  :param redshift_conn_id: reference to a specific redshift database
53
54
  :param aws_conn_id: reference to a specific S3 connection
54
55
  If the AWS connection contains 'aws_iam_role' in ``extras``
@@ -138,12 +139,17 @@ class RedshiftToS3Operator(BaseOperator):
138
139
  {unload_options};
139
140
  """
140
141
 
142
+ @property
143
+ def default_select_query(self) -> str | None:
144
+ if self.schema and self.table:
145
+ return f"SELECT * FROM {self.schema}.{self.table}"
146
+ return None
147
+
141
148
  def execute(self, context: Context) -> None:
142
149
  if self.table and self.table_as_file_name:
143
150
  self.s3_key = f"{self.s3_key}/{self.table}_"
144
151
 
145
- if self.schema and self.table:
146
- self.select_query = f"SELECT * FROM {self.schema}.{self.table}"
152
+ self.select_query = self.select_query or self.default_select_query
147
153
 
148
154
  if self.select_query is None:
149
155
  raise ValueError(