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.
- {apache-airflow-providers-amazon-7.4.1rc1/apache_airflow_providers_amazon.egg-info → apache-airflow-providers-amazon-8.0.0rc2}/PKG-INFO +80 -4
- {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/README.rst +78 -2
- {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/hooks/athena.py +0 -15
- {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/hooks/base_aws.py +98 -65
- {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/hooks/batch_client.py +60 -27
- {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/hooks/batch_waiters.py +3 -1
- {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/hooks/emr.py +33 -74
- {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/hooks/logs.py +22 -4
- {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/hooks/redshift_cluster.py +1 -12
- {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/hooks/sagemaker.py +0 -16
- {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/links/emr.py +1 -3
- {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/operators/athena.py +0 -15
- {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/operators/batch.py +78 -24
- {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/operators/ecs.py +21 -58
- {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/operators/eks.py +0 -1
- {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/operators/emr.py +94 -24
- {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/operators/lambda_function.py +0 -19
- {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/operators/rds.py +1 -1
- {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/operators/redshift_cluster.py +22 -1
- {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/operators/redshift_data.py +0 -62
- {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/secrets/secrets_manager.py +0 -17
- {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/secrets/systems_manager.py +0 -21
- apache-airflow-providers-amazon-8.0.0rc2/airflow/providers/amazon/aws/sensors/dynamodb.py +97 -0
- {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/sensors/emr.py +1 -2
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/triggers/redshift_cluster.py +54 -2
- {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/waiters/base_waiter.py +12 -1
- apache-airflow-providers-amazon-8.0.0rc2/airflow/providers/amazon/aws/waiters/emr-serverless.json +18 -0
- {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/get_provider_info.py +35 -30
- {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2/apache_airflow_providers_amazon.egg-info}/PKG-INFO +80 -4
- {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/apache_airflow_providers_amazon.egg-info/SOURCES.txt +2 -2
- {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/apache_airflow_providers_amazon.egg-info/requires.txt +1 -0
- {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/setup.cfg +3 -2
- {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/setup.py +1 -1
- apache-airflow-providers-amazon-7.4.1rc1/airflow/providers/amazon/aws/operators/aws_lambda.py +0 -29
- apache-airflow-providers-amazon-7.4.1rc1/airflow/providers/amazon/aws/operators/redshift_sql.py +0 -57
- {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/LICENSE +0 -0
- {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/MANIFEST.in +0 -0
- {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/NOTICE +0 -0
- {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/__init__.py +0 -0
- {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/__init__.py +0 -0
- {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/exceptions.py +0 -0
- {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/hooks/__init__.py +0 -0
- {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/hooks/appflow.py +0 -0
- {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/hooks/batch_waiters.json +0 -0
- {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/hooks/cloud_formation.py +0 -0
- {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/hooks/datasync.py +0 -0
- {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/hooks/dms.py +0 -0
- {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/hooks/dynamodb.py +0 -0
- {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/hooks/ec2.py +0 -0
- {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/hooks/ecr.py +0 -0
- {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/hooks/ecs.py +0 -0
- {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/hooks/eks.py +0 -0
- {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
- {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/hooks/glacier.py +0 -0
- {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/hooks/glue.py +0 -0
- {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/hooks/glue_catalog.py +0 -0
- {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/hooks/glue_crawler.py +0 -0
- {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/hooks/kinesis.py +0 -0
- {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/hooks/lambda_function.py +0 -0
- {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/hooks/quicksight.py +0 -0
- {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/hooks/rds.py +0 -0
- {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/hooks/redshift_data.py +0 -0
- {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/hooks/redshift_sql.py +0 -0
- {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/hooks/s3.py +0 -0
- {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/hooks/secrets_manager.py +0 -0
- {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/hooks/ses.py +0 -0
- {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/hooks/sns.py +0 -0
- {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/hooks/sqs.py +0 -0
- {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/hooks/ssm.py +0 -0
- {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/hooks/step_function.py +0 -0
- {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/hooks/sts.py +0 -0
- {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/links/__init__.py +0 -0
- {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/links/base_aws.py +0 -0
- {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/links/batch.py +0 -0
- {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/links/glue.py +0 -0
- {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/links/logs.py +0 -0
- {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/log/__init__.py +0 -0
- {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
- {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
- {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/operators/__init__.py +0 -0
- {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/operators/appflow.py +0 -0
- {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/operators/cloud_formation.py +0 -0
- {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/operators/datasync.py +0 -0
- {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/operators/dms.py +0 -0
- {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/operators/ec2.py +0 -0
- {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/operators/glacier.py +0 -0
- {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/operators/glue.py +0 -0
- {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/operators/glue_crawler.py +0 -0
- {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/operators/quicksight.py +0 -0
- {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/operators/s3.py +0 -0
- {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/operators/sagemaker.py +0 -0
- {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/operators/sns.py +0 -0
- {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/operators/sqs.py +0 -0
- {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/operators/step_function.py +0 -0
- {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/secrets/__init__.py +0 -0
- {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/sensors/__init__.py +0 -0
- {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/sensors/athena.py +0 -0
- {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/sensors/batch.py +0 -0
- {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/sensors/cloud_formation.py +0 -0
- {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/sensors/dms.py +0 -0
- {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/sensors/ec2.py +0 -0
- {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/sensors/ecs.py +0 -0
- {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/sensors/eks.py +0 -0
- {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/sensors/glacier.py +0 -0
- {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/sensors/glue.py +0 -0
- {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
- {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/sensors/glue_crawler.py +0 -0
- {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/sensors/lambda_function.py +0 -0
- {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/sensors/quicksight.py +0 -0
- {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/sensors/rds.py +0 -0
- {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/sensors/redshift_cluster.py +0 -0
- {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/sensors/s3.py +0 -0
- {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/sensors/sagemaker.py +0 -0
- {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/sensors/sqs.py +0 -0
- {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/sensors/step_function.py +0 -0
- {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/transfers/__init__.py +0 -0
- {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/transfers/base.py +0 -0
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/triggers/__init__.py +0 -0
- {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/utils/__init__.py +0 -0
- {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/utils/connection_wrapper.py +0 -0
- {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
- {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/utils/emailer.py +0 -0
- {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/utils/rds.py +0 -0
- {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/utils/redshift.py +0 -0
- {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/utils/sagemaker.py +0 -0
- {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/utils/tags.py +0 -0
- {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/utils/waiter.py +0 -0
- {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/waiters/__init__.py +0 -0
- {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/waiters/appflow.json +0 -0
- {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/waiters/ecs.json +0 -0
- {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/waiters/eks.json +0 -0
- {apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/airflow/providers/amazon/aws/waiters/emr.json +0 -0
- {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
- {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
- {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
- {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
- {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:
|
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/
|
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: ``
|
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/
|
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
|
|
{apache-airflow-providers-amazon-7.4.1rc1 → apache-airflow-providers-amazon-8.0.0rc2}/README.rst
RENAMED
@@ -19,7 +19,7 @@
|
|
19
19
|
|
20
20
|
Package ``apache-airflow-providers-amazon``
|
21
21
|
|
22
|
-
Release: ``
|
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/
|
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
|
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
|
131
|
-
""
|
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
|
-
|
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
|
-
|
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(
|
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(
|
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
|
-
|
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
|
-
|
535
|
-
|
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
|
-
|
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(
|
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=
|
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")
|