apache-airflow-providers-amazon 8.21.0rc1__tar.gz → 8.22.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 (240) hide show
  1. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/PKG-INFO +11 -11
  2. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/README.rst +4 -4
  3. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/__init__.py +3 -6
  4. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/executors/ecs/ecs_executor.py +7 -2
  5. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/hooks/bedrock.py +20 -0
  6. apache_airflow_providers_amazon-8.22.0/airflow/providers/amazon/aws/hooks/opensearch_serverless.py +39 -0
  7. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/hooks/s3.py +2 -2
  8. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/operators/bedrock.py +314 -1
  9. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/operators/s3.py +27 -7
  10. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/sensors/bedrock.py +166 -7
  11. apache_airflow_providers_amazon-8.22.0/airflow/providers/amazon/aws/sensors/opensearch_serverless.py +129 -0
  12. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/triggers/bedrock.py +88 -1
  13. apache_airflow_providers_amazon-8.22.0/airflow/providers/amazon/aws/triggers/opensearch_serverless.py +68 -0
  14. apache_airflow_providers_amazon-8.22.0/airflow/providers/amazon/aws/waiters/bedrock-agent.json +73 -0
  15. apache_airflow_providers_amazon-8.22.0/airflow/providers/amazon/aws/waiters/opensearchserverless.json +36 -0
  16. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/get_provider_info.py +22 -2
  17. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/pyproject.toml +7 -7
  18. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/LICENSE +0 -0
  19. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/__init__.py +0 -0
  20. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/auth_manager/__init__.py +0 -0
  21. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/auth_manager/avp/__init__.py +0 -0
  22. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/auth_manager/avp/entities.py +0 -0
  23. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/auth_manager/avp/facade.py +0 -0
  24. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/auth_manager/avp/schema.json +0 -0
  25. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/auth_manager/aws_auth_manager.py +0 -0
  26. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/auth_manager/cli/__init__.py +0 -0
  27. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/auth_manager/cli/avp_commands.py +0 -0
  28. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/auth_manager/cli/definition.py +0 -0
  29. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/auth_manager/cli/idc_commands.py +0 -0
  30. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/auth_manager/constants.py +0 -0
  31. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/auth_manager/security_manager/__init__.py +0 -0
  32. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/auth_manager/security_manager/aws_security_manager_override.py +0 -0
  33. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/auth_manager/user.py +0 -0
  34. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/auth_manager/views/__init__.py +0 -0
  35. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/auth_manager/views/auth.py +0 -0
  36. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/exceptions.py +0 -0
  37. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/executors/Dockerfile +0 -0
  38. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/executors/__init__.py +0 -0
  39. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/executors/batch/__init__.py +0 -0
  40. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/executors/batch/batch_executor.py +0 -0
  41. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/executors/batch/batch_executor_config.py +0 -0
  42. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/executors/batch/boto_schema.py +0 -0
  43. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/executors/batch/utils.py +0 -0
  44. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/executors/ecs/__init__.py +0 -0
  45. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/executors/ecs/boto_schema.py +0 -0
  46. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/executors/ecs/ecs_executor_config.py +0 -0
  47. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/executors/ecs/utils.py +0 -0
  48. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/executors/utils/__init__.py +0 -0
  49. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/executors/utils/base_config_keys.py +0 -0
  50. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/executors/utils/exponential_backoff_retry.py +0 -0
  51. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/fs/__init__.py +0 -0
  52. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/fs/s3.py +0 -0
  53. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/hooks/__init__.py +0 -0
  54. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/hooks/appflow.py +0 -0
  55. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/hooks/athena.py +0 -0
  56. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/hooks/athena_sql.py +0 -0
  57. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/hooks/base_aws.py +0 -0
  58. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/hooks/batch_client.py +0 -0
  59. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/hooks/batch_waiters.json +0 -0
  60. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/hooks/batch_waiters.py +0 -0
  61. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/hooks/chime.py +0 -0
  62. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/hooks/cloud_formation.py +0 -0
  63. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/hooks/datasync.py +0 -0
  64. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/hooks/dms.py +0 -0
  65. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/hooks/dynamodb.py +0 -0
  66. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/hooks/ec2.py +0 -0
  67. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/hooks/ecr.py +0 -0
  68. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/hooks/ecs.py +0 -0
  69. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/hooks/eks.py +0 -0
  70. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/hooks/elasticache_replication_group.py +0 -0
  71. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/hooks/emr.py +0 -0
  72. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/hooks/eventbridge.py +0 -0
  73. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/hooks/glacier.py +0 -0
  74. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/hooks/glue.py +0 -0
  75. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/hooks/glue_catalog.py +0 -0
  76. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/hooks/glue_crawler.py +0 -0
  77. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/hooks/glue_databrew.py +0 -0
  78. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/hooks/kinesis.py +0 -0
  79. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/hooks/lambda_function.py +0 -0
  80. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/hooks/logs.py +0 -0
  81. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/hooks/neptune.py +0 -0
  82. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/hooks/quicksight.py +0 -0
  83. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/hooks/rds.py +0 -0
  84. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/hooks/redshift_cluster.py +0 -0
  85. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/hooks/redshift_data.py +0 -0
  86. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/hooks/redshift_sql.py +0 -0
  87. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/hooks/sagemaker.py +0 -0
  88. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/hooks/secrets_manager.py +0 -0
  89. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/hooks/ses.py +0 -0
  90. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/hooks/sns.py +0 -0
  91. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/hooks/sqs.py +0 -0
  92. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/hooks/ssm.py +0 -0
  93. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/hooks/step_function.py +0 -0
  94. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/hooks/sts.py +0 -0
  95. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/hooks/verified_permissions.py +0 -0
  96. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/links/__init__.py +0 -0
  97. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/links/athena.py +0 -0
  98. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/links/base_aws.py +0 -0
  99. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/links/batch.py +0 -0
  100. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/links/emr.py +0 -0
  101. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/links/glue.py +0 -0
  102. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/links/logs.py +0 -0
  103. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/links/step_function.py +0 -0
  104. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/log/__init__.py +0 -0
  105. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/log/cloudwatch_task_handler.py +0 -0
  106. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/log/s3_task_handler.py +0 -0
  107. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/notifications/__init__.py +0 -0
  108. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/notifications/chime.py +0 -0
  109. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/notifications/sns.py +0 -0
  110. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/notifications/sqs.py +0 -0
  111. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/operators/__init__.py +0 -0
  112. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/operators/appflow.py +0 -0
  113. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/operators/athena.py +0 -0
  114. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/operators/base_aws.py +0 -0
  115. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/operators/batch.py +0 -0
  116. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/operators/cloud_formation.py +0 -0
  117. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/operators/datasync.py +0 -0
  118. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/operators/dms.py +0 -0
  119. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/operators/ec2.py +0 -0
  120. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/operators/ecs.py +0 -0
  121. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/operators/eks.py +0 -0
  122. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/operators/emr.py +0 -0
  123. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/operators/eventbridge.py +0 -0
  124. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/operators/glacier.py +0 -0
  125. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/operators/glue.py +0 -0
  126. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/operators/glue_crawler.py +0 -0
  127. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/operators/glue_databrew.py +0 -0
  128. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/operators/lambda_function.py +0 -0
  129. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/operators/neptune.py +0 -0
  130. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/operators/quicksight.py +0 -0
  131. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/operators/rds.py +0 -0
  132. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/operators/redshift_cluster.py +0 -0
  133. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/operators/redshift_data.py +0 -0
  134. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/operators/sagemaker.py +0 -0
  135. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/operators/sns.py +0 -0
  136. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/operators/sqs.py +0 -0
  137. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/operators/step_function.py +0 -0
  138. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/secrets/__init__.py +0 -0
  139. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/secrets/secrets_manager.py +0 -0
  140. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/secrets/systems_manager.py +0 -0
  141. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/sensors/__init__.py +0 -0
  142. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/sensors/athena.py +0 -0
  143. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/sensors/base_aws.py +0 -0
  144. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/sensors/batch.py +0 -0
  145. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/sensors/cloud_formation.py +0 -0
  146. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/sensors/dms.py +0 -0
  147. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/sensors/dynamodb.py +0 -0
  148. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/sensors/ec2.py +0 -0
  149. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/sensors/ecs.py +0 -0
  150. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/sensors/eks.py +0 -0
  151. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/sensors/emr.py +0 -0
  152. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/sensors/glacier.py +0 -0
  153. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/sensors/glue.py +0 -0
  154. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/sensors/glue_catalog_partition.py +0 -0
  155. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/sensors/glue_crawler.py +0 -0
  156. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/sensors/lambda_function.py +0 -0
  157. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/sensors/quicksight.py +0 -0
  158. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/sensors/rds.py +0 -0
  159. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/sensors/redshift_cluster.py +0 -0
  160. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/sensors/s3.py +0 -0
  161. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/sensors/sagemaker.py +0 -0
  162. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/sensors/sqs.py +0 -0
  163. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/sensors/step_function.py +0 -0
  164. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/transfers/__init__.py +0 -0
  165. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/transfers/azure_blob_to_s3.py +0 -0
  166. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/transfers/base.py +0 -0
  167. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/transfers/dynamodb_to_s3.py +0 -0
  168. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/transfers/exasol_to_s3.py +0 -0
  169. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/transfers/ftp_to_s3.py +0 -0
  170. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/transfers/gcs_to_s3.py +0 -0
  171. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/transfers/glacier_to_gcs.py +0 -0
  172. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/transfers/google_api_to_s3.py +0 -0
  173. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/transfers/hive_to_dynamodb.py +0 -0
  174. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/transfers/http_to_s3.py +0 -0
  175. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/transfers/imap_attachment_to_s3.py +0 -0
  176. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/transfers/local_to_s3.py +0 -0
  177. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/transfers/mongo_to_s3.py +0 -0
  178. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/transfers/redshift_to_s3.py +0 -0
  179. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/transfers/s3_to_ftp.py +0 -0
  180. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/transfers/s3_to_redshift.py +0 -0
  181. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/transfers/s3_to_sftp.py +0 -0
  182. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/transfers/s3_to_sql.py +0 -0
  183. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/transfers/salesforce_to_s3.py +0 -0
  184. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/transfers/sftp_to_s3.py +0 -0
  185. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/transfers/sql_to_s3.py +0 -0
  186. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/triggers/README.md +0 -0
  187. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/triggers/__init__.py +0 -0
  188. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/triggers/athena.py +0 -0
  189. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/triggers/base.py +0 -0
  190. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/triggers/batch.py +0 -0
  191. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/triggers/ec2.py +0 -0
  192. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/triggers/ecs.py +0 -0
  193. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/triggers/eks.py +0 -0
  194. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/triggers/emr.py +0 -0
  195. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/triggers/glue.py +0 -0
  196. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/triggers/glue_crawler.py +0 -0
  197. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/triggers/glue_databrew.py +0 -0
  198. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/triggers/lambda_function.py +0 -0
  199. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/triggers/neptune.py +0 -0
  200. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/triggers/rds.py +0 -0
  201. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/triggers/redshift_cluster.py +0 -0
  202. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/triggers/redshift_data.py +0 -0
  203. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/triggers/s3.py +0 -0
  204. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/triggers/sagemaker.py +0 -0
  205. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/triggers/sqs.py +0 -0
  206. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/triggers/step_function.py +0 -0
  207. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/utils/__init__.py +0 -0
  208. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/utils/connection_wrapper.py +0 -0
  209. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/utils/eks_get_token.py +0 -0
  210. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/utils/emailer.py +0 -0
  211. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/utils/identifiers.py +0 -0
  212. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/utils/mixins.py +0 -0
  213. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/utils/rds.py +0 -0
  214. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/utils/redshift.py +0 -0
  215. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/utils/sagemaker.py +0 -0
  216. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/utils/sqs.py +0 -0
  217. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/utils/suppress.py +0 -0
  218. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/utils/tags.py +0 -0
  219. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/utils/task_log_fetcher.py +0 -0
  220. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/utils/waiter.py +0 -0
  221. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/utils/waiter_with_logging.py +0 -0
  222. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/waiters/README.md +0 -0
  223. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/waiters/__init__.py +0 -0
  224. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/waiters/appflow.json +0 -0
  225. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/waiters/athena.json +0 -0
  226. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/waiters/base_waiter.py +0 -0
  227. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/waiters/batch.json +0 -0
  228. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/waiters/bedrock.json +0 -0
  229. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/waiters/databrew.json +0 -0
  230. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/waiters/dynamodb.json +0 -0
  231. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/waiters/ecs.json +0 -0
  232. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/waiters/eks.json +0 -0
  233. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/waiters/emr-containers.json +0 -0
  234. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/waiters/emr-serverless.json +0 -0
  235. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/waiters/emr.json +0 -0
  236. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/waiters/glue.json +0 -0
  237. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/waiters/neptune.json +0 -0
  238. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/waiters/redshift.json +0 -0
  239. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/waiters/sagemaker.json +0 -0
  240. {apache_airflow_providers_amazon-8.21.0rc1 → apache_airflow_providers_amazon-8.22.0}/airflow/providers/amazon/aws/waiters/stepfunctions.json +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: apache-airflow-providers-amazon
3
- Version: 8.21.0rc1
3
+ Version: 8.22.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>
@@ -22,21 +22,21 @@ Classifier: Programming Language :: Python :: 3.11
22
22
  Classifier: Programming Language :: Python :: 3.12
23
23
  Classifier: Topic :: System :: Monitoring
24
24
  Requires-Dist: PyAthena>=3.0.10
25
- Requires-Dist: apache-airflow-providers-common-sql>=1.3.1rc0
25
+ Requires-Dist: apache-airflow-providers-common-sql>=1.3.1
26
26
  Requires-Dist: apache-airflow-providers-http
27
- Requires-Dist: apache-airflow>=2.7.0rc0
27
+ Requires-Dist: apache-airflow>=2.7.0
28
28
  Requires-Dist: asgiref
29
29
  Requires-Dist: boto3>=1.33.0
30
30
  Requires-Dist: botocore>=1.33.0
31
31
  Requires-Dist: inflection>=0.5.1
32
+ Requires-Dist: jmespath
32
33
  Requires-Dist: jsonpath_ng>=1.5.3
33
34
  Requires-Dist: redshift_connector>=2.0.918
34
35
  Requires-Dist: sqlalchemy_redshift>=0.8.6
35
36
  Requires-Dist: watchtower>=2.0.1,<4
36
- Requires-Dist: xmlsec<1.3.14
37
37
  Requires-Dist: aiobotocore[boto3]>=2.5.3 ; extra == "aiobotocore"
38
38
  Requires-Dist: apache-airflow-providers-apache-hive ; extra == "apache.hive"
39
- Requires-Dist: apache-airflow-providers-cncf-kubernetes>=7.2.0rc0 ; extra == "cncf.kubernetes"
39
+ Requires-Dist: apache-airflow-providers-cncf-kubernetes>=7.2.0 ; extra == "cncf.kubernetes"
40
40
  Requires-Dist: apache-airflow-providers-common-sql ; extra == "common.sql"
41
41
  Requires-Dist: apache-airflow-providers-exasol ; extra == "exasol"
42
42
  Requires-Dist: apache-airflow-providers-ftp ; extra == "ftp"
@@ -52,8 +52,8 @@ Requires-Dist: s3fs>=2023.10.0 ; extra == "s3fs"
52
52
  Requires-Dist: apache-airflow-providers-salesforce ; extra == "salesforce"
53
53
  Requires-Dist: apache-airflow-providers-ssh ; extra == "ssh"
54
54
  Project-URL: Bug Tracker, https://github.com/apache/airflow/issues
55
- Project-URL: Changelog, https://airflow.apache.org/docs/apache-airflow-providers-amazon/8.21.0/changelog.html
56
- Project-URL: Documentation, https://airflow.apache.org/docs/apache-airflow-providers-amazon/8.21.0
55
+ Project-URL: Changelog, https://airflow.apache.org/docs/apache-airflow-providers-amazon/8.22.0/changelog.html
56
+ Project-URL: Documentation, https://airflow.apache.org/docs/apache-airflow-providers-amazon/8.22.0
57
57
  Project-URL: Slack Chat, https://s.apache.org/airflow-slack
58
58
  Project-URL: Source Code, https://github.com/apache/airflow
59
59
  Project-URL: Twitter, https://twitter.com/ApacheAirflow
@@ -120,7 +120,7 @@ Provides-Extra: ssh
120
120
 
121
121
  Package ``apache-airflow-providers-amazon``
122
122
 
123
- Release: ``8.21.0.rc1``
123
+ Release: ``8.22.0``
124
124
 
125
125
 
126
126
  Amazon integration (including `Amazon Web Services (AWS) <https://aws.amazon.com/>`__).
@@ -133,7 +133,7 @@ This is a provider package for ``amazon`` provider. All classes for this provide
133
133
  are in ``airflow.providers.amazon`` python package.
134
134
 
135
135
  You can find package information and changelog for the provider
136
- in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-amazon/8.21.0/>`_.
136
+ in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-amazon/8.22.0/>`_.
137
137
 
138
138
  Installation
139
139
  ------------
@@ -162,7 +162,7 @@ PIP package Version required
162
162
  ``sqlalchemy_redshift`` ``>=0.8.6``
163
163
  ``asgiref``
164
164
  ``PyAthena`` ``>=3.0.10``
165
- ``xmlsec`` ``<1.3.14``
165
+ ``jmespath``
166
166
  ======================================= ==================
167
167
 
168
168
  Cross provider package dependencies
@@ -197,4 +197,4 @@ Dependent package
197
197
  ====================================================================================================================== ===================
198
198
 
199
199
  The changelog for the provider package can be found in the
200
- `changelog <https://airflow.apache.org/docs/apache-airflow-providers-amazon/8.21.0/changelog.html>`_.
200
+ `changelog <https://airflow.apache.org/docs/apache-airflow-providers-amazon/8.22.0/changelog.html>`_.
@@ -42,7 +42,7 @@
42
42
 
43
43
  Package ``apache-airflow-providers-amazon``
44
44
 
45
- Release: ``8.21.0.rc1``
45
+ Release: ``8.22.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.21.0/>`_.
58
+ in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-amazon/8.22.0/>`_.
59
59
 
60
60
  Installation
61
61
  ------------
@@ -84,7 +84,7 @@ PIP package Version required
84
84
  ``sqlalchemy_redshift`` ``>=0.8.6``
85
85
  ``asgiref``
86
86
  ``PyAthena`` ``>=3.0.10``
87
- ``xmlsec`` ``<1.3.14``
87
+ ``jmespath``
88
88
  ======================================= ==================
89
89
 
90
90
  Cross provider package dependencies
@@ -119,4 +119,4 @@ Dependent package
119
119
  ====================================================================================================================== ===================
120
120
 
121
121
  The changelog for the provider package can be found in the
122
- `changelog <https://airflow.apache.org/docs/apache-airflow-providers-amazon/8.21.0/changelog.html>`_.
122
+ `changelog <https://airflow.apache.org/docs/apache-airflow-providers-amazon/8.22.0/changelog.html>`_.
@@ -25,14 +25,11 @@ from __future__ import annotations
25
25
 
26
26
  import packaging.version
27
27
 
28
- __all__ = ["__version__"]
28
+ from airflow import __version__ as airflow_version
29
29
 
30
- __version__ = "8.21.0"
30
+ __all__ = ["__version__"]
31
31
 
32
- try:
33
- from airflow import __version__ as airflow_version
34
- except ImportError:
35
- from airflow.version import version as airflow_version
32
+ __version__ = "8.22.0"
36
33
 
37
34
  if packaging.version.parse(packaging.version.parse(airflow_version).base_version) < packaging.version.parse(
38
35
  "2.7.0"
@@ -400,7 +400,12 @@ class AwsEcsExecutor(BaseExecutor):
400
400
  else:
401
401
  task = run_task_response["tasks"][0]
402
402
  self.active_workers.add_task(task, task_key, queue, cmd, exec_config, attempt_number)
403
- self.queued(task_key, task.task_arn)
403
+ try:
404
+ self.running_state(task_key, task.task_arn)
405
+ except AttributeError:
406
+ # running_state is newly added, and only needed to support task adoption (an optional
407
+ # executor feature).
408
+ pass
404
409
  if failure_reasons:
405
410
  self.log.error(
406
411
  "Pending ECS tasks failed to launch for the following reasons: %s. Retrying later.",
@@ -522,7 +527,7 @@ class AwsEcsExecutor(BaseExecutor):
522
527
  ti.queue,
523
528
  ti.command_as_list(),
524
529
  ti.executor_config,
525
- ti.prev_attempted_tries,
530
+ ti.try_number,
526
531
  )
527
532
  adopted_tis.append(ti)
528
533
 
@@ -57,3 +57,23 @@ class BedrockRuntimeHook(AwsBaseHook):
57
57
  def __init__(self, *args, **kwargs) -> None:
58
58
  kwargs["client_type"] = self.client_type
59
59
  super().__init__(*args, **kwargs)
60
+
61
+
62
+ class BedrockAgentHook(AwsBaseHook):
63
+ """
64
+ Interact with the Amazon Agents for Bedrock API.
65
+
66
+ Provide thin wrapper around :external+boto3:py:class:`boto3.client("bedrock-agent") <AgentsforBedrock.Client>`.
67
+
68
+ Additional arguments (such as ``aws_conn_id``) may be specified and
69
+ are passed down to the underlying AwsBaseHook.
70
+
71
+ .. seealso::
72
+ - :class:`airflow.providers.amazon.aws.hooks.base_aws.AwsBaseHook`
73
+ """
74
+
75
+ client_type = "bedrock-agent"
76
+
77
+ def __init__(self, *args, **kwargs) -> None:
78
+ kwargs["client_type"] = self.client_type
79
+ super().__init__(*args, **kwargs)
@@ -0,0 +1,39 @@
1
+ # Licensed to the Apache Software Foundation (ASF) under one
2
+ # or more contributor license agreements. See the NOTICE file
3
+ # distributed with this work for additional information
4
+ # regarding copyright ownership. The ASF licenses this file
5
+ # to you under the Apache License, Version 2.0 (the
6
+ # "License"); you may not use this file except in compliance
7
+ # with the License. You may obtain a copy of the License at
8
+ #
9
+ # http://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing,
12
+ # software distributed under the License is distributed on an
13
+ # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14
+ # KIND, either express or implied. See the License for the
15
+ # specific language governing permissions and limitations
16
+ # under the License.
17
+ from __future__ import annotations
18
+
19
+ from airflow.providers.amazon.aws.hooks.base_aws import AwsBaseHook
20
+
21
+
22
+ class OpenSearchServerlessHook(AwsBaseHook):
23
+ """
24
+ Interact with the Amazon OpenSearch Serverless API.
25
+
26
+ Provide thin wrapper around :external+boto3:py:class:`boto3.client("opensearchserverless") <OpenSearchServiceServerless.Client>`.
27
+
28
+ Additional arguments (such as ``aws_conn_id``) may be specified and
29
+ are passed down to the underlying AwsBaseHook.
30
+
31
+ .. seealso::
32
+ - :class:`airflow.providers.amazon.aws.hooks.base_aws.AwsBaseHook`
33
+ """
34
+
35
+ client_type = "opensearchserverless"
36
+
37
+ def __init__(self, *args, **kwargs) -> None:
38
+ kwargs["client_type"] = self.client_type
39
+ super().__init__(*args, **kwargs)
@@ -52,7 +52,7 @@ from asgiref.sync import sync_to_async
52
52
  from boto3.s3.transfer import S3Transfer, TransferConfig
53
53
  from botocore.exceptions import ClientError
54
54
 
55
- from airflow.exceptions import AirflowException, AirflowProviderDeprecationWarning
55
+ from airflow.exceptions import AirflowException, AirflowNotFoundException, AirflowProviderDeprecationWarning
56
56
  from airflow.providers.amazon.aws.exceptions import S3HookUriParseFailure
57
57
  from airflow.providers.amazon.aws.hooks.base_aws import AwsBaseHook
58
58
  from airflow.providers.amazon.aws.utils.tags import format_tags
@@ -1390,7 +1390,7 @@ class S3Hook(AwsBaseHook):
1390
1390
  s3_obj = self.get_key(key, bucket_name)
1391
1391
  except ClientError as e:
1392
1392
  if e.response.get("Error", {}).get("Code") == 404:
1393
- raise AirflowException(
1393
+ raise AirflowNotFoundException(
1394
1394
  f"The source file in Bucket {bucket_name} with path {key} does not exist"
1395
1395
  )
1396
1396
  else:
@@ -17,16 +17,19 @@
17
17
  from __future__ import annotations
18
18
 
19
19
  import json
20
+ from time import sleep
20
21
  from typing import TYPE_CHECKING, Any, Sequence
21
22
 
22
23
  from botocore.exceptions import ClientError
23
24
 
24
25
  from airflow.configuration import conf
25
26
  from airflow.exceptions import AirflowException
26
- from airflow.providers.amazon.aws.hooks.bedrock import BedrockHook, BedrockRuntimeHook
27
+ from airflow.providers.amazon.aws.hooks.bedrock import BedrockAgentHook, BedrockHook, BedrockRuntimeHook
27
28
  from airflow.providers.amazon.aws.operators.base_aws import AwsBaseOperator
28
29
  from airflow.providers.amazon.aws.triggers.bedrock import (
29
30
  BedrockCustomizeModelCompletedTrigger,
31
+ BedrockIngestionJobTrigger,
32
+ BedrockKnowledgeBaseActiveTrigger,
30
33
  BedrockProvisionModelThroughputCompletedTrigger,
31
34
  )
32
35
  from airflow.providers.amazon.aws.utils import validate_execute_complete_event
@@ -351,3 +354,313 @@ class BedrockCreateProvisionedModelThroughputOperator(AwsBaseOperator[BedrockHoo
351
354
 
352
355
  self.log.info("Bedrock provisioned throughput job `%s` complete.", event["provisioned_model_id"])
353
356
  return event["provisioned_model_id"]
357
+
358
+
359
+ class BedrockCreateKnowledgeBaseOperator(AwsBaseOperator[BedrockAgentHook]):
360
+ """
361
+ Create a knowledge base that contains data sources used by Amazon Bedrock LLMs and Agents.
362
+
363
+ To create a knowledge base, you must first set up your data sources and configure a supported vector store.
364
+
365
+ .. seealso::
366
+ For more information on how to use this operator, take a look at the guide:
367
+ :ref:`howto/operator:BedrockCreateKnowledgeBaseOperator`
368
+
369
+ :param name: The name of the knowledge base. (templated)
370
+ :param embedding_model_arn: ARN of the model used to create vector embeddings for the knowledge base. (templated)
371
+ :param role_arn: The ARN of the IAM role with permissions to create the knowledge base. (templated)
372
+ :param storage_config: Configuration details of the vector database used for the knowledge base. (templated)
373
+ :param wait_for_indexing: Vector indexing can take some time and there is no apparent way to check the state
374
+ before trying to create the Knowledge Base. If this is True, and creation fails due to the index not
375
+ being available, the operator will wait and retry. (default: True) (templated)
376
+ :param indexing_error_retry_delay: Seconds between retries if an index error is encountered. (default 5) (templated)
377
+ :param indexing_error_max_attempts: Maximum number of times to retry when encountering an index error. (default 20) (templated)
378
+ :param create_knowledge_base_kwargs: Any additional optional parameters to pass to the API call. (templated)
379
+
380
+ :param wait_for_completion: Whether to wait for cluster to stop. (default: True)
381
+ :param waiter_delay: Time in seconds to wait between status checks. (default: 60)
382
+ :param waiter_max_attempts: Maximum number of attempts to check for job completion. (default: 20)
383
+ :param deferrable: If True, the operator will wait asynchronously for the cluster to stop.
384
+ This implies waiting for completion. This mode requires aiobotocore module to be installed.
385
+ (default: False)
386
+ :param aws_conn_id: The Airflow connection used for AWS credentials.
387
+ If this is ``None`` or empty then the default boto3 behaviour is used. If
388
+ running Airflow in a distributed manner and aws_conn_id is None or
389
+ empty, then default boto3 configuration would be used (and must be
390
+ maintained on each worker node).
391
+ :param region_name: AWS region_name. If not specified then the default boto3 behaviour is used.
392
+ :param verify: Whether or not to verify SSL certificates. See:
393
+ https://boto3.amazonaws.com/v1/documentation/api/latest/reference/core/session.html
394
+ :param botocore_config: Configuration dictionary (key-values) for botocore client. See:
395
+ https://botocore.amazonaws.com/v1/documentation/api/latest/reference/config.html
396
+ """
397
+
398
+ aws_hook_class = BedrockAgentHook
399
+ template_fields: Sequence[str] = aws_template_fields(
400
+ "name",
401
+ "embedding_model_arn",
402
+ "role_arn",
403
+ "storage_config",
404
+ "wait_for_indexing",
405
+ "indexing_error_retry_delay",
406
+ "indexing_error_max_attempts",
407
+ "create_knowledge_base_kwargs",
408
+ )
409
+
410
+ def __init__(
411
+ self,
412
+ name: str,
413
+ embedding_model_arn: str,
414
+ role_arn: str,
415
+ storage_config: dict[str, Any],
416
+ create_knowledge_base_kwargs: dict[str, Any] | None = None,
417
+ wait_for_indexing: bool = True,
418
+ indexing_error_retry_delay: int = 5, # seconds
419
+ indexing_error_max_attempts: int = 20,
420
+ wait_for_completion: bool = True,
421
+ waiter_delay: int = 60,
422
+ waiter_max_attempts: int = 20,
423
+ deferrable: bool = conf.getboolean("operators", "default_deferrable", fallback=False),
424
+ **kwargs,
425
+ ):
426
+ super().__init__(**kwargs)
427
+ self.name = name
428
+ self.role_arn = role_arn
429
+ self.storage_config = storage_config
430
+ self.create_knowledge_base_kwargs = create_knowledge_base_kwargs or {}
431
+ self.embedding_model_arn = embedding_model_arn
432
+ self.knowledge_base_config = {
433
+ "type": "VECTOR",
434
+ "vectorKnowledgeBaseConfiguration": {"embeddingModelArn": self.embedding_model_arn},
435
+ }
436
+ self.wait_for_indexing = wait_for_indexing
437
+ self.indexing_error_retry_delay = indexing_error_retry_delay
438
+ self.indexing_error_max_attempts = indexing_error_max_attempts
439
+
440
+ self.wait_for_completion = wait_for_completion
441
+ self.waiter_delay = waiter_delay
442
+ self.waiter_max_attempts = waiter_max_attempts
443
+ self.deferrable = deferrable
444
+
445
+ def execute_complete(self, context: Context, event: dict[str, Any] | None = None) -> str:
446
+ event = validate_execute_complete_event(event)
447
+
448
+ if event["status"] != "success":
449
+ raise AirflowException(f"Error while running job: {event}")
450
+
451
+ self.log.info("Bedrock knowledge base creation job `%s` complete.", self.name)
452
+ return event["knowledge_base_id"]
453
+
454
+ def execute(self, context: Context) -> str:
455
+ def _create_kb():
456
+ # This API call will return the following if the index has not completed, but there is no apparent
457
+ # way to check the state of the index beforehand, so retry on index failure if set to do so.
458
+ # botocore.errorfactory.ValidationException: An error occurred (ValidationException)
459
+ # when calling the CreateKnowledgeBase operation: The knowledge base storage configuration
460
+ # provided is invalid... no such index [bedrock-sample-rag-index-abc108]
461
+ try:
462
+ return self.hook.conn.create_knowledge_base(
463
+ name=self.name,
464
+ roleArn=self.role_arn,
465
+ knowledgeBaseConfiguration=self.knowledge_base_config,
466
+ storageConfiguration=self.storage_config,
467
+ **self.create_knowledge_base_kwargs,
468
+ )["knowledgeBase"]["knowledgeBaseId"]
469
+ except ClientError as error:
470
+ if all(
471
+ [
472
+ error.response["Error"]["Code"] == "ValidationException",
473
+ "no such index" in error.response["Error"]["Message"],
474
+ self.wait_for_indexing,
475
+ self.indexing_error_max_attempts > 0,
476
+ ]
477
+ ):
478
+ self.indexing_error_max_attempts -= 1
479
+ self.log.warning(
480
+ "Vector index not ready, retrying in %s seconds.", self.indexing_error_retry_delay
481
+ )
482
+ self.log.debug("%s retries remaining.", self.indexing_error_max_attempts)
483
+ sleep(self.indexing_error_retry_delay)
484
+ return _create_kb()
485
+ raise
486
+
487
+ self.log.info("Creating Amazon Bedrock Knowledge Base %s", self.name)
488
+ knowledge_base_id = _create_kb()
489
+
490
+ if self.deferrable:
491
+ self.log.info("Deferring for Knowledge base creation.")
492
+ self.defer(
493
+ trigger=BedrockKnowledgeBaseActiveTrigger(
494
+ knowledge_base_id=knowledge_base_id,
495
+ waiter_delay=self.waiter_delay,
496
+ waiter_max_attempts=self.waiter_max_attempts,
497
+ aws_conn_id=self.aws_conn_id,
498
+ ),
499
+ method_name="execute_complete",
500
+ )
501
+ if self.wait_for_completion:
502
+ self.log.info("Waiting for Knowledge Base creation.")
503
+ self.hook.get_waiter("knowledge_base_active").wait(
504
+ knowledgeBaseId=knowledge_base_id,
505
+ WaiterConfig={"Delay": self.waiter_delay, "MaxAttempts": self.waiter_max_attempts},
506
+ )
507
+
508
+ return knowledge_base_id
509
+
510
+
511
+ class BedrockCreateDataSourceOperator(AwsBaseOperator[BedrockAgentHook]):
512
+ """
513
+ Set up an Amazon Bedrock Data Source to be added to an Amazon Bedrock Knowledge Base.
514
+
515
+ .. seealso::
516
+ For more information on how to use this operator, take a look at the guide:
517
+ :ref:`howto/operator:BedrockCreateDataSourceOperator`
518
+
519
+ :param name: name for the Amazon Bedrock Data Source being created. (templated).
520
+ :param bucket_name: The name of the Amazon S3 bucket to use for data source storage. (templated)
521
+ :param knowledge_base_id: The unique identifier of the knowledge base to which to add the data source. (templated)
522
+ :param create_data_source_kwargs: Any additional optional parameters to pass to the API call. (templated)
523
+
524
+ :param aws_conn_id: The Airflow connection used for AWS credentials.
525
+ If this is ``None`` or empty then the default boto3 behaviour is used. If
526
+ running Airflow in a distributed manner and aws_conn_id is None or
527
+ empty, then default boto3 configuration would be used (and must be
528
+ maintained on each worker node).
529
+ :param region_name: AWS region_name. If not specified then the default boto3 behaviour is used.
530
+ :param verify: Whether or not to verify SSL certificates. See:
531
+ https://boto3.amazonaws.com/v1/documentation/api/latest/reference/core/session.html
532
+ :param botocore_config: Configuration dictionary (key-values) for botocore client. See:
533
+ https://botocore.amazonaws.com/v1/documentation/api/latest/reference/config.html
534
+ """
535
+
536
+ aws_hook_class = BedrockAgentHook
537
+ template_fields: Sequence[str] = aws_template_fields(
538
+ "name",
539
+ "bucket_name",
540
+ "knowledge_base_id",
541
+ "create_data_source_kwargs",
542
+ )
543
+
544
+ def __init__(
545
+ self,
546
+ name: str,
547
+ knowledge_base_id: str,
548
+ bucket_name: str | None = None,
549
+ create_data_source_kwargs: dict[str, Any] | None = None,
550
+ **kwargs,
551
+ ):
552
+ super().__init__(**kwargs)
553
+ self.name = name
554
+ self.knowledge_base_id = knowledge_base_id
555
+ self.bucket_name = bucket_name
556
+ self.create_data_source_kwargs = create_data_source_kwargs or {}
557
+
558
+ def execute(self, context: Context) -> str:
559
+ create_ds_response = self.hook.conn.create_data_source(
560
+ name=self.name,
561
+ knowledgeBaseId=self.knowledge_base_id,
562
+ dataSourceConfiguration={
563
+ "type": "S3",
564
+ "s3Configuration": {"bucketArn": f"arn:aws:s3:::{self.bucket_name}"},
565
+ },
566
+ **self.create_data_source_kwargs,
567
+ )
568
+
569
+ return create_ds_response["dataSource"]["dataSourceId"]
570
+
571
+
572
+ class BedrockIngestDataOperator(AwsBaseOperator[BedrockAgentHook]):
573
+ """
574
+ Begin an ingestion job, in which an Amazon Bedrock data source is added to an Amazon Bedrock knowledge base.
575
+
576
+ .. seealso::
577
+ For more information on how to use this operator, take a look at the guide:
578
+ :ref:`howto/operator:BedrockIngestDataOperator`
579
+
580
+ :param knowledge_base_id: The unique identifier of the knowledge base to which to add the data source. (templated)
581
+ :param data_source_id: The unique identifier of the data source to ingest. (templated)
582
+ :param ingest_data_kwargs: Any additional optional parameters to pass to the API call. (templated)
583
+
584
+ :param wait_for_completion: Whether to wait for cluster to stop. (default: True)
585
+ :param waiter_delay: Time in seconds to wait between status checks. (default: 60)
586
+ :param waiter_max_attempts: Maximum number of attempts to check for job completion. (default: 10)
587
+ :param deferrable: If True, the operator will wait asynchronously for the cluster to stop.
588
+ This implies waiting for completion. This mode requires aiobotocore module to be installed.
589
+ (default: False)
590
+ :param aws_conn_id: The Airflow connection used for AWS credentials.
591
+ If this is ``None`` or empty then the default boto3 behaviour is used. If
592
+ running Airflow in a distributed manner and aws_conn_id is None or
593
+ empty, then default boto3 configuration would be used (and must be
594
+ maintained on each worker node).
595
+ :param region_name: AWS region_name. If not specified then the default boto3 behaviour is used.
596
+ :param verify: Whether or not to verify SSL certificates. See:
597
+ https://boto3.amazonaws.com/v1/documentation/api/latest/reference/core/session.html
598
+ :param botocore_config: Configuration dictionary (key-values) for botocore client. See:
599
+ https://botocore.amazonaws.com/v1/documentation/api/latest/reference/config.html
600
+ """
601
+
602
+ aws_hook_class = BedrockAgentHook
603
+ template_fields: Sequence[str] = aws_template_fields(
604
+ "knowledge_base_id",
605
+ "data_source_id",
606
+ "ingest_data_kwargs",
607
+ )
608
+
609
+ def __init__(
610
+ self,
611
+ knowledge_base_id: str,
612
+ data_source_id: str,
613
+ ingest_data_kwargs: dict[str, Any] | None = None,
614
+ wait_for_completion: bool = True,
615
+ waiter_delay: int = 60,
616
+ waiter_max_attempts: int = 10,
617
+ deferrable: bool = conf.getboolean("operators", "default_deferrable", fallback=False),
618
+ **kwargs,
619
+ ):
620
+ super().__init__(**kwargs)
621
+ self.knowledge_base_id = knowledge_base_id
622
+ self.data_source_id = data_source_id
623
+ self.ingest_data_kwargs = ingest_data_kwargs or {}
624
+
625
+ self.wait_for_completion = wait_for_completion
626
+ self.waiter_delay = waiter_delay
627
+ self.waiter_max_attempts = waiter_max_attempts
628
+ self.deferrable = deferrable
629
+
630
+ def execute_complete(self, context: Context, event: dict[str, Any] | None = None) -> str:
631
+ event = validate_execute_complete_event(event)
632
+
633
+ if event["status"] != "success":
634
+ raise AirflowException(f"Error while running ingestion job: {event}")
635
+
636
+ self.log.info("Bedrock ingestion job `%s` complete.", event["ingestion_job_id"])
637
+
638
+ return event["ingestion_job_id"]
639
+
640
+ def execute(self, context: Context) -> str:
641
+ ingestion_job_id = self.hook.conn.start_ingestion_job(
642
+ knowledgeBaseId=self.knowledge_base_id, dataSourceId=self.data_source_id
643
+ )["ingestionJob"]["ingestionJobId"]
644
+
645
+ if self.deferrable:
646
+ self.log.info("Deferring for ingestion job.")
647
+ self.defer(
648
+ trigger=BedrockIngestionJobTrigger(
649
+ knowledge_base_id=self.knowledge_base_id,
650
+ data_source_id=self.data_source_id,
651
+ ingestion_job_id=ingestion_job_id,
652
+ waiter_delay=self.waiter_delay,
653
+ waiter_max_attempts=self.waiter_max_attempts,
654
+ aws_conn_id=self.aws_conn_id,
655
+ ),
656
+ method_name="execute_complete",
657
+ )
658
+ if self.wait_for_completion:
659
+ self.log.info("Waiting for ingestion job %s", ingestion_job_id)
660
+ self.hook.get_waiter(waiter_name="ingestion_job_complete").wait(
661
+ knowledgeBaseId=self.knowledge_base_id,
662
+ dataSourceId=self.data_source_id,
663
+ ingestionJobId=ingestion_job_id,
664
+ )
665
+
666
+ return ingestion_job_id
@@ -30,8 +30,9 @@ from airflow.providers.amazon.aws.hooks.s3 import S3Hook
30
30
  from airflow.utils.helpers import exactly_one
31
31
 
32
32
  if TYPE_CHECKING:
33
- from airflow.utils.context import Context
33
+ from datetime import datetime
34
34
 
35
+ from airflow.utils.context import Context
35
36
 
36
37
  BUCKET_DOES_NOT_EXIST_MSG = "Bucket with name: %s doesn't exist"
37
38
 
@@ -473,6 +474,10 @@ class S3DeleteObjectsOperator(BaseOperator):
473
474
 
474
475
  :param prefix: Prefix of objects to delete. (templated)
475
476
  All objects matching this prefix in the bucket will be deleted.
477
+ :param from_datetime: Greater LastModified Date of objects to delete. (templated)
478
+ All objects which LastModified Date is greater than this datetime in the bucket will be deleted.
479
+ :param to_datetime: less LastModified Date of objects to delete. (templated)
480
+ All objects which LastModified Date is less than this datetime in the bucket will be deleted.
476
481
  :param aws_conn_id: Connection id of the S3 connection to use
477
482
  :param verify: Whether or not to verify SSL certificates for S3 connection.
478
483
  By default SSL certificates are verified.
@@ -487,7 +492,7 @@ class S3DeleteObjectsOperator(BaseOperator):
487
492
  CA cert bundle than the one used by botocore.
488
493
  """
489
494
 
490
- template_fields: Sequence[str] = ("keys", "bucket", "prefix")
495
+ template_fields: Sequence[str] = ("keys", "bucket", "prefix", "from_datetime", "to_datetime")
491
496
 
492
497
  def __init__(
493
498
  self,
@@ -495,6 +500,8 @@ class S3DeleteObjectsOperator(BaseOperator):
495
500
  bucket: str,
496
501
  keys: str | list | None = None,
497
502
  prefix: str | None = None,
503
+ from_datetime: datetime | None = None,
504
+ to_datetime: datetime | None = None,
498
505
  aws_conn_id: str | None = "aws_default",
499
506
  verify: str | bool | None = None,
500
507
  **kwargs,
@@ -503,23 +510,36 @@ class S3DeleteObjectsOperator(BaseOperator):
503
510
  self.bucket = bucket
504
511
  self.keys = keys
505
512
  self.prefix = prefix
513
+ self.from_datetime = from_datetime
514
+ self.to_datetime = to_datetime
506
515
  self.aws_conn_id = aws_conn_id
507
516
  self.verify = verify
508
517
 
509
518
  self._keys: str | list[str] = ""
510
519
 
511
- if not exactly_one(prefix is None, keys is None):
512
- raise AirflowException("Either keys or prefix should be set.")
520
+ if not exactly_one(keys is None, all(var is None for var in [prefix, from_datetime, to_datetime])):
521
+ raise AirflowException(
522
+ "Either keys or at least one of prefix, from_datetime, to_datetime should be set."
523
+ )
513
524
 
514
525
  def execute(self, context: Context):
515
- if not exactly_one(self.keys is None, self.prefix is None):
516
- raise AirflowException("Either keys or prefix should be set.")
526
+ if not exactly_one(
527
+ self.keys is None, all(var is None for var in [self.prefix, self.from_datetime, self.to_datetime])
528
+ ):
529
+ raise AirflowException(
530
+ "Either keys or at least one of prefix, from_datetime, to_datetime should be set."
531
+ )
517
532
 
518
533
  if isinstance(self.keys, (list, str)) and not self.keys:
519
534
  return
520
535
  s3_hook = S3Hook(aws_conn_id=self.aws_conn_id, verify=self.verify)
521
536
 
522
- keys = self.keys or s3_hook.list_keys(bucket_name=self.bucket, prefix=self.prefix)
537
+ keys = self.keys or s3_hook.list_keys(
538
+ bucket_name=self.bucket,
539
+ prefix=self.prefix,
540
+ from_datetime=self.from_datetime,
541
+ to_datetime=self.to_datetime,
542
+ )
523
543
  if keys:
524
544
  s3_hook.delete_objects(bucket=self.bucket, keys=keys)
525
545
  self._keys = keys