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