localstack-core 4.6.1.dev60__py3-none-any.whl → 4.10.1.dev12__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/cloudformation/__init__.py +18 -4
- localstack/aws/api/cloudwatch/__init__.py +41 -1
- localstack/aws/api/config/__init__.py +4 -0
- localstack/aws/api/core.py +8 -5
- localstack/aws/api/dynamodb/__init__.py +30 -0
- localstack/aws/api/ec2/__init__.py +1545 -66
- localstack/aws/api/events/__init__.py +12 -16
- localstack/aws/api/iam/__init__.py +7 -0
- localstack/aws/api/kinesis/__init__.py +19 -0
- localstack/aws/api/kms/__init__.py +6 -0
- localstack/aws/api/lambda_/__init__.py +36 -23
- localstack/aws/api/logs/__init__.py +20 -8
- localstack/aws/api/opensearch/__init__.py +16 -0
- localstack/aws/api/pipes/__init__.py +24 -32
- localstack/aws/api/redshift/__init__.py +9 -3
- localstack/aws/api/route53/__init__.py +5 -0
- localstack/aws/api/s3/__init__.py +12 -0
- localstack/aws/api/s3control/__init__.py +56 -0
- localstack/aws/api/scheduler/__init__.py +14 -16
- localstack/aws/api/ssm/__init__.py +2 -0
- localstack/aws/api/stepfunctions/__init__.py +88 -114
- localstack/aws/api/support/__init__.py +8 -9
- localstack/aws/api/transcribe/__init__.py +17 -0
- localstack/aws/chain.py +2 -2
- localstack/aws/client.py +14 -11
- localstack/aws/connect.py +42 -41
- localstack/aws/forwarder.py +57 -9
- localstack/aws/gateway.py +1 -3
- localstack/aws/handlers/analytics.py +2 -3
- localstack/aws/handlers/cors.py +4 -5
- localstack/aws/handlers/internal_requests.py +6 -1
- localstack/aws/handlers/logging.py +13 -4
- localstack/aws/handlers/metric_handler.py +44 -5
- localstack/aws/handlers/service.py +48 -28
- localstack/aws/mocking.py +18 -27
- localstack/aws/patches.py +2 -2
- localstack/aws/protocol/op_router.py +11 -10
- localstack/aws/protocol/parser.py +475 -49
- localstack/aws/protocol/serializer.py +723 -106
- localstack/aws/protocol/service_router.py +133 -33
- localstack/aws/protocol/validate.py +6 -6
- localstack/aws/scaffold.py +9 -10
- 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 +12 -11
- localstack/aws/spec-patches.json +58 -0
- localstack/aws/spec.py +66 -46
- localstack/cli/exceptions.py +1 -1
- localstack/cli/localstack.py +11 -11
- localstack/cli/lpm.py +4 -5
- localstack/cli/plugins.py +1 -1
- localstack/cli/profiles.py +1 -2
- localstack/config.py +44 -30
- localstack/constants.py +4 -29
- localstack/deprecations.py +5 -5
- localstack/dev/kubernetes/__main__.py +130 -7
- localstack/dev/run/__main__.py +5 -5
- localstack/dev/run/configurators.py +1 -4
- localstack/dev/run/paths.py +6 -6
- localstack/dns/models.py +2 -1
- localstack/dns/plugins.py +5 -1
- localstack/dns/server.py +16 -6
- 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 +6 -6
- localstack/packages/api.py +13 -12
- localstack/packages/core.py +4 -4
- localstack/packages/debugpy.py +1 -3
- localstack/packages/ffmpeg.py +1 -2
- localstack/packages/java.py +38 -12
- localstack/packages/plugins.py +0 -8
- localstack/runtime/analytics.py +3 -0
- localstack/runtime/hooks.py +1 -1
- localstack/runtime/init.py +8 -9
- localstack/runtime/main.py +5 -5
- localstack/runtime/patches.py +2 -2
- localstack/runtime/shutdown.py +2 -1
- localstack/services/apigateway/exporter.py +1 -2
- localstack/services/apigateway/helpers.py +7 -10
- localstack/services/apigateway/legacy/context.py +21 -21
- localstack/services/apigateway/legacy/helpers.py +27 -28
- localstack/services/apigateway/legacy/integration.py +11 -10
- localstack/services/apigateway/legacy/invocations.py +6 -5
- localstack/services/apigateway/legacy/provider.py +148 -68
- localstack/services/apigateway/legacy/router_asf.py +2 -2
- localstack/services/apigateway/legacy/templates.py +6 -6
- 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/method_request.py +7 -2
- localstack/services/apigateway/next_gen/execute_api/handlers/parse.py +1 -2
- localstack/services/apigateway/next_gen/execute_api/handlers/resource_router.py +2 -3
- 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 +9 -6
- localstack/services/apigateway/next_gen/execute_api/integrations/http.py +12 -12
- localstack/services/apigateway/next_gen/execute_api/router.py +31 -0
- localstack/services/apigateway/next_gen/execute_api/template_mapping.py +2 -2
- localstack/services/apigateway/next_gen/execute_api/test_invoke.py +114 -9
- localstack/services/apigateway/next_gen/execute_api/variables.py +63 -63
- localstack/services/apigateway/next_gen/provider.py +5 -0
- 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 +6 -6
- 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 +4 -3
- 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/api_utils.py +4 -8
- localstack/services/cloudformation/cfn_utils.py +2 -2
- localstack/services/cloudformation/deployment_utils.py +14 -12
- localstack/services/cloudformation/engine/changes.py +3 -3
- localstack/services/cloudformation/engine/entities.py +27 -17
- localstack/services/cloudformation/engine/parameters.py +4 -4
- localstack/services/cloudformation/engine/template_deployer.py +15 -14
- localstack/services/cloudformation/engine/template_utils.py +34 -12
- localstack/services/cloudformation/engine/transformers.py +11 -8
- localstack/services/cloudformation/engine/types.py +5 -4
- localstack/services/cloudformation/engine/v2/change_set_model.py +336 -39
- localstack/services/cloudformation/engine/v2/change_set_model_describer.py +96 -17
- localstack/services/cloudformation/engine/v2/change_set_model_executor.py +289 -136
- localstack/services/cloudformation/engine/v2/change_set_model_preproc.py +315 -146
- localstack/services/cloudformation/engine/v2/change_set_model_transform.py +380 -105
- localstack/services/cloudformation/engine/v2/change_set_model_validator.py +183 -0
- localstack/services/cloudformation/engine/v2/change_set_model_visitor.py +6 -0
- localstack/services/cloudformation/engine/v2/resolving.py +102 -0
- localstack/services/cloudformation/engine/yaml_parser.py +9 -2
- localstack/services/cloudformation/provider.py +11 -6
- localstack/services/cloudformation/provider_utils.py +34 -4
- localstack/services/cloudformation/resource_provider.py +31 -21
- 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/resources.py +24149 -0
- localstack/services/cloudformation/scaffolding/__main__.py +13 -12
- localstack/services/cloudformation/scaffolding/propgen.py +2 -2
- localstack/services/cloudformation/service_models.py +2 -2
- localstack/services/cloudformation/stores.py +33 -22
- localstack/services/cloudformation/v2/entities.py +103 -88
- localstack/services/cloudformation/v2/provider.py +872 -131
- localstack/services/cloudformation/v2/types.py +38 -0
- localstack/services/cloudformation/v2/utils.py +4 -1
- localstack/services/cloudwatch/alarm_scheduler.py +11 -8
- localstack/services/cloudwatch/cloudwatch_database_helper.py +4 -5
- localstack/services/cloudwatch/models.py +5 -7
- localstack/services/cloudwatch/provider.py +30 -25
- localstack/services/cloudwatch/provider_v2.py +27 -32
- 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 +3 -3
- localstack/services/dynamodb/provider.py +159 -18
- 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/server.py +2 -2
- localstack/services/dynamodb/utils.py +13 -14
- localstack/services/dynamodb/v2/provider.py +157 -18
- localstack/services/dynamodbstreams/dynamodbstreams_api.py +2 -2
- localstack/services/dynamodbstreams/models.py +1 -3
- localstack/services/ec2/patches.py +26 -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 +29 -22
- 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 +22 -19
- localstack/services/ecr/resource_providers/aws_ecr_repository_plugin.py +1 -3
- localstack/services/edge.py +6 -6
- localstack/services/es/provider.py +21 -21
- 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/event_rule_engine.py +31 -13
- localstack/services/events/models.py +29 -30
- localstack/services/events/provider.py +29 -26
- 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 +21 -13
- localstack/services/events/utils.py +7 -7
- localstack/services/events/v1/models.py +1 -3
- localstack/services/events/v1/provider.py +15 -15
- localstack/services/firehose/models.py +1 -3
- localstack/services/firehose/provider.py +25 -16
- localstack/services/iam/iam_patches.py +5 -6
- localstack/services/iam/provider.py +14 -119
- 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/iam/resources/policy_simulator.py +133 -0
- localstack/services/kinesis/kinesis_mock_server.py +7 -8
- localstack/services/kinesis/models.py +17 -5
- localstack/services/kinesis/packages.py +3 -3
- localstack/services/kinesis/provider.py +86 -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 +21 -18
- localstack/services/kms/provider.py +62 -26
- 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 +4 -3
- localstack/services/lambda_/api_utils.py +19 -16
- localstack/services/lambda_/custom_endpoints.py +2 -2
- localstack/services/lambda_/event_source_mapping/esm_worker_factory.py +4 -7
- 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_/hooks.py +6 -1
- localstack/services/lambda_/invocation/assignment.py +1 -2
- localstack/services/lambda_/invocation/docker_runtime_executor.py +7 -11
- localstack/services/lambda_/invocation/event_manager.py +1 -1
- localstack/services/lambda_/invocation/execution_environment.py +4 -4
- localstack/services/lambda_/invocation/executor_endpoint.py +8 -11
- localstack/services/lambda_/invocation/internal_sqs_queue.py +6 -10
- localstack/services/lambda_/invocation/lambda_models.py +33 -30
- localstack/services/lambda_/invocation/lambda_service.py +12 -5
- localstack/services/lambda_/invocation/logs.py +2 -3
- localstack/services/lambda_/invocation/runtime_executor.py +3 -3
- localstack/services/lambda_/invocation/version_manager.py +31 -8
- localstack/services/lambda_/ldm.py +14 -0
- localstack/services/lambda_/packages.py +3 -4
- localstack/services/lambda_/provider.py +9 -26
- localstack/services/lambda_/provider_utils.py +1 -1
- 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 +15 -15
- 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/lambda_/urlrouter.py +14 -1
- localstack/services/logs/models.py +1 -3
- localstack/services/logs/provider.py +39 -22
- 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 +5 -4
- localstack/services/opensearch/cluster.py +28 -20
- localstack/services/opensearch/cluster_manager.py +13 -14
- localstack/services/opensearch/models.py +1 -3
- localstack/services/opensearch/packages.py +27 -9
- localstack/services/opensearch/provider.py +15 -10
- 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 +57 -10
- localstack/services/plugins.py +37 -32
- localstack/services/providers.py +10 -2
- localstack/services/redshift/provider.py +0 -21
- 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/constants.py +5 -2
- localstack/services/s3/cors.py +8 -8
- localstack/services/s3/models.py +73 -73
- localstack/services/s3/notifications.py +74 -58
- localstack/services/s3/presigned_url.py +41 -59
- localstack/services/s3/provider.py +86 -29
- 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 +51 -31
- localstack/services/s3/validation.py +47 -33
- localstack/services/s3/website_hosting.py +9 -7
- 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 +10 -12
- 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/models.py +8 -1
- localstack/services/ses/provider.py +128 -55
- 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/constants.py +7 -1
- localstack/services/sns/executor.py +9 -2
- localstack/services/sns/models.py +25 -25
- localstack/services/sns/provider.py +9 -7
- localstack/services/sns/publisher.py +37 -23
- 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/sns/v2/models.py +167 -0
- localstack/services/sns/v2/provider.py +867 -0
- localstack/services/sns/v2/utils.py +130 -0
- localstack/services/sqs/constants.py +2 -2
- localstack/services/sqs/developer_api.py +205 -0
- localstack/services/sqs/models.py +71 -36
- localstack/services/sqs/provider.py +56 -332
- localstack/services/sqs/query_api.py +8 -5
- 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 +7 -5
- localstack/services/sqs/resource_providers/aws_sqs_queuepolicy_plugin.py +1 -3
- localstack/services/sqs/utils.py +123 -4
- localstack/services/ssm/provider.py +3 -4
- 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/assign/assign_decl.py +1 -1
- localstack/services/stepfunctions/asl/component/common/assign/assign_decl_binding.py +1 -1
- localstack/services/stepfunctions/asl/component/common/assign/assign_template_value_array.py +1 -1
- localstack/services/stepfunctions/asl/component/common/assign/assign_template_value_object.py +1 -1
- 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/error_name/states_error_name_type.py +1 -1
- localstack/services/stepfunctions/asl/component/common/jsonata/jsonata_template_binding.py +2 -2
- localstack/services/stepfunctions/asl/component/common/jsonata/jsonata_template_value_array.py +1 -1
- localstack/services/stepfunctions/asl/component/common/jsonata/jsonata_template_value_object.py +1 -1
- localstack/services/stepfunctions/asl/component/common/path/input_path.py +4 -4
- localstack/services/stepfunctions/asl/component/common/path/output_path.py +4 -4
- localstack/services/stepfunctions/asl/component/common/path/result_path.py +3 -3
- localstack/services/stepfunctions/asl/component/common/payload/payloadvalue/payloadarr/payload_arr.py +1 -1
- localstack/services/stepfunctions/asl/component/common/payload/payloadvalue/payloadbinding/payload_binding.py +3 -3
- localstack/services/stepfunctions/asl/component/common/payload/payloadvalue/payloadtmpl/payload_tmpl.py +1 -1
- localstack/services/stepfunctions/asl/component/common/retry/retrier_decl.py +8 -8
- localstack/services/stepfunctions/asl/component/common/string/string_expression.py +3 -3
- 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 +4 -4
- localstack/services/stepfunctions/asl/component/intrinsic/function/statesfunction/array/array_partition.py +1 -1
- localstack/services/stepfunctions/asl/component/intrinsic/function/statesfunction/generic/string_format.py +1 -1
- localstack/services/stepfunctions/asl/component/intrinsic/function/statesfunction/states_function_array.py +1 -1
- localstack/services/stepfunctions/asl/component/intrinsic/function/statesfunction/states_function_format.py +1 -1
- localstack/services/stepfunctions/asl/component/intrinsic/jsonata.py +3 -3
- localstack/services/stepfunctions/asl/component/intrinsic/member.py +1 -1
- localstack/services/stepfunctions/asl/component/program/program.py +9 -9
- localstack/services/stepfunctions/asl/component/program/states.py +1 -1
- 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/comparison.py +5 -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 +3 -5
- localstack/services/stepfunctions/asl/component/state/state_execution/execute_state.py +9 -9
- localstack/services/stepfunctions/asl/component/state/state_execution/state_map/item_reader/item_reader_decl.py +7 -7
- 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/item_reader/resource_eval/resource_output_transformer/resource_output_transformer_csv.py +2 -2
- 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 +12 -13
- 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 +7 -7
- localstack/services/stepfunctions/asl/component/state/state_execution/state_parallel/state_parallel.py +2 -3
- localstack/services/stepfunctions/asl/component/state/state_execution/state_task/lambda_eval_utils.py +7 -7
- 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 +18 -18
- localstack/services/stepfunctions/asl/component/state/state_execution/state_task/service/state_task_service_aws_sdk.py +1 -1
- localstack/services/stepfunctions/asl/component/state/state_execution/state_task/service/state_task_service_batch.py +8 -7
- 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 +5 -5
- 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 +3 -5
- localstack/services/stepfunctions/asl/component/state/state_pass/state_pass.py +5 -7
- localstack/services/stepfunctions/asl/component/state/state_succeed/state_succeed.py +1 -1
- localstack/services/stepfunctions/asl/component/state/state_wait/state_wait.py +1 -1
- 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 +22 -24
- localstack/services/stepfunctions/asl/eval/evaluation_details.py +3 -5
- localstack/services/stepfunctions/asl/eval/event/event_manager.py +10 -10
- 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 +12 -12
- localstack/services/stepfunctions/asl/eval/test_state/environment.py +3 -5
- localstack/services/stepfunctions/asl/eval/variable_store.py +6 -6
- localstack/services/stepfunctions/asl/jsonata/jsonata.py +7 -6
- localstack/services/stepfunctions/asl/parse/asl_parser.py +1 -1
- localstack/services/stepfunctions/asl/parse/intrinsic/preprocessor.py +2 -3
- localstack/services/stepfunctions/asl/parse/preprocessor.py +44 -44
- localstack/services/stepfunctions/asl/parse/typed_props.py +2 -2
- localstack/services/stepfunctions/asl/static_analyser/intrinsic/variable_names_intrinsic_static_analyser.py +1 -1
- localstack/services/stepfunctions/asl/static_analyser/variable_references_static_analyser.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 +8 -8
- localstack/services/stepfunctions/backend/execution.py +29 -30
- localstack/services/stepfunctions/backend/execution_worker.py +7 -7
- localstack/services/stepfunctions/backend/state_machine.py +28 -28
- 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 +9 -9
- localstack/services/stepfunctions/mocking/mock_config_file.py +10 -10
- localstack/services/stepfunctions/packages.py +14 -5
- localstack/services/stepfunctions/provider.py +34 -44
- 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 +8 -8
- localstack/services/transcribe/packages.py +1 -3
- localstack/services/transcribe/provider.py +8 -3
- localstack/state/codecs.py +61 -0
- localstack/state/core.py +11 -5
- localstack/state/inspect.py +4 -4
- localstack/state/pickle.py +36 -23
- localstack/testing/aws/asf_utils.py +3 -2
- localstack/testing/aws/cloudformation_utils.py +1 -1
- localstack/testing/aws/lambda_utils.py +15 -14
- localstack/testing/aws/util.py +3 -2
- localstack/testing/pytest/cloudformation/fixtures.py +68 -18
- localstack/testing/pytest/container.py +5 -5
- localstack/testing/pytest/filters.py +1 -3
- localstack/testing/pytest/fixtures.py +188 -49
- localstack/testing/pytest/in_memory_localstack.py +1 -3
- localstack/testing/pytest/marking.py +42 -15
- localstack/testing/pytest/path_filter.py +1 -1
- localstack/testing/pytest/stepfunctions/fixtures.py +4 -4
- localstack/testing/pytest/stepfunctions/utils.py +11 -10
- localstack/testing/pytest/util.py +1 -1
- localstack/testing/pytest/validation_tracking.py +3 -4
- localstack/testing/scenario/provisioning.py +11 -10
- localstack/testing/snapshots/transformer_utility.py +8 -3
- 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/metadata.py +6 -4
- localstack/utils/analytics/metrics/counter.py +11 -18
- localstack/utils/analytics/metrics/registry.py +2 -2
- localstack/utils/analytics/publisher.py +4 -5
- localstack/utils/analytics/service_providers.py +19 -0
- localstack/utils/analytics/service_request_aggregator.py +4 -4
- localstack/utils/archives.py +12 -12
- localstack/utils/asyncio.py +2 -2
- localstack/utils/aws/arns.py +26 -31
- localstack/utils/aws/aws_responses.py +21 -28
- localstack/utils/aws/aws_stack.py +7 -12
- localstack/utils/aws/dead_letter_queue.py +4 -9
- localstack/utils/aws/message_forwarding.py +8 -11
- localstack/utils/aws/request_context.py +5 -6
- localstack/utils/aws/resources.py +1 -1
- localstack/utils/aws/templating.py +4 -4
- localstack/utils/batch_policy.py +4 -4
- localstack/utils/bootstrap.py +37 -30
- localstack/utils/catalog/catalog.py +139 -0
- localstack/utils/catalog/catalog_loader.py +119 -0
- localstack/utils/catalog/common.py +58 -0
- localstack/utils/catalog/plugins.py +28 -0
- localstack/utils/cloudwatch/cloudwatch_util.py +5 -5
- localstack/utils/collections.py +33 -27
- localstack/utils/config_listener.py +2 -2
- localstack/utils/container_networking.py +5 -6
- localstack/utils/container_utils/container_client.py +156 -160
- localstack/utils/container_utils/docker_cmd_client.py +97 -81
- localstack/utils/container_utils/docker_sdk_client.py +75 -72
- localstack/utils/crypto.py +12 -13
- localstack/utils/diagnose.py +11 -12
- localstack/utils/docker_utils.py +11 -7
- localstack/utils/files.py +34 -15
- localstack/utils/functions.py +5 -4
- localstack/utils/http.py +14 -14
- localstack/utils/iputils.py +2 -1
- localstack/utils/json.py +21 -7
- localstack/utils/kinesis/kinesis_connector.py +2 -1
- localstack/utils/net.py +25 -17
- localstack/utils/no_exit_argument_parser.py +2 -2
- localstack/utils/numbers.py +9 -2
- localstack/utils/objects.py +15 -14
- localstack/utils/patch.py +14 -7
- localstack/utils/platform.py +2 -2
- localstack/utils/run.py +15 -14
- localstack/utils/scheduler.py +13 -12
- localstack/utils/server/tcp_proxy.py +2 -2
- localstack/utils/serving.py +3 -4
- localstack/utils/strings.py +15 -16
- localstack/utils/sync.py +126 -1
- localstack/utils/tagging.py +10 -8
- localstack/utils/testutil.py +17 -17
- localstack/utils/threads.py +3 -3
- localstack/utils/time.py +12 -4
- localstack/utils/urls.py +1 -3
- localstack/utils/xml.py +1 -1
- localstack/utils/xray/traceid.py +1 -1
- localstack/version.py +16 -3
- {localstack_core-4.6.1.dev60.dist-info → localstack_core-4.10.1.dev12.dist-info}/METADATA +18 -13
- {localstack_core-4.6.1.dev60.dist-info → localstack_core-4.10.1.dev12.dist-info}/RECORD +663 -655
- {localstack_core-4.6.1.dev60.dist-info → localstack_core-4.10.1.dev12.dist-info}/entry_points.txt +8 -4
- localstack_core-4.10.1.dev12.dist-info/plux.json +1 -0
- localstack/packages/terraform.py +0 -47
- localstack/services/cloudformation/deploy.html +0 -144
- localstack/services/cloudformation/deploy_ui.py +0 -47
- localstack/services/cloudformation/plugins.py +0 -12
- localstack/services/lambda_/lambda_debug_mode/ldm.py +0 -375
- localstack/services/lambda_/lambda_debug_mode/ldm_config_file.py +0 -178
- localstack/services/lambda_/lambda_debug_mode/ldm_types.py +0 -11
- localstack/services/lambda_/lambda_debug_mode/ldm_utils.py +0 -43
- localstack_core-4.6.1.dev60.dist-info/plux.json +0 -1
- /localstack/{services/lambda_/lambda_debug_mode/__init__.py → testing/pytest/cloudformation/transformers.py} +0 -0
- {localstack_core-4.6.1.dev60.data → localstack_core-4.10.1.dev12.data}/scripts/localstack +0 -0
- {localstack_core-4.6.1.dev60.data → localstack_core-4.10.1.dev12.data}/scripts/localstack-supervisor +0 -0
- {localstack_core-4.6.1.dev60.data → localstack_core-4.10.1.dev12.data}/scripts/localstack.bat +0 -0
- {localstack_core-4.6.1.dev60.dist-info → localstack_core-4.10.1.dev12.dist-info}/WHEEL +0 -0
- {localstack_core-4.6.1.dev60.dist-info → localstack_core-4.10.1.dev12.dist-info}/licenses/LICENSE.txt +0 -0
- {localstack_core-4.6.1.dev60.dist-info → localstack_core-4.10.1.dev12.dist-info}/top_level.txt +0 -0
|
@@ -8,7 +8,6 @@ import threading
|
|
|
8
8
|
import time
|
|
9
9
|
import uuid
|
|
10
10
|
from datetime import datetime
|
|
11
|
-
from typing import Dict, List
|
|
12
11
|
from urllib.parse import urlparse
|
|
13
12
|
|
|
14
13
|
import requests
|
|
@@ -609,7 +608,7 @@ class FirehoseProvider(FirehoseApi):
|
|
|
609
608
|
record["Data"] = base64.b64encode(record["Data"])
|
|
610
609
|
return record
|
|
611
610
|
|
|
612
|
-
def _reencode_records(self, records:
|
|
611
|
+
def _reencode_records(self, records: list[Record]) -> list[Record]:
|
|
613
612
|
return [self._reencode_record(r) for r in records]
|
|
614
613
|
|
|
615
614
|
def _process_records(
|
|
@@ -617,7 +616,7 @@ class FirehoseProvider(FirehoseApi):
|
|
|
617
616
|
account_id: str,
|
|
618
617
|
region_name: str,
|
|
619
618
|
fh_d_stream: str,
|
|
620
|
-
records:
|
|
619
|
+
records: list[Record],
|
|
621
620
|
):
|
|
622
621
|
"""Process the given records from the underlying Kinesis stream"""
|
|
623
622
|
return self._put_records(account_id, region_name, fh_d_stream, records)
|
|
@@ -638,8 +637,8 @@ class FirehoseProvider(FirehoseApi):
|
|
|
638
637
|
account_id: str,
|
|
639
638
|
region_name: str,
|
|
640
639
|
delivery_stream_name: str,
|
|
641
|
-
unprocessed_records:
|
|
642
|
-
) ->
|
|
640
|
+
unprocessed_records: list[Record],
|
|
641
|
+
) -> list[PutRecordBatchResponseEntry]:
|
|
643
642
|
"""Put a list of records to the firehose stream - either directly from a PutRecord API call, or
|
|
644
643
|
received from an underlying Kinesis stream (if 'KinesisStreamAsSource' is configured)"""
|
|
645
644
|
store = self.get_store(account_id, region_name)
|
|
@@ -707,7 +706,11 @@ class FirehoseProvider(FirehoseApi):
|
|
|
707
706
|
try:
|
|
708
707
|
requests.post(url, json=record_to_send, headers=headers)
|
|
709
708
|
except Exception as e:
|
|
710
|
-
LOG.
|
|
709
|
+
LOG.error(
|
|
710
|
+
"Unable to put Firehose records to HTTP endpoint %s.",
|
|
711
|
+
url,
|
|
712
|
+
exc_info=LOG.isEnabledFor(logging.DEBUG),
|
|
713
|
+
)
|
|
711
714
|
raise e
|
|
712
715
|
if "RedshiftDestinationDescription" in destination:
|
|
713
716
|
s3_dest_desc = destination["RedshiftDestinationDescription"][
|
|
@@ -783,10 +786,14 @@ class FirehoseProvider(FirehoseApi):
|
|
|
783
786
|
try:
|
|
784
787
|
db_connection.create(index=search_db_index, id=obj_id, body=body)
|
|
785
788
|
except Exception as e:
|
|
786
|
-
LOG.
|
|
789
|
+
LOG.error(
|
|
790
|
+
"Unable to put record to stream %s.",
|
|
791
|
+
delivery_stream_name,
|
|
792
|
+
exc_info=LOG.isEnabledFor(logging.DEBUG),
|
|
793
|
+
)
|
|
787
794
|
raise e
|
|
788
795
|
|
|
789
|
-
def _add_missing_record_attributes(self, records:
|
|
796
|
+
def _add_missing_record_attributes(self, records: list[dict]) -> None:
|
|
790
797
|
def _get_entry(obj, key):
|
|
791
798
|
return obj.get(key) or obj.get(first_char_to_lower(key))
|
|
792
799
|
|
|
@@ -806,7 +813,7 @@ class FirehoseProvider(FirehoseApi):
|
|
|
806
813
|
"subsequenceNumber": "",
|
|
807
814
|
}
|
|
808
815
|
|
|
809
|
-
def _preprocess_records(self, processor:
|
|
816
|
+
def _preprocess_records(self, processor: dict, records: list[Record]) -> list[dict]:
|
|
810
817
|
"""Preprocess the list of records by calling the given processor (e.g., Lamnda function)."""
|
|
811
818
|
proc_type = processor.get("Type")
|
|
812
819
|
parameters = processor.get("Parameters", [])
|
|
@@ -838,7 +845,7 @@ class FirehoseProvider(FirehoseApi):
|
|
|
838
845
|
def _put_records_to_s3_bucket(
|
|
839
846
|
self,
|
|
840
847
|
stream_name: str,
|
|
841
|
-
records:
|
|
848
|
+
records: list[dict],
|
|
842
849
|
s3_destination_description: S3DestinationDescription,
|
|
843
850
|
):
|
|
844
851
|
bucket = s3_bucket_name(s3_destination_description["BucketARN"])
|
|
@@ -861,9 +868,10 @@ class FirehoseProvider(FirehoseApi):
|
|
|
861
868
|
LOG.debug("Publishing to S3 destination: %s. Data: %s", bucket, batched_data)
|
|
862
869
|
s3.put_object(Bucket=bucket, Key=obj_path, Body=batched_data)
|
|
863
870
|
except Exception as e:
|
|
864
|
-
LOG.
|
|
871
|
+
LOG.error(
|
|
865
872
|
"Unable to put records %s to s3 bucket.",
|
|
866
873
|
records,
|
|
874
|
+
exc_info=LOG.isEnabledFor(logging.DEBUG),
|
|
867
875
|
)
|
|
868
876
|
raise e
|
|
869
877
|
|
|
@@ -884,7 +892,7 @@ class FirehoseProvider(FirehoseApi):
|
|
|
884
892
|
|
|
885
893
|
def _put_to_redshift(
|
|
886
894
|
self,
|
|
887
|
-
records:
|
|
895
|
+
records: list[dict],
|
|
888
896
|
redshift_destination_description: RedshiftDestinationDescription,
|
|
889
897
|
):
|
|
890
898
|
jdbcurl = redshift_destination_description.get("ClusterJDBCURL")
|
|
@@ -918,9 +926,10 @@ class FirehoseProvider(FirehoseApi):
|
|
|
918
926
|
)
|
|
919
927
|
redshift_data.execute_statement(Parameters=row_to_insert, **execute_statement)
|
|
920
928
|
except Exception as e:
|
|
921
|
-
LOG.
|
|
929
|
+
LOG.error(
|
|
922
930
|
"Unable to put records %s to redshift cluster.",
|
|
923
931
|
row_to_insert,
|
|
932
|
+
exc_info=LOG.isEnabledFor(logging.DEBUG),
|
|
924
933
|
)
|
|
925
934
|
raise e
|
|
926
935
|
|
|
@@ -940,13 +949,13 @@ class FirehoseProvider(FirehoseApi):
|
|
|
940
949
|
LOG.debug("Cannot extract region from JDBC url '%s'", jdbc_url)
|
|
941
950
|
return None
|
|
942
951
|
|
|
943
|
-
def _decode_record(self, record:
|
|
952
|
+
def _decode_record(self, record: dict) -> dict:
|
|
944
953
|
data = base64.b64decode(record.get("Data") or record.get("data"))
|
|
945
954
|
data = to_str(data)
|
|
946
955
|
data = json.loads(data)
|
|
947
956
|
return data
|
|
948
957
|
|
|
949
|
-
def _prepare_records_for_redshift(self, record:
|
|
958
|
+
def _prepare_records_for_redshift(self, record: dict) -> list[dict]:
|
|
950
959
|
data = self._decode_record(record)
|
|
951
960
|
|
|
952
961
|
parameters = []
|
|
@@ -963,7 +972,7 @@ class FirehoseProvider(FirehoseApi):
|
|
|
963
972
|
|
|
964
973
|
return parameters
|
|
965
974
|
|
|
966
|
-
def _extract_columns(self, record:
|
|
975
|
+
def _extract_columns(self, record: dict) -> str:
|
|
967
976
|
data = self._decode_record(record)
|
|
968
977
|
placeholders = [f":{key}" for key in data]
|
|
969
978
|
placeholder_str = ", ".join(placeholders)
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import threading
|
|
2
|
-
from typing import Dict, List, Optional
|
|
3
2
|
|
|
4
3
|
from moto.iam.models import (
|
|
5
4
|
AccessKey,
|
|
@@ -106,11 +105,11 @@ def apply_iam_patches():
|
|
|
106
105
|
role_name: str,
|
|
107
106
|
assume_role_policy_document: str,
|
|
108
107
|
path: str,
|
|
109
|
-
permissions_boundary:
|
|
108
|
+
permissions_boundary: str | None,
|
|
110
109
|
description: str,
|
|
111
|
-
tags:
|
|
112
|
-
max_session_duration:
|
|
113
|
-
linked_service:
|
|
110
|
+
tags: list[dict[str, str]],
|
|
111
|
+
max_session_duration: str | None,
|
|
112
|
+
linked_service: str | None = None,
|
|
114
113
|
):
|
|
115
114
|
role = fn(
|
|
116
115
|
self,
|
|
@@ -143,7 +142,7 @@ def apply_iam_patches():
|
|
|
143
142
|
def access_key__init__(
|
|
144
143
|
fn,
|
|
145
144
|
self,
|
|
146
|
-
user_name:
|
|
145
|
+
user_name: str | None,
|
|
147
146
|
prefix: str,
|
|
148
147
|
account_id: str,
|
|
149
148
|
status: str = "Active",
|
|
@@ -6,7 +6,7 @@ import re
|
|
|
6
6
|
import string
|
|
7
7
|
import uuid
|
|
8
8
|
from datetime import datetime
|
|
9
|
-
from typing import Any,
|
|
9
|
+
from typing import Any, TypeVar
|
|
10
10
|
from urllib.parse import quote
|
|
11
11
|
|
|
12
12
|
from moto.iam.models import (
|
|
@@ -20,10 +20,7 @@ from moto.iam.utils import generate_access_key_id_from_account_id
|
|
|
20
20
|
|
|
21
21
|
from localstack.aws.api import CommonServiceException, RequestContext, handler
|
|
22
22
|
from localstack.aws.api.iam import (
|
|
23
|
-
ActionNameListType,
|
|
24
|
-
ActionNameType,
|
|
25
23
|
AttachedPermissionsBoundary,
|
|
26
|
-
ContextEntryListType,
|
|
27
24
|
CreateRoleRequest,
|
|
28
25
|
CreateRoleResponse,
|
|
29
26
|
CreateServiceLinkedRoleResponse,
|
|
@@ -33,7 +30,6 @@ from localstack.aws.api.iam import (
|
|
|
33
30
|
DeleteServiceLinkedRoleResponse,
|
|
34
31
|
DeletionTaskIdType,
|
|
35
32
|
DeletionTaskStatusType,
|
|
36
|
-
EvaluationResult,
|
|
37
33
|
GetServiceLinkedRoleDeletionStatusResponse,
|
|
38
34
|
GetUserResponse,
|
|
39
35
|
IamApi,
|
|
@@ -43,16 +39,12 @@ from localstack.aws.api.iam import (
|
|
|
43
39
|
ListServiceSpecificCredentialsResponse,
|
|
44
40
|
MalformedPolicyDocumentException,
|
|
45
41
|
NoSuchEntityException,
|
|
46
|
-
PolicyEvaluationDecisionType,
|
|
47
42
|
ResetServiceSpecificCredentialResponse,
|
|
48
|
-
ResourceHandlingOptionType,
|
|
49
|
-
ResourceNameListType,
|
|
50
|
-
ResourceNameType,
|
|
51
43
|
Role,
|
|
52
44
|
ServiceSpecificCredential,
|
|
53
45
|
ServiceSpecificCredentialMetadata,
|
|
54
46
|
SimulatePolicyResponse,
|
|
55
|
-
|
|
47
|
+
SimulatePrincipalPolicyRequest,
|
|
56
48
|
User,
|
|
57
49
|
allUsers,
|
|
58
50
|
arnType,
|
|
@@ -65,7 +57,6 @@ from localstack.aws.api.iam import (
|
|
|
65
57
|
maxItemsType,
|
|
66
58
|
pathPrefixType,
|
|
67
59
|
pathType,
|
|
68
|
-
policyDocumentType,
|
|
69
60
|
roleDescriptionType,
|
|
70
61
|
roleNameType,
|
|
71
62
|
serviceName,
|
|
@@ -78,6 +69,10 @@ from localstack.aws.api.iam import (
|
|
|
78
69
|
from localstack.aws.connect import connect_to
|
|
79
70
|
from localstack.constants import INTERNAL_AWS_SECRET_ACCESS_KEY
|
|
80
71
|
from localstack.services.iam.iam_patches import apply_iam_patches
|
|
72
|
+
from localstack.services.iam.resources.policy_simulator import (
|
|
73
|
+
BasicIAMPolicySimulator,
|
|
74
|
+
IAMPolicySimulator,
|
|
75
|
+
)
|
|
81
76
|
from localstack.services.iam.resources.service_linked_roles import SERVICE_LINKED_ROLES
|
|
82
77
|
from localstack.services.moto import call_moto
|
|
83
78
|
from localstack.utils.aws.request_context import extract_access_key_id_from_auth_header
|
|
@@ -108,58 +103,12 @@ def get_iam_backend(context: RequestContext) -> IAMBackend:
|
|
|
108
103
|
return iam_backends[context.account_id][context.partition]
|
|
109
104
|
|
|
110
105
|
|
|
111
|
-
def get_policies_from_principal(backend: IAMBackend, principal_arn: str) -> list[dict]:
|
|
112
|
-
policies = []
|
|
113
|
-
if ":role" in principal_arn:
|
|
114
|
-
role_name = principal_arn.split("/")[-1]
|
|
115
|
-
|
|
116
|
-
policies.append(backend.get_role(role_name=role_name).assume_role_policy_document)
|
|
117
|
-
|
|
118
|
-
policy_names = backend.list_role_policies(role_name=role_name)
|
|
119
|
-
policies.extend(
|
|
120
|
-
[
|
|
121
|
-
backend.get_role_policy(role_name=role_name, policy_name=policy_name)[1]
|
|
122
|
-
for policy_name in policy_names
|
|
123
|
-
]
|
|
124
|
-
)
|
|
125
|
-
|
|
126
|
-
attached_policies, _ = backend.list_attached_role_policies(role_name=role_name)
|
|
127
|
-
policies.extend([policy.document for policy in attached_policies])
|
|
128
|
-
|
|
129
|
-
if ":group" in principal_arn:
|
|
130
|
-
print(principal_arn)
|
|
131
|
-
group_name = principal_arn.split("/")[-1]
|
|
132
|
-
policy_names = backend.list_group_policies(group_name=group_name)
|
|
133
|
-
policies.extend(
|
|
134
|
-
[
|
|
135
|
-
backend.get_group_policy(group_name=group_name, policy_name=policy_name)[1]
|
|
136
|
-
for policy_name in policy_names
|
|
137
|
-
]
|
|
138
|
-
)
|
|
139
|
-
|
|
140
|
-
attached_policies, _ = backend.list_attached_group_policies(group_name=group_name)
|
|
141
|
-
policies.extend([policy.document for policy in attached_policies])
|
|
142
|
-
|
|
143
|
-
if ":user" in principal_arn:
|
|
144
|
-
print(principal_arn)
|
|
145
|
-
user_name = principal_arn.split("/")[-1]
|
|
146
|
-
policy_names = backend.list_user_policies(user_name=user_name)
|
|
147
|
-
policies.extend(
|
|
148
|
-
[
|
|
149
|
-
backend.get_user_policy(user_name=user_name, policy_name=policy_name)[1]
|
|
150
|
-
for policy_name in policy_names
|
|
151
|
-
]
|
|
152
|
-
)
|
|
153
|
-
|
|
154
|
-
attached_policies, _ = backend.list_attached_user_policies(user_name=user_name)
|
|
155
|
-
policies.extend([policy.document for policy in attached_policies])
|
|
156
|
-
|
|
157
|
-
return policies
|
|
158
|
-
|
|
159
|
-
|
|
160
106
|
class IamProvider(IamApi):
|
|
107
|
+
policy_simulator: IAMPolicySimulator
|
|
108
|
+
|
|
161
109
|
def __init__(self):
|
|
162
110
|
apply_iam_patches()
|
|
111
|
+
self.policy_simulator = BasicIAMPolicySimulator()
|
|
163
112
|
|
|
164
113
|
@handler("CreateRole", expand=False)
|
|
165
114
|
def create_role(
|
|
@@ -181,75 +130,21 @@ class IamProvider(IamApi):
|
|
|
181
130
|
|
|
182
131
|
return result
|
|
183
132
|
|
|
184
|
-
@
|
|
185
|
-
def build_evaluation_result(
|
|
186
|
-
action_name: ActionNameType, resource_name: ResourceNameType, policy_statements: List[Dict]
|
|
187
|
-
) -> EvaluationResult:
|
|
188
|
-
eval_res = EvaluationResult()
|
|
189
|
-
eval_res["EvalActionName"] = action_name
|
|
190
|
-
eval_res["EvalResourceName"] = resource_name
|
|
191
|
-
eval_res["EvalDecision"] = PolicyEvaluationDecisionType.explicitDeny
|
|
192
|
-
for statement in policy_statements:
|
|
193
|
-
# TODO Implement evaluation logic here
|
|
194
|
-
if (
|
|
195
|
-
action_name in statement["Action"]
|
|
196
|
-
and resource_name in statement["Resource"]
|
|
197
|
-
and statement["Effect"] == "Allow"
|
|
198
|
-
):
|
|
199
|
-
eval_res["EvalDecision"] = PolicyEvaluationDecisionType.allowed
|
|
200
|
-
eval_res["MatchedStatements"] = [] # TODO: add support for statement compilation.
|
|
201
|
-
return eval_res
|
|
202
|
-
|
|
133
|
+
@handler("SimulatePrincipalPolicy", expand=False)
|
|
203
134
|
def simulate_principal_policy(
|
|
204
135
|
self,
|
|
205
136
|
context: RequestContext,
|
|
206
|
-
|
|
207
|
-
action_names: ActionNameListType,
|
|
208
|
-
policy_input_list: SimulationPolicyListType = None,
|
|
209
|
-
permissions_boundary_policy_input_list: SimulationPolicyListType = None,
|
|
210
|
-
resource_arns: ResourceNameListType = None,
|
|
211
|
-
resource_policy: policyDocumentType = None,
|
|
212
|
-
resource_owner: ResourceNameType = None,
|
|
213
|
-
caller_arn: ResourceNameType = None,
|
|
214
|
-
context_entries: ContextEntryListType = None,
|
|
215
|
-
resource_handling_option: ResourceHandlingOptionType = None,
|
|
216
|
-
max_items: maxItemsType = None,
|
|
217
|
-
marker: markerType = None,
|
|
137
|
+
request: SimulatePrincipalPolicyRequest,
|
|
218
138
|
**kwargs,
|
|
219
139
|
) -> SimulatePolicyResponse:
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
policies = get_policies_from_principal(backend, policy_source_arn)
|
|
223
|
-
|
|
224
|
-
def _get_statements_from_policy_list(policies: list[str]):
|
|
225
|
-
statements = []
|
|
226
|
-
for policy_str in policies:
|
|
227
|
-
policy_dict = json.loads(policy_str)
|
|
228
|
-
if isinstance(policy_dict["Statement"], list):
|
|
229
|
-
statements.extend(policy_dict["Statement"])
|
|
230
|
-
else:
|
|
231
|
-
statements.append(policy_dict["Statement"])
|
|
232
|
-
return statements
|
|
233
|
-
|
|
234
|
-
policy_statements = _get_statements_from_policy_list(policies)
|
|
235
|
-
|
|
236
|
-
evaluations = [
|
|
237
|
-
self.build_evaluation_result(action_name, resource_arn, policy_statements)
|
|
238
|
-
for action_name in action_names
|
|
239
|
-
for resource_arn in resource_arns
|
|
240
|
-
]
|
|
241
|
-
|
|
242
|
-
response = SimulatePolicyResponse()
|
|
243
|
-
response["IsTruncated"] = False
|
|
244
|
-
response["EvaluationResults"] = evaluations
|
|
245
|
-
return response
|
|
140
|
+
return self.policy_simulator.simulate_principal_policy(context, request)
|
|
246
141
|
|
|
247
142
|
def delete_policy(self, context: RequestContext, policy_arn: arnType, **kwargs) -> None:
|
|
248
143
|
backend = get_iam_backend(context)
|
|
249
144
|
if backend.managed_policies.get(policy_arn):
|
|
250
145
|
backend.managed_policies.pop(policy_arn, None)
|
|
251
146
|
else:
|
|
252
|
-
raise NoSuchEntityException("Policy {
|
|
147
|
+
raise NoSuchEntityException(f"Policy {policy_arn} was not found.")
|
|
253
148
|
|
|
254
149
|
def detach_role_policy(
|
|
255
150
|
self, context: RequestContext, role_name: roleNameType, policy_arn: arnType, **kwargs
|
|
@@ -260,7 +155,7 @@ class IamProvider(IamApi):
|
|
|
260
155
|
policy = role.managed_policies[policy_arn]
|
|
261
156
|
policy.detach_from(role)
|
|
262
157
|
except KeyError:
|
|
263
|
-
raise NoSuchEntityException("Policy {
|
|
158
|
+
raise NoSuchEntityException(f"Policy {policy_arn} was not found.")
|
|
264
159
|
|
|
265
160
|
@staticmethod
|
|
266
161
|
def moto_role_to_role_type(moto_role: MotoRole) -> Role:
|
|
@@ -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,11 +14,11 @@ from localstack.services.cloudformation.resource_provider import (
|
|
|
14
14
|
|
|
15
15
|
|
|
16
16
|
class IAMAccessKeyProperties(TypedDict):
|
|
17
|
-
UserName:
|
|
18
|
-
Id:
|
|
19
|
-
SecretAccessKey:
|
|
20
|
-
Serial:
|
|
21
|
-
Status:
|
|
17
|
+
UserName: str | None
|
|
18
|
+
Id: str | None
|
|
19
|
+
SecretAccessKey: str | None
|
|
20
|
+
Serial: int | None
|
|
21
|
+
Status: str | None
|
|
22
22
|
|
|
23
23
|
|
|
24
24
|
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 IAMAccessKeyProviderPlugin(CloudFormationResourceProviderPlugin):
|
|
|
10
8
|
name = "AWS::IAM::AccessKey"
|
|
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.iam.resource_providers.aws_iam_accesskey import (
|
|
@@ -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,17 +15,17 @@ from localstack.services.cloudformation.resource_provider import (
|
|
|
15
15
|
|
|
16
16
|
|
|
17
17
|
class IAMGroupProperties(TypedDict):
|
|
18
|
-
Arn:
|
|
19
|
-
GroupName:
|
|
20
|
-
Id:
|
|
21
|
-
ManagedPolicyArns:
|
|
22
|
-
Path:
|
|
23
|
-
Policies:
|
|
18
|
+
Arn: str | None
|
|
19
|
+
GroupName: str | None
|
|
20
|
+
Id: str | None
|
|
21
|
+
ManagedPolicyArns: list[str] | None
|
|
22
|
+
Path: str | None
|
|
23
|
+
Policies: list[Policy] | None
|
|
24
24
|
|
|
25
25
|
|
|
26
26
|
class Policy(TypedDict):
|
|
27
|
-
PolicyDocument:
|
|
28
|
-
PolicyName:
|
|
27
|
+
PolicyDocument: dict | None
|
|
28
|
+
PolicyName: str | None
|
|
29
29
|
|
|
30
30
|
|
|
31
31
|
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 IAMGroupProviderPlugin(CloudFormationResourceProviderPlugin):
|
|
|
10
8
|
name = "AWS::IAM::Group"
|
|
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.iam.resource_providers.aws_iam_group import IAMGroupProvider
|
|
@@ -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,10 +14,10 @@ from localstack.services.cloudformation.resource_provider import (
|
|
|
14
14
|
|
|
15
15
|
|
|
16
16
|
class IAMInstanceProfileProperties(TypedDict):
|
|
17
|
-
Roles:
|
|
18
|
-
Arn:
|
|
19
|
-
InstanceProfileName:
|
|
20
|
-
Path:
|
|
17
|
+
Roles: list[str] | None
|
|
18
|
+
Arn: str | None
|
|
19
|
+
InstanceProfileName: str | None
|
|
20
|
+
Path: str | None
|
|
21
21
|
|
|
22
22
|
|
|
23
23
|
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 IAMInstanceProfileProviderPlugin(CloudFormationResourceProviderPlugin):
|
|
|
10
8
|
name = "AWS::IAM::InstanceProfile"
|
|
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.iam.resource_providers.aws_iam_instanceprofile import (
|
|
@@ -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,14 +15,14 @@ from localstack.services.cloudformation.resource_provider import (
|
|
|
15
15
|
|
|
16
16
|
|
|
17
17
|
class IAMManagedPolicyProperties(TypedDict):
|
|
18
|
-
PolicyDocument:
|
|
19
|
-
Description:
|
|
20
|
-
Groups:
|
|
21
|
-
Id:
|
|
22
|
-
ManagedPolicyName:
|
|
23
|
-
Path:
|
|
24
|
-
Roles:
|
|
25
|
-
Users:
|
|
18
|
+
PolicyDocument: dict | None
|
|
19
|
+
Description: str | None
|
|
20
|
+
Groups: list[str] | None
|
|
21
|
+
Id: str | None
|
|
22
|
+
ManagedPolicyName: str | None
|
|
23
|
+
Path: str | None
|
|
24
|
+
Roles: list[str] | None
|
|
25
|
+
Users: list[str] | None
|
|
26
26
|
|
|
27
27
|
|
|
28
28
|
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 IAMManagedPolicyProviderPlugin(CloudFormationResourceProviderPlugin):
|
|
|
10
8
|
name = "AWS::IAM::ManagedPolicy"
|
|
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.iam.resource_providers.aws_iam_managedpolicy import (
|
|
@@ -5,7 +5,7 @@ import json
|
|
|
5
5
|
import random
|
|
6
6
|
import string
|
|
7
7
|
from pathlib import Path
|
|
8
|
-
from typing import
|
|
8
|
+
from typing import TypedDict
|
|
9
9
|
|
|
10
10
|
import localstack.services.cloudformation.provider_utils as util
|
|
11
11
|
from localstack.services.cloudformation.resource_provider import (
|
|
@@ -17,12 +17,12 @@ from localstack.services.cloudformation.resource_provider import (
|
|
|
17
17
|
|
|
18
18
|
|
|
19
19
|
class IAMPolicyProperties(TypedDict):
|
|
20
|
-
PolicyDocument:
|
|
21
|
-
PolicyName:
|
|
22
|
-
Groups:
|
|
23
|
-
Id:
|
|
24
|
-
Roles:
|
|
25
|
-
Users:
|
|
20
|
+
PolicyDocument: dict | None
|
|
21
|
+
PolicyName: str | None
|
|
22
|
+
Groups: list[str] | None
|
|
23
|
+
Id: str | None
|
|
24
|
+
Roles: list[str] | None
|
|
25
|
+
Users: list[str] | None
|
|
26
26
|
|
|
27
27
|
|
|
28
28
|
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 IAMPolicyProviderPlugin(CloudFormationResourceProviderPlugin):
|
|
|
10
8
|
name = "AWS::IAM::Policy"
|
|
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.iam.resource_providers.aws_iam_policy import IAMPolicyProvider
|
|
@@ -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 (
|
|
@@ -16,27 +16,27 @@ from localstack.utils.functions import call_safe
|
|
|
16
16
|
|
|
17
17
|
|
|
18
18
|
class IAMRoleProperties(TypedDict):
|
|
19
|
-
AssumeRolePolicyDocument:
|
|
20
|
-
Arn:
|
|
21
|
-
Description:
|
|
22
|
-
ManagedPolicyArns:
|
|
23
|
-
MaxSessionDuration:
|
|
24
|
-
Path:
|
|
25
|
-
PermissionsBoundary:
|
|
26
|
-
Policies:
|
|
27
|
-
RoleId:
|
|
28
|
-
RoleName:
|
|
29
|
-
Tags:
|
|
19
|
+
AssumeRolePolicyDocument: dict | str | None
|
|
20
|
+
Arn: str | None
|
|
21
|
+
Description: str | None
|
|
22
|
+
ManagedPolicyArns: list[str] | None
|
|
23
|
+
MaxSessionDuration: int | None
|
|
24
|
+
Path: str | None
|
|
25
|
+
PermissionsBoundary: str | None
|
|
26
|
+
Policies: list[Policy] | None
|
|
27
|
+
RoleId: str | None
|
|
28
|
+
RoleName: str | None
|
|
29
|
+
Tags: list[Tag] | None
|
|
30
30
|
|
|
31
31
|
|
|
32
32
|
class Policy(TypedDict):
|
|
33
|
-
PolicyDocument:
|
|
34
|
-
PolicyName:
|
|
33
|
+
PolicyDocument: str | dict | None
|
|
34
|
+
PolicyName: str | None
|
|
35
35
|
|
|
36
36
|
|
|
37
37
|
class Tag(TypedDict):
|
|
38
|
-
Key:
|
|
39
|
-
Value:
|
|
38
|
+
Key: str | None
|
|
39
|
+
Value: str | None
|
|
40
40
|
|
|
41
41
|
|
|
42
42
|
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 IAMRoleProviderPlugin(CloudFormationResourceProviderPlugin):
|
|
|
10
8
|
name = "AWS::IAM::Role"
|
|
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.iam.resource_providers.aws_iam_role import IAMRoleProvider
|