localstack-core 4.7.1.dev22__py3-none-any.whl → 4.7.1.dev24__py3-none-any.whl
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.
- localstack/aws/api/apigateway/__init__.py +87 -110
- localstack/aws/api/core.py +2 -3
- localstack/aws/api/events/__init__.py +12 -16
- localstack/aws/api/logs/__init__.py +5 -8
- localstack/aws/api/pipes/__init__.py +24 -32
- localstack/aws/api/scheduler/__init__.py +14 -16
- localstack/aws/api/stepfunctions/__init__.py +88 -114
- localstack/aws/api/support/__init__.py +8 -9
- localstack/aws/chain.py +2 -2
- localstack/aws/client.py +7 -9
- localstack/aws/connect.py +40 -39
- localstack/aws/forwarder.py +5 -4
- localstack/aws/gateway.py +1 -3
- localstack/aws/handlers/analytics.py +1 -2
- localstack/aws/handlers/cors.py +4 -5
- localstack/aws/handlers/logging.py +1 -2
- localstack/aws/handlers/metric_handler.py +3 -4
- localstack/aws/handlers/service.py +5 -5
- localstack/aws/mocking.py +15 -24
- localstack/aws/protocol/op_router.py +11 -10
- localstack/aws/protocol/parser.py +16 -17
- localstack/aws/protocol/serializer.py +37 -40
- localstack/aws/protocol/service_router.py +13 -13
- localstack/aws/protocol/validate.py +5 -5
- localstack/aws/scaffold.py +8 -9
- localstack/aws/serving/edge.py +5 -6
- localstack/aws/serving/hypercorn.py +2 -2
- localstack/aws/serving/twisted.py +1 -2
- localstack/aws/serving/werkzeug.py +2 -2
- localstack/aws/skeleton.py +7 -8
- localstack/aws/spec.py +29 -30
- localstack/cli/localstack.py +6 -6
- localstack/cli/lpm.py +2 -2
- localstack/config.py +14 -15
- localstack/deprecations.py +5 -5
- localstack/dev/run/__main__.py +4 -4
- localstack/dev/run/paths.py +5 -5
- localstack/dns/models.py +2 -1
- localstack/dns/server.py +3 -2
- localstack/http/dispatcher.py +1 -2
- localstack/http/response.py +2 -2
- localstack/http/router.py +1 -1
- localstack/http/trace.py +2 -1
- localstack/logging/format.py +3 -3
- localstack/packages/api.py +5 -5
- localstack/packages/core.py +3 -3
- localstack/packages/debugpy.py +1 -3
- localstack/packages/ffmpeg.py +1 -2
- localstack/packages/java.py +1 -2
- localstack/packages/terraform.py +1 -2
- localstack/runtime/init.py +6 -7
- localstack/runtime/shutdown.py +2 -1
- localstack/services/apigateway/exporter.py +1 -2
- localstack/services/apigateway/helpers.py +6 -6
- localstack/services/apigateway/legacy/context.py +21 -21
- localstack/services/apigateway/legacy/helpers.py +20 -20
- localstack/services/apigateway/legacy/integration.py +7 -7
- localstack/services/apigateway/legacy/router_asf.py +2 -2
- localstack/services/apigateway/legacy/templates.py +5 -5
- localstack/services/apigateway/models.py +16 -16
- localstack/services/apigateway/next_gen/execute_api/api.py +2 -2
- localstack/services/apigateway/next_gen/execute_api/context.py +25 -25
- localstack/services/apigateway/next_gen/execute_api/handlers/api_key_validation.py +2 -5
- localstack/services/apigateway/next_gen/execute_api/handlers/parse.py +1 -2
- localstack/services/apigateway/next_gen/execute_api/handlers/resource_router.py +1 -1
- localstack/services/apigateway/next_gen/execute_api/header_utils.py +1 -1
- localstack/services/apigateway/next_gen/execute_api/helpers.py +2 -2
- localstack/services/apigateway/next_gen/execute_api/integrations/aws.py +6 -6
- localstack/services/apigateway/next_gen/execute_api/integrations/http.py +9 -9
- localstack/services/apigateway/next_gen/execute_api/variables.py +63 -63
- localstack/services/apigateway/resource_providers/aws_apigateway_account.py +3 -3
- localstack/services/apigateway/resource_providers/aws_apigateway_account_plugin.py +1 -3
- localstack/services/apigateway/resource_providers/aws_apigateway_apikey.py +14 -14
- localstack/services/apigateway/resource_providers/aws_apigateway_apikey_plugin.py +1 -3
- localstack/services/apigateway/resource_providers/aws_apigateway_basepathmapping.py +5 -5
- localstack/services/apigateway/resource_providers/aws_apigateway_basepathmapping_plugin.py +1 -3
- localstack/services/apigateway/resource_providers/aws_apigateway_deployment.py +46 -46
- localstack/services/apigateway/resource_providers/aws_apigateway_deployment_plugin.py +1 -3
- localstack/services/apigateway/resource_providers/aws_apigateway_domainname.py +18 -18
- localstack/services/apigateway/resource_providers/aws_apigateway_domainname_plugin.py +1 -3
- localstack/services/apigateway/resource_providers/aws_apigateway_gatewayresponse.py +7 -7
- localstack/services/apigateway/resource_providers/aws_apigateway_gatewayresponse_plugin.py +1 -3
- localstack/services/apigateway/resource_providers/aws_apigateway_method.py +36 -36
- localstack/services/apigateway/resource_providers/aws_apigateway_method_plugin.py +1 -3
- localstack/services/apigateway/resource_providers/aws_apigateway_model.py +6 -6
- localstack/services/apigateway/resource_providers/aws_apigateway_model_plugin.py +1 -3
- localstack/services/apigateway/resource_providers/aws_apigateway_requestvalidator.py +6 -6
- localstack/services/apigateway/resource_providers/aws_apigateway_requestvalidator_plugin.py +1 -3
- localstack/services/apigateway/resource_providers/aws_apigateway_resource.py +5 -5
- localstack/services/apigateway/resource_providers/aws_apigateway_resource_plugin.py +1 -3
- localstack/services/apigateway/resource_providers/aws_apigateway_restapi.py +26 -26
- localstack/services/apigateway/resource_providers/aws_apigateway_restapi_plugin.py +1 -3
- localstack/services/apigateway/resource_providers/aws_apigateway_stage.py +33 -33
- localstack/services/apigateway/resource_providers/aws_apigateway_stage_plugin.py +1 -3
- localstack/services/apigateway/resource_providers/aws_apigateway_usageplan.py +18 -18
- localstack/services/apigateway/resource_providers/aws_apigateway_usageplan_plugin.py +1 -3
- localstack/services/apigateway/resource_providers/aws_apigateway_usageplankey.py +5 -5
- localstack/services/apigateway/resource_providers/aws_apigateway_usageplankey_plugin.py +1 -3
- localstack/services/cdk/resource_providers/cdk_metadata.py +2 -2
- localstack/services/cdk/resource_providers/cdk_metadata_plugin.py +1 -3
- localstack/services/certificatemanager/resource_providers/aws_certificatemanager_certificate.py +14 -14
- localstack/services/certificatemanager/resource_providers/aws_certificatemanager_certificate_plugin.py +1 -3
- localstack/services/cloudformation/cfn_utils.py +1 -1
- localstack/services/cloudformation/deployment_utils.py +2 -2
- localstack/services/cloudformation/engine/changes.py +3 -3
- localstack/services/cloudformation/engine/entities.py +12 -12
- localstack/services/cloudformation/engine/parameters.py +3 -3
- localstack/services/cloudformation/engine/template_deployer.py +9 -10
- localstack/services/cloudformation/engine/transformers.py +5 -4
- localstack/services/cloudformation/engine/types.py +5 -4
- localstack/services/cloudformation/engine/v2/change_set_model.py +31 -9
- localstack/services/cloudformation/engine/v2/change_set_model_describer.py +6 -6
- localstack/services/cloudformation/engine/v2/change_set_model_executor.py +62 -80
- localstack/services/cloudformation/engine/v2/change_set_model_preproc.py +15 -14
- localstack/services/cloudformation/engine/v2/change_set_model_transform.py +5 -5
- localstack/services/cloudformation/provider_utils.py +2 -2
- localstack/services/cloudformation/resource_provider.py +10 -9
- localstack/services/cloudformation/resource_providers/aws_cloudformation_macro.py +7 -7
- localstack/services/cloudformation/resource_providers/aws_cloudformation_macro_plugin.py +1 -3
- localstack/services/cloudformation/resource_providers/aws_cloudformation_stack.py +9 -9
- localstack/services/cloudformation/resource_providers/aws_cloudformation_stack_plugin.py +1 -3
- localstack/services/cloudformation/resource_providers/aws_cloudformation_waitcondition.py +6 -6
- localstack/services/cloudformation/resource_providers/aws_cloudformation_waitcondition_plugin.py +1 -3
- localstack/services/cloudformation/resource_providers/aws_cloudformation_waitconditionhandle.py +2 -2
- localstack/services/cloudformation/resource_providers/aws_cloudformation_waitconditionhandle_plugin.py +1 -3
- localstack/services/cloudformation/scaffolding/__main__.py +8 -7
- localstack/services/cloudformation/scaffolding/propgen.py +2 -2
- localstack/services/cloudformation/stores.py +2 -3
- localstack/services/cloudformation/v2/entities.py +57 -36
- localstack/services/cloudformation/v2/provider.py +155 -29
- localstack/services/cloudwatch/alarm_scheduler.py +7 -7
- localstack/services/cloudwatch/cloudwatch_database_helper.py +4 -5
- localstack/services/cloudwatch/models.py +5 -7
- localstack/services/cloudwatch/provider.py +12 -12
- localstack/services/cloudwatch/provider_v2.py +2 -4
- localstack/services/cloudwatch/resource_providers/aws_cloudwatch_alarm.py +40 -40
- localstack/services/cloudwatch/resource_providers/aws_cloudwatch_alarm_plugin.py +1 -3
- localstack/services/cloudwatch/resource_providers/aws_cloudwatch_compositealarm.py +12 -12
- localstack/services/cloudwatch/resource_providers/aws_cloudwatch_compositealarm_plugin.py +1 -3
- localstack/services/dynamodb/packages.py +1 -2
- localstack/services/dynamodb/provider.py +7 -8
- localstack/services/dynamodb/resource_providers/aws_dynamodb_globaltable.py +63 -63
- localstack/services/dynamodb/resource_providers/aws_dynamodb_globaltable_plugin.py +1 -3
- localstack/services/dynamodb/resource_providers/aws_dynamodb_table.py +57 -57
- localstack/services/dynamodb/resource_providers/aws_dynamodb_table_plugin.py +1 -3
- localstack/services/dynamodb/utils.py +13 -14
- localstack/services/dynamodb/v2/provider.py +6 -7
- localstack/services/dynamodbstreams/dynamodbstreams_api.py +2 -2
- localstack/services/dynamodbstreams/models.py +1 -3
- localstack/services/ec2/patches.py +4 -5
- localstack/services/ec2/provider.py +3 -3
- localstack/services/ec2/resource_providers/aws_ec2_dhcpoptions.py +10 -10
- localstack/services/ec2/resource_providers/aws_ec2_dhcpoptions_plugin.py +1 -3
- localstack/services/ec2/resource_providers/aws_ec2_instance.py +96 -96
- localstack/services/ec2/resource_providers/aws_ec2_instance_plugin.py +1 -3
- localstack/services/ec2/resource_providers/aws_ec2_internetgateway.py +5 -5
- localstack/services/ec2/resource_providers/aws_ec2_internetgateway_plugin.py +1 -3
- localstack/services/ec2/resource_providers/aws_ec2_keypair.py +10 -10
- localstack/services/ec2/resource_providers/aws_ec2_keypair_plugin.py +1 -3
- localstack/services/ec2/resource_providers/aws_ec2_natgateway.py +13 -13
- localstack/services/ec2/resource_providers/aws_ec2_natgateway_plugin.py +1 -3
- localstack/services/ec2/resource_providers/aws_ec2_networkacl.py +6 -6
- localstack/services/ec2/resource_providers/aws_ec2_networkacl_plugin.py +1 -3
- localstack/services/ec2/resource_providers/aws_ec2_prefixlist.py +14 -14
- localstack/services/ec2/resource_providers/aws_ec2_prefixlist_plugin.py +1 -3
- localstack/services/ec2/resource_providers/aws_ec2_route.py +15 -15
- localstack/services/ec2/resource_providers/aws_ec2_route_plugin.py +1 -3
- localstack/services/ec2/resource_providers/aws_ec2_routetable.py +6 -6
- localstack/services/ec2/resource_providers/aws_ec2_routetable_plugin.py +1 -3
- localstack/services/ec2/resource_providers/aws_ec2_securitygroup.py +29 -29
- localstack/services/ec2/resource_providers/aws_ec2_securitygroup_plugin.py +1 -3
- localstack/services/ec2/resource_providers/aws_ec2_subnet.py +19 -19
- localstack/services/ec2/resource_providers/aws_ec2_subnet_plugin.py +1 -3
- localstack/services/ec2/resource_providers/aws_ec2_subnetroutetableassociation.py +4 -4
- localstack/services/ec2/resource_providers/aws_ec2_subnetroutetableassociation_plugin.py +1 -3
- localstack/services/ec2/resource_providers/aws_ec2_transitgateway.py +16 -16
- localstack/services/ec2/resource_providers/aws_ec2_transitgateway_plugin.py +1 -3
- localstack/services/ec2/resource_providers/aws_ec2_transitgatewayattachment.py +9 -9
- localstack/services/ec2/resource_providers/aws_ec2_transitgatewayattachment_plugin.py +1 -3
- localstack/services/ec2/resource_providers/aws_ec2_vpc.py +15 -15
- localstack/services/ec2/resource_providers/aws_ec2_vpc_plugin.py +1 -3
- localstack/services/ec2/resource_providers/aws_ec2_vpcendpoint.py +13 -13
- localstack/services/ec2/resource_providers/aws_ec2_vpcendpoint_plugin.py +1 -3
- localstack/services/ec2/resource_providers/aws_ec2_vpcgatewayattachment.py +5 -5
- localstack/services/ec2/resource_providers/aws_ec2_vpcgatewayattachment_plugin.py +1 -3
- localstack/services/ecr/resource_providers/aws_ecr_repository.py +17 -17
- localstack/services/ecr/resource_providers/aws_ecr_repository_plugin.py +1 -3
- localstack/services/edge.py +5 -5
- localstack/services/es/provider.py +19 -19
- localstack/services/events/archive.py +2 -2
- localstack/services/events/connection.py +5 -5
- localstack/services/events/event_bus.py +9 -9
- localstack/services/events/models.py +25 -25
- localstack/services/events/provider.py +12 -12
- localstack/services/events/replay.py +3 -3
- localstack/services/events/resource_providers/aws_events_apidestination.py +8 -8
- localstack/services/events/resource_providers/aws_events_apidestination_plugin.py +1 -3
- localstack/services/events/resource_providers/aws_events_connection.py +27 -27
- localstack/services/events/resource_providers/aws_events_connection_plugin.py +1 -3
- localstack/services/events/resource_providers/aws_events_eventbus.py +9 -9
- localstack/services/events/resource_providers/aws_events_eventbus_plugin.py +1 -3
- localstack/services/events/resource_providers/aws_events_eventbuspolicy.py +11 -11
- localstack/services/events/resource_providers/aws_events_eventbuspolicy_plugin.py +1 -3
- localstack/services/events/resource_providers/aws_events_rule.py +82 -82
- localstack/services/events/resource_providers/aws_events_rule_plugin.py +1 -3
- localstack/services/events/rule.py +15 -15
- localstack/services/events/target.py +5 -5
- localstack/services/events/utils.py +7 -7
- localstack/services/events/v1/models.py +1 -3
- localstack/services/events/v1/provider.py +10 -10
- localstack/services/firehose/models.py +1 -3
- localstack/services/firehose/provider.py +11 -12
- localstack/services/iam/iam_patches.py +5 -6
- localstack/services/iam/provider.py +4 -4
- localstack/services/iam/resource_providers/aws_iam_accesskey.py +6 -6
- localstack/services/iam/resource_providers/aws_iam_accesskey_plugin.py +1 -3
- localstack/services/iam/resource_providers/aws_iam_group.py +9 -9
- localstack/services/iam/resource_providers/aws_iam_group_plugin.py +1 -3
- localstack/services/iam/resource_providers/aws_iam_instanceprofile.py +5 -5
- localstack/services/iam/resource_providers/aws_iam_instanceprofile_plugin.py +1 -3
- localstack/services/iam/resource_providers/aws_iam_managedpolicy.py +9 -9
- localstack/services/iam/resource_providers/aws_iam_managedpolicy_plugin.py +1 -3
- localstack/services/iam/resource_providers/aws_iam_policy.py +7 -7
- localstack/services/iam/resource_providers/aws_iam_policy_plugin.py +1 -3
- localstack/services/iam/resource_providers/aws_iam_role.py +16 -16
- localstack/services/iam/resource_providers/aws_iam_role_plugin.py +1 -3
- localstack/services/iam/resource_providers/aws_iam_servercertificate.py +10 -10
- localstack/services/iam/resource_providers/aws_iam_servercertificate_plugin.py +1 -3
- localstack/services/iam/resource_providers/aws_iam_servicelinkedrole.py +5 -5
- localstack/services/iam/resource_providers/aws_iam_servicelinkedrole_plugin.py +1 -3
- localstack/services/iam/resource_providers/aws_iam_user.py +17 -17
- localstack/services/iam/resource_providers/aws_iam_user_plugin.py +1 -3
- localstack/services/kinesis/kinesis_mock_server.py +7 -8
- localstack/services/kinesis/models.py +2 -3
- localstack/services/kinesis/packages.py +3 -3
- localstack/services/kinesis/resource_providers/aws_kinesis_stream.py +13 -13
- localstack/services/kinesis/resource_providers/aws_kinesis_stream_plugin.py +1 -3
- localstack/services/kinesis/resource_providers/aws_kinesis_streamconsumer.py +7 -7
- localstack/services/kinesis/resource_providers/aws_kinesis_streamconsumer_plugin.py +1 -3
- localstack/services/kinesisfirehose/resource_providers/aws_kinesisfirehose_deliverystream.py +191 -191
- localstack/services/kinesisfirehose/resource_providers/aws_kinesisfirehose_deliverystream_plugin.py +1 -3
- localstack/services/kms/models.py +14 -17
- localstack/services/kms/provider.py +2 -3
- localstack/services/kms/resource_providers/aws_kms_alias.py +3 -3
- localstack/services/kms/resource_providers/aws_kms_alias_plugin.py +1 -3
- localstack/services/kms/resource_providers/aws_kms_key.py +14 -14
- localstack/services/kms/resource_providers/aws_kms_key_plugin.py +1 -3
- localstack/services/kms/utils.py +3 -2
- localstack/services/lambda_/api_utils.py +12 -12
- localstack/services/lambda_/custom_endpoints.py +2 -2
- localstack/services/lambda_/event_source_mapping/esm_worker_factory.py +1 -1
- localstack/services/lambda_/event_source_mapping/pipe_utils.py +2 -2
- localstack/services/lambda_/event_source_mapping/pollers/stream_poller.py +1 -1
- localstack/services/lambda_/event_source_mapping/senders/sender_utils.py +2 -1
- localstack/services/lambda_/invocation/assignment.py +1 -2
- localstack/services/lambda_/invocation/docker_runtime_executor.py +5 -4
- localstack/services/lambda_/invocation/execution_environment.py +4 -4
- localstack/services/lambda_/invocation/executor_endpoint.py +5 -5
- localstack/services/lambda_/invocation/internal_sqs_queue.py +1 -1
- localstack/services/lambda_/invocation/lambda_models.py +23 -23
- localstack/services/lambda_/invocation/lambda_service.py +4 -4
- localstack/services/lambda_/invocation/logs.py +2 -3
- localstack/services/lambda_/invocation/runtime_executor.py +3 -3
- localstack/services/lambda_/ldm.py +2 -3
- localstack/services/lambda_/packages.py +2 -3
- localstack/services/lambda_/provider.py +3 -3
- localstack/services/lambda_/resource_providers/aws_lambda_codesigningconfig.py +8 -8
- localstack/services/lambda_/resource_providers/aws_lambda_codesigningconfig_plugin.py +1 -3
- localstack/services/lambda_/resource_providers/aws_lambda_eventinvokeconfig.py +11 -11
- localstack/services/lambda_/resource_providers/aws_lambda_eventinvokeconfig_plugin.py +1 -3
- localstack/services/lambda_/resource_providers/aws_lambda_eventsourcemapping.py +39 -39
- localstack/services/lambda_/resource_providers/aws_lambda_eventsourcemapping_plugin.py +1 -3
- localstack/services/lambda_/resource_providers/aws_lambda_function.py +54 -54
- localstack/services/lambda_/resource_providers/aws_lambda_function_plugin.py +1 -3
- localstack/services/lambda_/resource_providers/aws_lambda_layerversion.py +11 -11
- localstack/services/lambda_/resource_providers/aws_lambda_layerversion_plugin.py +1 -3
- localstack/services/lambda_/resource_providers/aws_lambda_layerversionpermission.py +6 -6
- localstack/services/lambda_/resource_providers/aws_lambda_layerversionpermission_plugin.py +1 -3
- localstack/services/lambda_/resource_providers/aws_lambda_permission.py +10 -10
- localstack/services/lambda_/resource_providers/aws_lambda_permission_plugin.py +1 -3
- localstack/services/lambda_/resource_providers/aws_lambda_url.py +14 -14
- localstack/services/lambda_/resource_providers/aws_lambda_url_plugin.py +1 -3
- localstack/services/lambda_/resource_providers/aws_lambda_version.py +8 -8
- localstack/services/lambda_/resource_providers/aws_lambda_version_plugin.py +1 -3
- localstack/services/lambda_/resource_providers/lambda_alias.py +12 -12
- localstack/services/lambda_/resource_providers/lambda_alias_plugin.py +1 -3
- localstack/services/lambda_/runtimes.py +1 -3
- localstack/services/logs/models.py +1 -3
- localstack/services/logs/provider.py +3 -3
- localstack/services/logs/resource_providers/aws_logs_loggroup.py +9 -9
- localstack/services/logs/resource_providers/aws_logs_loggroup_plugin.py +1 -3
- localstack/services/logs/resource_providers/aws_logs_logstream.py +4 -4
- localstack/services/logs/resource_providers/aws_logs_logstream_plugin.py +1 -3
- localstack/services/logs/resource_providers/aws_logs_subscriptionfilter.py +7 -7
- localstack/services/logs/resource_providers/aws_logs_subscriptionfilter_plugin.py +1 -3
- localstack/services/moto.py +3 -3
- localstack/services/opensearch/cluster.py +13 -13
- localstack/services/opensearch/cluster_manager.py +13 -14
- localstack/services/opensearch/models.py +1 -3
- localstack/services/opensearch/packages.py +1 -2
- localstack/services/opensearch/provider.py +7 -8
- localstack/services/opensearch/resource_providers/aws_elasticsearch_domain.py +61 -61
- localstack/services/opensearch/resource_providers/aws_elasticsearch_domain_plugin.py +1 -3
- localstack/services/opensearch/resource_providers/aws_opensearchservice_domain.py +89 -89
- localstack/services/opensearch/resource_providers/aws_opensearchservice_domain_plugin.py +1 -3
- localstack/services/opensearch/versions.py +1 -3
- localstack/services/plugins.py +26 -25
- localstack/services/redshift/resource_providers/aws_redshift_cluster.py +57 -57
- localstack/services/redshift/resource_providers/aws_redshift_cluster_plugin.py +1 -3
- localstack/services/resource_groups/resource_providers/aws_resourcegroups_group.py +21 -21
- localstack/services/resource_groups/resource_providers/aws_resourcegroups_group_plugin.py +1 -3
- localstack/services/route53/models.py +1 -3
- localstack/services/route53/provider.py +1 -2
- localstack/services/route53/resource_providers/aws_route53_healthcheck.py +6 -6
- localstack/services/route53/resource_providers/aws_route53_healthcheck_plugin.py +1 -3
- localstack/services/route53/resource_providers/aws_route53_recordset.py +27 -27
- localstack/services/route53/resource_providers/aws_route53_recordset_plugin.py +1 -3
- localstack/services/route53resolver/models.py +8 -10
- localstack/services/route53resolver/provider.py +12 -12
- localstack/services/s3/codec.py +2 -2
- localstack/services/s3/cors.py +4 -4
- localstack/services/s3/models.py +72 -72
- localstack/services/s3/notifications.py +19 -19
- localstack/services/s3/presigned_url.py +6 -5
- localstack/services/s3/provider.py +13 -14
- localstack/services/s3/resource_providers/aws_s3_bucket.py +180 -180
- localstack/services/s3/resource_providers/aws_s3_bucket_plugin.py +1 -3
- localstack/services/s3/resource_providers/aws_s3_bucketpolicy.py +4 -4
- localstack/services/s3/resource_providers/aws_s3_bucketpolicy_plugin.py +1 -3
- localstack/services/s3/storage/core.py +4 -3
- localstack/services/s3/storage/ephemeral.py +7 -6
- localstack/services/s3/utils.py +11 -11
- localstack/services/s3/validation.py +1 -1
- localstack/services/s3/website_hosting.py +5 -5
- localstack/services/scheduler/resource_providers/aws_scheduler_schedule.py +60 -60
- localstack/services/scheduler/resource_providers/aws_scheduler_schedule_plugin.py +1 -3
- localstack/services/scheduler/resource_providers/aws_scheduler_schedulegroup.py +9 -9
- localstack/services/scheduler/resource_providers/aws_scheduler_schedulegroup_plugin.py +1 -3
- localstack/services/secretsmanager/provider.py +9 -11
- localstack/services/secretsmanager/resource_providers/aws_secretsmanager_resourcepolicy.py +5 -5
- localstack/services/secretsmanager/resource_providers/aws_secretsmanager_resourcepolicy_plugin.py +1 -3
- localstack/services/secretsmanager/resource_providers/aws_secretsmanager_rotationschedule.py +21 -21
- localstack/services/secretsmanager/resource_providers/aws_secretsmanager_rotationschedule_plugin.py +1 -3
- localstack/services/secretsmanager/resource_providers/aws_secretsmanager_secret.py +23 -23
- localstack/services/secretsmanager/resource_providers/aws_secretsmanager_secret_plugin.py +1 -3
- localstack/services/secretsmanager/resource_providers/aws_secretsmanager_secrettargetattachment.py +5 -5
- localstack/services/secretsmanager/resource_providers/aws_secretsmanager_secrettargetattachment_plugin.py +1 -3
- localstack/services/ses/provider.py +8 -8
- localstack/services/ses/resource_providers/aws_ses_emailidentity.py +21 -21
- localstack/services/ses/resource_providers/aws_ses_emailidentity_plugin.py +1 -3
- localstack/services/sns/models.py +25 -25
- localstack/services/sns/provider.py +1 -2
- localstack/services/sns/publisher.py +6 -7
- localstack/services/sns/resource_providers/aws_sns_subscription.py +13 -13
- localstack/services/sns/resource_providers/aws_sns_subscription_plugin.py +1 -3
- localstack/services/sns/resource_providers/aws_sns_topic.py +16 -16
- localstack/services/sns/resource_providers/aws_sns_topic_plugin.py +1 -3
- localstack/services/sns/resource_providers/aws_sns_topicpolicy.py +4 -4
- localstack/services/sns/resource_providers/aws_sns_topicpolicy_plugin.py +1 -3
- localstack/services/sqs/models.py +21 -22
- localstack/services/sqs/provider.py +19 -18
- localstack/services/sqs/query_api.py +2 -3
- localstack/services/sqs/resource_providers/aws_sqs_queue.py +21 -21
- localstack/services/sqs/resource_providers/aws_sqs_queue_plugin.py +1 -3
- localstack/services/sqs/resource_providers/aws_sqs_queuepolicy.py +4 -4
- localstack/services/sqs/resource_providers/aws_sqs_queuepolicy_plugin.py +1 -3
- localstack/services/sqs/utils.py +3 -3
- localstack/services/ssm/provider.py +2 -3
- localstack/services/ssm/resource_providers/aws_ssm_maintenancewindow.py +15 -15
- localstack/services/ssm/resource_providers/aws_ssm_maintenancewindow_plugin.py +1 -3
- localstack/services/ssm/resource_providers/aws_ssm_maintenancewindowtarget.py +10 -10
- localstack/services/ssm/resource_providers/aws_ssm_maintenancewindowtarget_plugin.py +1 -3
- localstack/services/ssm/resource_providers/aws_ssm_maintenancewindowtask.py +48 -48
- localstack/services/ssm/resource_providers/aws_ssm_maintenancewindowtask_plugin.py +1 -3
- localstack/services/ssm/resource_providers/aws_ssm_parameter.py +10 -10
- localstack/services/ssm/resource_providers/aws_ssm_parameter_plugin.py +1 -3
- localstack/services/ssm/resource_providers/aws_ssm_patchbaseline.py +29 -29
- localstack/services/ssm/resource_providers/aws_ssm_patchbaseline_plugin.py +1 -3
- localstack/services/stepfunctions/asl/antlt4utils/antlr4utils.py +3 -4
- localstack/services/stepfunctions/asl/component/common/catch/catcher_decl.py +9 -9
- localstack/services/stepfunctions/asl/component/common/error_name/custom_error_name.py +2 -2
- localstack/services/stepfunctions/asl/component/common/error_name/error_name.py +4 -4
- localstack/services/stepfunctions/asl/component/common/error_name/failure_event.py +8 -8
- localstack/services/stepfunctions/asl/component/common/jsonata/jsonata_template_binding.py +2 -2
- localstack/services/stepfunctions/asl/component/common/path/input_path.py +3 -3
- localstack/services/stepfunctions/asl/component/common/path/output_path.py +3 -3
- localstack/services/stepfunctions/asl/component/common/path/result_path.py +3 -3
- localstack/services/stepfunctions/asl/component/common/payload/payloadvalue/payloadbinding/payload_binding.py +3 -3
- localstack/services/stepfunctions/asl/component/common/retry/retrier_decl.py +8 -8
- localstack/services/stepfunctions/asl/component/common/string/string_expression.py +2 -2
- localstack/services/stepfunctions/asl/component/common/timeouts/timeout.py +3 -3
- localstack/services/stepfunctions/asl/component/eval_component.py +2 -3
- localstack/services/stepfunctions/asl/component/intrinsic/argument/argument.py +3 -3
- localstack/services/stepfunctions/asl/component/intrinsic/jsonata.py +2 -2
- localstack/services/stepfunctions/asl/component/program/program.py +8 -8
- localstack/services/stepfunctions/asl/component/state/state.py +10 -11
- localstack/services/stepfunctions/asl/component/state/state_choice/choice_rule.py +11 -11
- localstack/services/stepfunctions/asl/component/state/state_choice/comparison/operator/implementations/is_operator.py +2 -2
- localstack/services/stepfunctions/asl/component/state/state_choice/state_choice.py +1 -3
- localstack/services/stepfunctions/asl/component/state/state_execution/execute_state.py +8 -8
- localstack/services/stepfunctions/asl/component/state/state_execution/state_map/item_reader/item_reader_decl.py +6 -6
- localstack/services/stepfunctions/asl/component/state/state_execution/state_map/item_reader/reader_config/reader_config_decl.py +5 -5
- localstack/services/stepfunctions/asl/component/state/state_execution/state_map/item_reader/resource_eval/resource_eval_s3.py +2 -1
- localstack/services/stepfunctions/asl/component/state/state_execution/state_map/iteration/distributed_iteration_component.py +8 -8
- localstack/services/stepfunctions/asl/component/state/state_execution/state_map/iteration/inline_iteration_component.py +7 -7
- localstack/services/stepfunctions/asl/component/state/state_execution/state_map/iteration/itemprocessor/distributed_item_processor_worker.py +4 -4
- localstack/services/stepfunctions/asl/component/state/state_execution/state_map/iteration/itemprocessor/inline_item_processor_worker.py +5 -5
- localstack/services/stepfunctions/asl/component/state/state_execution/state_map/iteration/itemprocessor/map_run_record.py +10 -10
- localstack/services/stepfunctions/asl/component/state/state_execution/state_map/iteration/iteration_component.py +3 -3
- localstack/services/stepfunctions/asl/component/state/state_execution/state_map/iteration/iteration_declaration.py +3 -3
- localstack/services/stepfunctions/asl/component/state/state_execution/state_map/iteration/iteration_worker.py +2 -2
- localstack/services/stepfunctions/asl/component/state/state_execution/state_map/iteration/iterator/distributed_iterator_worker.py +3 -5
- localstack/services/stepfunctions/asl/component/state/state_execution/state_map/iteration/iterator/inline_iterator.py +1 -2
- localstack/services/stepfunctions/asl/component/state/state_execution/state_map/iteration/iterator/inline_iterator_worker.py +5 -5
- localstack/services/stepfunctions/asl/component/state/state_execution/state_map/iteration/job.py +9 -9
- localstack/services/stepfunctions/asl/component/state/state_execution/state_map/result_writer/resource_eval/resource_eval_s3.py +2 -1
- localstack/services/stepfunctions/asl/component/state/state_execution/state_map/state_map.py +10 -11
- localstack/services/stepfunctions/asl/component/state/state_execution/state_parallel/branch_worker.py +3 -3
- localstack/services/stepfunctions/asl/component/state/state_execution/state_parallel/branches_decl.py +4 -4
- localstack/services/stepfunctions/asl/component/state/state_execution/state_parallel/state_parallel.py +1 -2
- localstack/services/stepfunctions/asl/component/state/state_execution/state_task/lambda_eval_utils.py +6 -6
- localstack/services/stepfunctions/asl/component/state/state_execution/state_task/service/resource.py +3 -3
- localstack/services/stepfunctions/asl/component/state/state_execution/state_task/service/state_task_service.py +10 -10
- localstack/services/stepfunctions/asl/component/state/state_execution/state_task/service/state_task_service_api_gateway.py +15 -15
- localstack/services/stepfunctions/asl/component/state/state_execution/state_task/service/state_task_service_batch.py +5 -4
- localstack/services/stepfunctions/asl/component/state/state_execution/state_task/service/state_task_service_callback.py +18 -17
- localstack/services/stepfunctions/asl/component/state/state_execution/state_task/service/state_task_service_dynamodb.py +2 -2
- localstack/services/stepfunctions/asl/component/state/state_execution/state_task/service/state_task_service_ecs.py +5 -4
- localstack/services/stepfunctions/asl/component/state/state_execution/state_task/service/state_task_service_events.py +4 -4
- localstack/services/stepfunctions/asl/component/state/state_execution/state_task/service/state_task_service_glue.py +7 -6
- localstack/services/stepfunctions/asl/component/state/state_execution/state_task/service/state_task_service_lambda.py +4 -4
- localstack/services/stepfunctions/asl/component/state/state_execution/state_task/service/state_task_service_sfn.py +9 -8
- localstack/services/stepfunctions/asl/component/state/state_execution/state_task/service/state_task_service_sns.py +2 -2
- localstack/services/stepfunctions/asl/component/state/state_execution/state_task/service/state_task_service_sqs.py +4 -4
- localstack/services/stepfunctions/asl/component/state/state_execution/state_task/state_task.py +2 -2
- localstack/services/stepfunctions/asl/component/state/state_execution/state_task/state_task_lambda.py +2 -2
- localstack/services/stepfunctions/asl/component/state/state_fail/state_fail.py +2 -4
- localstack/services/stepfunctions/asl/component/state/state_pass/state_pass.py +3 -5
- localstack/services/stepfunctions/asl/component/state/state_wait/wait_function/timestamp.py +2 -2
- localstack/services/stepfunctions/asl/eval/callback/callback.py +18 -18
- localstack/services/stepfunctions/asl/eval/environment.py +15 -17
- localstack/services/stepfunctions/asl/eval/evaluation_details.py +3 -5
- localstack/services/stepfunctions/asl/eval/event/event_manager.py +9 -9
- localstack/services/stepfunctions/asl/eval/event/logging.py +3 -3
- localstack/services/stepfunctions/asl/eval/program_state.py +8 -8
- localstack/services/stepfunctions/asl/eval/states.py +11 -11
- localstack/services/stepfunctions/asl/eval/test_state/environment.py +3 -5
- localstack/services/stepfunctions/asl/eval/variable_store.py +3 -3
- localstack/services/stepfunctions/asl/jsonata/jsonata.py +5 -4
- localstack/services/stepfunctions/asl/parse/intrinsic/preprocessor.py +1 -2
- localstack/services/stepfunctions/asl/parse/preprocessor.py +30 -30
- localstack/services/stepfunctions/asl/parse/typed_props.py +2 -2
- localstack/services/stepfunctions/asl/utils/encoding.py +2 -2
- localstack/services/stepfunctions/asl/utils/json_path.py +2 -2
- localstack/services/stepfunctions/backend/activity.py +4 -4
- localstack/services/stepfunctions/backend/alias.py +6 -6
- localstack/services/stepfunctions/backend/execution.py +25 -27
- localstack/services/stepfunctions/backend/execution_worker.py +7 -7
- localstack/services/stepfunctions/backend/state_machine.py +26 -26
- localstack/services/stepfunctions/backend/test_state/execution.py +3 -4
- localstack/services/stepfunctions/backend/test_state/execution_worker.py +1 -3
- localstack/services/stepfunctions/mocking/mock_config.py +5 -5
- localstack/services/stepfunctions/mocking/mock_config_file.py +10 -10
- localstack/services/stepfunctions/provider.py +27 -37
- localstack/services/stepfunctions/quotas.py +2 -3
- localstack/services/stepfunctions/resource_providers/aws_stepfunctions_activity.py +6 -6
- localstack/services/stepfunctions/resource_providers/aws_stepfunctions_activity_plugin.py +1 -3
- localstack/services/stepfunctions/resource_providers/aws_stepfunctions_statemachine.py +25 -25
- localstack/services/stepfunctions/resource_providers/aws_stepfunctions_statemachine_plugin.py +1 -3
- localstack/services/stepfunctions/stepfunctions_utils.py +1 -2
- localstack/services/stores.py +7 -7
- localstack/services/transcribe/packages.py +1 -3
- localstack/services/transcribe/provider.py +2 -2
- localstack/state/inspect.py +4 -4
- localstack/state/pickle.py +16 -15
- localstack/testing/aws/asf_utils.py +3 -2
- localstack/testing/aws/lambda_utils.py +15 -14
- localstack/testing/aws/util.py +3 -2
- localstack/testing/pytest/cloudformation/fixtures.py +13 -3
- localstack/testing/pytest/container.py +5 -4
- localstack/testing/pytest/filters.py +1 -3
- localstack/testing/pytest/fixtures.py +11 -11
- localstack/testing/pytest/marking.py +6 -6
- localstack/testing/pytest/path_filter.py +1 -1
- localstack/testing/pytest/stepfunctions/utils.py +1 -1
- localstack/testing/pytest/validation_tracking.py +3 -3
- localstack/testing/scenario/provisioning.py +11 -10
- localstack/testing/snapshots/transformer_utility.py +2 -2
- localstack/testing/testselection/matching.py +2 -2
- localstack/testing/testselection/opt_out.py +1 -1
- localstack/testing/testselection/scripts/filter_by_test_selection.py +1 -1
- localstack/testing/testselection/scripts/generate_test_selection.py +1 -1
- localstack/testing/testselection/testselection.py +2 -2
- localstack/utils/analytics/cli.py +2 -3
- localstack/utils/analytics/client.py +5 -5
- localstack/utils/analytics/events.py +2 -2
- localstack/utils/analytics/metrics/registry.py +1 -1
- localstack/utils/analytics/publisher.py +4 -4
- localstack/utils/analytics/service_request_aggregator.py +3 -3
- localstack/utils/aws/arns.py +2 -2
- localstack/utils/aws/aws_responses.py +14 -21
- localstack/utils/aws/aws_stack.py +7 -11
- localstack/utils/aws/dead_letter_queue.py +3 -4
- localstack/utils/aws/message_forwarding.py +9 -11
- localstack/utils/aws/request_context.py +4 -4
- localstack/utils/aws/templating.py +3 -3
- localstack/utils/batch_policy.py +2 -2
- localstack/utils/bootstrap.py +19 -20
- localstack/utils/collections.py +16 -23
- localstack/utils/config_listener.py +2 -2
- localstack/utils/container_networking.py +3 -3
- localstack/utils/container_utils/container_client.py +72 -75
- localstack/utils/container_utils/docker_cmd_client.py +33 -33
- localstack/utils/container_utils/docker_sdk_client.py +35 -35
- localstack/utils/crypto.py +2 -3
- localstack/utils/diagnose.py +11 -11
- localstack/utils/docker_utils.py +4 -4
- localstack/utils/files.py +1 -2
- localstack/utils/functions.py +2 -2
- localstack/utils/http.py +6 -6
- localstack/utils/iputils.py +2 -1
- localstack/utils/json.py +1 -1
- localstack/utils/net.py +10 -9
- localstack/utils/objects.py +10 -10
- localstack/utils/patch.py +5 -5
- localstack/utils/platform.py +2 -2
- localstack/utils/run.py +7 -7
- localstack/utils/scheduler.py +3 -2
- localstack/utils/strings.py +2 -2
- localstack/utils/tagging.py +3 -3
- localstack/utils/testutil.py +9 -9
- localstack/utils/threads.py +2 -2
- localstack/utils/xml.py +1 -1
- localstack/version.py +2 -2
- {localstack_core-4.7.1.dev22.dist-info → localstack_core-4.7.1.dev24.dist-info}/METADATA +1 -1
- {localstack_core-4.7.1.dev22.dist-info → localstack_core-4.7.1.dev24.dist-info}/RECORD +544 -544
- localstack_core-4.7.1.dev24.dist-info/plux.json +1 -0
- localstack_core-4.7.1.dev22.dist-info/plux.json +0 -1
- {localstack_core-4.7.1.dev22.data → localstack_core-4.7.1.dev24.data}/scripts/localstack +0 -0
- {localstack_core-4.7.1.dev22.data → localstack_core-4.7.1.dev24.data}/scripts/localstack-supervisor +0 -0
- {localstack_core-4.7.1.dev22.data → localstack_core-4.7.1.dev24.data}/scripts/localstack.bat +0 -0
- {localstack_core-4.7.1.dev22.dist-info → localstack_core-4.7.1.dev24.dist-info}/WHEEL +0 -0
- {localstack_core-4.7.1.dev22.dist-info → localstack_core-4.7.1.dev24.dist-info}/entry_points.txt +0 -0
- {localstack_core-4.7.1.dev22.dist-info → localstack_core-4.7.1.dev24.dist-info}/licenses/LICENSE.txt +0 -0
- {localstack_core-4.7.1.dev22.dist-info → localstack_core-4.7.1.dev24.dist-info}/top_level.txt +0 -0
localstack/services/s3/utils.py
CHANGED
|
@@ -9,7 +9,7 @@ import time
|
|
|
9
9
|
import zlib
|
|
10
10
|
from enum import StrEnum
|
|
11
11
|
from secrets import token_bytes
|
|
12
|
-
from typing import Any,
|
|
12
|
+
from typing import Any, Literal, NamedTuple, Protocol
|
|
13
13
|
from urllib import parse as urlparser
|
|
14
14
|
from zoneinfo import ZoneInfo
|
|
15
15
|
|
|
@@ -143,7 +143,7 @@ def get_owner_for_account_id(account_id: str):
|
|
|
143
143
|
|
|
144
144
|
def extract_bucket_key_version_id_from_copy_source(
|
|
145
145
|
copy_source: CopySource,
|
|
146
|
-
) -> tuple[BucketName, ObjectKey,
|
|
146
|
+
) -> tuple[BucketName, ObjectKey, ObjectVersionId | None]:
|
|
147
147
|
"""
|
|
148
148
|
Utility to parse bucket name, object key and optionally its versionId. It accepts the CopySource format:
|
|
149
149
|
- <bucket-name/<object-key>?versionId=<version-id>, used for example in CopySource for CopyObject
|
|
@@ -482,7 +482,7 @@ def is_valid_canonical_id(canonical_id: str) -> bool:
|
|
|
482
482
|
return False
|
|
483
483
|
|
|
484
484
|
|
|
485
|
-
def uses_host_addressing(headers:
|
|
485
|
+
def uses_host_addressing(headers: dict[str, str]) -> str | None:
|
|
486
486
|
"""
|
|
487
487
|
Determines if the request is targeting S3 with virtual host addressing
|
|
488
488
|
:param headers: the request headers
|
|
@@ -522,7 +522,7 @@ def forwarded_from_virtual_host_addressed_request(headers: dict[str, str]) -> bo
|
|
|
522
522
|
|
|
523
523
|
def extract_bucket_name_and_key_from_headers_and_path(
|
|
524
524
|
headers: dict[str, str], path: str
|
|
525
|
-
) -> tuple[
|
|
525
|
+
) -> tuple[str | None, str | None]:
|
|
526
526
|
"""
|
|
527
527
|
Extract the bucket name and the object key from a request headers and path. This works with both virtual host
|
|
528
528
|
and path style requests.
|
|
@@ -556,7 +556,7 @@ def normalize_bucket_name(bucket_name):
|
|
|
556
556
|
return bucket_name
|
|
557
557
|
|
|
558
558
|
|
|
559
|
-
def get_bucket_and_key_from_s3_uri(s3_uri: str) ->
|
|
559
|
+
def get_bucket_and_key_from_s3_uri(s3_uri: str) -> tuple[str, str]:
|
|
560
560
|
"""
|
|
561
561
|
Extracts the bucket name and key from s3 uri
|
|
562
562
|
"""
|
|
@@ -564,7 +564,7 @@ def get_bucket_and_key_from_s3_uri(s3_uri: str) -> Tuple[str, str]:
|
|
|
564
564
|
return output_bucket, output_key
|
|
565
565
|
|
|
566
566
|
|
|
567
|
-
def get_bucket_and_key_from_presign_url(presign_url: str) ->
|
|
567
|
+
def get_bucket_and_key_from_presign_url(presign_url: str) -> tuple[str, str]:
|
|
568
568
|
"""
|
|
569
569
|
Extracts the bucket name and key from s3 presign url
|
|
570
570
|
"""
|
|
@@ -575,7 +575,7 @@ def get_bucket_and_key_from_presign_url(presign_url: str) -> Tuple[str, str]:
|
|
|
575
575
|
|
|
576
576
|
|
|
577
577
|
def _create_invalid_argument_exc(
|
|
578
|
-
message:
|
|
578
|
+
message: str | None, name: str, value: str, host_id: str = None
|
|
579
579
|
) -> InvalidArgument:
|
|
580
580
|
ex = InvalidArgument(message)
|
|
581
581
|
ex.ArgumentName = name
|
|
@@ -589,7 +589,7 @@ def capitalize_header_name_from_snake_case(header_name: str) -> str:
|
|
|
589
589
|
return "-".join([part.capitalize() for part in header_name.split("-")])
|
|
590
590
|
|
|
591
591
|
|
|
592
|
-
def get_kms_key_arn(kms_key: str, account_id: str, bucket_region: str) ->
|
|
592
|
+
def get_kms_key_arn(kms_key: str, account_id: str, bucket_region: str) -> str | None:
|
|
593
593
|
"""
|
|
594
594
|
In S3, the KMS key can be passed as a KeyId or a KeyArn. This method allows to always get the KeyArn from either.
|
|
595
595
|
It can also validate if the key is in the same region, and raise an exception.
|
|
@@ -762,7 +762,7 @@ def _match_lifecycle_filter(
|
|
|
762
762
|
|
|
763
763
|
def parse_expiration_header(
|
|
764
764
|
expiration_header: str,
|
|
765
|
-
) -> tuple[
|
|
765
|
+
) -> tuple[datetime.datetime | None, str | None]:
|
|
766
766
|
try:
|
|
767
767
|
header_values = dict(
|
|
768
768
|
(p.strip('"') for p in v.split("=")) for v in expiration_header.split('", ')
|
|
@@ -878,7 +878,7 @@ def get_retention_from_now(days: int = None, years: int = None) -> datetime.date
|
|
|
878
878
|
|
|
879
879
|
def get_failed_precondition_copy_source(
|
|
880
880
|
request: CopyObjectRequest, last_modified: datetime.datetime, etag: ETag
|
|
881
|
-
) ->
|
|
881
|
+
) -> str | None:
|
|
882
882
|
"""
|
|
883
883
|
Validate if the source object LastModified and ETag matches a precondition, and if it does, return the failed
|
|
884
884
|
precondition
|
|
@@ -1019,7 +1019,7 @@ def create_redirect_for_post_request(
|
|
|
1019
1019
|
return urlparser.urlunparse(newparts)
|
|
1020
1020
|
|
|
1021
1021
|
|
|
1022
|
-
def parse_post_object_tagging_xml(tagging: str) ->
|
|
1022
|
+
def parse_post_object_tagging_xml(tagging: str) -> dict | None:
|
|
1023
1023
|
try:
|
|
1024
1024
|
tag_set = {}
|
|
1025
1025
|
tags = xmltodict.parse(tagging)
|
|
@@ -173,7 +173,7 @@ def validate_acl_acp(acp: AccessControlPolicy) -> None:
|
|
|
173
173
|
continue
|
|
174
174
|
|
|
175
175
|
elif grant_type == GranteeType.CanonicalUser and not is_valid_canonical_id(
|
|
176
|
-
|
|
176
|
+
grantee_id := grantee.get("ID", "")
|
|
177
177
|
):
|
|
178
178
|
ex = _create_invalid_argument_exc("Invalid id", "CanonicalUser/ID", grantee_id)
|
|
179
179
|
raise ex
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import logging
|
|
2
2
|
import re
|
|
3
|
+
from collections.abc import Callable
|
|
3
4
|
from functools import wraps
|
|
4
|
-
from typing import Callable, Dict, Optional, Union
|
|
5
5
|
from urllib.parse import urlparse
|
|
6
6
|
|
|
7
7
|
from werkzeug.datastructures import Headers
|
|
@@ -32,8 +32,8 @@ class NoSuchKeyFromErrorDocument(NoSuchKey):
|
|
|
32
32
|
code: str = "NoSuchKey"
|
|
33
33
|
sender_fault: bool = False
|
|
34
34
|
status_code: int = 404
|
|
35
|
-
Key:
|
|
36
|
-
ErrorDocumentKey:
|
|
35
|
+
Key: ObjectKey | None
|
|
36
|
+
ErrorDocumentKey: ObjectKey | None
|
|
37
37
|
|
|
38
38
|
|
|
39
39
|
class S3WebsiteHostingHandler:
|
|
@@ -223,7 +223,7 @@ class S3WebsiteHostingHandler:
|
|
|
223
223
|
)
|
|
224
224
|
|
|
225
225
|
@staticmethod
|
|
226
|
-
def _get_response_headers_from_object(get_object_response: GetObjectOutput) ->
|
|
226
|
+
def _get_response_headers_from_object(get_object_response: GetObjectOutput) -> dict[str, str]:
|
|
227
227
|
"""
|
|
228
228
|
Only return some headers from the S3 Object
|
|
229
229
|
:param get_object_response: the response from S3.GetObject
|
|
@@ -248,7 +248,7 @@ class S3WebsiteHostingHandler:
|
|
|
248
248
|
@staticmethod
|
|
249
249
|
def _find_matching_rule(
|
|
250
250
|
routing_rules: RoutingRules, object_key: ObjectKey, error_code: int = None
|
|
251
|
-
) ->
|
|
251
|
+
) -> RoutingRule | None:
|
|
252
252
|
"""
|
|
253
253
|
Iterate over the routing rules set in the configuration, and return the first that match the key name and/or the
|
|
254
254
|
error code (in the 4XX range).
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
from __future__ import annotations
|
|
3
3
|
|
|
4
4
|
from pathlib import Path
|
|
5
|
-
from typing import
|
|
5
|
+
from typing import TypedDict
|
|
6
6
|
|
|
7
7
|
import localstack.services.cloudformation.provider_utils as util
|
|
8
8
|
from localstack.services.cloudformation.resource_provider import (
|
|
@@ -14,110 +14,110 @@ from localstack.services.cloudformation.resource_provider import (
|
|
|
14
14
|
|
|
15
15
|
|
|
16
16
|
class SchedulerScheduleProperties(TypedDict):
|
|
17
|
-
FlexibleTimeWindow:
|
|
18
|
-
ScheduleExpression:
|
|
19
|
-
Target:
|
|
20
|
-
Arn:
|
|
21
|
-
Description:
|
|
22
|
-
EndDate:
|
|
23
|
-
GroupName:
|
|
24
|
-
KmsKeyArn:
|
|
25
|
-
Name:
|
|
26
|
-
ScheduleExpressionTimezone:
|
|
27
|
-
StartDate:
|
|
28
|
-
State:
|
|
17
|
+
FlexibleTimeWindow: FlexibleTimeWindow | None
|
|
18
|
+
ScheduleExpression: str | None
|
|
19
|
+
Target: Target | None
|
|
20
|
+
Arn: str | None
|
|
21
|
+
Description: str | None
|
|
22
|
+
EndDate: str | None
|
|
23
|
+
GroupName: str | None
|
|
24
|
+
KmsKeyArn: str | None
|
|
25
|
+
Name: str | None
|
|
26
|
+
ScheduleExpressionTimezone: str | None
|
|
27
|
+
StartDate: str | None
|
|
28
|
+
State: str | None
|
|
29
29
|
|
|
30
30
|
|
|
31
31
|
class FlexibleTimeWindow(TypedDict):
|
|
32
|
-
Mode:
|
|
33
|
-
MaximumWindowInMinutes:
|
|
32
|
+
Mode: str | None
|
|
33
|
+
MaximumWindowInMinutes: float | None
|
|
34
34
|
|
|
35
35
|
|
|
36
36
|
class DeadLetterConfig(TypedDict):
|
|
37
|
-
Arn:
|
|
37
|
+
Arn: str | None
|
|
38
38
|
|
|
39
39
|
|
|
40
40
|
class RetryPolicy(TypedDict):
|
|
41
|
-
MaximumEventAgeInSeconds:
|
|
42
|
-
MaximumRetryAttempts:
|
|
41
|
+
MaximumEventAgeInSeconds: float | None
|
|
42
|
+
MaximumRetryAttempts: float | None
|
|
43
43
|
|
|
44
44
|
|
|
45
45
|
class AwsVpcConfiguration(TypedDict):
|
|
46
|
-
Subnets:
|
|
47
|
-
AssignPublicIp:
|
|
48
|
-
SecurityGroups:
|
|
46
|
+
Subnets: list[str] | None
|
|
47
|
+
AssignPublicIp: str | None
|
|
48
|
+
SecurityGroups: list[str] | None
|
|
49
49
|
|
|
50
50
|
|
|
51
51
|
class NetworkConfiguration(TypedDict):
|
|
52
|
-
AwsvpcConfiguration:
|
|
52
|
+
AwsvpcConfiguration: AwsVpcConfiguration | None
|
|
53
53
|
|
|
54
54
|
|
|
55
55
|
class CapacityProviderStrategyItem(TypedDict):
|
|
56
|
-
CapacityProvider:
|
|
57
|
-
Base:
|
|
58
|
-
Weight:
|
|
56
|
+
CapacityProvider: str | None
|
|
57
|
+
Base: float | None
|
|
58
|
+
Weight: float | None
|
|
59
59
|
|
|
60
60
|
|
|
61
61
|
class PlacementConstraint(TypedDict):
|
|
62
|
-
Expression:
|
|
63
|
-
Type:
|
|
62
|
+
Expression: str | None
|
|
63
|
+
Type: str | None
|
|
64
64
|
|
|
65
65
|
|
|
66
66
|
class PlacementStrategy(TypedDict):
|
|
67
|
-
Field:
|
|
68
|
-
Type:
|
|
67
|
+
Field: str | None
|
|
68
|
+
Type: str | None
|
|
69
69
|
|
|
70
70
|
|
|
71
71
|
class EcsParameters(TypedDict):
|
|
72
|
-
TaskDefinitionArn:
|
|
73
|
-
CapacityProviderStrategy:
|
|
74
|
-
EnableECSManagedTags:
|
|
75
|
-
EnableExecuteCommand:
|
|
76
|
-
Group:
|
|
77
|
-
LaunchType:
|
|
78
|
-
NetworkConfiguration:
|
|
79
|
-
PlacementConstraints:
|
|
80
|
-
PlacementStrategy:
|
|
81
|
-
PlatformVersion:
|
|
82
|
-
PropagateTags:
|
|
83
|
-
ReferenceId:
|
|
84
|
-
Tags:
|
|
85
|
-
TaskCount:
|
|
72
|
+
TaskDefinitionArn: str | None
|
|
73
|
+
CapacityProviderStrategy: list[CapacityProviderStrategyItem] | None
|
|
74
|
+
EnableECSManagedTags: bool | None
|
|
75
|
+
EnableExecuteCommand: bool | None
|
|
76
|
+
Group: str | None
|
|
77
|
+
LaunchType: str | None
|
|
78
|
+
NetworkConfiguration: NetworkConfiguration | None
|
|
79
|
+
PlacementConstraints: list[PlacementConstraint] | None
|
|
80
|
+
PlacementStrategy: list[PlacementStrategy] | None
|
|
81
|
+
PlatformVersion: str | None
|
|
82
|
+
PropagateTags: str | None
|
|
83
|
+
ReferenceId: str | None
|
|
84
|
+
Tags: list[dict] | None
|
|
85
|
+
TaskCount: float | None
|
|
86
86
|
|
|
87
87
|
|
|
88
88
|
class EventBridgeParameters(TypedDict):
|
|
89
|
-
DetailType:
|
|
90
|
-
Source:
|
|
89
|
+
DetailType: str | None
|
|
90
|
+
Source: str | None
|
|
91
91
|
|
|
92
92
|
|
|
93
93
|
class KinesisParameters(TypedDict):
|
|
94
|
-
PartitionKey:
|
|
94
|
+
PartitionKey: str | None
|
|
95
95
|
|
|
96
96
|
|
|
97
97
|
class SageMakerPipelineParameter(TypedDict):
|
|
98
|
-
Name:
|
|
99
|
-
Value:
|
|
98
|
+
Name: str | None
|
|
99
|
+
Value: str | None
|
|
100
100
|
|
|
101
101
|
|
|
102
102
|
class SageMakerPipelineParameters(TypedDict):
|
|
103
|
-
PipelineParameterList:
|
|
103
|
+
PipelineParameterList: list[SageMakerPipelineParameter] | None
|
|
104
104
|
|
|
105
105
|
|
|
106
106
|
class SqsParameters(TypedDict):
|
|
107
|
-
MessageGroupId:
|
|
107
|
+
MessageGroupId: str | None
|
|
108
108
|
|
|
109
109
|
|
|
110
110
|
class Target(TypedDict):
|
|
111
|
-
Arn:
|
|
112
|
-
RoleArn:
|
|
113
|
-
DeadLetterConfig:
|
|
114
|
-
EcsParameters:
|
|
115
|
-
EventBridgeParameters:
|
|
116
|
-
Input:
|
|
117
|
-
KinesisParameters:
|
|
118
|
-
RetryPolicy:
|
|
119
|
-
SageMakerPipelineParameters:
|
|
120
|
-
SqsParameters:
|
|
111
|
+
Arn: str | None
|
|
112
|
+
RoleArn: str | None
|
|
113
|
+
DeadLetterConfig: DeadLetterConfig | None
|
|
114
|
+
EcsParameters: EcsParameters | None
|
|
115
|
+
EventBridgeParameters: EventBridgeParameters | None
|
|
116
|
+
Input: str | None
|
|
117
|
+
KinesisParameters: KinesisParameters | None
|
|
118
|
+
RetryPolicy: RetryPolicy | None
|
|
119
|
+
SageMakerPipelineParameters: SageMakerPipelineParameters | None
|
|
120
|
+
SqsParameters: SqsParameters | None
|
|
121
121
|
|
|
122
122
|
|
|
123
123
|
REPEATED_INVOCATION = "repeated_invocation"
|
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
from typing import Optional, Type
|
|
2
|
-
|
|
3
1
|
from localstack.services.cloudformation.resource_provider import (
|
|
4
2
|
CloudFormationResourceProviderPlugin,
|
|
5
3
|
ResourceProvider,
|
|
@@ -10,7 +8,7 @@ class SchedulerScheduleProviderPlugin(CloudFormationResourceProviderPlugin):
|
|
|
10
8
|
name = "AWS::Scheduler::Schedule"
|
|
11
9
|
|
|
12
10
|
def __init__(self):
|
|
13
|
-
self.factory:
|
|
11
|
+
self.factory: type[ResourceProvider] | None = None
|
|
14
12
|
|
|
15
13
|
def load(self):
|
|
16
14
|
from localstack.services.scheduler.resource_providers.aws_scheduler_schedule import (
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
from __future__ import annotations
|
|
3
3
|
|
|
4
4
|
from pathlib import Path
|
|
5
|
-
from typing import
|
|
5
|
+
from typing import TypedDict
|
|
6
6
|
|
|
7
7
|
import localstack.services.cloudformation.provider_utils as util
|
|
8
8
|
from localstack.services.cloudformation.resource_provider import (
|
|
@@ -14,17 +14,17 @@ from localstack.services.cloudformation.resource_provider import (
|
|
|
14
14
|
|
|
15
15
|
|
|
16
16
|
class SchedulerScheduleGroupProperties(TypedDict):
|
|
17
|
-
Arn:
|
|
18
|
-
CreationDate:
|
|
19
|
-
LastModificationDate:
|
|
20
|
-
Name:
|
|
21
|
-
State:
|
|
22
|
-
Tags:
|
|
17
|
+
Arn: str | None
|
|
18
|
+
CreationDate: str | None
|
|
19
|
+
LastModificationDate: str | None
|
|
20
|
+
Name: str | None
|
|
21
|
+
State: str | None
|
|
22
|
+
Tags: list[Tag] | None
|
|
23
23
|
|
|
24
24
|
|
|
25
25
|
class Tag(TypedDict):
|
|
26
|
-
Key:
|
|
27
|
-
Value:
|
|
26
|
+
Key: str | None
|
|
27
|
+
Value: str | None
|
|
28
28
|
|
|
29
29
|
|
|
30
30
|
REPEATED_INVOCATION = "repeated_invocation"
|
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
from typing import Optional, Type
|
|
2
|
-
|
|
3
1
|
from localstack.services.cloudformation.resource_provider import (
|
|
4
2
|
CloudFormationResourceProviderPlugin,
|
|
5
3
|
ResourceProvider,
|
|
@@ -10,7 +8,7 @@ class SchedulerScheduleGroupProviderPlugin(CloudFormationResourceProviderPlugin)
|
|
|
10
8
|
name = "AWS::Scheduler::ScheduleGroup"
|
|
11
9
|
|
|
12
10
|
def __init__(self):
|
|
13
|
-
self.factory:
|
|
11
|
+
self.factory: type[ResourceProvider] | None = None
|
|
14
12
|
|
|
15
13
|
def load(self):
|
|
16
14
|
from localstack.services.scheduler.resource_providers.aws_scheduler_schedulegroup import (
|
|
@@ -5,7 +5,7 @@ import json
|
|
|
5
5
|
import logging
|
|
6
6
|
import re
|
|
7
7
|
import time
|
|
8
|
-
from typing import Any, Final
|
|
8
|
+
from typing import Any, Final
|
|
9
9
|
|
|
10
10
|
import moto.secretsmanager.exceptions as moto_exception
|
|
11
11
|
from botocore.utils import InvalidArnException
|
|
@@ -135,7 +135,7 @@ class SecretsmanagerProvider(SecretsmanagerApi):
|
|
|
135
135
|
return bool(re.match(r"^[A-Za-z0-9/_+=.@-]+\Z", secret_id))
|
|
136
136
|
|
|
137
137
|
@staticmethod
|
|
138
|
-
def _raise_if_invalid_secret_id(secret_id:
|
|
138
|
+
def _raise_if_invalid_secret_id(secret_id: SecretIdType | NameType):
|
|
139
139
|
# Patches moto's implementation for which secret_ids are not validated, by raising a ValidationException.
|
|
140
140
|
# Skips this check if the secret_id provided appears to be an arn (starting with 'arn:').
|
|
141
141
|
if not re.match(
|
|
@@ -149,12 +149,10 @@ class SecretsmanagerProvider(SecretsmanagerApi):
|
|
|
149
149
|
|
|
150
150
|
@staticmethod
|
|
151
151
|
def _raise_if_missing_client_req_token(
|
|
152
|
-
request:
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
UpdateSecretRequest,
|
|
157
|
-
],
|
|
152
|
+
request: CreateSecretRequest
|
|
153
|
+
| PutSecretValueRequest
|
|
154
|
+
| RotateSecretRequest
|
|
155
|
+
| UpdateSecretRequest,
|
|
158
156
|
):
|
|
159
157
|
if "ClientRequestToken" not in request:
|
|
160
158
|
raise InvalidRequestException(
|
|
@@ -201,8 +199,8 @@ class SecretsmanagerProvider(SecretsmanagerApi):
|
|
|
201
199
|
) -> DeleteSecretResponse:
|
|
202
200
|
secret_id: str = request["SecretId"]
|
|
203
201
|
self._raise_if_invalid_secret_id(secret_id)
|
|
204
|
-
recovery_window_in_days:
|
|
205
|
-
force_delete_without_recovery:
|
|
202
|
+
recovery_window_in_days: int | None = request.get("RecoveryWindowInDays")
|
|
203
|
+
force_delete_without_recovery: bool | None = request.get("ForceDeleteWithoutRecovery")
|
|
206
204
|
|
|
207
205
|
backend = SecretsmanagerProvider.get_moto_backend_for_resource(secret_id, context)
|
|
208
206
|
try:
|
|
@@ -495,7 +493,7 @@ def moto_smb_get_secret_value(fn, self, secret_id, version_id, version_stage):
|
|
|
495
493
|
def moto_smb_create_secret(fn, self, name, *args, **kwargs):
|
|
496
494
|
# Creating a secret with a SecretId equal to one that is scheduled for
|
|
497
495
|
# deletion should raise an 'InvalidRequestException'.
|
|
498
|
-
secret:
|
|
496
|
+
secret: FakeSecret | None = self.secrets.get(name)
|
|
499
497
|
if secret is not None and secret.deleted_date is not None:
|
|
500
498
|
raise InvalidRequestException(AWS_INVALID_REQUEST_MESSAGE_CREATE_WITH_SCHEDULED_DELETION)
|
|
501
499
|
|
|
@@ -3,7 +3,7 @@ from __future__ import annotations
|
|
|
3
3
|
|
|
4
4
|
import json
|
|
5
5
|
from pathlib import Path
|
|
6
|
-
from typing import
|
|
6
|
+
from typing import TypedDict
|
|
7
7
|
|
|
8
8
|
import localstack.services.cloudformation.provider_utils as util
|
|
9
9
|
from localstack.services.cloudformation.resource_provider import (
|
|
@@ -15,10 +15,10 @@ from localstack.services.cloudformation.resource_provider import (
|
|
|
15
15
|
|
|
16
16
|
|
|
17
17
|
class SecretsManagerResourcePolicyProperties(TypedDict):
|
|
18
|
-
ResourcePolicy:
|
|
19
|
-
SecretId:
|
|
20
|
-
BlockPublicPolicy:
|
|
21
|
-
Id:
|
|
18
|
+
ResourcePolicy: dict | None
|
|
19
|
+
SecretId: str | None
|
|
20
|
+
BlockPublicPolicy: bool | None
|
|
21
|
+
Id: str | None
|
|
22
22
|
|
|
23
23
|
|
|
24
24
|
REPEATED_INVOCATION = "repeated_invocation"
|
localstack/services/secretsmanager/resource_providers/aws_secretsmanager_resourcepolicy_plugin.py
CHANGED
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
from typing import Optional, Type
|
|
2
|
-
|
|
3
1
|
from localstack.services.cloudformation.resource_provider import (
|
|
4
2
|
CloudFormationResourceProviderPlugin,
|
|
5
3
|
ResourceProvider,
|
|
@@ -10,7 +8,7 @@ class SecretsManagerResourcePolicyProviderPlugin(CloudFormationResourceProviderP
|
|
|
10
8
|
name = "AWS::SecretsManager::ResourcePolicy"
|
|
11
9
|
|
|
12
10
|
def __init__(self):
|
|
13
|
-
self.factory:
|
|
11
|
+
self.factory: type[ResourceProvider] | None = None
|
|
14
12
|
|
|
15
13
|
def load(self):
|
|
16
14
|
from localstack.services.secretsmanager.resource_providers.aws_secretsmanager_resourcepolicy import (
|
localstack/services/secretsmanager/resource_providers/aws_secretsmanager_rotationschedule.py
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
from __future__ import annotations
|
|
3
3
|
|
|
4
4
|
from pathlib import Path
|
|
5
|
-
from typing import
|
|
5
|
+
from typing import TypedDict
|
|
6
6
|
|
|
7
7
|
import localstack.services.cloudformation.provider_utils as util
|
|
8
8
|
from localstack.services.cloudformation.resource_provider import (
|
|
@@ -14,32 +14,32 @@ from localstack.services.cloudformation.resource_provider import (
|
|
|
14
14
|
|
|
15
15
|
|
|
16
16
|
class SecretsManagerRotationScheduleProperties(TypedDict):
|
|
17
|
-
SecretId:
|
|
18
|
-
HostedRotationLambda:
|
|
19
|
-
Id:
|
|
20
|
-
RotateImmediatelyOnUpdate:
|
|
21
|
-
RotationLambdaARN:
|
|
22
|
-
RotationRules:
|
|
17
|
+
SecretId: str | None
|
|
18
|
+
HostedRotationLambda: HostedRotationLambda | None
|
|
19
|
+
Id: str | None
|
|
20
|
+
RotateImmediatelyOnUpdate: bool | None
|
|
21
|
+
RotationLambdaARN: str | None
|
|
22
|
+
RotationRules: RotationRules | None
|
|
23
23
|
|
|
24
24
|
|
|
25
25
|
class RotationRules(TypedDict):
|
|
26
|
-
AutomaticallyAfterDays:
|
|
27
|
-
Duration:
|
|
28
|
-
ScheduleExpression:
|
|
26
|
+
AutomaticallyAfterDays: int | None
|
|
27
|
+
Duration: str | None
|
|
28
|
+
ScheduleExpression: str | None
|
|
29
29
|
|
|
30
30
|
|
|
31
31
|
class HostedRotationLambda(TypedDict):
|
|
32
|
-
RotationType:
|
|
33
|
-
ExcludeCharacters:
|
|
34
|
-
KmsKeyArn:
|
|
35
|
-
MasterSecretArn:
|
|
36
|
-
MasterSecretKmsKeyArn:
|
|
37
|
-
RotationLambdaName:
|
|
38
|
-
Runtime:
|
|
39
|
-
SuperuserSecretArn:
|
|
40
|
-
SuperuserSecretKmsKeyArn:
|
|
41
|
-
VpcSecurityGroupIds:
|
|
42
|
-
VpcSubnetIds:
|
|
32
|
+
RotationType: str | None
|
|
33
|
+
ExcludeCharacters: str | None
|
|
34
|
+
KmsKeyArn: str | None
|
|
35
|
+
MasterSecretArn: str | None
|
|
36
|
+
MasterSecretKmsKeyArn: str | None
|
|
37
|
+
RotationLambdaName: str | None
|
|
38
|
+
Runtime: str | None
|
|
39
|
+
SuperuserSecretArn: str | None
|
|
40
|
+
SuperuserSecretKmsKeyArn: str | None
|
|
41
|
+
VpcSecurityGroupIds: str | None
|
|
42
|
+
VpcSubnetIds: str | None
|
|
43
43
|
|
|
44
44
|
|
|
45
45
|
REPEATED_INVOCATION = "repeated_invocation"
|
localstack/services/secretsmanager/resource_providers/aws_secretsmanager_rotationschedule_plugin.py
CHANGED
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
from typing import Optional, Type
|
|
2
|
-
|
|
3
1
|
from localstack.services.cloudformation.resource_provider import (
|
|
4
2
|
CloudFormationResourceProviderPlugin,
|
|
5
3
|
ResourceProvider,
|
|
@@ -10,7 +8,7 @@ class SecretsManagerRotationScheduleProviderPlugin(CloudFormationResourceProvide
|
|
|
10
8
|
name = "AWS::SecretsManager::RotationSchedule"
|
|
11
9
|
|
|
12
10
|
def __init__(self):
|
|
13
|
-
self.factory:
|
|
11
|
+
self.factory: type[ResourceProvider] | None = None
|
|
14
12
|
|
|
15
13
|
def load(self):
|
|
16
14
|
from localstack.services.secretsmanager.resource_providers.aws_secretsmanager_rotationschedule import (
|
|
@@ -6,7 +6,7 @@ import logging
|
|
|
6
6
|
import random
|
|
7
7
|
import string
|
|
8
8
|
from pathlib import Path
|
|
9
|
-
from typing import
|
|
9
|
+
from typing import TypedDict
|
|
10
10
|
|
|
11
11
|
import localstack.services.cloudformation.provider_utils as util
|
|
12
12
|
from localstack.services.cloudformation.resource_provider import (
|
|
@@ -20,37 +20,37 @@ LOG = logging.getLogger(__name__)
|
|
|
20
20
|
|
|
21
21
|
|
|
22
22
|
class SecretsManagerSecretProperties(TypedDict):
|
|
23
|
-
Description:
|
|
24
|
-
GenerateSecretString:
|
|
25
|
-
Id:
|
|
26
|
-
KmsKeyId:
|
|
27
|
-
Name:
|
|
28
|
-
ReplicaRegions:
|
|
29
|
-
SecretString:
|
|
30
|
-
Tags:
|
|
23
|
+
Description: str | None
|
|
24
|
+
GenerateSecretString: GenerateSecretString | None
|
|
25
|
+
Id: str | None
|
|
26
|
+
KmsKeyId: str | None
|
|
27
|
+
Name: str | None
|
|
28
|
+
ReplicaRegions: list[ReplicaRegion] | None
|
|
29
|
+
SecretString: str | None
|
|
30
|
+
Tags: list[Tag] | None
|
|
31
31
|
|
|
32
32
|
|
|
33
33
|
class GenerateSecretString(TypedDict):
|
|
34
|
-
ExcludeCharacters:
|
|
35
|
-
ExcludeLowercase:
|
|
36
|
-
ExcludeNumbers:
|
|
37
|
-
ExcludePunctuation:
|
|
38
|
-
ExcludeUppercase:
|
|
39
|
-
GenerateStringKey:
|
|
40
|
-
IncludeSpace:
|
|
41
|
-
PasswordLength:
|
|
42
|
-
RequireEachIncludedType:
|
|
43
|
-
SecretStringTemplate:
|
|
34
|
+
ExcludeCharacters: str | None
|
|
35
|
+
ExcludeLowercase: bool | None
|
|
36
|
+
ExcludeNumbers: bool | None
|
|
37
|
+
ExcludePunctuation: bool | None
|
|
38
|
+
ExcludeUppercase: bool | None
|
|
39
|
+
GenerateStringKey: str | None
|
|
40
|
+
IncludeSpace: bool | None
|
|
41
|
+
PasswordLength: int | None
|
|
42
|
+
RequireEachIncludedType: bool | None
|
|
43
|
+
SecretStringTemplate: str | None
|
|
44
44
|
|
|
45
45
|
|
|
46
46
|
class ReplicaRegion(TypedDict):
|
|
47
|
-
Region:
|
|
48
|
-
KmsKeyId:
|
|
47
|
+
Region: str | None
|
|
48
|
+
KmsKeyId: str | None
|
|
49
49
|
|
|
50
50
|
|
|
51
51
|
class Tag(TypedDict):
|
|
52
|
-
Key:
|
|
53
|
-
Value:
|
|
52
|
+
Key: str | None
|
|
53
|
+
Value: str | None
|
|
54
54
|
|
|
55
55
|
|
|
56
56
|
REPEATED_INVOCATION = "repeated_invocation"
|
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
from typing import Optional, Type
|
|
2
|
-
|
|
3
1
|
from localstack.services.cloudformation.resource_provider import (
|
|
4
2
|
CloudFormationResourceProviderPlugin,
|
|
5
3
|
ResourceProvider,
|
|
@@ -10,7 +8,7 @@ class SecretsManagerSecretProviderPlugin(CloudFormationResourceProviderPlugin):
|
|
|
10
8
|
name = "AWS::SecretsManager::Secret"
|
|
11
9
|
|
|
12
10
|
def __init__(self):
|
|
13
|
-
self.factory:
|
|
11
|
+
self.factory: type[ResourceProvider] | None = None
|
|
14
12
|
|
|
15
13
|
def load(self):
|
|
16
14
|
from localstack.services.secretsmanager.resource_providers.aws_secretsmanager_secret import (
|