apache-airflow-providers-amazon 8.23.0rc1__tar.gz → 8.24.0rc1__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-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/PKG-INFO +6 -6
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/README.rst +3 -3
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/__init__.py +1 -1
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/hooks/batch_client.py +3 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/hooks/dynamodb.py +34 -1
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/operators/batch.py +8 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/operators/ecs.py +5 -5
- apache_airflow_providers_amazon-8.24.0rc1/airflow/providers/amazon/aws/transfers/s3_to_dynamodb.py +257 -0
- apache_airflow_providers_amazon-8.24.0rc1/airflow/providers/amazon/aws/waiters/dynamodb.json +67 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/get_provider_info.py +8 -1
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/pyproject.toml +3 -3
- apache_airflow_providers_amazon-8.23.0rc1/airflow/providers/amazon/aws/waiters/dynamodb.json +0 -30
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/LICENSE +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/__init__.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/auth_manager/__init__.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/auth_manager/avp/__init__.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/auth_manager/avp/entities.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/auth_manager/avp/facade.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/auth_manager/avp/schema.json +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/auth_manager/aws_auth_manager.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/auth_manager/cli/__init__.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/auth_manager/cli/avp_commands.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/auth_manager/cli/definition.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/auth_manager/cli/idc_commands.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/auth_manager/constants.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/auth_manager/security_manager/__init__.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/auth_manager/security_manager/aws_security_manager_override.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/auth_manager/user.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/auth_manager/views/__init__.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/auth_manager/views/auth.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/exceptions.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/executors/Dockerfile +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/executors/__init__.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/executors/batch/__init__.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/executors/batch/batch_executor.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/executors/batch/batch_executor_config.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/executors/batch/boto_schema.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/executors/batch/utils.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/executors/ecs/__init__.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/executors/ecs/boto_schema.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/executors/ecs/ecs_executor.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/executors/ecs/ecs_executor_config.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/executors/ecs/utils.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/executors/utils/__init__.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/executors/utils/base_config_keys.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/executors/utils/exponential_backoff_retry.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/fs/__init__.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/fs/s3.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/hooks/__init__.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/hooks/appflow.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/hooks/athena.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/hooks/athena_sql.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/hooks/base_aws.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/hooks/batch_waiters.json +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/hooks/batch_waiters.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/hooks/bedrock.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/hooks/chime.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/hooks/cloud_formation.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/hooks/comprehend.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/hooks/datasync.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/hooks/dms.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/hooks/ec2.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/hooks/ecr.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/hooks/ecs.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/hooks/eks.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/hooks/elasticache_replication_group.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/hooks/emr.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/hooks/eventbridge.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/hooks/glacier.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/hooks/glue.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/hooks/glue_catalog.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/hooks/glue_crawler.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/hooks/glue_databrew.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/hooks/kinesis.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/hooks/lambda_function.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/hooks/logs.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/hooks/neptune.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/hooks/opensearch_serverless.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/hooks/quicksight.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/hooks/rds.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/hooks/redshift_cluster.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/hooks/redshift_data.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/hooks/redshift_sql.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/hooks/s3.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/hooks/sagemaker.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/hooks/secrets_manager.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/hooks/ses.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/hooks/sns.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/hooks/sqs.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/hooks/ssm.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/hooks/step_function.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/hooks/sts.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/hooks/verified_permissions.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/links/__init__.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/links/athena.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/links/base_aws.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/links/batch.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/links/emr.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/links/glue.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/links/logs.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/links/step_function.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/log/__init__.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/log/cloudwatch_task_handler.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/log/s3_task_handler.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/notifications/__init__.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/notifications/chime.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/notifications/sns.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/notifications/sqs.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/operators/__init__.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/operators/appflow.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/operators/athena.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/operators/base_aws.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/operators/bedrock.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/operators/cloud_formation.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/operators/comprehend.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/operators/datasync.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/operators/dms.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/operators/ec2.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/operators/eks.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/operators/emr.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/operators/eventbridge.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/operators/glacier.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/operators/glue.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/operators/glue_crawler.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/operators/glue_databrew.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/operators/lambda_function.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/operators/neptune.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/operators/quicksight.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/operators/rds.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/operators/redshift_cluster.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/operators/redshift_data.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/operators/s3.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/operators/sagemaker.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/operators/sns.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/operators/sqs.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/operators/step_function.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/secrets/__init__.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/secrets/secrets_manager.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/secrets/systems_manager.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/sensors/__init__.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/sensors/athena.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/sensors/base_aws.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/sensors/batch.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/sensors/bedrock.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/sensors/cloud_formation.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/sensors/comprehend.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/sensors/dms.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/sensors/dynamodb.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/sensors/ec2.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/sensors/ecs.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/sensors/eks.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/sensors/emr.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/sensors/glacier.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/sensors/glue.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/sensors/glue_catalog_partition.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/sensors/glue_crawler.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/sensors/lambda_function.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/sensors/opensearch_serverless.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/sensors/quicksight.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/sensors/rds.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/sensors/redshift_cluster.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/sensors/s3.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/sensors/sagemaker.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/sensors/sqs.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/sensors/step_function.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/transfers/__init__.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/transfers/azure_blob_to_s3.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/transfers/base.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/transfers/dynamodb_to_s3.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/transfers/exasol_to_s3.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/transfers/ftp_to_s3.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/transfers/gcs_to_s3.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/transfers/glacier_to_gcs.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/transfers/google_api_to_s3.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/transfers/hive_to_dynamodb.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/transfers/http_to_s3.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/transfers/imap_attachment_to_s3.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/transfers/local_to_s3.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/transfers/mongo_to_s3.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/transfers/redshift_to_s3.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/transfers/s3_to_ftp.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/transfers/s3_to_redshift.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/transfers/s3_to_sftp.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/transfers/s3_to_sql.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/transfers/salesforce_to_s3.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/transfers/sftp_to_s3.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/transfers/sql_to_s3.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/triggers/README.md +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/triggers/__init__.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/triggers/athena.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/triggers/base.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/triggers/batch.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/triggers/bedrock.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/triggers/comprehend.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/triggers/ec2.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/triggers/ecs.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/triggers/eks.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/triggers/emr.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/triggers/glue.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/triggers/glue_crawler.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/triggers/glue_databrew.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/triggers/lambda_function.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/triggers/neptune.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/triggers/opensearch_serverless.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/triggers/rds.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/triggers/redshift_cluster.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/triggers/redshift_data.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/triggers/s3.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/triggers/sagemaker.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/triggers/sqs.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/triggers/step_function.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/utils/__init__.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/utils/connection_wrapper.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/utils/eks_get_token.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/utils/emailer.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/utils/identifiers.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/utils/mixins.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/utils/rds.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/utils/redshift.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/utils/sagemaker.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/utils/sqs.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/utils/suppress.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/utils/tags.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/utils/task_log_fetcher.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/utils/waiter.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/utils/waiter_with_logging.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/waiters/README.md +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/waiters/__init__.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/waiters/appflow.json +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/waiters/athena.json +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/waiters/base_waiter.py +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/waiters/batch.json +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/waiters/bedrock-agent.json +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/waiters/bedrock.json +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/waiters/comprehend.json +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/waiters/databrew.json +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/waiters/ecs.json +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/waiters/eks.json +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/waiters/emr-containers.json +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/waiters/emr-serverless.json +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/waiters/emr.json +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/waiters/glue.json +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/waiters/neptune.json +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/waiters/opensearchserverless.json +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/waiters/redshift.json +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/waiters/sagemaker.json +0 -0
- {apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/airflow/providers/amazon/aws/waiters/stepfunctions.json +0 -0
{apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/PKG-INFO
RENAMED
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: apache-airflow-providers-amazon
|
3
|
-
Version: 8.
|
3
|
+
Version: 8.24.0rc1
|
4
4
|
Summary: Provider package apache-airflow-providers-amazon for Apache Airflow
|
5
5
|
Keywords: airflow-provider,amazon,airflow,integration
|
6
6
|
Author-email: Apache Software Foundation <dev@airflow.apache.org>
|
@@ -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.
|
56
|
-
Project-URL: Documentation, https://airflow.apache.org/docs/apache-airflow-providers-amazon/8.
|
55
|
+
Project-URL: Changelog, https://airflow.apache.org/docs/apache-airflow-providers-amazon/8.24.0/changelog.html
|
56
|
+
Project-URL: Documentation, https://airflow.apache.org/docs/apache-airflow-providers-amazon/8.24.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.
|
123
|
+
Release: ``8.24.0.rc1``
|
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.
|
136
|
+
in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-amazon/8.24.0/>`_.
|
137
137
|
|
138
138
|
Installation
|
139
139
|
------------
|
@@ -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.
|
200
|
+
`changelog <https://airflow.apache.org/docs/apache-airflow-providers-amazon/8.24.0/changelog.html>`_.
|
{apache_airflow_providers_amazon-8.23.0rc1 → apache_airflow_providers_amazon-8.24.0rc1}/README.rst
RENAMED
@@ -42,7 +42,7 @@
|
|
42
42
|
|
43
43
|
Package ``apache-airflow-providers-amazon``
|
44
44
|
|
45
|
-
Release: ``8.
|
45
|
+
Release: ``8.24.0.rc1``
|
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.
|
58
|
+
in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-amazon/8.24.0/>`_.
|
59
59
|
|
60
60
|
Installation
|
61
61
|
------------
|
@@ -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.
|
122
|
+
`changelog <https://airflow.apache.org/docs/apache-airflow-providers-amazon/8.24.0/changelog.html>`_.
|
@@ -29,7 +29,7 @@ from airflow import __version__ as airflow_version
|
|
29
29
|
|
30
30
|
__all__ = ["__version__"]
|
31
31
|
|
32
|
-
__version__ = "8.
|
32
|
+
__version__ = "8.24.0"
|
33
33
|
|
34
34
|
if packaging.version.parse(packaging.version.parse(airflow_version).base_version) < packaging.version.parse(
|
35
35
|
"2.7.0"
|
@@ -102,6 +102,7 @@ class BatchProtocol(Protocol):
|
|
102
102
|
arrayProperties: dict,
|
103
103
|
parameters: dict,
|
104
104
|
containerOverrides: dict,
|
105
|
+
ecsPropertiesOverride: dict,
|
105
106
|
tags: dict,
|
106
107
|
) -> dict:
|
107
108
|
"""
|
@@ -119,6 +120,8 @@ class BatchProtocol(Protocol):
|
|
119
120
|
|
120
121
|
:param containerOverrides: the same parameter that boto3 will receive
|
121
122
|
|
123
|
+
:param ecsPropertiesOverride: the same parameter that boto3 will receive
|
124
|
+
|
122
125
|
:param tags: the same parameter that boto3 will receive
|
123
126
|
|
124
127
|
:return: an API response
|
@@ -19,11 +19,17 @@
|
|
19
19
|
|
20
20
|
from __future__ import annotations
|
21
21
|
|
22
|
-
from
|
22
|
+
from functools import cached_property
|
23
|
+
from typing import TYPE_CHECKING, Iterable
|
24
|
+
|
25
|
+
from botocore.exceptions import ClientError
|
23
26
|
|
24
27
|
from airflow.exceptions import AirflowException
|
25
28
|
from airflow.providers.amazon.aws.hooks.base_aws import AwsBaseHook
|
26
29
|
|
30
|
+
if TYPE_CHECKING:
|
31
|
+
from botocore.client import BaseClient
|
32
|
+
|
27
33
|
|
28
34
|
class DynamoDBHook(AwsBaseHook):
|
29
35
|
"""
|
@@ -50,6 +56,11 @@ class DynamoDBHook(AwsBaseHook):
|
|
50
56
|
kwargs["resource_type"] = "dynamodb"
|
51
57
|
super().__init__(*args, **kwargs)
|
52
58
|
|
59
|
+
@cached_property
|
60
|
+
def client(self) -> BaseClient:
|
61
|
+
"""Return boto3 client."""
|
62
|
+
return self.get_conn().meta.client
|
63
|
+
|
53
64
|
def write_batch_data(self, items: Iterable) -> bool:
|
54
65
|
"""
|
55
66
|
Write batch items to DynamoDB table with provisioned throughout capacity.
|
@@ -70,3 +81,25 @@ class DynamoDBHook(AwsBaseHook):
|
|
70
81
|
return True
|
71
82
|
except Exception as general_error:
|
72
83
|
raise AirflowException(f"Failed to insert items in dynamodb, error: {general_error}")
|
84
|
+
|
85
|
+
def get_import_status(self, import_arn: str) -> tuple[str, str | None, str | None]:
|
86
|
+
"""
|
87
|
+
Get import status from Dynamodb.
|
88
|
+
|
89
|
+
:param import_arn: The Amazon Resource Name (ARN) for the import.
|
90
|
+
:return: Import status, Error code and Error message
|
91
|
+
"""
|
92
|
+
self.log.info("Poking for Dynamodb import %s", import_arn)
|
93
|
+
|
94
|
+
try:
|
95
|
+
describe_import = self.client.describe_import(ImportArn=import_arn)
|
96
|
+
status = describe_import["ImportTableDescription"]["ImportStatus"]
|
97
|
+
error_code = describe_import["ImportTableDescription"].get("FailureCode")
|
98
|
+
error_msg = describe_import["ImportTableDescription"].get("FailureMessage")
|
99
|
+
return status, error_code, error_msg
|
100
|
+
except ClientError as e:
|
101
|
+
error_code = e.response.get("Error", {}).get("Code")
|
102
|
+
if error_code == "ImportNotFoundException":
|
103
|
+
raise AirflowException("S3 import into Dynamodb job not found.")
|
104
|
+
else:
|
105
|
+
raise e
|
@@ -65,6 +65,7 @@ class BatchOperator(BaseOperator):
|
|
65
65
|
:param job_queue: the queue name on AWS Batch
|
66
66
|
:param overrides: DEPRECATED, use container_overrides instead with the same value.
|
67
67
|
:param container_overrides: the `containerOverrides` parameter for boto3 (templated)
|
68
|
+
:param ecs_properties_override: the `ecsPropertiesOverride` parameter for boto3 (templated)
|
68
69
|
:param node_overrides: the `nodeOverrides` parameter for boto3 (templated)
|
69
70
|
:param share_identifier: The share identifier for the job. Don't specify this parameter if the job queue
|
70
71
|
doesn't have a scheduling policy.
|
@@ -112,6 +113,7 @@ class BatchOperator(BaseOperator):
|
|
112
113
|
"job_queue",
|
113
114
|
"container_overrides",
|
114
115
|
"array_properties",
|
116
|
+
"ecs_properties_override",
|
115
117
|
"node_overrides",
|
116
118
|
"parameters",
|
117
119
|
"retry_strategy",
|
@@ -124,6 +126,7 @@ class BatchOperator(BaseOperator):
|
|
124
126
|
template_fields_renderers = {
|
125
127
|
"container_overrides": "json",
|
126
128
|
"parameters": "json",
|
129
|
+
"ecs_properties_override": "json",
|
127
130
|
"node_overrides": "json",
|
128
131
|
"retry_strategy": "json",
|
129
132
|
}
|
@@ -160,6 +163,7 @@ class BatchOperator(BaseOperator):
|
|
160
163
|
overrides: dict | None = None, # deprecated
|
161
164
|
container_overrides: dict | None = None,
|
162
165
|
array_properties: dict | None = None,
|
166
|
+
ecs_properties_override: dict | None = None,
|
163
167
|
node_overrides: dict | None = None,
|
164
168
|
share_identifier: str | None = None,
|
165
169
|
scheduling_priority_override: int | None = None,
|
@@ -201,6 +205,7 @@ class BatchOperator(BaseOperator):
|
|
201
205
|
stacklevel=2,
|
202
206
|
)
|
203
207
|
|
208
|
+
self.ecs_properties_override = ecs_properties_override
|
204
209
|
self.node_overrides = node_overrides
|
205
210
|
self.share_identifier = share_identifier
|
206
211
|
self.scheduling_priority_override = scheduling_priority_override
|
@@ -296,6 +301,8 @@ class BatchOperator(BaseOperator):
|
|
296
301
|
self.log.info("AWS Batch job - container overrides: %s", self.container_overrides)
|
297
302
|
if self.array_properties:
|
298
303
|
self.log.info("AWS Batch job - array properties: %s", self.array_properties)
|
304
|
+
if self.ecs_properties_override:
|
305
|
+
self.log.info("AWS Batch job - ECS properties: %s", self.ecs_properties_override)
|
299
306
|
if self.node_overrides:
|
300
307
|
self.log.info("AWS Batch job - node properties: %s", self.node_overrides)
|
301
308
|
|
@@ -307,6 +314,7 @@ class BatchOperator(BaseOperator):
|
|
307
314
|
"parameters": self.parameters,
|
308
315
|
"tags": self.tags,
|
309
316
|
"containerOverrides": self.container_overrides,
|
317
|
+
"ecsPropertiesOverride": self.ecs_properties_override,
|
310
318
|
"nodeOverrides": self.node_overrides,
|
311
319
|
"retryStrategy": self.retry_strategy,
|
312
320
|
"shareIdentifier": self.share_identifier,
|
@@ -141,7 +141,7 @@ class EcsCreateClusterOperator(EcsBaseOperator):
|
|
141
141
|
waiter_delay=self.waiter_delay,
|
142
142
|
waiter_max_attempts=self.waiter_max_attempts,
|
143
143
|
aws_conn_id=self.aws_conn_id,
|
144
|
-
region_name=self.
|
144
|
+
region_name=self.region_name,
|
145
145
|
),
|
146
146
|
method_name="_complete_exec_with_cluster_desc",
|
147
147
|
# timeout is set to ensure that if a trigger dies, the timeout does not restart
|
@@ -218,7 +218,7 @@ class EcsDeleteClusterOperator(EcsBaseOperator):
|
|
218
218
|
waiter_delay=self.waiter_delay,
|
219
219
|
waiter_max_attempts=self.waiter_max_attempts,
|
220
220
|
aws_conn_id=self.aws_conn_id,
|
221
|
-
region_name=self.
|
221
|
+
region_name=self.region_name,
|
222
222
|
),
|
223
223
|
method_name="_complete_exec_with_cluster_desc",
|
224
224
|
# timeout is set to ensure that if a trigger dies, the timeout does not restart
|
@@ -495,7 +495,7 @@ class EcsRunTaskOperator(EcsBaseOperator):
|
|
495
495
|
self.number_logs_exception = number_logs_exception
|
496
496
|
|
497
497
|
if self.awslogs_region is None:
|
498
|
-
self.awslogs_region = self.
|
498
|
+
self.awslogs_region = self.region_name
|
499
499
|
|
500
500
|
self.arn: str | None = None
|
501
501
|
self._started_by: str | None = None
|
@@ -546,7 +546,7 @@ class EcsRunTaskOperator(EcsBaseOperator):
|
|
546
546
|
waiter_delay=self.waiter_delay,
|
547
547
|
waiter_max_attempts=self.waiter_max_attempts,
|
548
548
|
aws_conn_id=self.aws_conn_id,
|
549
|
-
region=self.
|
549
|
+
region=self.region_name,
|
550
550
|
log_group=self.awslogs_group,
|
551
551
|
log_stream=self._get_logs_stream_name(),
|
552
552
|
),
|
@@ -589,7 +589,7 @@ class EcsRunTaskOperator(EcsBaseOperator):
|
|
589
589
|
self._after_execution()
|
590
590
|
if self._aws_logs_enabled():
|
591
591
|
# same behavior as non-deferrable mode, return last line of logs of the task.
|
592
|
-
logs_client = AwsLogsHook(aws_conn_id=self.aws_conn_id, region_name=self.
|
592
|
+
logs_client = AwsLogsHook(aws_conn_id=self.aws_conn_id, region_name=self.region_name).conn
|
593
593
|
one_log = logs_client.get_log_events(
|
594
594
|
logGroupName=self.awslogs_group,
|
595
595
|
logStreamName=self._get_logs_stream_name(),
|
apache_airflow_providers_amazon-8.24.0rc1/airflow/providers/amazon/aws/transfers/s3_to_dynamodb.py
ADDED
@@ -0,0 +1,257 @@
|
|
1
|
+
#
|
2
|
+
# Licensed to the Apache Software Foundation (ASF) under one
|
3
|
+
# or more contributor license agreements. See the NOTICE file
|
4
|
+
# distributed with this work for additional information
|
5
|
+
# regarding copyright ownership. The ASF licenses this file
|
6
|
+
# to you under the Apache License, Version 2.0 (the
|
7
|
+
# "License"); you may not use this file except in compliance
|
8
|
+
# with the License. You may obtain a copy of the License at
|
9
|
+
#
|
10
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
11
|
+
#
|
12
|
+
# Unless required by applicable law or agreed to in writing,
|
13
|
+
# software distributed under the License is distributed on an
|
14
|
+
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
15
|
+
# KIND, either express or implied. See the License for the
|
16
|
+
# specific language governing permissions and limitations
|
17
|
+
# under the License.
|
18
|
+
from __future__ import annotations
|
19
|
+
|
20
|
+
from typing import TYPE_CHECKING, Any, Literal, Sequence, TypedDict
|
21
|
+
|
22
|
+
from botocore.exceptions import ClientError, WaiterError
|
23
|
+
|
24
|
+
from airflow.exceptions import AirflowException
|
25
|
+
from airflow.models import BaseOperator
|
26
|
+
from airflow.providers.amazon.aws.hooks.dynamodb import DynamoDBHook
|
27
|
+
|
28
|
+
if TYPE_CHECKING:
|
29
|
+
from airflow.utils.context import Context
|
30
|
+
|
31
|
+
|
32
|
+
class AttributeDefinition(TypedDict):
|
33
|
+
"""Attribute Definition Type."""
|
34
|
+
|
35
|
+
AttributeName: str
|
36
|
+
AttributeType: Literal["S", "N", "B"]
|
37
|
+
|
38
|
+
|
39
|
+
class KeySchema(TypedDict):
|
40
|
+
"""Key Schema Type."""
|
41
|
+
|
42
|
+
AttributeName: str
|
43
|
+
KeyType: Literal["HASH", "RANGE"]
|
44
|
+
|
45
|
+
|
46
|
+
class S3ToDynamoDBOperator(BaseOperator):
|
47
|
+
"""Load Data from S3 into a DynamoDB.
|
48
|
+
|
49
|
+
Data stored in S3 can be uploaded to a new or existing DynamoDB. Supported file formats CSV, DynamoDB JSON and
|
50
|
+
Amazon ION.
|
51
|
+
|
52
|
+
|
53
|
+
:param s3_bucket: The S3 bucket that is imported
|
54
|
+
:param s3_key: Key prefix that imports single or multiple objects from S3
|
55
|
+
:param dynamodb_table_name: Name of the table that shall be created
|
56
|
+
:param dynamodb_key_schema: Primary key and sort key. Each element represents one primary key
|
57
|
+
attribute. AttributeName is the name of the attribute. KeyType is the role for the attribute. Valid values
|
58
|
+
HASH or RANGE
|
59
|
+
:param dynamodb_attributes: Name of the attributes of a table. AttributeName is the name for the attribute
|
60
|
+
AttributeType is the data type for the attribute. Valid values for AttributeType are
|
61
|
+
S - attribute is of type String
|
62
|
+
N - attribute is of type Number
|
63
|
+
B - attribute is of type Binary
|
64
|
+
:param dynamodb_tmp_table_prefix: Prefix for the temporary DynamoDB table
|
65
|
+
:param delete_on_error: If set, the new DynamoDB table will be deleted in case of import errors
|
66
|
+
:param use_existing_table: Whether to import to an existing non new DynamoDB table. If set to
|
67
|
+
true data is loaded first into a temporary DynamoDB table (using the AWS ImportTable Service),
|
68
|
+
then retrieved as chunks into memory and loaded into the target table. If set to false, a new
|
69
|
+
DynamoDB table will be created and S3 data is bulk loaded by the AWS ImportTable Service.
|
70
|
+
:param input_format: The format for the imported data. Valid values for InputFormat are CSV, DYNAMODB_JSON
|
71
|
+
or ION
|
72
|
+
:param billing_mode: Billing mode for the table. Valid values are PROVISIONED or PAY_PER_REQUEST
|
73
|
+
:param on_demand_throughput: Extra options for maximum number of read and write units
|
74
|
+
:param import_table_kwargs: Any additional optional import table parameters to pass, such as ClientToken,
|
75
|
+
InputCompressionType, or InputFormatOptions. See:
|
76
|
+
https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/dynamodb/client/import_table.html
|
77
|
+
:param import_table_creation_kwargs: Any additional optional import table creation parameters to pass, such as
|
78
|
+
ProvisionedThroughput, SSESpecification, or GlobalSecondaryIndexes. See:
|
79
|
+
https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/dynamodb/client/import_table.html
|
80
|
+
:param wait_for_completion: Whether to wait for cluster to stop
|
81
|
+
:param check_interval: Time in seconds to wait between status checks
|
82
|
+
:param max_attempts: Maximum number of attempts to check for job completion
|
83
|
+
:param aws_conn_id: The reference to the AWS connection details
|
84
|
+
"""
|
85
|
+
|
86
|
+
template_fields: Sequence[str] = (
|
87
|
+
"s3_bucket",
|
88
|
+
"s3_key",
|
89
|
+
"dynamodb_table_name",
|
90
|
+
"dynamodb_key_schema",
|
91
|
+
"dynamodb_attributes",
|
92
|
+
"dynamodb_tmp_table_prefix",
|
93
|
+
"delete_on_error",
|
94
|
+
"use_existing_table",
|
95
|
+
"input_format",
|
96
|
+
"billing_mode",
|
97
|
+
"import_table_kwargs",
|
98
|
+
"import_table_creation_kwargs",
|
99
|
+
)
|
100
|
+
ui_color = "#e2e8f0"
|
101
|
+
|
102
|
+
def __init__(
|
103
|
+
self,
|
104
|
+
*,
|
105
|
+
s3_bucket: str,
|
106
|
+
s3_key: str,
|
107
|
+
dynamodb_table_name: str,
|
108
|
+
dynamodb_key_schema: list[KeySchema],
|
109
|
+
dynamodb_attributes: list[AttributeDefinition] | None = None,
|
110
|
+
dynamodb_tmp_table_prefix: str = "tmp",
|
111
|
+
delete_on_error: bool = False,
|
112
|
+
use_existing_table: bool = False,
|
113
|
+
input_format: Literal["CSV", "DYNAMODB_JSON", "ION"] = "DYNAMODB_JSON",
|
114
|
+
billing_mode: Literal["PROVISIONED", "PAY_PER_REQUEST"] = "PAY_PER_REQUEST",
|
115
|
+
import_table_kwargs: dict[str, Any] | None = None,
|
116
|
+
import_table_creation_kwargs: dict[str, Any] | None = None,
|
117
|
+
wait_for_completion: bool = True,
|
118
|
+
check_interval: int = 30,
|
119
|
+
max_attempts: int = 240,
|
120
|
+
aws_conn_id: str | None = "aws_default",
|
121
|
+
**kwargs,
|
122
|
+
) -> None:
|
123
|
+
super().__init__(**kwargs)
|
124
|
+
self.s3_bucket = s3_bucket
|
125
|
+
self.s3_key = s3_key
|
126
|
+
self.dynamodb_table_name = dynamodb_table_name
|
127
|
+
self.dynamodb_attributes = dynamodb_attributes
|
128
|
+
self.dynamodb_tmp_table_prefix = dynamodb_tmp_table_prefix
|
129
|
+
self.delete_on_error = delete_on_error
|
130
|
+
self.use_existing_table = use_existing_table
|
131
|
+
self.dynamodb_key_schema = dynamodb_key_schema
|
132
|
+
self.input_format = input_format
|
133
|
+
self.billing_mode = billing_mode
|
134
|
+
self.import_table_kwargs = import_table_kwargs
|
135
|
+
self.import_table_creation_kwargs = import_table_creation_kwargs
|
136
|
+
self.wait_for_completion = wait_for_completion
|
137
|
+
self.check_interval = check_interval
|
138
|
+
self.max_attempts = max_attempts
|
139
|
+
self.aws_conn_id = aws_conn_id
|
140
|
+
|
141
|
+
@property
|
142
|
+
def tmp_table_name(self):
|
143
|
+
"""Temporary table name."""
|
144
|
+
return f"{self.dynamodb_tmp_table_prefix}_{self.dynamodb_table_name}"
|
145
|
+
|
146
|
+
def _load_into_new_table(self, table_name: str, delete_on_error: bool) -> str:
|
147
|
+
"""
|
148
|
+
Import S3 key or keys into a new DynamoDB table.
|
149
|
+
|
150
|
+
:param table_name: Name of the table that shall be created
|
151
|
+
:param delete_on_error: If set, the new DynamoDB table will be deleted in case of import errors
|
152
|
+
:return: The Amazon resource number (ARN)
|
153
|
+
"""
|
154
|
+
dynamodb_hook = DynamoDBHook(aws_conn_id=self.aws_conn_id)
|
155
|
+
client = dynamodb_hook.client
|
156
|
+
|
157
|
+
import_table_config = self.import_table_kwargs or {}
|
158
|
+
import_table_creation_config = self.import_table_creation_kwargs or {}
|
159
|
+
|
160
|
+
try:
|
161
|
+
response = client.import_table(
|
162
|
+
S3BucketSource={
|
163
|
+
"S3Bucket": self.s3_bucket,
|
164
|
+
"S3KeyPrefix": self.s3_key,
|
165
|
+
},
|
166
|
+
InputFormat=self.input_format,
|
167
|
+
TableCreationParameters={
|
168
|
+
"TableName": table_name,
|
169
|
+
"AttributeDefinitions": self.dynamodb_attributes,
|
170
|
+
"KeySchema": self.dynamodb_key_schema,
|
171
|
+
"BillingMode": self.billing_mode,
|
172
|
+
**import_table_creation_config,
|
173
|
+
},
|
174
|
+
**import_table_config,
|
175
|
+
)
|
176
|
+
except ClientError as e:
|
177
|
+
self.log.error("Error: failed to load from S3 into DynamoDB table. Error: %s", str(e))
|
178
|
+
raise AirflowException(f"S3 load into DynamoDB table failed with error: {e}")
|
179
|
+
|
180
|
+
if response["ImportTableDescription"]["ImportStatus"] == "FAILED":
|
181
|
+
raise AirflowException(
|
182
|
+
"S3 into Dynamodb job creation failed. Code: "
|
183
|
+
f"{response['ImportTableDescription']['FailureCode']}. "
|
184
|
+
f"Failure: {response['ImportTableDescription']['FailureMessage']}"
|
185
|
+
)
|
186
|
+
|
187
|
+
if self.wait_for_completion:
|
188
|
+
self.log.info("Waiting for S3 into Dynamodb job to complete")
|
189
|
+
waiter = dynamodb_hook.get_waiter("import_table")
|
190
|
+
try:
|
191
|
+
waiter.wait(
|
192
|
+
ImportArn=response["ImportTableDescription"]["ImportArn"],
|
193
|
+
WaiterConfig={"Delay": self.check_interval, "MaxAttempts": self.max_attempts},
|
194
|
+
)
|
195
|
+
except WaiterError:
|
196
|
+
status, error_code, error_msg = dynamodb_hook.get_import_status(
|
197
|
+
response["ImportTableDescription"]["ImportArn"]
|
198
|
+
)
|
199
|
+
if delete_on_error:
|
200
|
+
client.delete_table(TableName=table_name)
|
201
|
+
raise AirflowException(
|
202
|
+
f"S3 import into Dynamodb job failed: Status: {status}. Error: {error_code}. Error message: {error_msg}"
|
203
|
+
)
|
204
|
+
return response["ImportTableDescription"]["ImportArn"]
|
205
|
+
|
206
|
+
def _load_into_existing_table(self) -> str:
|
207
|
+
"""
|
208
|
+
Import S3 key or keys in an existing DynamoDB table.
|
209
|
+
|
210
|
+
:return:The Amazon resource number (ARN)
|
211
|
+
"""
|
212
|
+
if not self.wait_for_completion:
|
213
|
+
raise ValueError("wait_for_completion must be set to True when loading into an existing table")
|
214
|
+
table_keys = [key["AttributeName"] for key in self.dynamodb_key_schema]
|
215
|
+
|
216
|
+
dynamodb_hook = DynamoDBHook(
|
217
|
+
aws_conn_id=self.aws_conn_id, table_name=self.dynamodb_table_name, table_keys=table_keys
|
218
|
+
)
|
219
|
+
client = dynamodb_hook.client
|
220
|
+
|
221
|
+
self.log.info("Loading from S3 into a tmp DynamoDB table %s", self.tmp_table_name)
|
222
|
+
self._load_into_new_table(table_name=self.tmp_table_name, delete_on_error=self.delete_on_error)
|
223
|
+
total_items = 0
|
224
|
+
try:
|
225
|
+
paginator = client.get_paginator("scan")
|
226
|
+
paginate = paginator.paginate(
|
227
|
+
TableName=self.tmp_table_name,
|
228
|
+
Select="ALL_ATTRIBUTES",
|
229
|
+
ReturnConsumedCapacity="NONE",
|
230
|
+
ConsistentRead=True,
|
231
|
+
)
|
232
|
+
self.log.info(
|
233
|
+
"Loading data from %s to %s DynamoDB table", self.tmp_table_name, self.dynamodb_table_name
|
234
|
+
)
|
235
|
+
for page in paginate:
|
236
|
+
total_items += page.get("Count", 0)
|
237
|
+
dynamodb_hook.write_batch_data(items=page["Items"])
|
238
|
+
self.log.info("Number of items loaded: %s", total_items)
|
239
|
+
finally:
|
240
|
+
self.log.info("Delete tmp DynamoDB table %s", self.tmp_table_name)
|
241
|
+
client.delete_table(TableName=self.tmp_table_name)
|
242
|
+
return dynamodb_hook.get_conn().Table(self.dynamodb_table_name).table_arn
|
243
|
+
|
244
|
+
def execute(self, context: Context) -> str:
|
245
|
+
"""
|
246
|
+
Execute S3 to DynamoDB Job from Airflow.
|
247
|
+
|
248
|
+
:param context: The current context of the task instance
|
249
|
+
:return: The Amazon resource number (ARN)
|
250
|
+
"""
|
251
|
+
if self.use_existing_table:
|
252
|
+
self.log.info("Loading from S3 into new DynamoDB table %s", self.dynamodb_table_name)
|
253
|
+
return self._load_into_existing_table()
|
254
|
+
self.log.info("Loading from S3 into existing DynamoDB table %s", self.dynamodb_table_name)
|
255
|
+
return self._load_into_new_table(
|
256
|
+
table_name=self.dynamodb_table_name, delete_on_error=self.delete_on_error
|
257
|
+
)
|
@@ -0,0 +1,67 @@
|
|
1
|
+
{
|
2
|
+
"version": 2,
|
3
|
+
"waiters": {
|
4
|
+
"export_table": {
|
5
|
+
"operation": "DescribeExport",
|
6
|
+
"delay": 30,
|
7
|
+
"maxAttempts": 60,
|
8
|
+
"acceptors": [
|
9
|
+
{
|
10
|
+
"matcher": "path",
|
11
|
+
"expected": "COMPLETED",
|
12
|
+
"argument": "ExportDescription.ExportStatus",
|
13
|
+
"state": "success"
|
14
|
+
},
|
15
|
+
{
|
16
|
+
"matcher": "path",
|
17
|
+
"expected": "FAILED",
|
18
|
+
"argument": "ExportDescription.ExportStatus",
|
19
|
+
"state": "failure"
|
20
|
+
},
|
21
|
+
{
|
22
|
+
"matcher": "path",
|
23
|
+
"expected": "IN_PROGRESS",
|
24
|
+
"argument": "ExportDescription.ExportStatus",
|
25
|
+
"state": "retry"
|
26
|
+
}
|
27
|
+
]
|
28
|
+
},
|
29
|
+
"import_table": {
|
30
|
+
"operation": "DescribeImport",
|
31
|
+
"delay": 30,
|
32
|
+
"maxAttempts": 240,
|
33
|
+
"acceptors": [
|
34
|
+
{
|
35
|
+
"matcher": "path",
|
36
|
+
"expected": "COMPLETED",
|
37
|
+
"argument": "ImportTableDescription.ImportStatus",
|
38
|
+
"state": "success"
|
39
|
+
},
|
40
|
+
{
|
41
|
+
"matcher": "path",
|
42
|
+
"expected": "CANCELLING",
|
43
|
+
"argument": "ImportTableDescription.ImportStatus",
|
44
|
+
"state": "failure"
|
45
|
+
},
|
46
|
+
{
|
47
|
+
"matcher": "path",
|
48
|
+
"expected": "CANCELLED",
|
49
|
+
"argument": "ImportTableDescription.ImportStatus",
|
50
|
+
"state": "failure"
|
51
|
+
},
|
52
|
+
{
|
53
|
+
"matcher": "path",
|
54
|
+
"expected": "FAILED",
|
55
|
+
"argument": "ImportTableDescription.ImportStatus",
|
56
|
+
"state": "failure"
|
57
|
+
},
|
58
|
+
{
|
59
|
+
"matcher": "path",
|
60
|
+
"expected": "IN_PROGRESS",
|
61
|
+
"argument": "ImportTableDescription.ImportStatus",
|
62
|
+
"state": "retry"
|
63
|
+
}
|
64
|
+
]
|
65
|
+
}
|
66
|
+
}
|
67
|
+
}
|
@@ -28,8 +28,9 @@ def get_provider_info():
|
|
28
28
|
"name": "Amazon",
|
29
29
|
"description": "Amazon integration (including `Amazon Web Services (AWS) <https://aws.amazon.com/>`__).\n",
|
30
30
|
"state": "ready",
|
31
|
-
"source-date-epoch":
|
31
|
+
"source-date-epoch": 1717051501,
|
32
32
|
"versions": [
|
33
|
+
"8.24.0",
|
33
34
|
"8.23.0",
|
34
35
|
"8.22.0",
|
35
36
|
"8.21.0",
|
@@ -1022,6 +1023,12 @@ def get_provider_info():
|
|
1022
1023
|
"how-to-guide": "/docs/apache-airflow-providers-amazon/transfer/azure_blob_to_s3.rst",
|
1023
1024
|
"python-module": "airflow.providers.amazon.aws.transfers.azure_blob_to_s3",
|
1024
1025
|
},
|
1026
|
+
{
|
1027
|
+
"source-integration-name": "Amazon Simple Storage Service (S3)",
|
1028
|
+
"target-integration-name": "Amazon DynamoDB",
|
1029
|
+
"how-to-guide": "/docs/apache-airflow-providers-amazon/transfer/s3_to_dynamodb.rst",
|
1030
|
+
"python-module": "airflow.providers.amazon.aws.transfers.s3_to_dynamodb",
|
1031
|
+
},
|
1025
1032
|
],
|
1026
1033
|
"extra-links": [
|
1027
1034
|
"airflow.providers.amazon.aws.links.athena.AthenaQueryResultsLink",
|
@@ -28,7 +28,7 @@ build-backend = "flit_core.buildapi"
|
|
28
28
|
|
29
29
|
[project]
|
30
30
|
name = "apache-airflow-providers-amazon"
|
31
|
-
version = "8.
|
31
|
+
version = "8.24.0.rc1"
|
32
32
|
description = "Provider package apache-airflow-providers-amazon for Apache Airflow"
|
33
33
|
readme = "README.rst"
|
34
34
|
authors = [
|
@@ -72,8 +72,8 @@ dependencies = [
|
|
72
72
|
]
|
73
73
|
|
74
74
|
[project.urls]
|
75
|
-
"Documentation" = "https://airflow.apache.org/docs/apache-airflow-providers-amazon/8.
|
76
|
-
"Changelog" = "https://airflow.apache.org/docs/apache-airflow-providers-amazon/8.
|
75
|
+
"Documentation" = "https://airflow.apache.org/docs/apache-airflow-providers-amazon/8.24.0"
|
76
|
+
"Changelog" = "https://airflow.apache.org/docs/apache-airflow-providers-amazon/8.24.0/changelog.html"
|
77
77
|
"Bug Tracker" = "https://github.com/apache/airflow/issues"
|
78
78
|
"Source Code" = "https://github.com/apache/airflow"
|
79
79
|
"Slack Chat" = "https://s.apache.org/airflow-slack"
|
apache_airflow_providers_amazon-8.23.0rc1/airflow/providers/amazon/aws/waiters/dynamodb.json
DELETED
@@ -1,30 +0,0 @@
|
|
1
|
-
{
|
2
|
-
"version": 2,
|
3
|
-
"waiters": {
|
4
|
-
"export_table": {
|
5
|
-
"operation": "DescribeExport",
|
6
|
-
"delay": 30,
|
7
|
-
"maxAttempts": 60,
|
8
|
-
"acceptors": [
|
9
|
-
{
|
10
|
-
"matcher": "path",
|
11
|
-
"expected": "COMPLETED",
|
12
|
-
"argument": "ExportDescription.ExportStatus",
|
13
|
-
"state": "success"
|
14
|
-
},
|
15
|
-
{
|
16
|
-
"matcher": "path",
|
17
|
-
"expected": "FAILED",
|
18
|
-
"argument": "ExportDescription.ExportStatus",
|
19
|
-
"state": "failure"
|
20
|
-
},
|
21
|
-
{
|
22
|
-
"matcher": "path",
|
23
|
-
"expected": "IN_PROGRESS",
|
24
|
-
"argument": "ExportDescription.ExportStatus",
|
25
|
-
"state": "retry"
|
26
|
-
}
|
27
|
-
]
|
28
|
-
}
|
29
|
-
}
|
30
|
-
}
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|