apache-airflow-providers-amazon 7.4.1rc1__tar.gz → 8.0.0rc2__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 (155) hide show
  1. {apache-airflow-providers-amazon-7.4.1rc1/apache_airflow_providers_amazon.egg-info → apache-airflow-providers-amazon-8.0.0rc2}/PKG-INFO +80 -4
  2. {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/README.rst +78 -2
  3. {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/hooks/athena.py +0 -15
  4. {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/hooks/base_aws.py +98 -65
  5. {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/hooks/batch_client.py +60 -27
  6. {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/hooks/batch_waiters.py +3 -1
  7. {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/hooks/emr.py +33 -74
  8. {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/hooks/logs.py +22 -4
  9. {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/hooks/redshift_cluster.py +1 -12
  10. {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/hooks/sagemaker.py +0 -16
  11. {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/links/emr.py +1 -3
  12. {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/operators/athena.py +0 -15
  13. {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/operators/batch.py +78 -24
  14. {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/operators/ecs.py +21 -58
  15. {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/operators/eks.py +0 -1
  16. {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/operators/emr.py +94 -24
  17. {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/operators/lambda_function.py +0 -19
  18. {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/operators/rds.py +1 -1
  19. {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/operators/redshift_cluster.py +22 -1
  20. {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/operators/redshift_data.py +0 -62
  21. {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/secrets/secrets_manager.py +0 -17
  22. {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/secrets/systems_manager.py +0 -21
  23. apache-airflow-providers-amazon-8.0.0rc2/airflow/providers/amazon/aws/sensors/dynamodb.py +97 -0
  24. {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/sensors/emr.py +1 -2
  25. {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/transfers/dynamodb_to_s3.py +1 -1
  26. {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/transfers/gcs_to_s3.py +0 -19
  27. {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/transfers/glacier_to_gcs.py +1 -7
  28. {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/transfers/google_api_to_s3.py +10 -10
  29. {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/transfers/imap_attachment_to_s3.py +0 -10
  30. {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/transfers/mongo_to_s3.py +0 -11
  31. {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/transfers/s3_to_sftp.py +0 -10
  32. {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/transfers/sql_to_s3.py +23 -9
  33. {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/triggers/redshift_cluster.py +54 -2
  34. {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/waiters/base_waiter.py +12 -1
  35. apache-airflow-providers-amazon-8.0.0rc2/airflow/providers/amazon/aws/waiters/emr-serverless.json +18 -0
  36. {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/get_provider_info.py +35 -30
  37. {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2/apache_airflow_providers_amazon.egg-info}/PKG-INFO +80 -4
  38. {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/apache_airflow_providers_amazon.egg-info/SOURCES.txt +2 -2
  39. {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/apache_airflow_providers_amazon.egg-info/requires.txt +1 -0
  40. {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/setup.cfg +3 -2
  41. {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/setup.py +1 -1
  42. apache-airflow-providers-amazon-7.4.1rc1/airflow/providers/amazon/aws/operators/aws_lambda.py +0 -29
  43. apache-airflow-providers-amazon-7.4.1rc1/airflow/providers/amazon/aws/operators/redshift_sql.py +0 -57
  44. {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/LICENSE +0 -0
  45. {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/MANIFEST.in +0 -0
  46. {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/NOTICE +0 -0
  47. {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/__init__.py +0 -0
  48. {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/__init__.py +0 -0
  49. {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/exceptions.py +0 -0
  50. {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/hooks/__init__.py +0 -0
  51. {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/hooks/appflow.py +0 -0
  52. {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/hooks/batch_waiters.json +0 -0
  53. {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/hooks/cloud_formation.py +0 -0
  54. {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/hooks/datasync.py +0 -0
  55. {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/hooks/dms.py +0 -0
  56. {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/hooks/dynamodb.py +0 -0
  57. {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/hooks/ec2.py +0 -0
  58. {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/hooks/ecr.py +0 -0
  59. {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/hooks/ecs.py +0 -0
  60. {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/hooks/eks.py +0 -0
  61. {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/hooks/elasticache_replication_group.py +0 -0
  62. {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/hooks/glacier.py +0 -0
  63. {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/hooks/glue.py +0 -0
  64. {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/hooks/glue_catalog.py +0 -0
  65. {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/hooks/glue_crawler.py +0 -0
  66. {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/hooks/kinesis.py +0 -0
  67. {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/hooks/lambda_function.py +0 -0
  68. {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/hooks/quicksight.py +0 -0
  69. {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/hooks/rds.py +0 -0
  70. {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/hooks/redshift_data.py +0 -0
  71. {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/hooks/redshift_sql.py +0 -0
  72. {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/hooks/s3.py +0 -0
  73. {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/hooks/secrets_manager.py +0 -0
  74. {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/hooks/ses.py +0 -0
  75. {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/hooks/sns.py +0 -0
  76. {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/hooks/sqs.py +0 -0
  77. {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/hooks/ssm.py +0 -0
  78. {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/hooks/step_function.py +0 -0
  79. {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/hooks/sts.py +0 -0
  80. {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/links/__init__.py +0 -0
  81. {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/links/base_aws.py +0 -0
  82. {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/links/batch.py +0 -0
  83. {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/links/glue.py +0 -0
  84. {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/links/logs.py +0 -0
  85. {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/log/__init__.py +0 -0
  86. {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/log/cloudwatch_task_handler.py +0 -0
  87. {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/log/s3_task_handler.py +0 -0
  88. {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/operators/__init__.py +0 -0
  89. {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/operators/appflow.py +0 -0
  90. {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/operators/cloud_formation.py +0 -0
  91. {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/operators/datasync.py +0 -0
  92. {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/operators/dms.py +0 -0
  93. {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/operators/ec2.py +0 -0
  94. {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/operators/glacier.py +0 -0
  95. {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/operators/glue.py +0 -0
  96. {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/operators/glue_crawler.py +0 -0
  97. {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/operators/quicksight.py +0 -0
  98. {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/operators/s3.py +0 -0
  99. {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/operators/sagemaker.py +0 -0
  100. {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/operators/sns.py +0 -0
  101. {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/operators/sqs.py +0 -0
  102. {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/operators/step_function.py +0 -0
  103. {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/secrets/__init__.py +0 -0
  104. {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/sensors/__init__.py +0 -0
  105. {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/sensors/athena.py +0 -0
  106. {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/sensors/batch.py +0 -0
  107. {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/sensors/cloud_formation.py +0 -0
  108. {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/sensors/dms.py +0 -0
  109. {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/sensors/ec2.py +0 -0
  110. {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/sensors/ecs.py +0 -0
  111. {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/sensors/eks.py +0 -0
  112. {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/sensors/glacier.py +0 -0
  113. {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/sensors/glue.py +0 -0
  114. {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/sensors/glue_catalog_partition.py +0 -0
  115. {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/sensors/glue_crawler.py +0 -0
  116. {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/sensors/lambda_function.py +0 -0
  117. {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/sensors/quicksight.py +0 -0
  118. {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/sensors/rds.py +0 -0
  119. {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/sensors/redshift_cluster.py +0 -0
  120. {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/sensors/s3.py +0 -0
  121. {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/sensors/sagemaker.py +0 -0
  122. {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/sensors/sqs.py +0 -0
  123. {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/sensors/step_function.py +0 -0
  124. {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/transfers/__init__.py +0 -0
  125. {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/transfers/base.py +0 -0
  126. {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/transfers/exasol_to_s3.py +0 -0
  127. {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/transfers/ftp_to_s3.py +0 -0
  128. {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/transfers/hive_to_dynamodb.py +0 -0
  129. {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/transfers/local_to_s3.py +0 -0
  130. {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/transfers/redshift_to_s3.py +0 -0
  131. {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/transfers/s3_to_ftp.py +0 -0
  132. {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/transfers/s3_to_redshift.py +0 -0
  133. {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/transfers/s3_to_sql.py +0 -0
  134. {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/transfers/salesforce_to_s3.py +0 -0
  135. {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/transfers/sftp_to_s3.py +0 -0
  136. {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/triggers/__init__.py +0 -0
  137. {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/utils/__init__.py +0 -0
  138. {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/utils/connection_wrapper.py +0 -0
  139. {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/utils/eks_get_token.py +0 -0
  140. {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/utils/emailer.py +0 -0
  141. {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/utils/rds.py +0 -0
  142. {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/utils/redshift.py +0 -0
  143. {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/utils/sagemaker.py +0 -0
  144. {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/utils/tags.py +0 -0
  145. {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/utils/waiter.py +0 -0
  146. {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/waiters/__init__.py +0 -0
  147. {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/waiters/appflow.json +0 -0
  148. {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/waiters/ecs.json +0 -0
  149. {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/waiters/eks.json +0 -0
  150. {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/waiters/emr.json +0 -0
  151. {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/apache_airflow_providers_amazon.egg-info/dependency_links.txt +0 -0
  152. {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/apache_airflow_providers_amazon.egg-info/entry_points.txt +0 -0
  153. {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/apache_airflow_providers_amazon.egg-info/not-zip-safe +0 -0
  154. {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/apache_airflow_providers_amazon.egg-info/top_level.txt +0 -0
  155. {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/pyproject.toml +0 -0
@@ -1,13 +1,13 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: apache-airflow-providers-amazon
3
- Version: 7.4.1rc1
3
+ Version: 8.0.0rc2
4
4
  Summary: Provider for Apache Airflow. Implements apache-airflow-providers-amazon package
5
5
  Home-page: https://airflow.apache.org/
6
6
  Download-URL: https://archive.apache.org/dist/airflow/providers
7
7
  Author: Apache Software Foundation
8
8
  Author-email: dev@airflow.apache.org
9
9
  License: Apache License 2.0
10
- Project-URL: Documentation, https://airflow.apache.org/docs/apache-airflow-providers-amazon/7.4.1/
10
+ Project-URL: Documentation, https://airflow.apache.org/docs/apache-airflow-providers-amazon/8.0.0/
11
11
  Project-URL: Bug Tracker, https://github.com/apache/airflow/issues
12
12
  Project-URL: Source Code, https://github.com/apache/airflow
13
13
  Project-URL: Slack Chat, https://s.apache.org/airflow-slack
@@ -64,7 +64,7 @@ License-File: NOTICE
64
64
 
65
65
  Package ``apache-airflow-providers-amazon``
66
66
 
67
- Release: ``7.4.1rc1``
67
+ Release: ``8.0.0rc2``
68
68
 
69
69
 
70
70
  Amazon integration (including `Amazon Web Services (AWS) <https://aws.amazon.com/>`__).
@@ -77,7 +77,7 @@ This is a provider package for ``amazon`` provider. All classes for this provide
77
77
  are in ``airflow.providers.amazon`` python package.
78
78
 
79
79
  You can find package information and changelog for the provider
80
- in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-amazon/7.4.1/>`_.
80
+ in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-amazon/8.0.0/>`_.
81
81
 
82
82
 
83
83
  Installation
@@ -106,6 +106,7 @@ PIP package Version required
106
106
  ``mypy-boto3-rds`` ``>=1.24.0``
107
107
  ``mypy-boto3-redshift-data`` ``>=1.24.0``
108
108
  ``mypy-boto3-appflow`` ``>=1.24.0``
109
+ ``aiobotocore[boto3]`` ``>=2.2.0``
109
110
  ======================================= ==================
110
111
 
111
112
  Cross provider package dependencies
@@ -162,6 +163,81 @@ Dependent package
162
163
  Changelog
163
164
  ---------
164
165
 
166
+ 8.0.0
167
+ ......
168
+
169
+ Breaking changes
170
+ ~~~~~~~~~~~~~~~~
171
+
172
+ .. warning::
173
+ In this version of the provider, deprecated GCS hook's parameter ``delegate_to`` is removed from the following operators: ``GCSToS3Operator``, ``GlacierToGCSOperator`` and ``GoogleApiToS3Operator``.
174
+ Impersonation can be achieved instead by utilizing the ``impersonation_chain`` param.
175
+
176
+ Removed deprecated parameter ``google_cloud_storage_conn_id`` from ``GCSToS3Operator``, ``gcp_conn_id`` should be used instead.
177
+
178
+ Removed deprecated parameter ``max_tries`` from the Athena & EMR hook & operators in favor of ``max_polling_attempts``.
179
+
180
+ Removed deprecated method ``waiter`` from emr hook in favor of the more generic ``airflow.providers.amazon.aws.utils.waiter.waiter``
181
+
182
+ Removed deprecated unused parameter ``cluster_identifier`` from Redshift Cluster's hook method ``get_cluster_snapshot_status``
183
+
184
+ Removed deprecated method ``find_processing_job_by_name`` from Sagemaker hook, use ``count_processing_jobs_by_name`` instead.
185
+
186
+ Removed deprecated module ``airflow.providers.amazon.aws.operators.aws_lambda`` in favor of ``airflow.providers.amazon.aws.operators.lambda_function``
187
+
188
+ Removed EcsOperator in favor of EcsRunTaskOperator.
189
+ EcsTaskLogFetcher and EcsProtocol should be imported from the hook.
190
+
191
+ Removed AwsLambdaInvokeFunctionOperator in favor of LambdaInvokeFunctionOperator.
192
+
193
+ Removed deprecated param ``await_result`` from RedshiftDataOperator in favor of ``wait_for_completion``.
194
+ Some methods from this operator should be imported from the hook instead.
195
+
196
+ Removed deprecated ``RedshiftSQLOperator`` in favor of the generic ``SQLExecuteQueryOperator``.
197
+ The parameter that was passed as ``redshift_conn_id`` needs to be changed to ``conn_id``, and the behavior should stay the same.
198
+
199
+ Removed deprecated method ``get_conn_uri`` from secrets manager in favor of ``get_conn_value``
200
+ Also removed deprecated method ``get_conn_uri`` from systems manager. ``deserialize_connection(...).get_uri()`` should be used instead.
201
+
202
+ Removed deprecated and unused param ``s3_conn_id`` from ``ImapAttachmentToS3Operator``, ``MongoToS3Operator`` and ``S3ToSFTPOperator``.
203
+
204
+ * ``remove delegate_to from GCP operators and hooks (#30748)``
205
+ * ``Remove deprecated code from Amazon provider (#30755)``
206
+
207
+ Features
208
+ ~~~~~~~~
209
+
210
+ * ``add a stop operator to emr serverless (#30720)``
211
+ * ``SqlToS3Operator - Add feature to partition SQL table (#30460)``
212
+ * ``New AWS sensor — DynamoDBValueSensor (#28338)``
213
+ * ``Add a "force" option to emr serverless stop/delete operator (#30757)``
214
+ * ``Add support for deferrable operators in AMPP (#30032)``
215
+
216
+ Bug Fixes
217
+ ~~~~~~~~~
218
+
219
+ * ``Fixed logging issue (#30703)``
220
+ * ``DynamoDBHook - waiter_path() to consider 'resource_type' or 'client_type' (#30595)``
221
+ * ``Add ability to override waiter delay in EcsRunTaskOperator (#30586)``
222
+ * ``Add support in AWS Batch Operator for multinode jobs (#29522)``
223
+ * ``AWS logs. Exit fast when 3 consecutive responses are returned from AWS Cloudwatch logs (#30756)``
224
+
225
+ Misc
226
+ ~~~~
227
+
228
+ * ``Remove @poke_mode_only from EmrStepSensor (#30774)``
229
+ * ``Organize Amazon providers docs index (#30541)``
230
+ * ``Remove duplicate param docstring in EksPodOperator (#30634)``
231
+ * ``Update AWS EMR Cluster Link to use the new dashboard (#30844)``
232
+
233
+ .. Below changes are excluded from the changelog. Move them to
234
+ appropriate section above if needed. Do not delete the lines(!):
235
+ * ``Decouple "job runner" from BaseJob ORM model (#30255)``
236
+ * ``Upgrade ruff to 0.0.262 (#30809)``
237
+ * ``fixes to system tests following obsolete cleanup (#30804)``
238
+ * ``restore fallback to empty connection behavior (#30806)``
239
+ * ``Prepare docs for adhoc release of providers (#30787)``
240
+
165
241
  7.4.1
166
242
  .....
167
243
 
@@ -19,7 +19,7 @@
19
19
 
20
20
  Package ``apache-airflow-providers-amazon``
21
21
 
22
- Release: ``7.4.1rc1``
22
+ Release: ``8.0.0rc2``
23
23
 
24
24
 
25
25
  Amazon integration (including `Amazon Web Services (AWS) <https://aws.amazon.com/>`__).
@@ -32,7 +32,7 @@ This is a provider package for ``amazon`` provider. All classes for this provide
32
32
  are in ``airflow.providers.amazon`` python package.
33
33
 
34
34
  You can find package information and changelog for the provider
35
- in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-amazon/7.4.1/>`_.
35
+ in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-amazon/8.0.0/>`_.
36
36
 
37
37
 
38
38
  Installation
@@ -61,6 +61,7 @@ PIP package Version required
61
61
  ``mypy-boto3-rds`` ``>=1.24.0``
62
62
  ``mypy-boto3-redshift-data`` ``>=1.24.0``
63
63
  ``mypy-boto3-appflow`` ``>=1.24.0``
64
+ ``aiobotocore[boto3]`` ``>=2.2.0``
64
65
  ======================================= ==================
65
66
 
66
67
  Cross provider package dependencies
@@ -117,6 +118,81 @@ Dependent package
117
118
  Changelog
118
119
  ---------
119
120
 
121
+ 8.0.0
122
+ ......
123
+
124
+ Breaking changes
125
+ ~~~~~~~~~~~~~~~~
126
+
127
+ .. warning::
128
+ In this version of the provider, deprecated GCS hook's parameter ``delegate_to`` is removed from the following operators: ``GCSToS3Operator``, ``GlacierToGCSOperator`` and ``GoogleApiToS3Operator``.
129
+ Impersonation can be achieved instead by utilizing the ``impersonation_chain`` param.
130
+
131
+ Removed deprecated parameter ``google_cloud_storage_conn_id`` from ``GCSToS3Operator``, ``gcp_conn_id`` should be used instead.
132
+
133
+ Removed deprecated parameter ``max_tries`` from the Athena & EMR hook & operators in favor of ``max_polling_attempts``.
134
+
135
+ Removed deprecated method ``waiter`` from emr hook in favor of the more generic ``airflow.providers.amazon.aws.utils.waiter.waiter``
136
+
137
+ Removed deprecated unused parameter ``cluster_identifier`` from Redshift Cluster's hook method ``get_cluster_snapshot_status``
138
+
139
+ Removed deprecated method ``find_processing_job_by_name`` from Sagemaker hook, use ``count_processing_jobs_by_name`` instead.
140
+
141
+ Removed deprecated module ``airflow.providers.amazon.aws.operators.aws_lambda`` in favor of ``airflow.providers.amazon.aws.operators.lambda_function``
142
+
143
+ Removed EcsOperator in favor of EcsRunTaskOperator.
144
+ EcsTaskLogFetcher and EcsProtocol should be imported from the hook.
145
+
146
+ Removed AwsLambdaInvokeFunctionOperator in favor of LambdaInvokeFunctionOperator.
147
+
148
+ Removed deprecated param ``await_result`` from RedshiftDataOperator in favor of ``wait_for_completion``.
149
+ Some methods from this operator should be imported from the hook instead.
150
+
151
+ Removed deprecated ``RedshiftSQLOperator`` in favor of the generic ``SQLExecuteQueryOperator``.
152
+ The parameter that was passed as ``redshift_conn_id`` needs to be changed to ``conn_id``, and the behavior should stay the same.
153
+
154
+ Removed deprecated method ``get_conn_uri`` from secrets manager in favor of ``get_conn_value``
155
+ Also removed deprecated method ``get_conn_uri`` from systems manager. ``deserialize_connection(...).get_uri()`` should be used instead.
156
+
157
+ Removed deprecated and unused param ``s3_conn_id`` from ``ImapAttachmentToS3Operator``, ``MongoToS3Operator`` and ``S3ToSFTPOperator``.
158
+
159
+ * ``remove delegate_to from GCP operators and hooks (#30748)``
160
+ * ``Remove deprecated code from Amazon provider (#30755)``
161
+
162
+ Features
163
+ ~~~~~~~~
164
+
165
+ * ``add a stop operator to emr serverless (#30720)``
166
+ * ``SqlToS3Operator - Add feature to partition SQL table (#30460)``
167
+ * ``New AWS sensor — DynamoDBValueSensor (#28338)``
168
+ * ``Add a "force" option to emr serverless stop/delete operator (#30757)``
169
+ * ``Add support for deferrable operators in AMPP (#30032)``
170
+
171
+ Bug Fixes
172
+ ~~~~~~~~~
173
+
174
+ * ``Fixed logging issue (#30703)``
175
+ * ``DynamoDBHook - waiter_path() to consider 'resource_type' or 'client_type' (#30595)``
176
+ * ``Add ability to override waiter delay in EcsRunTaskOperator (#30586)``
177
+ * ``Add support in AWS Batch Operator for multinode jobs (#29522)``
178
+ * ``AWS logs. Exit fast when 3 consecutive responses are returned from AWS Cloudwatch logs (#30756)``
179
+
180
+ Misc
181
+ ~~~~
182
+
183
+ * ``Remove @poke_mode_only from EmrStepSensor (#30774)``
184
+ * ``Organize Amazon providers docs index (#30541)``
185
+ * ``Remove duplicate param docstring in EksPodOperator (#30634)``
186
+ * ``Update AWS EMR Cluster Link to use the new dashboard (#30844)``
187
+
188
+ .. Below changes are excluded from the changelog. Move them to
189
+ appropriate section above if needed. Do not delete the lines(!):
190
+ * ``Decouple "job runner" from BaseJob ORM model (#30255)``
191
+ * ``Upgrade ruff to 0.0.262 (#30809)``
192
+ * ``fixes to system tests following obsolete cleanup (#30804)``
193
+ * ``restore fallback to empty connection behavior (#30806)``
194
+ * ``Prepare docs for adhoc release of providers (#30787)``
195
+
120
196
  7.4.1
121
197
  .....
122
198
 
@@ -24,7 +24,6 @@ This module contains AWS Athena hook.
24
24
  """
25
25
  from __future__ import annotations
26
26
 
27
- import warnings
28
27
  from time import sleep
29
28
  from typing import Any
30
29
 
@@ -224,7 +223,6 @@ class AthenaHook(AwsBaseHook):
224
223
  def poll_query_status(
225
224
  self,
226
225
  query_execution_id: str,
227
- max_tries: int | None = None,
228
226
  max_polling_attempts: int | None = None,
229
227
  ) -> str | None:
230
228
  """
@@ -232,21 +230,8 @@ class AthenaHook(AwsBaseHook):
232
230
  Returns one of the final states
233
231
 
234
232
  :param query_execution_id: Id of submitted athena query
235
- :param max_tries: Deprecated - Use max_polling_attempts instead
236
233
  :param max_polling_attempts: Number of times to poll for query state before function exits
237
234
  """
238
- if max_tries:
239
- warnings.warn(
240
- f"Passing 'max_tries' to {self.__class__.__name__}.poll_query_status is deprecated "
241
- f"and will be removed in a future release. Please use 'max_polling_attempts' instead.",
242
- DeprecationWarning,
243
- stacklevel=2,
244
- )
245
- if max_polling_attempts and max_polling_attempts != max_tries:
246
- raise Exception("max_polling_attempts must be the same value as max_tries")
247
- else:
248
- max_polling_attempts = max_tries
249
-
250
235
  try_number = 1
251
236
  final_query_state = None # Query state when query reaches final state or max_polling_attempts reached
252
237
  while True:
@@ -30,7 +30,6 @@ import json
30
30
  import logging
31
31
  import os
32
32
  import uuid
33
- import warnings
34
33
  from copy import deepcopy
35
34
  from functools import wraps
36
35
  from os import PathLike
@@ -58,7 +57,6 @@ from airflow.exceptions import (
58
57
  )
59
58
  from airflow.hooks.base import BaseHook
60
59
  from airflow.providers.amazon.aws.utils.connection_wrapper import AwsConnectionWrapper
61
- from airflow.providers.amazon.aws.waiters.base_waiter import BaseBotoWaiter
62
60
  from airflow.providers_manager import ProvidersManager
63
61
  from airflow.utils.helpers import exactly_one
64
62
  from airflow.utils.log.logging_mixin import LoggingMixin
@@ -72,12 +70,15 @@ if TYPE_CHECKING:
72
70
 
73
71
  class BaseSessionFactory(LoggingMixin):
74
72
  """
75
- Base AWS Session Factory class to handle boto3 session creation.
73
+ Base AWS Session Factory class to handle synchronous and async boto session creation.
76
74
  It can handle most of the AWS supported authentication methods.
77
75
 
78
76
  User can also derive from this class to have full control of boto3 session
79
77
  creation or to support custom federation.
80
78
 
79
+ Note: Not all features implemented for synchronous sessions are available for async
80
+ sessions.
81
+
81
82
  .. seealso::
82
83
  - :ref:`howto/connection:aws:session-factory`
83
84
  """
@@ -127,17 +128,50 @@ class BaseSessionFactory(LoggingMixin):
127
128
  """Assume Role ARN from AWS Connection"""
128
129
  return self.conn.role_arn
129
130
 
130
- def create_session(self) -> boto3.session.Session:
131
- """Create boto3 Session from connection config."""
131
+ def _apply_session_kwargs(self, session):
132
+ if self.conn.session_kwargs.get("profile_name", None) is not None:
133
+ session.set_config_variable("profile", self.conn.session_kwargs["profile_name"])
134
+
135
+ if (
136
+ self.conn.session_kwargs.get("aws_access_key_id", None)
137
+ or self.conn.session_kwargs.get("aws_secret_access_key", None)
138
+ or self.conn.session_kwargs.get("aws_session_token", None)
139
+ ):
140
+ session.set_credentials(
141
+ self.conn.session_kwargs["aws_access_key_id"],
142
+ self.conn.session_kwargs["aws_secret_access_key"],
143
+ self.conn.session_kwargs["aws_session_token"],
144
+ )
145
+
146
+ if self.conn.session_kwargs.get("region_name", None) is not None:
147
+ session.set_config_variable("region", self.conn.session_kwargs["region_name"])
148
+
149
+ def get_async_session(self):
150
+ from aiobotocore.session import get_session as async_get_session
151
+
152
+ return async_get_session()
153
+
154
+ def create_session(self, deferrable: bool = False) -> boto3.session.Session:
155
+ """Create boto3 or aiobotocore Session from connection config."""
132
156
  if not self.conn:
133
157
  self.log.info(
134
158
  "No connection ID provided. Fallback on boto3 credential strategy (region_name=%r). "
135
159
  "See: https://boto3.amazonaws.com/v1/documentation/api/latest/guide/configuration.html",
136
160
  self.region_name,
137
161
  )
138
- return boto3.session.Session(region_name=self.region_name)
162
+ if deferrable:
163
+ session = self.get_async_session()
164
+ self._apply_session_kwargs(session)
165
+ return session
166
+ else:
167
+ return boto3.session.Session(region_name=self.region_name)
139
168
  elif not self.role_arn:
140
- return self.basic_session
169
+ if deferrable:
170
+ session = self.get_async_session()
171
+ self._apply_session_kwargs(session)
172
+ return session
173
+ else:
174
+ return self.basic_session
141
175
 
142
176
  # Values stored in ``AwsConnectionWrapper.session_kwargs`` are intended to be used only
143
177
  # to create the initial boto3 session.
@@ -150,12 +184,18 @@ class BaseSessionFactory(LoggingMixin):
150
184
  assume_session_kwargs = {}
151
185
  if self.conn.region_name:
152
186
  assume_session_kwargs["region_name"] = self.conn.region_name
153
- return self._create_session_with_assume_role(session_kwargs=assume_session_kwargs)
187
+ return self._create_session_with_assume_role(
188
+ session_kwargs=assume_session_kwargs, deferrable=deferrable
189
+ )
154
190
 
155
191
  def _create_basic_session(self, session_kwargs: dict[str, Any]) -> boto3.session.Session:
156
192
  return boto3.session.Session(**session_kwargs)
157
193
 
158
- def _create_session_with_assume_role(self, session_kwargs: dict[str, Any]) -> boto3.session.Session:
194
+ def _create_session_with_assume_role(
195
+ self, session_kwargs: dict[str, Any], deferrable: bool = False
196
+ ) -> boto3.session.Session:
197
+ from aiobotocore.session import get_session as async_get_session
198
+
159
199
  if self.conn.assume_role_method == "assume_role_with_web_identity":
160
200
  # Deferred credentials have no initial credentials
161
201
  credential_fetcher = self._get_web_identity_credential_fetcher()
@@ -172,10 +212,10 @@ class BaseSessionFactory(LoggingMixin):
172
212
  method="sts-assume-role",
173
213
  )
174
214
 
175
- session = botocore.session.get_session()
215
+ session = async_get_session() if deferrable else botocore.session.get_session()
216
+
176
217
  session._credentials = credentials
177
- region_name = self.basic_session.region_name
178
- session.set_config_variable("region", region_name)
218
+ session.set_config_variable("region", self.basic_session.region_name)
179
219
 
180
220
  return boto3.session.Session(botocore_session=session, **session_kwargs)
181
221
 
@@ -362,34 +402,6 @@ class BaseSessionFactory(LoggingMixin):
362
402
  def _strip_invalid_session_name_characters(self, role_session_name: str) -> str:
363
403
  return slugify(role_session_name, regex_pattern=r"[^\w+=,.@-]+")
364
404
 
365
- def _get_region_name(self) -> str | None:
366
- warnings.warn(
367
- "`BaseSessionFactory._get_region_name` method deprecated and will be removed "
368
- "in a future releases. Please use `BaseSessionFactory.region_name` property instead.",
369
- DeprecationWarning,
370
- stacklevel=2,
371
- )
372
- return self.region_name
373
-
374
- def _read_role_arn_from_extra_config(self) -> str | None:
375
- warnings.warn(
376
- "`BaseSessionFactory._read_role_arn_from_extra_config` method deprecated and will be removed "
377
- "in a future releases. Please use `BaseSessionFactory.role_arn` property instead.",
378
- DeprecationWarning,
379
- stacklevel=2,
380
- )
381
- return self.role_arn
382
-
383
- def _read_credentials_from_connection(self) -> tuple[str | None, str | None]:
384
- warnings.warn(
385
- "`BaseSessionFactory._read_credentials_from_connection` method deprecated and will be removed "
386
- "in a future releases. Please use `BaseSessionFactory.conn.aws_access_key_id` and "
387
- "`BaseSessionFactory.aws_secret_access_key` properties instead.",
388
- DeprecationWarning,
389
- stacklevel=2,
390
- )
391
- return self.conn.aws_access_key_id, self.conn.aws_secret_access_key
392
-
393
405
 
394
406
  class AwsGenericHook(BaseHook, Generic[BaseAwsConnection]):
395
407
  """
@@ -531,13 +543,8 @@ class AwsGenericHook(BaseHook, Generic[BaseAwsConnection]):
531
543
  try:
532
544
  connection = self.get_connection(self.aws_conn_id)
533
545
  except AirflowNotFoundException:
534
- warnings.warn(
535
- f"Unable to find AWS Connection ID '{self.aws_conn_id}', switching to empty. "
536
- "This behaviour is deprecated and will be removed in a future releases. "
537
- "Please provide existed AWS connection ID or if required boto3 credential strategy "
538
- "explicit set AWS Connection ID to None.",
539
- DeprecationWarning,
540
- stacklevel=2,
546
+ self.log.warning(
547
+ "Unable to find AWS Connection ID '%s', switching to empty.", self.aws_conn_id
541
548
  )
542
549
 
543
550
  return AwsConnectionWrapper(
@@ -564,11 +571,11 @@ class AwsGenericHook(BaseHook, Generic[BaseAwsConnection]):
564
571
  """Verify or not SSL certificates boto3 client/resource read-only property."""
565
572
  return self.conn_config.verify
566
573
 
567
- def get_session(self, region_name: str | None = None) -> boto3.session.Session:
574
+ def get_session(self, region_name: str | None = None, deferrable: bool = False) -> boto3.session.Session:
568
575
  """Get the underlying boto3.session.Session(region_name=region_name)."""
569
576
  return SessionFactory(
570
577
  conn=self.conn_config, region_name=region_name, config=self.config
571
- ).create_session()
578
+ ).create_session(deferrable=deferrable)
572
579
 
573
580
  def _get_config(self, config: Config | None = None) -> Config:
574
581
  """
@@ -591,10 +598,19 @@ class AwsGenericHook(BaseHook, Generic[BaseAwsConnection]):
591
598
  self,
592
599
  region_name: str | None = None,
593
600
  config: Config | None = None,
601
+ deferrable: bool = False,
594
602
  ) -> boto3.client:
595
603
  """Get the underlying boto3 client using boto3 session"""
596
604
  client_type = self.client_type
597
- session = self.get_session(region_name=region_name)
605
+ session = self.get_session(region_name=region_name, deferrable=deferrable)
606
+ if not isinstance(session, boto3.session.Session):
607
+ return session.create_client(
608
+ client_type,
609
+ endpoint_url=self.conn_config.endpoint_url,
610
+ config=self._get_config(config),
611
+ verify=self.verify,
612
+ )
613
+
598
614
  return session.client(
599
615
  client_type,
600
616
  endpoint_url=self.conn_config.endpoint_url,
@@ -634,6 +650,14 @@ class AwsGenericHook(BaseHook, Generic[BaseAwsConnection]):
634
650
  else:
635
651
  return self.get_resource_type(region_name=self.region_name)
636
652
 
653
+ @property
654
+ def async_conn(self):
655
+ """Get an aiobotocore client to use for async operations."""
656
+ if not self.client_type:
657
+ raise ValueError("client_type must be specified.")
658
+
659
+ return self.get_client_type(region_name=self.region_name, deferrable=True)
660
+
637
661
  @cached_property
638
662
  def conn_client_meta(self) -> ClientMeta:
639
663
  """Get botocore client metadata from Hook connection (cached)."""
@@ -730,17 +754,6 @@ class AwsGenericHook(BaseHook, Generic[BaseAwsConnection]):
730
754
 
731
755
  return retry_decorator
732
756
 
733
- def _get_credentials(self, region_name: str | None) -> tuple[boto3.session.Session, str | None]:
734
- warnings.warn(
735
- "`AwsGenericHook._get_credentials` method deprecated and will be removed in a future releases. "
736
- "Please use `AwsGenericHook.get_session` method and "
737
- "`AwsGenericHook.conn_config.endpoint_url` property instead.",
738
- DeprecationWarning,
739
- stacklevel=2,
740
- )
741
-
742
- return self.get_session(region_name=region_name), self.conn_config.endpoint_url
743
-
744
757
  @staticmethod
745
758
  def get_ui_field_behaviour() -> dict[str, Any]:
746
759
  """Returns custom UI field behaviour for AWS Connection."""
@@ -794,21 +807,39 @@ class AwsGenericHook(BaseHook, Generic[BaseAwsConnection]):
794
807
 
795
808
  @cached_property
796
809
  def waiter_path(self) -> PathLike[str] | None:
797
- path = Path(__file__).parents[1].joinpath(f"waiters/{self.client_type}.json").resolve()
810
+ filename = self.client_type if self.client_type else self.resource_type
811
+ path = Path(__file__).parents[1].joinpath(f"waiters/{filename}.json").resolve()
798
812
  return path if path.exists() else None
799
813
 
800
- def get_waiter(self, waiter_name: str, parameters: dict[str, str] | None = None) -> Waiter:
814
+ def get_waiter(
815
+ self,
816
+ waiter_name: str,
817
+ parameters: dict[str, str] | None = None,
818
+ deferrable: bool = False,
819
+ client=None,
820
+ ) -> Waiter:
801
821
  """
802
822
  First checks if there is a custom waiter with the provided waiter_name and
803
823
  uses that if it exists, otherwise it will check the service client for a
804
824
  waiter that matches the name and pass that through.
805
825
 
826
+ If `deferrable` is True, the waiter will be an AIOWaiter, generated from the
827
+ client that is passed as a parameter. If `deferrable` is True, `client` must be
828
+ provided.
829
+
806
830
  :param waiter_name: The name of the waiter. The name should exactly match the
807
831
  name of the key in the waiter model file (typically this is CamelCase).
808
832
  :param parameters: will scan the waiter config for the keys of that dict, and replace them with the
809
833
  corresponding value. If a custom waiter has such keys to be expanded, they need to be provided
810
834
  here.
835
+ :param deferrable: If True, the waiter is going to be an async custom waiter.
836
+
811
837
  """
838
+ from airflow.providers.amazon.aws.waiters.base_waiter import BaseBotoWaiter
839
+
840
+ if deferrable and not client:
841
+ raise ValueError("client must be provided for a deferrable waiter.")
842
+ client = client or self.conn
812
843
  if self.waiter_path and (waiter_name in self._list_custom_waiters()):
813
844
  # Technically if waiter_name is in custom_waiters then self.waiter_path must
814
845
  # exist but MyPy doesn't like the fact that self.waiter_path could be None.
@@ -816,7 +847,9 @@ class AwsGenericHook(BaseHook, Generic[BaseAwsConnection]):
816
847
  config = json.loads(config_file.read())
817
848
 
818
849
  config = self._apply_parameters_value(config, waiter_name, parameters)
819
- return BaseBotoWaiter(client=self.conn, model_config=config).waiter(waiter_name)
850
+ return BaseBotoWaiter(client=client, model_config=config, deferrable=deferrable).waiter(
851
+ waiter_name
852
+ )
820
853
  # If there is no custom waiter found for the provided name,
821
854
  # then try checking the service's official waiters.
822
855
  return self.conn.get_waiter(waiter_name)
@@ -985,7 +1018,7 @@ class BaseAsyncSessionFactory(BaseSessionFactory):
985
1018
  aio_session.set_config_variable("region", region_name)
986
1019
  return aio_session
987
1020
 
988
- def create_session(self) -> AioSession:
1021
+ def create_session(self, deferrable: bool = False) -> AioSession:
989
1022
  """Create aiobotocore Session from connection and config."""
990
1023
  if not self._conn:
991
1024
  self.log.info("No connection ID provided. Fallback on boto3 credential strategy")