aws-lambda-powertools 3.4.2a1__tar.gz → 3.5.1a0__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.
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/PKG-INFO +4 -6
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/event_handler/api_gateway.py +2 -2
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/event_handler/openapi/dependant.py +1 -1
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/logging/formatter.py +31 -1
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/logging/logger.py +22 -10
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/shared/version.py +1 -1
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/data_classes/__init__.py +3 -0
- aws_lambda_powertools-3.5.1a0/aws_lambda_powertools/utilities/data_classes/transfer_family_event.py +190 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/idempotency/base.py +10 -1
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/idempotency/idempotency.py +9 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/idempotency/persistence/base.py +12 -5
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/idempotency/serialization/functions.py +1 -1
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/parser/models/__init__.py +2 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/parser/models/apigwv2.py +1 -1
- aws_lambda_powertools-3.5.1a0/aws_lambda_powertools/utilities/parser/models/transfer_family.py +12 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/pyproject.toml +35 -35
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/setup.py +3 -3
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/LICENSE +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/README.md +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/THIRD-PARTY-LICENSES +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/__init__.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/event_handler/__init__.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/event_handler/appsync.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/event_handler/bedrock_agent.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/event_handler/content_types.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/event_handler/exceptions.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/event_handler/graphql_appsync/__init__.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/event_handler/graphql_appsync/_registry.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/event_handler/graphql_appsync/base.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/event_handler/graphql_appsync/exceptions.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/event_handler/graphql_appsync/router.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/event_handler/lambda_function_url.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/event_handler/middlewares/__init__.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/event_handler/middlewares/base.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/event_handler/middlewares/openapi_validation.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/event_handler/middlewares/schema_validation.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/event_handler/openapi/__init__.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/event_handler/openapi/compat.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/event_handler/openapi/constants.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/event_handler/openapi/encoders.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/event_handler/openapi/exceptions.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/event_handler/openapi/models.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/event_handler/openapi/params.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/event_handler/openapi/pydantic_loader.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/event_handler/openapi/swagger_ui/__init__.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/event_handler/openapi/swagger_ui/html.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/event_handler/openapi/swagger_ui/oauth2.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/event_handler/openapi/swagger_ui/swagger-ui-bundle.min.js +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/event_handler/openapi/swagger_ui/swagger-ui.min.css +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/event_handler/openapi/types.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/event_handler/router.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/event_handler/types.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/event_handler/util.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/event_handler/vpc_lattice.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/exceptions/__init__.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/logging/__init__.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/logging/constants.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/logging/correlation_paths.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/logging/exceptions.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/logging/filters.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/logging/formatters/__init__.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/logging/formatters/datadog.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/logging/lambda_context.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/logging/types.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/logging/utils.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/metrics/__init__.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/metrics/base.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/metrics/exceptions.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/metrics/functions.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/metrics/metric.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/metrics/metrics.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/metrics/provider/__init__.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/metrics/provider/base.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/metrics/provider/cloudwatch_emf/__init__.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/metrics/provider/cloudwatch_emf/cloudwatch.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/metrics/provider/cloudwatch_emf/constants.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/metrics/provider/cloudwatch_emf/exceptions.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/metrics/provider/cloudwatch_emf/metric_properties.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/metrics/provider/cloudwatch_emf/types.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/metrics/provider/cold_start.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/metrics/provider/datadog/__init__.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/metrics/provider/datadog/datadog.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/metrics/provider/datadog/metrics.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/metrics/provider/datadog/warnings.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/metrics/types.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/middleware_factory/__init__.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/middleware_factory/exceptions.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/middleware_factory/factory.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/package_logger.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/py.typed +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/shared/__init__.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/shared/cache_dict.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/shared/constants.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/shared/cookies.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/shared/dynamodb_deserializer.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/shared/functions.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/shared/headers_serializer.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/shared/json_encoder.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/shared/lazy_import.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/shared/types.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/shared/user_agent.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/tracing/__init__.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/tracing/base.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/tracing/extensions.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/tracing/tracer.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/__init__.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/batch/__init__.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/batch/base.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/batch/decorators.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/batch/exceptions.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/batch/sqs_fifo_partial_processor.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/batch/types.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/data_classes/active_mq_event.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/data_classes/alb_event.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/data_classes/api_gateway_authorizer_event.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/data_classes/api_gateway_proxy_event.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/data_classes/appsync/__init__.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/data_classes/appsync/scalar_types_utils.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/data_classes/appsync_authorizer_event.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/data_classes/appsync_resolver_event.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/data_classes/aws_config_rule_event.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/data_classes/bedrock_agent_event.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/data_classes/cloud_watch_alarm_event.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/data_classes/cloud_watch_custom_widget_event.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/data_classes/cloud_watch_logs_event.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/data_classes/cloudformation_custom_resource_event.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/data_classes/code_deploy_lifecycle_hook_event.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/data_classes/code_pipeline_job_event.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/data_classes/cognito_user_pool_event.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/data_classes/common.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/data_classes/connect_contact_flow_event.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/data_classes/dynamo_db_stream_event.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/data_classes/event_bridge_event.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/data_classes/event_source.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/data_classes/kafka_event.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/data_classes/kinesis_firehose_event.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/data_classes/kinesis_stream_event.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/data_classes/lambda_function_url_event.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/data_classes/rabbit_mq_event.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/data_classes/s3_batch_operation_event.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/data_classes/s3_event.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/data_classes/s3_object_event.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/data_classes/secrets_manager_event.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/data_classes/ses_event.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/data_classes/shared_functions.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/data_classes/sns_event.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/data_classes/sqs_event.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/data_classes/vpc_lattice.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/data_masking/__init__.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/data_masking/base.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/data_masking/constants.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/data_masking/exceptions.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/data_masking/provider/__init__.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/data_masking/provider/base.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/data_masking/provider/kms/__init__.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/data_masking/provider/kms/aws_encryption_sdk.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/feature_flags/__init__.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/feature_flags/appconfig.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/feature_flags/base.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/feature_flags/comparators.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/feature_flags/constants.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/feature_flags/exceptions.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/feature_flags/feature_flags.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/feature_flags/schema.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/feature_flags/types.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/idempotency/__init__.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/idempotency/config.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/idempotency/exceptions.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/idempotency/hook.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/idempotency/persistence/__init__.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/idempotency/persistence/datarecord.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/idempotency/persistence/dynamodb.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/idempotency/persistence/redis.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/idempotency/serialization/__init__.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/idempotency/serialization/base.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/idempotency/serialization/custom_dict.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/idempotency/serialization/dataclass.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/idempotency/serialization/no_op.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/idempotency/serialization/pydantic.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/jmespath_utils/__init__.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/jmespath_utils/envelopes.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/parameters/__init__.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/parameters/appconfig.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/parameters/base.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/parameters/constants.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/parameters/dynamodb.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/parameters/exceptions.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/parameters/secrets.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/parameters/ssm.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/parameters/types.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/parser/__init__.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/parser/envelopes/__init__.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/parser/envelopes/apigw.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/parser/envelopes/apigw_websocket.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/parser/envelopes/apigwv2.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/parser/envelopes/base.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/parser/envelopes/bedrock_agent.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/parser/envelopes/cloudwatch.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/parser/envelopes/dynamodb.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/parser/envelopes/event_bridge.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/parser/envelopes/kafka.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/parser/envelopes/kinesis.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/parser/envelopes/kinesis_firehose.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/parser/envelopes/lambda_function_url.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/parser/envelopes/sns.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/parser/envelopes/sqs.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/parser/envelopes/vpc_lattice.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/parser/envelopes/vpc_latticev2.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/parser/exceptions.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/parser/functions.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/parser/models/alb.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/parser/models/apigw.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/parser/models/apigw_websocket.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/parser/models/bedrock_agent.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/parser/models/cloudformation_custom_resource.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/parser/models/cloudwatch.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/parser/models/dynamodb.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/parser/models/event_bridge.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/parser/models/kafka.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/parser/models/kinesis.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/parser/models/kinesis_firehose.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/parser/models/kinesis_firehose_sqs.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/parser/models/lambda_function_url.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/parser/models/s3.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/parser/models/s3_batch_operation.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/parser/models/s3_event_notification.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/parser/models/s3_object_event.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/parser/models/ses.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/parser/models/sns.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/parser/models/sqs.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/parser/models/vpc_lattice.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/parser/models/vpc_latticev2.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/parser/parser.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/parser/types.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/serialization.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/streaming/__init__.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/streaming/_s3_seekable_io.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/streaming/compat.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/streaming/constants.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/streaming/s3_object.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/streaming/transformations/__init__.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/streaming/transformations/base.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/streaming/transformations/csv.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/streaming/transformations/gzip.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/streaming/transformations/zip.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/streaming/types.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/typing/__init__.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/typing/lambda_client_context.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/typing/lambda_client_context_mobile_client.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/typing/lambda_cognito_identity.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/typing/lambda_context.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/validation/__init__.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/validation/base.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/validation/envelopes.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/validation/exceptions.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/validation/validator.py +0 -0
- {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/warnings/__init__.py +0 -0
|
@@ -1,19 +1,17 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
2
|
-
Name:
|
|
3
|
-
Version: 3.
|
|
1
|
+
Metadata-Version: 2.3
|
|
2
|
+
Name: aws_lambda_powertools
|
|
3
|
+
Version: 3.5.1a0
|
|
4
4
|
Summary: Powertools for AWS Lambda (Python) is a developer toolkit to implement Serverless best practices and increase developer velocity.
|
|
5
|
-
Home-page: https://github.com/aws-powertools/powertools-lambda-python
|
|
6
5
|
License: MIT
|
|
7
6
|
Keywords: aws_lambda_powertools,aws,tracing,logging,lambda,powertools,feature_flags,idempotency,middleware
|
|
8
7
|
Author: Amazon Web Services
|
|
9
|
-
Requires-Python: >=3.
|
|
8
|
+
Requires-Python: >=3.9,<4.0.0
|
|
10
9
|
Classifier: Development Status :: 5 - Production/Stable
|
|
11
10
|
Classifier: Intended Audience :: Developers
|
|
12
11
|
Classifier: License :: OSI Approved :: MIT License
|
|
13
12
|
Classifier: License :: OSI Approved :: MIT No Attribution License (MIT-0)
|
|
14
13
|
Classifier: Natural Language :: English
|
|
15
14
|
Classifier: Programming Language :: Python :: 3
|
|
16
|
-
Classifier: Programming Language :: Python :: 3.8
|
|
17
15
|
Classifier: Programming Language :: Python :: 3.9
|
|
18
16
|
Classifier: Programming Language :: Python :: 3.10
|
|
19
17
|
Classifier: Programming Language :: Python :: 3.11
|
|
@@ -2521,7 +2521,7 @@ class Router(BaseRouter):
|
|
|
2521
2521
|
frozen_responses = _FrozenDict(responses) if responses else None
|
|
2522
2522
|
frozen_tags = frozenset(tags) if tags else None
|
|
2523
2523
|
frozen_security = _FrozenListDict(security) if security else None
|
|
2524
|
-
|
|
2524
|
+
frozen_openapi_extensions = _FrozenDict(openapi_extensions) if openapi_extensions else None
|
|
2525
2525
|
|
|
2526
2526
|
route_key = (
|
|
2527
2527
|
rule,
|
|
@@ -2537,7 +2537,7 @@ class Router(BaseRouter):
|
|
|
2537
2537
|
operation_id,
|
|
2538
2538
|
include_in_schema,
|
|
2539
2539
|
frozen_security,
|
|
2540
|
-
|
|
2540
|
+
frozen_openapi_extensions,
|
|
2541
2541
|
deprecated,
|
|
2542
2542
|
)
|
|
2543
2543
|
|
|
@@ -106,7 +106,7 @@ def get_typed_signature(call: Callable[..., Any]) -> inspect.Signature:
|
|
|
106
106
|
signature = inspect.signature(call)
|
|
107
107
|
|
|
108
108
|
# Gets the global namespace for the call. This is used to resolve forward references.
|
|
109
|
-
globalns = getattr(call, "
|
|
109
|
+
globalns = getattr(call, "__globals__", {})
|
|
110
110
|
|
|
111
111
|
typed_params = [
|
|
112
112
|
inspect.Parameter(
|
|
@@ -7,10 +7,11 @@ import os
|
|
|
7
7
|
import time
|
|
8
8
|
import traceback
|
|
9
9
|
from abc import ABCMeta, abstractmethod
|
|
10
|
+
from contextlib import contextmanager
|
|
10
11
|
from contextvars import ContextVar
|
|
11
12
|
from datetime import datetime, timezone
|
|
12
13
|
from functools import partial
|
|
13
|
-
from typing import TYPE_CHECKING, Any, Callable, Iterable
|
|
14
|
+
from typing import TYPE_CHECKING, Any, Callable, Generator, Iterable
|
|
14
15
|
|
|
15
16
|
from aws_lambda_powertools.shared import constants
|
|
16
17
|
from aws_lambda_powertools.shared.functions import powertools_dev_is_set
|
|
@@ -62,6 +63,10 @@ class BasePowertoolsFormatter(logging.Formatter, metaclass=ABCMeta):
|
|
|
62
63
|
"""Removes any previously added logging keys"""
|
|
63
64
|
raise NotImplementedError()
|
|
64
65
|
|
|
66
|
+
@contextmanager
|
|
67
|
+
def append_context_keys(self, **additional_keys: Any) -> Generator[None, None, None]:
|
|
68
|
+
yield
|
|
69
|
+
|
|
65
70
|
# These specific thread-safe methods are necessary to manage shared context in concurrent environments.
|
|
66
71
|
# They prevent race conditions and ensure data consistency across multiple threads.
|
|
67
72
|
def thread_safe_append_keys(self, **additional_keys) -> None:
|
|
@@ -263,6 +268,31 @@ class LambdaPowertoolsFormatter(BasePowertoolsFormatter):
|
|
|
263
268
|
self.log_format = dict.fromkeys(self.log_record_order)
|
|
264
269
|
self.log_format.update(**self.keys_combined)
|
|
265
270
|
|
|
271
|
+
@contextmanager
|
|
272
|
+
def append_context_keys(self, **additional_keys: Any) -> Generator[None, None, None]:
|
|
273
|
+
"""
|
|
274
|
+
Context manager to temporarily add logging keys.
|
|
275
|
+
|
|
276
|
+
Parameters:
|
|
277
|
+
-----------
|
|
278
|
+
**keys: Any
|
|
279
|
+
Key-value pairs to include in the log context during the lifespan of the context manager.
|
|
280
|
+
|
|
281
|
+
Example:
|
|
282
|
+
--------
|
|
283
|
+
>>> logger = Logger(service="example_service")
|
|
284
|
+
>>> with logger.append_context_keys(user_id="123", operation="process"):
|
|
285
|
+
>>> logger.info("Log with context")
|
|
286
|
+
>>> logger.info("Log without context")
|
|
287
|
+
"""
|
|
288
|
+
# Add keys to the context
|
|
289
|
+
self.append_keys(**additional_keys)
|
|
290
|
+
try:
|
|
291
|
+
yield
|
|
292
|
+
finally:
|
|
293
|
+
# Remove the keys after exiting the context
|
|
294
|
+
self.remove_keys(additional_keys.keys())
|
|
295
|
+
|
|
266
296
|
# These specific thread-safe methods are necessary to manage shared context in concurrent environments.
|
|
267
297
|
# They prevent race conditions and ensure data consistency across multiple threads.
|
|
268
298
|
def thread_safe_append_keys(self, **additional_keys) -> None:
|
|
@@ -7,16 +7,8 @@ import os
|
|
|
7
7
|
import random
|
|
8
8
|
import sys
|
|
9
9
|
import warnings
|
|
10
|
-
from
|
|
11
|
-
|
|
12
|
-
TYPE_CHECKING,
|
|
13
|
-
Any,
|
|
14
|
-
Callable,
|
|
15
|
-
Iterable,
|
|
16
|
-
Mapping,
|
|
17
|
-
TypeVar,
|
|
18
|
-
overload,
|
|
19
|
-
)
|
|
10
|
+
from contextlib import contextmanager
|
|
11
|
+
from typing import IO, TYPE_CHECKING, Any, Callable, Generator, Iterable, Mapping, TypeVar, overload
|
|
20
12
|
|
|
21
13
|
from aws_lambda_powertools.logging.constants import (
|
|
22
14
|
LOGGER_ATTRIBUTE_PRECONFIGURED,
|
|
@@ -589,6 +581,26 @@ class Logger:
|
|
|
589
581
|
def remove_keys(self, keys: Iterable[str]) -> None:
|
|
590
582
|
self.registered_formatter.remove_keys(keys)
|
|
591
583
|
|
|
584
|
+
@contextmanager
|
|
585
|
+
def append_context_keys(self, **additional_keys: Any) -> Generator[None, None, None]:
|
|
586
|
+
"""
|
|
587
|
+
Context manager to temporarily add logging keys.
|
|
588
|
+
|
|
589
|
+
Parameters:
|
|
590
|
+
-----------
|
|
591
|
+
**keys: Any
|
|
592
|
+
Key-value pairs to include in the log context during the lifespan of the context manager.
|
|
593
|
+
|
|
594
|
+
Example:
|
|
595
|
+
--------
|
|
596
|
+
>>> logger = Logger(service="example_service")
|
|
597
|
+
>>> with logger.append_context_keys(user_id="123", operation="process"):
|
|
598
|
+
>>> logger.info("Log with context")
|
|
599
|
+
>>> logger.info("Log without context")
|
|
600
|
+
"""
|
|
601
|
+
with self.registered_formatter.append_context_keys(**additional_keys):
|
|
602
|
+
yield
|
|
603
|
+
|
|
592
604
|
# These specific thread-safe methods are necessary to manage shared context in concurrent environments.
|
|
593
605
|
# They prevent race conditions and ensure data consistency across multiple threads.
|
|
594
606
|
def thread_safe_append_keys(self, **additional_keys: object) -> None:
|
|
@@ -45,6 +45,7 @@ from .secrets_manager_event import SecretsManagerEvent
|
|
|
45
45
|
from .ses_event import SESEvent
|
|
46
46
|
from .sns_event import SNSEvent
|
|
47
47
|
from .sqs_event import SQSEvent
|
|
48
|
+
from .transfer_family_event import TransferFamilyAuthorizer, TransferFamilyAuthorizerResponse
|
|
48
49
|
from .vpc_lattice import VPCLatticeEvent, VPCLatticeEventV2
|
|
49
50
|
|
|
50
51
|
__all__ = [
|
|
@@ -87,4 +88,6 @@ __all__ = [
|
|
|
87
88
|
"VPCLatticeEvent",
|
|
88
89
|
"VPCLatticeEventV2",
|
|
89
90
|
"CloudFormationCustomResourceEvent",
|
|
91
|
+
"TransferFamilyAuthorizerResponse",
|
|
92
|
+
"TransferFamilyAuthorizer",
|
|
90
93
|
]
|
aws_lambda_powertools-3.5.1a0/aws_lambda_powertools/utilities/data_classes/transfer_family_event.py
ADDED
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from typing import Any, Literal
|
|
4
|
+
|
|
5
|
+
from aws_lambda_powertools.utilities.data_classes.common import (
|
|
6
|
+
DictWrapper,
|
|
7
|
+
)
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
class TransferFamilyAuthorizer(DictWrapper):
|
|
11
|
+
@property
|
|
12
|
+
def username(self) -> str:
|
|
13
|
+
"""The username used for authentication"""
|
|
14
|
+
return self["username"]
|
|
15
|
+
|
|
16
|
+
@property
|
|
17
|
+
def password(self) -> str | None:
|
|
18
|
+
"""
|
|
19
|
+
The password used for authentication.
|
|
20
|
+
None in case customer authenticating with certificates
|
|
21
|
+
"""
|
|
22
|
+
return self["password"]
|
|
23
|
+
|
|
24
|
+
@property
|
|
25
|
+
def protocol(self) -> str:
|
|
26
|
+
"""The protocol can be SFTP, FTP or FTPS"""
|
|
27
|
+
return self["protocol"]
|
|
28
|
+
|
|
29
|
+
@property
|
|
30
|
+
def server_id(self) -> str:
|
|
31
|
+
"""The AWS Transfer Family ServerID"""
|
|
32
|
+
return self["serverId"]
|
|
33
|
+
|
|
34
|
+
@property
|
|
35
|
+
def source_ip(self) -> str:
|
|
36
|
+
"""The customer IP used for connection"""
|
|
37
|
+
return self["sourceIp"]
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
class TransferFamilyAuthorizerResponse:
|
|
41
|
+
|
|
42
|
+
def _build_authentication_response(
|
|
43
|
+
self,
|
|
44
|
+
role_arn: str,
|
|
45
|
+
policy: str | None = None,
|
|
46
|
+
home_directory: str | None = None,
|
|
47
|
+
home_directory_details: dict | None = None,
|
|
48
|
+
home_directory_type: Literal["LOGICAL", "PATH"] = "PATH",
|
|
49
|
+
user_gid: int | None = None,
|
|
50
|
+
user_uid: int | None = None,
|
|
51
|
+
public_keys: str | None = None,
|
|
52
|
+
) -> dict[str, Any]:
|
|
53
|
+
|
|
54
|
+
response: dict[str, Any] = {}
|
|
55
|
+
|
|
56
|
+
if home_directory_type == "PATH":
|
|
57
|
+
if not home_directory:
|
|
58
|
+
raise ValueError("home_directory must be set when home_directory_type is PATH")
|
|
59
|
+
|
|
60
|
+
response["HomeDirectory"] = home_directory
|
|
61
|
+
elif home_directory_type == "LOGICAL":
|
|
62
|
+
if not home_directory_details:
|
|
63
|
+
raise ValueError("home_directory_details must be set when home_directory_type is LOGICAL")
|
|
64
|
+
|
|
65
|
+
response["HomeDirectoryDetails"] = [home_directory_details]
|
|
66
|
+
|
|
67
|
+
else:
|
|
68
|
+
raise ValueError(f"Invalid home_directory_type: {home_directory_type}")
|
|
69
|
+
|
|
70
|
+
if user_uid is not None:
|
|
71
|
+
response["PosixProfile"] = {"Gid": user_gid, "Uid": user_gid}
|
|
72
|
+
|
|
73
|
+
if policy:
|
|
74
|
+
response["Policy"] = policy
|
|
75
|
+
|
|
76
|
+
if public_keys:
|
|
77
|
+
response["PublicKeys"] = public_keys
|
|
78
|
+
|
|
79
|
+
response["Role"] = role_arn
|
|
80
|
+
response["HomeDirectoryType"] = home_directory_type
|
|
81
|
+
|
|
82
|
+
return response
|
|
83
|
+
|
|
84
|
+
def build_authentication_response_efs(
|
|
85
|
+
self,
|
|
86
|
+
role_arn: str,
|
|
87
|
+
user_gid: int,
|
|
88
|
+
user_uid: int,
|
|
89
|
+
policy: str | None = None,
|
|
90
|
+
home_directory: str | None = None,
|
|
91
|
+
home_directory_details: dict | None = None,
|
|
92
|
+
home_directory_type: Literal["LOGICAL", "PATH"] = "PATH",
|
|
93
|
+
public_keys: str | None = None,
|
|
94
|
+
) -> dict[str, Any]:
|
|
95
|
+
"""
|
|
96
|
+
Build an authentication response for AWS Transfer Family using EFS (Elastic File System).
|
|
97
|
+
|
|
98
|
+
Parameters:
|
|
99
|
+
-----------
|
|
100
|
+
role_arn : str
|
|
101
|
+
The Amazon Resource Name (ARN) of the IAM role.
|
|
102
|
+
user_gid : int
|
|
103
|
+
The group ID of the user.
|
|
104
|
+
user_uid : int
|
|
105
|
+
The user ID.
|
|
106
|
+
policy : str | None, optional
|
|
107
|
+
The IAM policy document. Defaults to None.
|
|
108
|
+
home_directory : str | None, optional
|
|
109
|
+
The home directory path. Required if home_directory_type is "PATH". Defaults to None.
|
|
110
|
+
home_directory_details : dict | None, optional
|
|
111
|
+
Details of the home directory. Required if home_directory_type is "LOGICAL". Defaults to None.
|
|
112
|
+
home_directory_type : Literal["LOGICAL", "PATH"], optional
|
|
113
|
+
The type of home directory. Must be either "LOGICAL" or "PATH". Defaults to "PATH".
|
|
114
|
+
public_keys : str | None, optional
|
|
115
|
+
The public keys associated with the user. Defaults to None.
|
|
116
|
+
|
|
117
|
+
Returns:
|
|
118
|
+
--------
|
|
119
|
+
dict[str, Any]
|
|
120
|
+
A dictionary containing the authentication response with various details such as
|
|
121
|
+
role ARN, policy, home directory information, and user details.
|
|
122
|
+
|
|
123
|
+
Raises:
|
|
124
|
+
-------
|
|
125
|
+
ValueError
|
|
126
|
+
If an invalid home_directory_type is provided or if required parameters are missing
|
|
127
|
+
for the specified home_directory_type.
|
|
128
|
+
"""
|
|
129
|
+
|
|
130
|
+
return self._build_authentication_response(
|
|
131
|
+
role_arn=role_arn,
|
|
132
|
+
policy=policy,
|
|
133
|
+
home_directory=home_directory,
|
|
134
|
+
home_directory_details=home_directory_details,
|
|
135
|
+
home_directory_type=home_directory_type,
|
|
136
|
+
public_keys=public_keys,
|
|
137
|
+
user_gid=user_gid,
|
|
138
|
+
user_uid=user_uid,
|
|
139
|
+
)
|
|
140
|
+
|
|
141
|
+
def build_authentication_response_s3(
|
|
142
|
+
self,
|
|
143
|
+
role_arn: str,
|
|
144
|
+
policy: str | None = None,
|
|
145
|
+
home_directory: str | None = None,
|
|
146
|
+
home_directory_details: dict | None = None,
|
|
147
|
+
home_directory_type: Literal["LOGICAL", "PATH"] = "PATH",
|
|
148
|
+
public_keys: str | None = None,
|
|
149
|
+
) -> dict[str, Any]:
|
|
150
|
+
"""
|
|
151
|
+
Build an authentication response for Amazon S3.
|
|
152
|
+
|
|
153
|
+
This method constructs an authentication response tailored for S3 access,
|
|
154
|
+
likely by calling an internal method with the provided parameters.
|
|
155
|
+
|
|
156
|
+
Parameters:
|
|
157
|
+
-----------
|
|
158
|
+
role_arn : str
|
|
159
|
+
The Amazon Resource Name (ARN) of the IAM role for S3 access.
|
|
160
|
+
policy : str | None, optional
|
|
161
|
+
The IAM policy document for S3 access. Defaults to None.
|
|
162
|
+
home_directory : str | None, optional
|
|
163
|
+
The home directory path in S3. Required if home_directory_type is "PATH". Defaults to None.
|
|
164
|
+
home_directory_details : dict | None, optional
|
|
165
|
+
Details of the home directory in S3. Required if home_directory_type is "LOGICAL". Defaults to None.
|
|
166
|
+
home_directory_type : Literal["LOGICAL", "PATH"], optional
|
|
167
|
+
The type of home directory in S3. Must be either "LOGICAL" or "PATH". Defaults to "PATH".
|
|
168
|
+
public_keys : str | None, optional
|
|
169
|
+
The public keys associated with the user for S3 access. Defaults to None.
|
|
170
|
+
|
|
171
|
+
Returns:
|
|
172
|
+
--------
|
|
173
|
+
dict[str, Any]
|
|
174
|
+
A dictionary containing the authentication response with various details such as
|
|
175
|
+
role ARN, policy, home directory information, and potentially other S3-specific attributes.
|
|
176
|
+
|
|
177
|
+
Raises:
|
|
178
|
+
-------
|
|
179
|
+
ValueError
|
|
180
|
+
If an invalid home_directory_type is provided or if required parameters are missing
|
|
181
|
+
for the specified home_directory_type.
|
|
182
|
+
"""
|
|
183
|
+
return self._build_authentication_response(
|
|
184
|
+
role_arn=role_arn,
|
|
185
|
+
policy=policy,
|
|
186
|
+
home_directory=home_directory,
|
|
187
|
+
home_directory_details=home_directory_details,
|
|
188
|
+
home_directory_type=home_directory_type,
|
|
189
|
+
public_keys=public_keys,
|
|
190
|
+
)
|
|
@@ -74,6 +74,7 @@ class IdempotencyHandler:
|
|
|
74
74
|
config: IdempotencyConfig,
|
|
75
75
|
persistence_store: BasePersistenceLayer,
|
|
76
76
|
output_serializer: BaseIdempotencySerializer | None = None,
|
|
77
|
+
key_prefix: str | None = None,
|
|
77
78
|
function_args: tuple | None = None,
|
|
78
79
|
function_kwargs: dict | None = None,
|
|
79
80
|
):
|
|
@@ -91,6 +92,8 @@ class IdempotencyHandler:
|
|
|
91
92
|
output_serializer: BaseIdempotencySerializer | None
|
|
92
93
|
Serializer to transform the data to and from a dictionary.
|
|
93
94
|
If not supplied, no serialization is done via the NoOpSerializer
|
|
95
|
+
key_prefix: str | Optional
|
|
96
|
+
Custom prefix for idempotency key: key_prefix#hash
|
|
94
97
|
function_args: tuple | None
|
|
95
98
|
Function arguments
|
|
96
99
|
function_kwargs: dict | None
|
|
@@ -102,8 +105,14 @@ class IdempotencyHandler:
|
|
|
102
105
|
self.fn_args = function_args
|
|
103
106
|
self.fn_kwargs = function_kwargs
|
|
104
107
|
self.config = config
|
|
108
|
+
self.key_prefix = key_prefix
|
|
109
|
+
|
|
110
|
+
persistence_store.configure(
|
|
111
|
+
config=config,
|
|
112
|
+
function_name=f"{self.function.__module__}.{self.function.__qualname__}",
|
|
113
|
+
key_prefix=self.key_prefix,
|
|
114
|
+
)
|
|
105
115
|
|
|
106
|
-
persistence_store.configure(config, f"{self.function.__module__}.{self.function.__qualname__}")
|
|
107
116
|
self.persistence_store = persistence_store
|
|
108
117
|
|
|
109
118
|
def handle(self) -> Any:
|
|
@@ -40,6 +40,7 @@ def idempotent(
|
|
|
40
40
|
context: LambdaContext,
|
|
41
41
|
persistence_store: BasePersistenceLayer,
|
|
42
42
|
config: IdempotencyConfig | None = None,
|
|
43
|
+
key_prefix: str | None = None,
|
|
43
44
|
**kwargs,
|
|
44
45
|
) -> Any:
|
|
45
46
|
"""
|
|
@@ -57,6 +58,8 @@ def idempotent(
|
|
|
57
58
|
Instance of BasePersistenceLayer to store data
|
|
58
59
|
config: IdempotencyConfig
|
|
59
60
|
Configuration
|
|
61
|
+
key_prefix: str | Optional
|
|
62
|
+
Custom prefix for idempotency key: key_prefix#hash
|
|
60
63
|
|
|
61
64
|
Examples
|
|
62
65
|
--------
|
|
@@ -94,6 +97,7 @@ def idempotent(
|
|
|
94
97
|
function_payload=event,
|
|
95
98
|
config=config,
|
|
96
99
|
persistence_store=persistence_store,
|
|
100
|
+
key_prefix=key_prefix,
|
|
97
101
|
function_args=args,
|
|
98
102
|
function_kwargs=kwargs,
|
|
99
103
|
)
|
|
@@ -108,6 +112,7 @@ def idempotent_function(
|
|
|
108
112
|
persistence_store: BasePersistenceLayer,
|
|
109
113
|
config: IdempotencyConfig | None = None,
|
|
110
114
|
output_serializer: BaseIdempotencySerializer | type[BaseIdempotencyModelSerializer] | None = None,
|
|
115
|
+
key_prefix: str | None = None,
|
|
111
116
|
**kwargs: Any,
|
|
112
117
|
) -> Any:
|
|
113
118
|
"""
|
|
@@ -128,6 +133,8 @@ def idempotent_function(
|
|
|
128
133
|
If not supplied, no serialization is done via the NoOpSerializer.
|
|
129
134
|
In case a serializer of type inheriting BaseIdempotencyModelSerializer is given,
|
|
130
135
|
the serializer is derived from the function return type.
|
|
136
|
+
key_prefix: str | Optional
|
|
137
|
+
Custom prefix for idempotency key: key_prefix#hash
|
|
131
138
|
|
|
132
139
|
Examples
|
|
133
140
|
--------
|
|
@@ -154,6 +161,7 @@ def idempotent_function(
|
|
|
154
161
|
persistence_store=persistence_store,
|
|
155
162
|
config=config,
|
|
156
163
|
output_serializer=output_serializer,
|
|
164
|
+
key_prefix=key_prefix,
|
|
157
165
|
**kwargs,
|
|
158
166
|
),
|
|
159
167
|
)
|
|
@@ -191,6 +199,7 @@ def idempotent_function(
|
|
|
191
199
|
config=config,
|
|
192
200
|
persistence_store=persistence_store,
|
|
193
201
|
output_serializer=output_serializer,
|
|
202
|
+
key_prefix=key_prefix,
|
|
194
203
|
function_args=args,
|
|
195
204
|
function_kwargs=kwargs,
|
|
196
205
|
)
|
|
@@ -54,7 +54,12 @@ class BasePersistenceLayer(ABC):
|
|
|
54
54
|
self.use_local_cache = False
|
|
55
55
|
self.hash_function = hashlib.md5
|
|
56
56
|
|
|
57
|
-
def configure(
|
|
57
|
+
def configure(
|
|
58
|
+
self,
|
|
59
|
+
config: IdempotencyConfig,
|
|
60
|
+
function_name: str | None = None,
|
|
61
|
+
key_prefix: str | None = None,
|
|
62
|
+
) -> None:
|
|
58
63
|
"""
|
|
59
64
|
Initialize the base persistence layer from the configuration settings
|
|
60
65
|
|
|
@@ -64,8 +69,12 @@ class BasePersistenceLayer(ABC):
|
|
|
64
69
|
Idempotency configuration settings
|
|
65
70
|
function_name: str, Optional
|
|
66
71
|
The name of the function being decorated
|
|
72
|
+
key_prefix: str | Optional
|
|
73
|
+
Custom prefix for idempotency key: key_prefix#hash
|
|
67
74
|
"""
|
|
68
|
-
self.function_name =
|
|
75
|
+
self.function_name = (
|
|
76
|
+
key_prefix or f"{os.getenv(constants.LAMBDA_FUNCTION_NAME_ENV, 'test-func')}.{function_name or ''}"
|
|
77
|
+
)
|
|
69
78
|
|
|
70
79
|
if self.configured:
|
|
71
80
|
# Prevent being reconfigured multiple times
|
|
@@ -75,9 +84,7 @@ class BasePersistenceLayer(ABC):
|
|
|
75
84
|
self.event_key_jmespath = config.event_key_jmespath
|
|
76
85
|
if config.event_key_jmespath:
|
|
77
86
|
self.event_key_compiled_jmespath = jmespath.compile(config.event_key_jmespath)
|
|
78
|
-
self.jmespath_options = config.jmespath_options
|
|
79
|
-
if not self.jmespath_options:
|
|
80
|
-
self.jmespath_options = {"custom_functions": PowertoolsFunctions()}
|
|
87
|
+
self.jmespath_options = config.jmespath_options or {"custom_functions": PowertoolsFunctions()}
|
|
81
88
|
if config.payload_validation_jmespath:
|
|
82
89
|
self.validation_key_jmespath = jmespath.compile(config.payload_validation_jmespath)
|
|
83
90
|
self.payload_validation_enabled = True
|
|
@@ -5,7 +5,7 @@ from typing import Any, Optional, Union, get_args, get_origin
|
|
|
5
5
|
if sys.version_info >= (3, 10):
|
|
6
6
|
from types import UnionType # Available in Python 3.10+
|
|
7
7
|
else:
|
|
8
|
-
UnionType = Union # Fallback for Python 3.
|
|
8
|
+
UnionType = Union # Fallback for Python 3.9
|
|
9
9
|
|
|
10
10
|
from aws_lambda_powertools.utilities.idempotency.exceptions import (
|
|
11
11
|
IdempotencyModelTypeError,
|
|
@@ -109,6 +109,7 @@ from .ses import (
|
|
|
109
109
|
)
|
|
110
110
|
from .sns import SnsModel, SnsNotificationModel, SnsRecordModel
|
|
111
111
|
from .sqs import SqsAttributesModel, SqsModel, SqsMsgAttributeModel, SqsRecordModel
|
|
112
|
+
from .transfer_family import TransferFamilyAuthorizer
|
|
112
113
|
from .vpc_lattice import VpcLatticeModel
|
|
113
114
|
from .vpc_latticev2 import VpcLatticeV2Model
|
|
114
115
|
|
|
@@ -179,6 +180,7 @@ __all__ = [
|
|
|
179
180
|
"SqsAttributesModel",
|
|
180
181
|
"S3SqsEventNotificationModel",
|
|
181
182
|
"S3SqsEventNotificationRecordModel",
|
|
183
|
+
"TransferFamilyAuthorizer",
|
|
182
184
|
"APIGatewayProxyEventModel",
|
|
183
185
|
"APIGatewayEventRequestContext",
|
|
184
186
|
"APIGatewayEventAuthorizer",
|
aws_lambda_powertools-3.5.1a0/aws_lambda_powertools/utilities/parser/models/transfer_family.py
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
from typing import Literal, Optional
|
|
2
|
+
|
|
3
|
+
from pydantic import BaseModel, Field
|
|
4
|
+
from pydantic.networks import IPvAnyAddress
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
class TransferFamilyAuthorizer(BaseModel):
|
|
8
|
+
username: str
|
|
9
|
+
password: Optional[str] = None
|
|
10
|
+
protocol: Literal["SFTP", "FTP", "FTPS"]
|
|
11
|
+
server_id: str = Field(..., alias="serverId")
|
|
12
|
+
source_ip: IPvAnyAddress = Field(..., alias="sourceIp")
|