localstack-core 4.6.1.dev62__py3-none-any.whl → 4.6.1.dev65__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.
@@ -2337,6 +2337,20 @@ class InstanceType(StrEnum):
2337
2337
  r8gd_48xlarge = "r8gd.48xlarge"
2338
2338
  r8gd_metal_24xl = "r8gd.metal-24xl"
2339
2339
  r8gd_metal_48xl = "r8gd.metal-48xl"
2340
+ c8gn_medium = "c8gn.medium"
2341
+ c8gn_large = "c8gn.large"
2342
+ c8gn_xlarge = "c8gn.xlarge"
2343
+ c8gn_2xlarge = "c8gn.2xlarge"
2344
+ c8gn_4xlarge = "c8gn.4xlarge"
2345
+ c8gn_8xlarge = "c8gn.8xlarge"
2346
+ c8gn_12xlarge = "c8gn.12xlarge"
2347
+ c8gn_16xlarge = "c8gn.16xlarge"
2348
+ c8gn_24xlarge = "c8gn.24xlarge"
2349
+ c8gn_48xlarge = "c8gn.48xlarge"
2350
+ c8gn_metal_24xl = "c8gn.metal-24xl"
2351
+ c8gn_metal_48xl = "c8gn.metal-48xl"
2352
+ f2_6xlarge = "f2.6xlarge"
2353
+ p6e_gb200_36xlarge = "p6e-gb200.36xlarge"
2340
2354
 
2341
2355
 
2342
2356
  class InstanceTypeHypervisor(StrEnum):
@@ -3596,6 +3610,7 @@ class TransitGatewayAttachmentResourceType(StrEnum):
3596
3610
  connect = "connect"
3597
3611
  peering = "peering"
3598
3612
  tgw_peering = "tgw-peering"
3613
+ network_function = "network-function"
3599
3614
 
3600
3615
 
3601
3616
  class TransitGatewayAttachmentState(StrEnum):
@@ -7135,7 +7150,7 @@ class FleetLaunchTemplateOverrides(TypedDict, total=False):
7135
7150
  InstanceType: Optional[InstanceType]
7136
7151
  MaxPrice: Optional[String]
7137
7152
  SubnetId: Optional[String]
7138
- AvailabilityZone: Optional[String]
7153
+ AvailabilityZone: Optional[AvailabilityZoneName]
7139
7154
  WeightedCapacity: Optional[Double]
7140
7155
  Priority: Optional[Double]
7141
7156
  Placement: Optional[PlacementResponse]
@@ -7280,7 +7295,7 @@ class FleetLaunchTemplateOverridesRequest(TypedDict, total=False):
7280
7295
  InstanceType: Optional[InstanceType]
7281
7296
  MaxPrice: Optional[String]
7282
7297
  SubnetId: Optional[SubnetId]
7283
- AvailabilityZone: Optional[String]
7298
+ AvailabilityZone: Optional[AvailabilityZoneName]
7284
7299
  WeightedCapacity: Optional[Double]
7285
7300
  Priority: Optional[Double]
7286
7301
  Placement: Optional[Placement]
@@ -20630,6 +20645,7 @@ class StartVpcEndpointServicePrivateDnsVerificationResult(TypedDict, total=False
20630
20645
  class StopInstancesRequest(ServiceRequest):
20631
20646
  InstanceIds: InstanceIdStringList
20632
20647
  Hibernate: Optional[Boolean]
20648
+ SkipOsShutdown: Optional[Boolean]
20633
20649
  DryRun: Optional[Boolean]
20634
20650
  Force: Optional[Boolean]
20635
20651
 
@@ -20662,6 +20678,7 @@ class TerminateClientVpnConnectionsResult(TypedDict, total=False):
20662
20678
 
20663
20679
  class TerminateInstancesRequest(ServiceRequest):
20664
20680
  InstanceIds: InstanceIdStringList
20681
+ SkipOsShutdown: Optional[Boolean]
20665
20682
  DryRun: Optional[Boolean]
20666
20683
 
20667
20684
 
@@ -29075,6 +29092,7 @@ class Ec2Api:
29075
29092
  context: RequestContext,
29076
29093
  instance_ids: InstanceIdStringList,
29077
29094
  hibernate: Boolean | None = None,
29095
+ skip_os_shutdown: Boolean | None = None,
29078
29096
  dry_run: Boolean | None = None,
29079
29097
  force: Boolean | None = None,
29080
29098
  **kwargs,
@@ -29098,6 +29116,7 @@ class Ec2Api:
29098
29116
  self,
29099
29117
  context: RequestContext,
29100
29118
  instance_ids: InstanceIdStringList,
29119
+ skip_os_shutdown: Boolean | None = None,
29101
29120
  dry_run: Boolean | None = None,
29102
29121
  **kwargs,
29103
29122
  ) -> TerminateInstancesResult:
@@ -378,21 +378,21 @@ class UpdateRuntimeOn(StrEnum):
378
378
 
379
379
  class CodeSigningConfigNotFoundException(ServiceException):
380
380
  code: str = "CodeSigningConfigNotFoundException"
381
- sender_fault: bool = False
381
+ sender_fault: bool = True
382
382
  status_code: int = 404
383
383
  Type: Optional[String]
384
384
 
385
385
 
386
386
  class CodeStorageExceededException(ServiceException):
387
387
  code: str = "CodeStorageExceededException"
388
- sender_fault: bool = False
388
+ sender_fault: bool = True
389
389
  status_code: int = 400
390
390
  Type: Optional[String]
391
391
 
392
392
 
393
393
  class CodeVerificationFailedException(ServiceException):
394
394
  code: str = "CodeVerificationFailedException"
395
- sender_fault: bool = False
395
+ sender_fault: bool = True
396
396
  status_code: int = 400
397
397
  Type: Optional[String]
398
398
 
@@ -421,28 +421,28 @@ class EC2UnexpectedException(ServiceException):
421
421
 
422
422
  class EFSIOException(ServiceException):
423
423
  code: str = "EFSIOException"
424
- sender_fault: bool = False
424
+ sender_fault: bool = True
425
425
  status_code: int = 410
426
426
  Type: Optional[String]
427
427
 
428
428
 
429
429
  class EFSMountConnectivityException(ServiceException):
430
430
  code: str = "EFSMountConnectivityException"
431
- sender_fault: bool = False
431
+ sender_fault: bool = True
432
432
  status_code: int = 408
433
433
  Type: Optional[String]
434
434
 
435
435
 
436
436
  class EFSMountFailureException(ServiceException):
437
437
  code: str = "EFSMountFailureException"
438
- sender_fault: bool = False
438
+ sender_fault: bool = True
439
439
  status_code: int = 403
440
440
  Type: Optional[String]
441
441
 
442
442
 
443
443
  class EFSMountTimeoutException(ServiceException):
444
444
  code: str = "EFSMountTimeoutException"
445
- sender_fault: bool = False
445
+ sender_fault: bool = True
446
446
  status_code: int = 408
447
447
  Type: Optional[String]
448
448
 
@@ -456,21 +456,21 @@ class ENILimitReachedException(ServiceException):
456
456
 
457
457
  class InvalidCodeSignatureException(ServiceException):
458
458
  code: str = "InvalidCodeSignatureException"
459
- sender_fault: bool = False
459
+ sender_fault: bool = True
460
460
  status_code: int = 400
461
461
  Type: Optional[String]
462
462
 
463
463
 
464
464
  class InvalidParameterValueException(ServiceException):
465
465
  code: str = "InvalidParameterValueException"
466
- sender_fault: bool = False
466
+ sender_fault: bool = True
467
467
  status_code: int = 400
468
468
  Type: Optional[String]
469
469
 
470
470
 
471
471
  class InvalidRequestContentException(ServiceException):
472
472
  code: str = "InvalidRequestContentException"
473
- sender_fault: bool = False
473
+ sender_fault: bool = True
474
474
  status_code: int = 400
475
475
  Type: Optional[String]
476
476
 
@@ -533,56 +533,56 @@ class KMSNotFoundException(ServiceException):
533
533
 
534
534
  class PolicyLengthExceededException(ServiceException):
535
535
  code: str = "PolicyLengthExceededException"
536
- sender_fault: bool = False
536
+ sender_fault: bool = True
537
537
  status_code: int = 400
538
538
  Type: Optional[String]
539
539
 
540
540
 
541
541
  class PreconditionFailedException(ServiceException):
542
542
  code: str = "PreconditionFailedException"
543
- sender_fault: bool = False
543
+ sender_fault: bool = True
544
544
  status_code: int = 412
545
545
  Type: Optional[String]
546
546
 
547
547
 
548
548
  class ProvisionedConcurrencyConfigNotFoundException(ServiceException):
549
549
  code: str = "ProvisionedConcurrencyConfigNotFoundException"
550
- sender_fault: bool = False
550
+ sender_fault: bool = True
551
551
  status_code: int = 404
552
552
  Type: Optional[String]
553
553
 
554
554
 
555
555
  class RecursiveInvocationException(ServiceException):
556
556
  code: str = "RecursiveInvocationException"
557
- sender_fault: bool = False
557
+ sender_fault: bool = True
558
558
  status_code: int = 400
559
559
  Type: Optional[String]
560
560
 
561
561
 
562
562
  class RequestTooLargeException(ServiceException):
563
563
  code: str = "RequestTooLargeException"
564
- sender_fault: bool = False
564
+ sender_fault: bool = True
565
565
  status_code: int = 413
566
566
  Type: Optional[String]
567
567
 
568
568
 
569
569
  class ResourceConflictException(ServiceException):
570
570
  code: str = "ResourceConflictException"
571
- sender_fault: bool = False
571
+ sender_fault: bool = True
572
572
  status_code: int = 409
573
573
  Type: Optional[String]
574
574
 
575
575
 
576
576
  class ResourceInUseException(ServiceException):
577
577
  code: str = "ResourceInUseException"
578
- sender_fault: bool = False
578
+ sender_fault: bool = True
579
579
  status_code: int = 400
580
580
  Type: Optional[String]
581
581
 
582
582
 
583
583
  class ResourceNotFoundException(ServiceException):
584
584
  code: str = "ResourceNotFoundException"
585
- sender_fault: bool = False
585
+ sender_fault: bool = True
586
586
  status_code: int = 404
587
587
  Type: Optional[String]
588
588
 
@@ -603,21 +603,21 @@ class ServiceException(ServiceException):
603
603
 
604
604
  class SnapStartException(ServiceException):
605
605
  code: str = "SnapStartException"
606
- sender_fault: bool = False
606
+ sender_fault: bool = True
607
607
  status_code: int = 400
608
608
  Type: Optional[String]
609
609
 
610
610
 
611
611
  class SnapStartNotReadyException(ServiceException):
612
612
  code: str = "SnapStartNotReadyException"
613
- sender_fault: bool = False
613
+ sender_fault: bool = True
614
614
  status_code: int = 409
615
615
  Type: Optional[String]
616
616
 
617
617
 
618
618
  class SnapStartTimeoutException(ServiceException):
619
619
  code: str = "SnapStartTimeoutException"
620
- sender_fault: bool = False
620
+ sender_fault: bool = True
621
621
  status_code: int = 408
622
622
  Type: Optional[String]
623
623
 
@@ -631,7 +631,7 @@ class SubnetIPAddressLimitReachedException(ServiceException):
631
631
 
632
632
  class TooManyRequestsException(ServiceException):
633
633
  code: str = "TooManyRequestsException"
634
- sender_fault: bool = False
634
+ sender_fault: bool = True
635
635
  status_code: int = 429
636
636
  retryAfterSeconds: Optional[String]
637
637
  Type: Optional[String]
@@ -640,7 +640,7 @@ class TooManyRequestsException(ServiceException):
640
640
 
641
641
  class UnsupportedMediaTypeException(ServiceException):
642
642
  code: str = "UnsupportedMediaTypeException"
643
- sender_fault: bool = False
643
+ sender_fault: bool = True
644
644
  status_code: int = 415
645
645
  Type: Optional[String]
646
646
 
@@ -27,6 +27,7 @@ from localstack.aws.api import (
27
27
  handler,
28
28
  )
29
29
  from localstack.aws.api.dynamodb import (
30
+ ApproximateCreationDateTimePrecision,
30
31
  AttributeMap,
31
32
  BatchExecuteStatementOutput,
32
33
  BatchGetItemOutput,
@@ -92,6 +93,7 @@ from localstack.aws.api.dynamodb import (
92
93
  ScanInput,
93
94
  ScanOutput,
94
95
  StreamArn,
96
+ TableArn,
95
97
  TableDescription,
96
98
  TableName,
97
99
  TagKeyList,
@@ -108,6 +110,8 @@ from localstack.aws.api.dynamodb import (
108
110
  UpdateGlobalTableOutput,
109
111
  UpdateItemInput,
110
112
  UpdateItemOutput,
113
+ UpdateKinesisStreamingConfiguration,
114
+ UpdateKinesisStreamingDestinationOutput,
111
115
  UpdateTableInput,
112
116
  UpdateTableOutput,
113
117
  UpdateTimeToLiveOutput,
@@ -1586,7 +1590,15 @@ class DynamoDBProvider(DynamodbApi, ServiceLifecycleHook):
1586
1590
  enable_kinesis_streaming_configuration: EnableKinesisStreamingConfiguration = None,
1587
1591
  **kwargs,
1588
1592
  ) -> KinesisStreamingDestinationOutput:
1589
- self.ensure_table_exists(context.account_id, context.region, table_name)
1593
+ self.ensure_table_exists(
1594
+ context.account_id,
1595
+ context.region,
1596
+ table_name,
1597
+ error_message=f"Requested resource not found: Table: {table_name} not found",
1598
+ )
1599
+
1600
+ # TODO: Use the time precision in config if set
1601
+ enable_kinesis_streaming_configuration = enable_kinesis_streaming_configuration or {}
1590
1602
 
1591
1603
  stream = self._event_forwarder.is_kinesis_stream_exists(stream_arn=stream_arn)
1592
1604
  if not stream:
@@ -1604,9 +1616,8 @@ class DynamoDBProvider(DynamodbApi, ServiceLifecycleHook):
1604
1616
  "to perform ENABLE operation."
1605
1617
  )
1606
1618
 
1607
- table_def["KinesisDataStreamDestinations"] = (
1608
- table_def.get("KinesisDataStreamDestinations") or []
1609
- )
1619
+ table_def.setdefault("KinesisDataStreamDestinations", [])
1620
+
1610
1621
  # remove the stream destination if already present
1611
1622
  table_def["KinesisDataStreamDestinations"] = [
1612
1623
  t for t in table_def["KinesisDataStreamDestinations"] if t["StreamArn"] != stream_arn
@@ -1617,11 +1628,15 @@ class DynamoDBProvider(DynamodbApi, ServiceLifecycleHook):
1617
1628
  "DestinationStatus": DestinationStatus.ACTIVE,
1618
1629
  "DestinationStatusDescription": "Stream is active",
1619
1630
  "StreamArn": stream_arn,
1631
+ "ApproximateCreationDateTimePrecision": ApproximateCreationDateTimePrecision.MILLISECOND,
1620
1632
  }
1621
1633
  )
1622
1634
  table_def["KinesisDataStreamDestinationStatus"] = DestinationStatus.ACTIVE
1623
1635
  return KinesisStreamingDestinationOutput(
1624
- DestinationStatus=DestinationStatus.ACTIVE, StreamArn=stream_arn, TableName=table_name
1636
+ DestinationStatus=DestinationStatus.ENABLING,
1637
+ StreamArn=stream_arn,
1638
+ TableName=table_name,
1639
+ EnableKinesisStreamingConfiguration=enable_kinesis_streaming_configuration,
1625
1640
  )
1626
1641
 
1627
1642
  def disable_kinesis_streaming_destination(
@@ -1632,7 +1647,14 @@ class DynamoDBProvider(DynamodbApi, ServiceLifecycleHook):
1632
1647
  enable_kinesis_streaming_configuration: EnableKinesisStreamingConfiguration = None,
1633
1648
  **kwargs,
1634
1649
  ) -> KinesisStreamingDestinationOutput:
1635
- self.ensure_table_exists(context.account_id, context.region, table_name)
1650
+ self.ensure_table_exists(
1651
+ context.account_id,
1652
+ context.region,
1653
+ table_name,
1654
+ error_message=f"Requested resource not found: Table: {table_name} not found",
1655
+ )
1656
+
1657
+ # TODO: Must raise if invoked before KinesisStreamingDestination is ACTIVE
1636
1658
 
1637
1659
  stream = self._event_forwarder.is_kinesis_stream_exists(stream_arn=stream_arn)
1638
1660
  if not stream:
@@ -1656,7 +1678,7 @@ class DynamoDBProvider(DynamodbApi, ServiceLifecycleHook):
1656
1678
  dest["DestinationStatusDescription"] = ("Stream is disabled",)
1657
1679
  table_def["KinesisDataStreamDestinationStatus"] = DestinationStatus.DISABLED
1658
1680
  return KinesisStreamingDestinationOutput(
1659
- DestinationStatus=DestinationStatus.DISABLED,
1681
+ DestinationStatus=DestinationStatus.DISABLING,
1660
1682
  StreamArn=stream_arn,
1661
1683
  TableName=table_name,
1662
1684
  )
@@ -1675,8 +1697,81 @@ class DynamoDBProvider(DynamodbApi, ServiceLifecycleHook):
1675
1697
  )
1676
1698
 
1677
1699
  stream_destinations = table_def.get("KinesisDataStreamDestinations") or []
1700
+ stream_destinations = copy.deepcopy(stream_destinations)
1701
+
1702
+ for destination in stream_destinations:
1703
+ destination.pop("ApproximateCreationDateTimePrecision", None)
1704
+ destination.pop("DestinationStatusDescription", None)
1705
+
1678
1706
  return DescribeKinesisStreamingDestinationOutput(
1679
- KinesisDataStreamDestinations=stream_destinations, TableName=table_name
1707
+ KinesisDataStreamDestinations=stream_destinations,
1708
+ TableName=table_name,
1709
+ )
1710
+
1711
+ def update_kinesis_streaming_destination(
1712
+ self,
1713
+ context: RequestContext,
1714
+ table_name: TableArn,
1715
+ stream_arn: StreamArn,
1716
+ update_kinesis_streaming_configuration: UpdateKinesisStreamingConfiguration | None = None,
1717
+ **kwargs,
1718
+ ) -> UpdateKinesisStreamingDestinationOutput:
1719
+ self.ensure_table_exists(context.account_id, context.region, table_name)
1720
+
1721
+ if not update_kinesis_streaming_configuration:
1722
+ raise ValidationException(
1723
+ "Streaming destination cannot be updated with given parameters: "
1724
+ "UpdateKinesisStreamingConfiguration cannot be null or contain only null values"
1725
+ )
1726
+
1727
+ time_precision = update_kinesis_streaming_configuration.get(
1728
+ "ApproximateCreationDateTimePrecision"
1729
+ )
1730
+ if time_precision not in (
1731
+ ApproximateCreationDateTimePrecision.MILLISECOND,
1732
+ ApproximateCreationDateTimePrecision.MICROSECOND,
1733
+ ):
1734
+ raise ValidationException(
1735
+ f"1 validation error detected: Value '{time_precision}' at "
1736
+ "'updateKinesisStreamingConfiguration.approximateCreationDateTimePrecision' failed to satisfy constraint: "
1737
+ "Member must satisfy enum value set: [MILLISECOND, MICROSECOND]"
1738
+ )
1739
+
1740
+ store = get_store(context.account_id, context.region)
1741
+
1742
+ table_def = store.table_definitions.get(table_name) or {}
1743
+ table_def.setdefault("KinesisDataStreamDestinations", [])
1744
+
1745
+ table_id = table_def["TableId"]
1746
+
1747
+ destination = None
1748
+ for stream in table_def["KinesisDataStreamDestinations"]:
1749
+ if stream["StreamArn"] == stream_arn:
1750
+ destination = stream
1751
+
1752
+ if destination is None:
1753
+ raise ValidationException(
1754
+ "Table is not in a valid state to enable Kinesis Streaming Destination: "
1755
+ f"No streaming destination with streamArn: {stream_arn} found for table with tableName: {table_name}"
1756
+ )
1757
+
1758
+ if (
1759
+ existing_precision := destination["ApproximateCreationDateTimePrecision"]
1760
+ ) == update_kinesis_streaming_configuration["ApproximateCreationDateTimePrecision"]:
1761
+ raise ValidationException(
1762
+ f"Invalid Request: Precision is already set to the desired value of {existing_precision} "
1763
+ f"for tableId: {table_id}, kdsArn: {stream_arn}"
1764
+ )
1765
+
1766
+ destination["ApproximateCreationDateTimePrecision"] = time_precision
1767
+
1768
+ return UpdateKinesisStreamingDestinationOutput(
1769
+ TableName=table_name,
1770
+ StreamArn=stream_arn,
1771
+ DestinationStatus=DestinationStatus.UPDATING,
1772
+ UpdateKinesisStreamingConfiguration=UpdateKinesisStreamingConfiguration(
1773
+ ApproximateCreationDateTimePrecision=time_precision,
1774
+ ),
1680
1775
  )
1681
1776
 
1682
1777
  #
@@ -1754,7 +1849,12 @@ class DynamoDBProvider(DynamodbApi, ServiceLifecycleHook):
1754
1849
  return dynamodb_table_exists(table_name, client)
1755
1850
 
1756
1851
  @staticmethod
1757
- def ensure_table_exists(account_id: str, region_name: str, table_name: str):
1852
+ def ensure_table_exists(
1853
+ account_id: str,
1854
+ region_name: str,
1855
+ table_name: str,
1856
+ error_message: str = "Cannot do operations on a non-existent table",
1857
+ ):
1758
1858
  """
1759
1859
  Raise ResourceNotFoundException if the given table does not exist.
1760
1860
 
@@ -1764,7 +1864,7 @@ class DynamoDBProvider(DynamodbApi, ServiceLifecycleHook):
1764
1864
  :raise: ResourceNotFoundException if table does not exist in DynamoDB Local
1765
1865
  """
1766
1866
  if not DynamoDBProvider.table_exists(account_id, region_name, table_name):
1767
- raise ResourceNotFoundException("Cannot do operations on a non-existent table")
1867
+ raise ResourceNotFoundException(error_message)
1768
1868
 
1769
1869
  @staticmethod
1770
1870
  def get_global_table_region(context: RequestContext, table_name: str) -> str:
@@ -24,6 +24,7 @@ from localstack.aws.api import (
24
24
  handler,
25
25
  )
26
26
  from localstack.aws.api.dynamodb import (
27
+ ApproximateCreationDateTimePrecision,
27
28
  BatchExecuteStatementOutput,
28
29
  BatchGetItemOutput,
29
30
  BatchGetRequestMap,
@@ -84,6 +85,7 @@ from localstack.aws.api.dynamodb import (
84
85
  ScanInput,
85
86
  ScanOutput,
86
87
  StreamArn,
88
+ TableArn,
87
89
  TableDescription,
88
90
  TableName,
89
91
  TagKeyList,
@@ -97,6 +99,8 @@ from localstack.aws.api.dynamodb import (
97
99
  UpdateGlobalTableOutput,
98
100
  UpdateItemInput,
99
101
  UpdateItemOutput,
102
+ UpdateKinesisStreamingConfiguration,
103
+ UpdateKinesisStreamingDestinationOutput,
100
104
  UpdateTableInput,
101
105
  UpdateTableOutput,
102
106
  UpdateTimeToLiveOutput,
@@ -1110,7 +1114,14 @@ class DynamoDBProvider(DynamodbApi, ServiceLifecycleHook):
1110
1114
  enable_kinesis_streaming_configuration: EnableKinesisStreamingConfiguration = None,
1111
1115
  **kwargs,
1112
1116
  ) -> KinesisStreamingDestinationOutput:
1113
- self.ensure_table_exists(context.account_id, context.region, table_name)
1117
+ self.ensure_table_exists(
1118
+ context.account_id,
1119
+ context.region,
1120
+ table_name,
1121
+ error_message=f"Requested resource not found: Table: {table_name} not found",
1122
+ )
1123
+
1124
+ enable_kinesis_streaming_configuration = enable_kinesis_streaming_configuration or {}
1114
1125
 
1115
1126
  if not kinesis_stream_exists(stream_arn=stream_arn):
1116
1127
  raise ValidationException("User does not have a permission to use kinesis stream")
@@ -1127,9 +1138,8 @@ class DynamoDBProvider(DynamodbApi, ServiceLifecycleHook):
1127
1138
  "to perform ENABLE operation."
1128
1139
  )
1129
1140
 
1130
- table_def["KinesisDataStreamDestinations"] = (
1131
- table_def.get("KinesisDataStreamDestinations") or []
1132
- )
1141
+ table_def.setdefault("KinesisDataStreamDestinations", [])
1142
+
1133
1143
  # remove the stream destination if already present
1134
1144
  table_def["KinesisDataStreamDestinations"] = [
1135
1145
  t for t in table_def["KinesisDataStreamDestinations"] if t["StreamArn"] != stream_arn
@@ -1140,11 +1150,15 @@ class DynamoDBProvider(DynamodbApi, ServiceLifecycleHook):
1140
1150
  "DestinationStatus": DestinationStatus.ACTIVE,
1141
1151
  "DestinationStatusDescription": "Stream is active",
1142
1152
  "StreamArn": stream_arn,
1153
+ "ApproximateCreationDateTimePrecision": ApproximateCreationDateTimePrecision.MILLISECOND,
1143
1154
  }
1144
1155
  )
1145
1156
  table_def["KinesisDataStreamDestinationStatus"] = DestinationStatus.ACTIVE
1146
1157
  return KinesisStreamingDestinationOutput(
1147
- DestinationStatus=DestinationStatus.ACTIVE, StreamArn=stream_arn, TableName=table_name
1158
+ DestinationStatus=DestinationStatus.ENABLING,
1159
+ StreamArn=stream_arn,
1160
+ TableName=table_name,
1161
+ EnableKinesisStreamingConfiguration=enable_kinesis_streaming_configuration,
1148
1162
  )
1149
1163
 
1150
1164
  def disable_kinesis_streaming_destination(
@@ -1155,8 +1169,14 @@ class DynamoDBProvider(DynamodbApi, ServiceLifecycleHook):
1155
1169
  enable_kinesis_streaming_configuration: EnableKinesisStreamingConfiguration = None,
1156
1170
  **kwargs,
1157
1171
  ) -> KinesisStreamingDestinationOutput:
1158
- self.ensure_table_exists(context.account_id, context.region, table_name)
1159
- if not kinesis_stream_exists(stream_arn):
1172
+ self.ensure_table_exists(
1173
+ context.account_id,
1174
+ context.region,
1175
+ table_name,
1176
+ error_message=f"Requested resource not found: Table: {table_name} not found",
1177
+ )
1178
+
1179
+ if not kinesis_stream_exists(stream_arn=stream_arn):
1160
1180
  raise ValidationException(
1161
1181
  "User does not have a permission to use kinesis stream",
1162
1182
  )
@@ -1177,7 +1197,7 @@ class DynamoDBProvider(DynamodbApi, ServiceLifecycleHook):
1177
1197
  dest["DestinationStatusDescription"] = ("Stream is disabled",)
1178
1198
  table_def["KinesisDataStreamDestinationStatus"] = DestinationStatus.DISABLED
1179
1199
  return KinesisStreamingDestinationOutput(
1180
- DestinationStatus=DestinationStatus.DISABLED,
1200
+ DestinationStatus=DestinationStatus.DISABLING,
1181
1201
  StreamArn=stream_arn,
1182
1202
  TableName=table_name,
1183
1203
  )
@@ -1196,8 +1216,81 @@ class DynamoDBProvider(DynamodbApi, ServiceLifecycleHook):
1196
1216
  )
1197
1217
 
1198
1218
  stream_destinations = table_def.get("KinesisDataStreamDestinations") or []
1219
+ stream_destinations = copy.deepcopy(stream_destinations)
1220
+
1221
+ for destination in stream_destinations:
1222
+ destination.pop("ApproximateCreationDateTimePrecision", None)
1223
+ destination.pop("DestinationStatusDescription", None)
1224
+
1199
1225
  return DescribeKinesisStreamingDestinationOutput(
1200
- KinesisDataStreamDestinations=stream_destinations, TableName=table_name
1226
+ KinesisDataStreamDestinations=stream_destinations,
1227
+ TableName=table_name,
1228
+ )
1229
+
1230
+ def update_kinesis_streaming_destination(
1231
+ self,
1232
+ context: RequestContext,
1233
+ table_name: TableArn,
1234
+ stream_arn: StreamArn,
1235
+ update_kinesis_streaming_configuration: UpdateKinesisStreamingConfiguration | None = None,
1236
+ **kwargs,
1237
+ ) -> UpdateKinesisStreamingDestinationOutput:
1238
+ self.ensure_table_exists(context.account_id, context.region, table_name)
1239
+
1240
+ if not update_kinesis_streaming_configuration:
1241
+ raise ValidationException(
1242
+ "Streaming destination cannot be updated with given parameters: "
1243
+ "UpdateKinesisStreamingConfiguration cannot be null or contain only null values"
1244
+ )
1245
+
1246
+ time_precision = update_kinesis_streaming_configuration.get(
1247
+ "ApproximateCreationDateTimePrecision"
1248
+ )
1249
+ if time_precision not in (
1250
+ ApproximateCreationDateTimePrecision.MILLISECOND,
1251
+ ApproximateCreationDateTimePrecision.MICROSECOND,
1252
+ ):
1253
+ raise ValidationException(
1254
+ f"1 validation error detected: Value '{time_precision}' at "
1255
+ "'updateKinesisStreamingConfiguration.approximateCreationDateTimePrecision' failed to satisfy constraint: "
1256
+ "Member must satisfy enum value set: [MILLISECOND, MICROSECOND]"
1257
+ )
1258
+
1259
+ store = get_store(context.account_id, context.region)
1260
+
1261
+ table_def = store.table_definitions.get(table_name) or {}
1262
+ table_def.setdefault("KinesisDataStreamDestinations", [])
1263
+
1264
+ table_id = table_def["TableId"]
1265
+
1266
+ destination = None
1267
+ for stream in table_def["KinesisDataStreamDestinations"]:
1268
+ if stream["StreamArn"] == stream_arn:
1269
+ destination = stream
1270
+
1271
+ if destination is None:
1272
+ raise ValidationException(
1273
+ "Table is not in a valid state to enable Kinesis Streaming Destination: "
1274
+ f"No streaming destination with streamArn: {stream_arn} found for table with tableName: {table_name}"
1275
+ )
1276
+
1277
+ if (
1278
+ existing_precision := destination["ApproximateCreationDateTimePrecision"]
1279
+ ) == update_kinesis_streaming_configuration["ApproximateCreationDateTimePrecision"]:
1280
+ raise ValidationException(
1281
+ f"Invalid Request: Precision is already set to the desired value of {existing_precision} "
1282
+ f"for tableId: {table_id}, kdsArn: {stream_arn}"
1283
+ )
1284
+
1285
+ destination["ApproximateCreationDateTimePrecision"] = time_precision
1286
+
1287
+ return UpdateKinesisStreamingDestinationOutput(
1288
+ TableName=table_name,
1289
+ StreamArn=stream_arn,
1290
+ DestinationStatus=DestinationStatus.UPDATING,
1291
+ UpdateKinesisStreamingConfiguration=UpdateKinesisStreamingConfiguration(
1292
+ ApproximateCreationDateTimePrecision=time_precision,
1293
+ ),
1201
1294
  )
1202
1295
 
1203
1296
  #
@@ -1275,7 +1368,12 @@ class DynamoDBProvider(DynamodbApi, ServiceLifecycleHook):
1275
1368
  return dynamodb_table_exists(table_name, client)
1276
1369
 
1277
1370
  @staticmethod
1278
- def ensure_table_exists(account_id: str, region_name: str, table_name: str):
1371
+ def ensure_table_exists(
1372
+ account_id: str,
1373
+ region_name: str,
1374
+ table_name: str,
1375
+ error_message: str = "Cannot do operations on a non-existent table",
1376
+ ):
1279
1377
  """
1280
1378
  Raise ResourceNotFoundException if the given table does not exist.
1281
1379
 
@@ -1285,7 +1383,7 @@ class DynamoDBProvider(DynamodbApi, ServiceLifecycleHook):
1285
1383
  :raise: ResourceNotFoundException if table does not exist in DynamoDB Local
1286
1384
  """
1287
1385
  if not DynamoDBProvider.table_exists(account_id, region_name, table_name):
1288
- raise ResourceNotFoundException("Cannot do operations on a non-existent table")
1386
+ raise ResourceNotFoundException(error_message)
1289
1387
 
1290
1388
  @staticmethod
1291
1389
  def get_global_table_region(context: RequestContext, table_name: str) -> str:
localstack/version.py CHANGED
@@ -17,5 +17,5 @@ __version__: str
17
17
  __version_tuple__: VERSION_TUPLE
18
18
  version_tuple: VERSION_TUPLE
19
19
 
20
- __version__ = version = '4.6.1.dev62'
21
- __version_tuple__ = version_tuple = (4, 6, 1, 'dev62')
20
+ __version__ = version = '4.6.1.dev65'
21
+ __version_tuple__ = version_tuple = (4, 6, 1, 'dev65')
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: localstack-core
3
- Version: 4.6.1.dev62
3
+ Version: 4.6.1.dev65
4
4
  Summary: The core library and runtime of LocalStack
5
5
  Author-email: LocalStack Contributors <info@localstack.cloud>
6
6
  License-Expression: Apache-2.0
@@ -31,8 +31,8 @@ Requires-Dist: requests>=2.20.0
31
31
  Requires-Dist: semver>=2.10
32
32
  Requires-Dist: tailer>=0.4.1
33
33
  Provides-Extra: base-runtime
34
- Requires-Dist: boto3==1.39.9; extra == "base-runtime"
35
- Requires-Dist: botocore==1.39.9; extra == "base-runtime"
34
+ Requires-Dist: boto3==1.39.14; extra == "base-runtime"
35
+ Requires-Dist: botocore==1.39.14; extra == "base-runtime"
36
36
  Requires-Dist: awscrt!=0.27.1,>=0.13.14; extra == "base-runtime"
37
37
  Requires-Dist: cbor2>=5.5.0; extra == "base-runtime"
38
38
  Requires-Dist: dnspython>=1.16.0; extra == "base-runtime"
@@ -50,7 +50,7 @@ Requires-Dist: xmltodict>=0.13.0; extra == "base-runtime"
50
50
  Requires-Dist: rolo>=0.7; extra == "base-runtime"
51
51
  Provides-Extra: runtime
52
52
  Requires-Dist: localstack-core[base-runtime]; extra == "runtime"
53
- Requires-Dist: awscli==1.41.9; extra == "runtime"
53
+ Requires-Dist: awscli==1.41.14; extra == "runtime"
54
54
  Requires-Dist: airspeed-ext>=0.6.3; extra == "runtime"
55
55
  Requires-Dist: kclpy-ext>=3.0.0; extra == "runtime"
56
56
  Requires-Dist: antlr4-python3-runtime==4.13.2; extra == "runtime"
@@ -4,7 +4,7 @@ localstack/deprecations.py,sha256=mNXTebZ8kSbQjFKz0LbT-g1Kdr0CE8bhEgZfHV3IX0s,15
4
4
  localstack/openapi.yaml,sha256=B803NmpwsxG8PHpHrdZYBrUYjnrRh7B_JX0XuNynuFs,30237
5
5
  localstack/plugins.py,sha256=BIJC9dlo0WbP7lLKkCiGtd_2q5oeqiHZohvoRTcejXM,2457
6
6
  localstack/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
7
- localstack/version.py,sha256=PPgw483pIIh0lTtr2TMfRUafVC5y8aOG7Fzbl0VaXc8,526
7
+ localstack/version.py,sha256=WBRTQmFESXy6xY55f66xy08xP3U14Q2hisAIwbSWV4E,526
8
8
  localstack/aws/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
9
9
  localstack/aws/accounts.py,sha256=102zpGowOxo0S6UGMpfjw14QW7WCLVAGsnFK5xFMLoo,3043
10
10
  localstack/aws/app.py,sha256=n9bJCfJRuMz_gLGAH430c3bIQXgUXeWO5NPfcdL2MV8,5145
@@ -30,14 +30,14 @@ localstack/aws/api/cloudwatch/__init__.py,sha256=eNr0RSd2waAg-KzJIBKzIJOgfCGSBCd
30
30
  localstack/aws/api/config/__init__.py,sha256=6ATQPkUBu3_KSrG2siHjh7e-qZq5MgPBcT0SLBe2lLA,144985
31
31
  localstack/aws/api/dynamodb/__init__.py,sha256=f5MsqBOtX6HVZpjIelKDkpMY01abSLo5-g70ehNPCG4,93582
32
32
  localstack/aws/api/dynamodbstreams/__init__.py,sha256=WUSvC51HIBnpDqDLQjCi2zh1HD1GccwsnpLiqcoftik,7316
33
- localstack/aws/api/ec2/__init__.py,sha256=T8T4sjC1S110LqQg8pTPQ1cxKYnW5167IwMuZ_QA6Us,942863
33
+ localstack/aws/api/ec2/__init__.py,sha256=_oMzrIqpai91eeNu8VB1vs7RTTyCNEhNGcoflC5Ms8g,943603
34
34
  localstack/aws/api/es/__init__.py,sha256=QQiin0n_ug9gl_tI6noSFBjdmaL4GVv4EOkvoQyOxrk,64252
35
35
  localstack/aws/api/events/__init__.py,sha256=kWNiPJf_rbC3zvp4YAOTESeSO97OiEqDEO76Mv8ox_0,61976
36
36
  localstack/aws/api/firehose/__init__.py,sha256=_lCSkVCQ4Y25EHtAAAmbfOjdVK1PlCkH5XeTGtCZPzk,58579
37
37
  localstack/aws/api/iam/__init__.py,sha256=HaCFIFcpI76rOBmP4x9JPOh1q-70Hirw76V5Y4uvJTg,113787
38
38
  localstack/aws/api/kinesis/__init__.py,sha256=1--vaNpflWcrrjwoQC5CzoFkWgUvHiKcuy4l4krMzgY,28847
39
39
  localstack/aws/api/kms/__init__.py,sha256=P8hjFqE75-uuVvYnz2etn02t141KLy6XtxhrE5aX48o,57423
40
- localstack/aws/api/lambda_/__init__.py,sha256=P6OXHJtfqigl1F4hNUPLP2-oI8xZJiBgkzRhGS7v-6s,80771
40
+ localstack/aws/api/lambda_/__init__.py,sha256=1JRC4qYQu8qAoVg5u4mbq1IFhTs8-mD3QT9lTf_UJrQ,80748
41
41
  localstack/aws/api/logs/__init__.py,sha256=EkMu1fig6liyvyTHaLVay3VGmJTtx2qiSzKkm5nMtto,87730
42
42
  localstack/aws/api/opensearch/__init__.py,sha256=AjGOX5JJ_QNOjyC9Oo0RlS7KDOPKyGx5E-ZTVwhDcYQ,98706
43
43
  localstack/aws/api/pipes/__init__.py,sha256=hbykvQZGigcbVtT-3LGFwVye28aPLVyFAW_DDVFMPhY,33283
@@ -356,7 +356,7 @@ localstack/services/dynamodb/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NM
356
356
  localstack/services/dynamodb/models.py,sha256=HVCbm5TbF5QJ-OLs2lCRL0vAr5Yj5buvhl58xbOpNUM,4008
357
357
  localstack/services/dynamodb/packages.py,sha256=hHBJ51Bu7ypAzzz-TB3XqshMKX-2IFZit7myNVPbUuM,4046
358
358
  localstack/services/dynamodb/plugins.py,sha256=DraVGanzrytMltMMrDTg8CiDUosbnIuujjrT25Y7H3E,234
359
- localstack/services/dynamodb/provider.py,sha256=WxUAtGTeD1DMbF_7l6_wVGShjxpGZybY5gvABa0jSQs,93739
359
+ localstack/services/dynamodb/provider.py,sha256=Y0YQOxbYOqmLf5SwJChAtmYMJnmV0psT4uo6MV5nvQE,97789
360
360
  localstack/services/dynamodb/server.py,sha256=8a6D8tPOLfwLHu0BhVvmpA1t1dOBEcq-J-Nb_Hq85Os,8319
361
361
  localstack/services/dynamodb/utils.py,sha256=ioVVqUovmGNCRHR_QFe1TFWM72PA3UEvl6gwwLeo1xI,14884
362
362
  localstack/services/dynamodb/resource_providers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -367,7 +367,7 @@ localstack/services/dynamodb/resource_providers/aws_dynamodb_table.py,sha256=dZN
367
367
  localstack/services/dynamodb/resource_providers/aws_dynamodb_table.schema.json,sha256=jFjMq5M2rLTtDRoJog7RnSofYuFJOXa_3RMOFfeIASc,12160
368
368
  localstack/services/dynamodb/resource_providers/aws_dynamodb_table_plugin.py,sha256=vrY2ZwMe1j1Ub66R0cles_LuX6lVrdoH2rO5kCZwMsI,565
369
369
  localstack/services/dynamodb/v2/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
370
- localstack/services/dynamodb/v2/provider.py,sha256=MO_gEKjqhM3KlXvFVkX4-hsolnVrp6MSgIt_ngWQLjc,58546
370
+ localstack/services/dynamodb/v2/provider.py,sha256=_TidIPy2OOIt_Ejt-h2MobNfHqXHMxFq0d_VXLidfTk,62468
371
371
  localstack/services/dynamodbstreams/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
372
372
  localstack/services/dynamodbstreams/dynamodbstreams_api.py,sha256=SAo8_rYBLTFNKE8nA0j5GHBziHZfzrj5vyR8pNbA58w,9076
373
373
  localstack/services/dynamodbstreams/models.py,sha256=1bfyLooE-Xi4XtrB5u5sCg2jsRmEQA9EgZKDfisHeM8,359
@@ -1287,13 +1287,13 @@ localstack/utils/server/tcp_proxy.py,sha256=rR6d5jR0ozDvIlpHiqW0cfyY9a2fRGdOzyA8
1287
1287
  localstack/utils/xray/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1288
1288
  localstack/utils/xray/trace_header.py,sha256=ahXk9eonq7LpeENwlqUEPj3jDOCiVRixhntQuxNor-Q,6209
1289
1289
  localstack/utils/xray/traceid.py,sha256=SQSsMV2rhbTNK6ceIoozZYuGU7Fg687EXcgqxoDl1Fw,1106
1290
- localstack_core-4.6.1.dev62.data/scripts/localstack,sha256=WyL11vp5CkuP79iIR-L8XT7Cj8nvmxX7XRAgxhbmXNE,529
1291
- localstack_core-4.6.1.dev62.data/scripts/localstack-supervisor,sha256=nm1Il2d6ASyOB6Vo4CRHd90w7TK9FdRl9VPp0NN6hUk,6378
1292
- localstack_core-4.6.1.dev62.data/scripts/localstack.bat,sha256=tlzZTXtveHkMX_s_fa7VDfvdNdS8iVpEz2ER3uk9B_c,29
1293
- localstack_core-4.6.1.dev62.dist-info/licenses/LICENSE.txt,sha256=3PC-9Z69UsNARuQ980gNR_JsLx8uvMjdG6C7cc4LBYs,606
1294
- localstack_core-4.6.1.dev62.dist-info/METADATA,sha256=3b_Dv7JePlFbv5cJu_0C0YvFVpGx7L08uEjKzEpVnZU,5537
1295
- localstack_core-4.6.1.dev62.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
1296
- localstack_core-4.6.1.dev62.dist-info/entry_points.txt,sha256=-GFtw80qM_1GQIDUcyqXojJvnqvP_8lK1Vc-M9ShaJE,20668
1297
- localstack_core-4.6.1.dev62.dist-info/plux.json,sha256=MXtHgQkZPGqzCa-uOHzyTrCToMWwlyHu8Iir5iv_lcc,20891
1298
- localstack_core-4.6.1.dev62.dist-info/top_level.txt,sha256=3sqmK2lGac8nCy8nwsbS5SpIY_izmtWtgaTFKHYVHbI,11
1299
- localstack_core-4.6.1.dev62.dist-info/RECORD,,
1290
+ localstack_core-4.6.1.dev65.data/scripts/localstack,sha256=WyL11vp5CkuP79iIR-L8XT7Cj8nvmxX7XRAgxhbmXNE,529
1291
+ localstack_core-4.6.1.dev65.data/scripts/localstack-supervisor,sha256=nm1Il2d6ASyOB6Vo4CRHd90w7TK9FdRl9VPp0NN6hUk,6378
1292
+ localstack_core-4.6.1.dev65.data/scripts/localstack.bat,sha256=tlzZTXtveHkMX_s_fa7VDfvdNdS8iVpEz2ER3uk9B_c,29
1293
+ localstack_core-4.6.1.dev65.dist-info/licenses/LICENSE.txt,sha256=3PC-9Z69UsNARuQ980gNR_JsLx8uvMjdG6C7cc4LBYs,606
1294
+ localstack_core-4.6.1.dev65.dist-info/METADATA,sha256=8EIhCCUpd_aFxzCG4acN7X0GV4hSKiOU_vmlECZhDt8,5540
1295
+ localstack_core-4.6.1.dev65.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
1296
+ localstack_core-4.6.1.dev65.dist-info/entry_points.txt,sha256=-GFtw80qM_1GQIDUcyqXojJvnqvP_8lK1Vc-M9ShaJE,20668
1297
+ localstack_core-4.6.1.dev65.dist-info/plux.json,sha256=M7oHKd3Bre3tYcF4E3_pdTpuPUwYXoRUcvVhrsMK0Lo,20891
1298
+ localstack_core-4.6.1.dev65.dist-info/top_level.txt,sha256=3sqmK2lGac8nCy8nwsbS5SpIY_izmtWtgaTFKHYVHbI,11
1299
+ localstack_core-4.6.1.dev65.dist-info/RECORD,,
@@ -0,0 +1 @@
1
+ {"localstack.hooks.on_infra_start": ["_publish_config_as_analytics_event=localstack.runtime.analytics:_publish_config_as_analytics_event", "_publish_container_info=localstack.runtime.analytics:_publish_container_info", "register_cloudformation_deploy_ui=localstack.services.cloudformation.plugins:register_cloudformation_deploy_ui", "setup_dns_configuration_on_host=localstack.dns.plugins:setup_dns_configuration_on_host", "start_dns_server=localstack.dns.plugins:start_dns_server", "register_custom_endpoints=localstack.services.lambda_.plugins:register_custom_endpoints", "validate_configuration=localstack.services.lambda_.plugins:validate_configuration", "apply_runtime_patches=localstack.runtime.patches:apply_runtime_patches", "register_swagger_endpoints=localstack.http.resources.swagger.plugins:register_swagger_endpoints", "apply_aws_runtime_patches=localstack.aws.patches:apply_aws_runtime_patches", "delete_cached_certificate=localstack.plugins:delete_cached_certificate", "deprecation_warnings=localstack.plugins:deprecation_warnings", "init_response_mutation_handler=localstack.aws.handlers.response:init_response_mutation_handler", "conditionally_enable_debugger=localstack.dev.debugger.plugins:conditionally_enable_debugger", "eager_load_services=localstack.services.plugins:eager_load_services", "_patch_botocore_endpoint_in_memory=localstack.aws.client:_patch_botocore_endpoint_in_memory", "_patch_botocore_json_parser=localstack.aws.client:_patch_botocore_json_parser", "_patch_cbor2=localstack.aws.client:_patch_cbor2", "_run_init_scripts_on_start=localstack.runtime.init:_run_init_scripts_on_start"], "localstack.cloudformation.resource_providers": ["AWS::ApiGateway::RestApi=localstack.services.apigateway.resource_providers.aws_apigateway_restapi_plugin:ApiGatewayRestApiProviderPlugin", "AWS::EC2::VPC=localstack.services.ec2.resource_providers.aws_ec2_vpc_plugin:EC2VPCProviderPlugin", "AWS::EC2::TransitGatewayAttachment=localstack.services.ec2.resource_providers.aws_ec2_transitgatewayattachment_plugin:EC2TransitGatewayAttachmentProviderPlugin", "AWS::EC2::VPCEndpoint=localstack.services.ec2.resource_providers.aws_ec2_vpcendpoint_plugin:EC2VPCEndpointProviderPlugin", "AWS::Route53::RecordSet=localstack.services.route53.resource_providers.aws_route53_recordset_plugin:Route53RecordSetProviderPlugin", "AWS::SecretsManager::ResourcePolicy=localstack.services.secretsmanager.resource_providers.aws_secretsmanager_resourcepolicy_plugin:SecretsManagerResourcePolicyProviderPlugin", "AWS::ApiGateway::Model=localstack.services.apigateway.resource_providers.aws_apigateway_model_plugin:ApiGatewayModelProviderPlugin", "AWS::EC2::KeyPair=localstack.services.ec2.resource_providers.aws_ec2_keypair_plugin:EC2KeyPairProviderPlugin", "AWS::ECR::Repository=localstack.services.ecr.resource_providers.aws_ecr_repository_plugin:ECRRepositoryProviderPlugin", "AWS::IAM::AccessKey=localstack.services.iam.resource_providers.aws_iam_accesskey_plugin:IAMAccessKeyProviderPlugin", "AWS::SecretsManager::SecretTargetAttachment=localstack.services.secretsmanager.resource_providers.aws_secretsmanager_secrettargetattachment_plugin:SecretsManagerSecretTargetAttachmentProviderPlugin", "AWS::IAM::ServiceLinkedRole=localstack.services.iam.resource_providers.aws_iam_servicelinkedrole_plugin:IAMServiceLinkedRoleProviderPlugin", "AWS::EC2::SubnetRouteTableAssociation=localstack.services.ec2.resource_providers.aws_ec2_subnetroutetableassociation_plugin:EC2SubnetRouteTableAssociationProviderPlugin", "AWS::IAM::ServerCertificate=localstack.services.iam.resource_providers.aws_iam_servercertificate_plugin:IAMServerCertificateProviderPlugin", "AWS::EC2::SecurityGroup=localstack.services.ec2.resource_providers.aws_ec2_securitygroup_plugin:EC2SecurityGroupProviderPlugin", "AWS::CloudFormation::Macro=localstack.services.cloudformation.resource_providers.aws_cloudformation_macro_plugin:CloudFormationMacroProviderPlugin", "AWS::Lambda::Permission=localstack.services.lambda_.resource_providers.aws_lambda_permission_plugin:LambdaPermissionProviderPlugin", "AWS::Kinesis::StreamConsumer=localstack.services.kinesis.resource_providers.aws_kinesis_streamconsumer_plugin:KinesisStreamConsumerProviderPlugin", "AWS::EC2::PrefixList=localstack.services.ec2.resource_providers.aws_ec2_prefixlist_plugin:EC2PrefixListProviderPlugin", "AWS::Lambda::Url=localstack.services.lambda_.resource_providers.aws_lambda_url_plugin:LambdaUrlProviderPlugin", "AWS::Redshift::Cluster=localstack.services.redshift.resource_providers.aws_redshift_cluster_plugin:RedshiftClusterProviderPlugin", "AWS::EC2::NetworkAcl=localstack.services.ec2.resource_providers.aws_ec2_networkacl_plugin:EC2NetworkAclProviderPlugin", "AWS::ApiGateway::RequestValidator=localstack.services.apigateway.resource_providers.aws_apigateway_requestvalidator_plugin:ApiGatewayRequestValidatorProviderPlugin", "AWS::ApiGateway::ApiKey=localstack.services.apigateway.resource_providers.aws_apigateway_apikey_plugin:ApiGatewayApiKeyProviderPlugin", "AWS::SNS::Topic=localstack.services.sns.resource_providers.aws_sns_topic_plugin:SNSTopicProviderPlugin", "AWS::SecretsManager::RotationSchedule=localstack.services.secretsmanager.resource_providers.aws_secretsmanager_rotationschedule_plugin:SecretsManagerRotationScheduleProviderPlugin", "AWS::KMS::Key=localstack.services.kms.resource_providers.aws_kms_key_plugin:KMSKeyProviderPlugin", "AWS::EC2::Instance=localstack.services.ec2.resource_providers.aws_ec2_instance_plugin:EC2InstanceProviderPlugin", "AWS::Lambda::Version=localstack.services.lambda_.resource_providers.aws_lambda_version_plugin:LambdaVersionProviderPlugin", "AWS::StepFunctions::Activity=localstack.services.stepfunctions.resource_providers.aws_stepfunctions_activity_plugin:StepFunctionsActivityProviderPlugin", "AWS::Logs::LogGroup=localstack.services.logs.resource_providers.aws_logs_loggroup_plugin:LogsLogGroupProviderPlugin", "AWS::Lambda::Function=localstack.services.lambda_.resource_providers.aws_lambda_function_plugin:LambdaFunctionProviderPlugin", "AWS::DynamoDB::Table=localstack.services.dynamodb.resource_providers.aws_dynamodb_table_plugin:DynamoDBTableProviderPlugin", "AWS::SSM::PatchBaseline=localstack.services.ssm.resource_providers.aws_ssm_patchbaseline_plugin:SSMPatchBaselineProviderPlugin", "AWS::CloudFormation::Stack=localstack.services.cloudformation.resource_providers.aws_cloudformation_stack_plugin:CloudFormationStackProviderPlugin", "AWS::Scheduler::Schedule=localstack.services.scheduler.resource_providers.aws_scheduler_schedule_plugin:SchedulerScheduleProviderPlugin", "AWS::Lambda::EventSourceMapping=localstack.services.lambda_.resource_providers.aws_lambda_eventsourcemapping_plugin:LambdaEventSourceMappingProviderPlugin", "AWS::ApiGateway::DomainName=localstack.services.apigateway.resource_providers.aws_apigateway_domainname_plugin:ApiGatewayDomainNameProviderPlugin", "AWS::CloudFormation::WaitCondition=localstack.services.cloudformation.resource_providers.aws_cloudformation_waitcondition_plugin:CloudFormationWaitConditionProviderPlugin", "AWS::DynamoDB::GlobalTable=localstack.services.dynamodb.resource_providers.aws_dynamodb_globaltable_plugin:DynamoDBGlobalTableProviderPlugin", "AWS::Kinesis::Stream=localstack.services.kinesis.resource_providers.aws_kinesis_stream_plugin:KinesisStreamProviderPlugin", "AWS::SSM::Parameter=localstack.services.ssm.resource_providers.aws_ssm_parameter_plugin:SSMParameterProviderPlugin", "AWS::ApiGateway::Method=localstack.services.apigateway.resource_providers.aws_apigateway_method_plugin:ApiGatewayMethodProviderPlugin", "AWS::ApiGateway::Account=localstack.services.apigateway.resource_providers.aws_apigateway_account_plugin:ApiGatewayAccountProviderPlugin", "AWS::CloudWatch::Alarm=localstack.services.cloudwatch.resource_providers.aws_cloudwatch_alarm_plugin:CloudWatchAlarmProviderPlugin", "AWS::SSM::MaintenanceWindowTarget=localstack.services.ssm.resource_providers.aws_ssm_maintenancewindowtarget_plugin:SSMMaintenanceWindowTargetProviderPlugin", "AWS::Events::EventBusPolicy=localstack.services.events.resource_providers.aws_events_eventbuspolicy_plugin:EventsEventBusPolicyProviderPlugin", "AWS::CloudWatch::CompositeAlarm=localstack.services.cloudwatch.resource_providers.aws_cloudwatch_compositealarm_plugin:CloudWatchCompositeAlarmProviderPlugin", "AWS::IAM::Role=localstack.services.iam.resource_providers.aws_iam_role_plugin:IAMRoleProviderPlugin", "AWS::Events::Connection=localstack.services.events.resource_providers.aws_events_connection_plugin:EventsConnectionProviderPlugin", "AWS::Logs::LogStream=localstack.services.logs.resource_providers.aws_logs_logstream_plugin:LogsLogStreamProviderPlugin", "AWS::SSM::MaintenanceWindowTask=localstack.services.ssm.resource_providers.aws_ssm_maintenancewindowtask_plugin:SSMMaintenanceWindowTaskProviderPlugin", "AWS::SNS::TopicPolicy=localstack.services.sns.resource_providers.aws_sns_topicpolicy_plugin:SNSTopicPolicyProviderPlugin", "AWS::Lambda::CodeSigningConfig=localstack.services.lambda_.resource_providers.aws_lambda_codesigningconfig_plugin:LambdaCodeSigningConfigProviderPlugin", "AWS::EC2::VPCGatewayAttachment=localstack.services.ec2.resource_providers.aws_ec2_vpcgatewayattachment_plugin:EC2VPCGatewayAttachmentProviderPlugin", "AWS::S3::BucketPolicy=localstack.services.s3.resource_providers.aws_s3_bucketpolicy_plugin:S3BucketPolicyProviderPlugin", "AWS::Lambda::Alias=localstack.services.lambda_.resource_providers.lambda_alias_plugin:LambdaAliasProviderPlugin", "AWS::Events::EventBus=localstack.services.events.resource_providers.aws_events_eventbus_plugin:EventsEventBusProviderPlugin", "AWS::Events::ApiDestination=localstack.services.events.resource_providers.aws_events_apidestination_plugin:EventsApiDestinationProviderPlugin", "AWS::SQS::Queue=localstack.services.sqs.resource_providers.aws_sqs_queue_plugin:SQSQueueProviderPlugin", "AWS::EC2::RouteTable=localstack.services.ec2.resource_providers.aws_ec2_routetable_plugin:EC2RouteTableProviderPlugin", "AWS::Route53::HealthCheck=localstack.services.route53.resource_providers.aws_route53_healthcheck_plugin:Route53HealthCheckProviderPlugin", "AWS::KinesisFirehose::DeliveryStream=localstack.services.kinesisfirehose.resource_providers.aws_kinesisfirehose_deliverystream_plugin:KinesisFirehoseDeliveryStreamProviderPlugin", "AWS::EC2::Route=localstack.services.ec2.resource_providers.aws_ec2_route_plugin:EC2RouteProviderPlugin", "AWS::Lambda::LayerVersion=localstack.services.lambda_.resource_providers.aws_lambda_layerversion_plugin:LambdaLayerVersionProviderPlugin", "AWS::SQS::QueuePolicy=localstack.services.sqs.resource_providers.aws_sqs_queuepolicy_plugin:SQSQueuePolicyProviderPlugin", "AWS::CloudFormation::WaitConditionHandle=localstack.services.cloudformation.resource_providers.aws_cloudformation_waitconditionhandle_plugin:CloudFormationWaitConditionHandleProviderPlugin", "AWS::EC2::InternetGateway=localstack.services.ec2.resource_providers.aws_ec2_internetgateway_plugin:EC2InternetGatewayProviderPlugin", "AWS::ApiGateway::UsagePlan=localstack.services.apigateway.resource_providers.aws_apigateway_usageplan_plugin:ApiGatewayUsagePlanProviderPlugin", "AWS::IAM::User=localstack.services.iam.resource_providers.aws_iam_user_plugin:IAMUserProviderPlugin", "AWS::SecretsManager::Secret=localstack.services.secretsmanager.resource_providers.aws_secretsmanager_secret_plugin:SecretsManagerSecretProviderPlugin", "AWS::Elasticsearch::Domain=localstack.services.opensearch.resource_providers.aws_elasticsearch_domain_plugin:ElasticsearchDomainProviderPlugin", "AWS::StepFunctions::StateMachine=localstack.services.stepfunctions.resource_providers.aws_stepfunctions_statemachine_plugin:StepFunctionsStateMachineProviderPlugin", "AWS::SNS::Subscription=localstack.services.sns.resource_providers.aws_sns_subscription_plugin:SNSSubscriptionProviderPlugin", "AWS::ApiGateway::UsagePlanKey=localstack.services.apigateway.resource_providers.aws_apigateway_usageplankey_plugin:ApiGatewayUsagePlanKeyProviderPlugin", "AWS::ApiGateway::BasePathMapping=localstack.services.apigateway.resource_providers.aws_apigateway_basepathmapping_plugin:ApiGatewayBasePathMappingProviderPlugin", "AWS::IAM::InstanceProfile=localstack.services.iam.resource_providers.aws_iam_instanceprofile_plugin:IAMInstanceProfileProviderPlugin", "AWS::ApiGateway::Resource=localstack.services.apigateway.resource_providers.aws_apigateway_resource_plugin:ApiGatewayResourceProviderPlugin", "AWS::Logs::SubscriptionFilter=localstack.services.logs.resource_providers.aws_logs_subscriptionfilter_plugin:LogsSubscriptionFilterProviderPlugin", "AWS::SES::EmailIdentity=localstack.services.ses.resource_providers.aws_ses_emailidentity_plugin:SESEmailIdentityProviderPlugin", "AWS::IAM::Group=localstack.services.iam.resource_providers.aws_iam_group_plugin:IAMGroupProviderPlugin", "AWS::SSM::MaintenanceWindow=localstack.services.ssm.resource_providers.aws_ssm_maintenancewindow_plugin:SSMMaintenanceWindowProviderPlugin", "AWS::ResourceGroups::Group=localstack.services.resource_groups.resource_providers.aws_resourcegroups_group_plugin:ResourceGroupsGroupProviderPlugin", "AWS::EC2::NatGateway=localstack.services.ec2.resource_providers.aws_ec2_natgateway_plugin:EC2NatGatewayProviderPlugin", "AWS::S3::Bucket=localstack.services.s3.resource_providers.aws_s3_bucket_plugin:S3BucketProviderPlugin", "AWS::ApiGateway::Deployment=localstack.services.apigateway.resource_providers.aws_apigateway_deployment_plugin:ApiGatewayDeploymentProviderPlugin", "AWS::Lambda::EventInvokeConfig=localstack.services.lambda_.resource_providers.aws_lambda_eventinvokeconfig_plugin:LambdaEventInvokeConfigProviderPlugin", "AWS::EC2::DHCPOptions=localstack.services.ec2.resource_providers.aws_ec2_dhcpoptions_plugin:EC2DHCPOptionsProviderPlugin", "AWS::EC2::TransitGateway=localstack.services.ec2.resource_providers.aws_ec2_transitgateway_plugin:EC2TransitGatewayProviderPlugin", "AWS::KMS::Alias=localstack.services.kms.resource_providers.aws_kms_alias_plugin:KMSAliasProviderPlugin", "AWS::ApiGateway::GatewayResponse=localstack.services.apigateway.resource_providers.aws_apigateway_gatewayresponse_plugin:ApiGatewayGatewayResponseProviderPlugin", "AWS::Lambda::LayerVersionPermission=localstack.services.lambda_.resource_providers.aws_lambda_layerversionpermission_plugin:LambdaLayerVersionPermissionProviderPlugin", "AWS::OpenSearchService::Domain=localstack.services.opensearch.resource_providers.aws_opensearchservice_domain_plugin:OpenSearchServiceDomainProviderPlugin", "AWS::IAM::ManagedPolicy=localstack.services.iam.resource_providers.aws_iam_managedpolicy_plugin:IAMManagedPolicyProviderPlugin", "AWS::Scheduler::ScheduleGroup=localstack.services.scheduler.resource_providers.aws_scheduler_schedulegroup_plugin:SchedulerScheduleGroupProviderPlugin", "AWS::CertificateManager::Certificate=localstack.services.certificatemanager.resource_providers.aws_certificatemanager_certificate_plugin:CertificateManagerCertificateProviderPlugin", "AWS::CDK::Metadata=localstack.services.cdk.resource_providers.cdk_metadata_plugin:LambdaAliasProviderPlugin", "AWS::ApiGateway::Stage=localstack.services.apigateway.resource_providers.aws_apigateway_stage_plugin:ApiGatewayStageProviderPlugin", "AWS::Events::Rule=localstack.services.events.resource_providers.aws_events_rule_plugin:EventsRuleProviderPlugin", "AWS::IAM::Policy=localstack.services.iam.resource_providers.aws_iam_policy_plugin:IAMPolicyProviderPlugin", "AWS::EC2::Subnet=localstack.services.ec2.resource_providers.aws_ec2_subnet_plugin:EC2SubnetProviderPlugin"], "localstack.packages": ["opensearch/community=localstack.services.opensearch.plugins:opensearch_package", "kinesis-mock/community=localstack.services.kinesis.plugins:kinesismock_package", "lambda-java-libs/community=localstack.services.lambda_.plugins:lambda_java_libs", "lambda-runtime/community=localstack.services.lambda_.plugins:lambda_runtime_package", "dynamodb-local/community=localstack.services.dynamodb.plugins:dynamodb_local_package", "elasticsearch/community=localstack.services.es.plugins:elasticsearch_package", "vosk/community=localstack.services.transcribe.plugins:vosk_package", "jpype-jsonata/community=localstack.services.stepfunctions.plugins:jpype_jsonata_package", "ffmpeg/community=localstack.packages.plugins:ffmpeg_package", "java/community=localstack.packages.plugins:java_package", "terraform/community=localstack.packages.plugins:terraform_package"], "localstack.hooks.on_infra_shutdown": ["stop_server=localstack.dns.plugins:stop_server", "remove_custom_endpoints=localstack.services.lambda_.plugins:remove_custom_endpoints", "run_on_after_service_shutdown_handlers=localstack.runtime.shutdown:run_on_after_service_shutdown_handlers", "run_shutdown_handlers=localstack.runtime.shutdown:run_shutdown_handlers", "shutdown_services=localstack.runtime.shutdown:shutdown_services", "_run_init_scripts_on_shutdown=localstack.runtime.init:_run_init_scripts_on_shutdown", "publish_metrics=localstack.utils.analytics.metrics.publisher:publish_metrics"], "localstack.runtime.server": ["hypercorn=localstack.runtime.server.plugins:HypercornRuntimeServerPlugin", "twisted=localstack.runtime.server.plugins:TwistedRuntimeServerPlugin"], "localstack.runtime.components": ["aws=localstack.aws.components:AwsComponents"], "localstack.lambda.runtime_executor": ["docker=localstack.services.lambda_.invocation.plugins:DockerRuntimeExecutorPlugin"], "localstack.aws.provider": ["acm:default=localstack.services.providers:acm", "apigateway:default=localstack.services.providers:apigateway", "apigateway:legacy=localstack.services.providers:apigateway_legacy", "apigateway:next_gen=localstack.services.providers:apigateway_next_gen", "config:default=localstack.services.providers:awsconfig", "cloudformation:default=localstack.services.providers:cloudformation", "cloudformation:engine-v2=localstack.services.providers:cloudformation_v2", "cloudwatch:default=localstack.services.providers:cloudwatch", "cloudwatch:v1=localstack.services.providers:cloudwatch_v1", "cloudwatch:v2=localstack.services.providers:cloudwatch_v2", "dynamodb:default=localstack.services.providers:dynamodb", "dynamodb:v2=localstack.services.providers:dynamodb_v2", "dynamodbstreams:default=localstack.services.providers:dynamodbstreams", "dynamodbstreams:v2=localstack.services.providers:dynamodbstreams_v2", "ec2:default=localstack.services.providers:ec2", "es:default=localstack.services.providers:es", "events:default=localstack.services.providers:events", "events:legacy=localstack.services.providers:events_legacy", "events:v1=localstack.services.providers:events_v1", "events:v2=localstack.services.providers:events_v2", "firehose:default=localstack.services.providers:firehose", "iam:default=localstack.services.providers:iam", "kinesis:default=localstack.services.providers:kinesis", "kms:default=localstack.services.providers:kms", "lambda:default=localstack.services.providers:lambda_", "lambda:asf=localstack.services.providers:lambda_asf", "lambda:v2=localstack.services.providers:lambda_v2", "logs:default=localstack.services.providers:logs", "opensearch:default=localstack.services.providers:opensearch", "redshift:default=localstack.services.providers:redshift", "resource-groups:default=localstack.services.providers:resource_groups", "resourcegroupstaggingapi:default=localstack.services.providers:resourcegroupstaggingapi", "route53:default=localstack.services.providers:route53", "route53resolver:default=localstack.services.providers:route53resolver", "s3:default=localstack.services.providers:s3", "s3control:default=localstack.services.providers:s3control", "scheduler:default=localstack.services.providers:scheduler", "secretsmanager:default=localstack.services.providers:secretsmanager", "ses:default=localstack.services.providers:ses", "sns:default=localstack.services.providers:sns", "sqs:default=localstack.services.providers:sqs", "ssm:default=localstack.services.providers:ssm", "stepfunctions:default=localstack.services.providers:stepfunctions", "stepfunctions:v2=localstack.services.providers:stepfunctions_v2", "sts:default=localstack.services.providers:sts", "support:default=localstack.services.providers:support", "swf:default=localstack.services.providers:swf", "transcribe:default=localstack.services.providers:transcribe"], "localstack.openapi.spec": ["localstack=localstack.plugins:CoreOASPlugin"], "localstack.init.runner": ["py=localstack.runtime.init:PythonScriptRunner", "sh=localstack.runtime.init:ShellScriptRunner"], "localstack.hooks.on_infra_ready": ["_run_init_scripts_on_ready=localstack.runtime.init:_run_init_scripts_on_ready"], "localstack.hooks.configure_localstack_container": ["_mount_machine_file=localstack.utils.analytics.metadata:_mount_machine_file"], "localstack.hooks.prepare_host": ["prepare_host_machine_id=localstack.utils.analytics.metadata:prepare_host_machine_id"]}
@@ -1 +0,0 @@
1
- {"localstack.cloudformation.resource_providers": ["AWS::OpenSearchService::Domain=localstack.services.opensearch.resource_providers.aws_opensearchservice_domain_plugin:OpenSearchServiceDomainProviderPlugin", "AWS::SNS::Subscription=localstack.services.sns.resource_providers.aws_sns_subscription_plugin:SNSSubscriptionProviderPlugin", "AWS::CloudFormation::Macro=localstack.services.cloudformation.resource_providers.aws_cloudformation_macro_plugin:CloudFormationMacroProviderPlugin", "AWS::Lambda::LayerVersion=localstack.services.lambda_.resource_providers.aws_lambda_layerversion_plugin:LambdaLayerVersionProviderPlugin", "AWS::IAM::ManagedPolicy=localstack.services.iam.resource_providers.aws_iam_managedpolicy_plugin:IAMManagedPolicyProviderPlugin", "AWS::EC2::SecurityGroup=localstack.services.ec2.resource_providers.aws_ec2_securitygroup_plugin:EC2SecurityGroupProviderPlugin", "AWS::ApiGateway::Method=localstack.services.apigateway.resource_providers.aws_apigateway_method_plugin:ApiGatewayMethodProviderPlugin", "AWS::SSM::PatchBaseline=localstack.services.ssm.resource_providers.aws_ssm_patchbaseline_plugin:SSMPatchBaselineProviderPlugin", "AWS::SSM::MaintenanceWindowTarget=localstack.services.ssm.resource_providers.aws_ssm_maintenancewindowtarget_plugin:SSMMaintenanceWindowTargetProviderPlugin", "AWS::EC2::PrefixList=localstack.services.ec2.resource_providers.aws_ec2_prefixlist_plugin:EC2PrefixListProviderPlugin", "AWS::CloudWatch::CompositeAlarm=localstack.services.cloudwatch.resource_providers.aws_cloudwatch_compositealarm_plugin:CloudWatchCompositeAlarmProviderPlugin", "AWS::SecretsManager::Secret=localstack.services.secretsmanager.resource_providers.aws_secretsmanager_secret_plugin:SecretsManagerSecretProviderPlugin", "AWS::Elasticsearch::Domain=localstack.services.opensearch.resource_providers.aws_elasticsearch_domain_plugin:ElasticsearchDomainProviderPlugin", "AWS::ApiGateway::Model=localstack.services.apigateway.resource_providers.aws_apigateway_model_plugin:ApiGatewayModelProviderPlugin", "AWS::Scheduler::ScheduleGroup=localstack.services.scheduler.resource_providers.aws_scheduler_schedulegroup_plugin:SchedulerScheduleGroupProviderPlugin", "AWS::SecretsManager::SecretTargetAttachment=localstack.services.secretsmanager.resource_providers.aws_secretsmanager_secrettargetattachment_plugin:SecretsManagerSecretTargetAttachmentProviderPlugin", "AWS::ApiGateway::RequestValidator=localstack.services.apigateway.resource_providers.aws_apigateway_requestvalidator_plugin:ApiGatewayRequestValidatorProviderPlugin", "AWS::CDK::Metadata=localstack.services.cdk.resource_providers.cdk_metadata_plugin:LambdaAliasProviderPlugin", "AWS::Logs::SubscriptionFilter=localstack.services.logs.resource_providers.aws_logs_subscriptionfilter_plugin:LogsSubscriptionFilterProviderPlugin", "AWS::ApiGateway::ApiKey=localstack.services.apigateway.resource_providers.aws_apigateway_apikey_plugin:ApiGatewayApiKeyProviderPlugin", "AWS::ApiGateway::Account=localstack.services.apigateway.resource_providers.aws_apigateway_account_plugin:ApiGatewayAccountProviderPlugin", "AWS::Lambda::Alias=localstack.services.lambda_.resource_providers.lambda_alias_plugin:LambdaAliasProviderPlugin", "AWS::SQS::Queue=localstack.services.sqs.resource_providers.aws_sqs_queue_plugin:SQSQueueProviderPlugin", "AWS::Events::EventBusPolicy=localstack.services.events.resource_providers.aws_events_eventbuspolicy_plugin:EventsEventBusPolicyProviderPlugin", "AWS::StepFunctions::StateMachine=localstack.services.stepfunctions.resource_providers.aws_stepfunctions_statemachine_plugin:StepFunctionsStateMachineProviderPlugin", "AWS::ApiGateway::RestApi=localstack.services.apigateway.resource_providers.aws_apigateway_restapi_plugin:ApiGatewayRestApiProviderPlugin", "AWS::Lambda::Function=localstack.services.lambda_.resource_providers.aws_lambda_function_plugin:LambdaFunctionProviderPlugin", "AWS::EC2::RouteTable=localstack.services.ec2.resource_providers.aws_ec2_routetable_plugin:EC2RouteTableProviderPlugin", "AWS::Lambda::EventSourceMapping=localstack.services.lambda_.resource_providers.aws_lambda_eventsourcemapping_plugin:LambdaEventSourceMappingProviderPlugin", "AWS::S3::Bucket=localstack.services.s3.resource_providers.aws_s3_bucket_plugin:S3BucketProviderPlugin", "AWS::IAM::Role=localstack.services.iam.resource_providers.aws_iam_role_plugin:IAMRoleProviderPlugin", "AWS::EC2::KeyPair=localstack.services.ec2.resource_providers.aws_ec2_keypair_plugin:EC2KeyPairProviderPlugin", "AWS::ResourceGroups::Group=localstack.services.resource_groups.resource_providers.aws_resourcegroups_group_plugin:ResourceGroupsGroupProviderPlugin", "AWS::KMS::Key=localstack.services.kms.resource_providers.aws_kms_key_plugin:KMSKeyProviderPlugin", "AWS::S3::BucketPolicy=localstack.services.s3.resource_providers.aws_s3_bucketpolicy_plugin:S3BucketPolicyProviderPlugin", "AWS::SecretsManager::ResourcePolicy=localstack.services.secretsmanager.resource_providers.aws_secretsmanager_resourcepolicy_plugin:SecretsManagerResourcePolicyProviderPlugin", "AWS::KinesisFirehose::DeliveryStream=localstack.services.kinesisfirehose.resource_providers.aws_kinesisfirehose_deliverystream_plugin:KinesisFirehoseDeliveryStreamProviderPlugin", "AWS::SecretsManager::RotationSchedule=localstack.services.secretsmanager.resource_providers.aws_secretsmanager_rotationschedule_plugin:SecretsManagerRotationScheduleProviderPlugin", "AWS::Events::ApiDestination=localstack.services.events.resource_providers.aws_events_apidestination_plugin:EventsApiDestinationProviderPlugin", "AWS::EC2::NetworkAcl=localstack.services.ec2.resource_providers.aws_ec2_networkacl_plugin:EC2NetworkAclProviderPlugin", "AWS::ApiGateway::UsagePlan=localstack.services.apigateway.resource_providers.aws_apigateway_usageplan_plugin:ApiGatewayUsagePlanProviderPlugin", "AWS::Kinesis::Stream=localstack.services.kinesis.resource_providers.aws_kinesis_stream_plugin:KinesisStreamProviderPlugin", "AWS::EC2::Subnet=localstack.services.ec2.resource_providers.aws_ec2_subnet_plugin:EC2SubnetProviderPlugin", "AWS::SSM::Parameter=localstack.services.ssm.resource_providers.aws_ssm_parameter_plugin:SSMParameterProviderPlugin", "AWS::Logs::LogGroup=localstack.services.logs.resource_providers.aws_logs_loggroup_plugin:LogsLogGroupProviderPlugin", "AWS::IAM::ServerCertificate=localstack.services.iam.resource_providers.aws_iam_servercertificate_plugin:IAMServerCertificateProviderPlugin", "AWS::IAM::InstanceProfile=localstack.services.iam.resource_providers.aws_iam_instanceprofile_plugin:IAMInstanceProfileProviderPlugin", "AWS::EC2::VPC=localstack.services.ec2.resource_providers.aws_ec2_vpc_plugin:EC2VPCProviderPlugin", "AWS::Scheduler::Schedule=localstack.services.scheduler.resource_providers.aws_scheduler_schedule_plugin:SchedulerScheduleProviderPlugin", "AWS::Lambda::LayerVersionPermission=localstack.services.lambda_.resource_providers.aws_lambda_layerversionpermission_plugin:LambdaLayerVersionPermissionProviderPlugin", "AWS::IAM::AccessKey=localstack.services.iam.resource_providers.aws_iam_accesskey_plugin:IAMAccessKeyProviderPlugin", "AWS::EC2::VPCGatewayAttachment=localstack.services.ec2.resource_providers.aws_ec2_vpcgatewayattachment_plugin:EC2VPCGatewayAttachmentProviderPlugin", "AWS::EC2::NatGateway=localstack.services.ec2.resource_providers.aws_ec2_natgateway_plugin:EC2NatGatewayProviderPlugin", "AWS::Logs::LogStream=localstack.services.logs.resource_providers.aws_logs_logstream_plugin:LogsLogStreamProviderPlugin", "AWS::ApiGateway::DomainName=localstack.services.apigateway.resource_providers.aws_apigateway_domainname_plugin:ApiGatewayDomainNameProviderPlugin", "AWS::SQS::QueuePolicy=localstack.services.sqs.resource_providers.aws_sqs_queuepolicy_plugin:SQSQueuePolicyProviderPlugin", "AWS::StepFunctions::Activity=localstack.services.stepfunctions.resource_providers.aws_stepfunctions_activity_plugin:StepFunctionsActivityProviderPlugin", "AWS::ApiGateway::GatewayResponse=localstack.services.apigateway.resource_providers.aws_apigateway_gatewayresponse_plugin:ApiGatewayGatewayResponseProviderPlugin", "AWS::ApiGateway::Resource=localstack.services.apigateway.resource_providers.aws_apigateway_resource_plugin:ApiGatewayResourceProviderPlugin", "AWS::Lambda::Url=localstack.services.lambda_.resource_providers.aws_lambda_url_plugin:LambdaUrlProviderPlugin", "AWS::Events::EventBus=localstack.services.events.resource_providers.aws_events_eventbus_plugin:EventsEventBusProviderPlugin", "AWS::IAM::Policy=localstack.services.iam.resource_providers.aws_iam_policy_plugin:IAMPolicyProviderPlugin", "AWS::EC2::DHCPOptions=localstack.services.ec2.resource_providers.aws_ec2_dhcpoptions_plugin:EC2DHCPOptionsProviderPlugin", "AWS::DynamoDB::Table=localstack.services.dynamodb.resource_providers.aws_dynamodb_table_plugin:DynamoDBTableProviderPlugin", "AWS::IAM::Group=localstack.services.iam.resource_providers.aws_iam_group_plugin:IAMGroupProviderPlugin", "AWS::Redshift::Cluster=localstack.services.redshift.resource_providers.aws_redshift_cluster_plugin:RedshiftClusterProviderPlugin", "AWS::SNS::Topic=localstack.services.sns.resource_providers.aws_sns_topic_plugin:SNSTopicProviderPlugin", "AWS::ECR::Repository=localstack.services.ecr.resource_providers.aws_ecr_repository_plugin:ECRRepositoryProviderPlugin", "AWS::SSM::MaintenanceWindowTask=localstack.services.ssm.resource_providers.aws_ssm_maintenancewindowtask_plugin:SSMMaintenanceWindowTaskProviderPlugin", "AWS::EC2::Route=localstack.services.ec2.resource_providers.aws_ec2_route_plugin:EC2RouteProviderPlugin", "AWS::CloudFormation::WaitConditionHandle=localstack.services.cloudformation.resource_providers.aws_cloudformation_waitconditionhandle_plugin:CloudFormationWaitConditionHandleProviderPlugin", "AWS::ApiGateway::Deployment=localstack.services.apigateway.resource_providers.aws_apigateway_deployment_plugin:ApiGatewayDeploymentProviderPlugin", "AWS::Kinesis::StreamConsumer=localstack.services.kinesis.resource_providers.aws_kinesis_streamconsumer_plugin:KinesisStreamConsumerProviderPlugin", "AWS::CertificateManager::Certificate=localstack.services.certificatemanager.resource_providers.aws_certificatemanager_certificate_plugin:CertificateManagerCertificateProviderPlugin", "AWS::SNS::TopicPolicy=localstack.services.sns.resource_providers.aws_sns_topicpolicy_plugin:SNSTopicPolicyProviderPlugin", "AWS::KMS::Alias=localstack.services.kms.resource_providers.aws_kms_alias_plugin:KMSAliasProviderPlugin", "AWS::Route53::RecordSet=localstack.services.route53.resource_providers.aws_route53_recordset_plugin:Route53RecordSetProviderPlugin", "AWS::IAM::User=localstack.services.iam.resource_providers.aws_iam_user_plugin:IAMUserProviderPlugin", "AWS::Route53::HealthCheck=localstack.services.route53.resource_providers.aws_route53_healthcheck_plugin:Route53HealthCheckProviderPlugin", "AWS::EC2::TransitGatewayAttachment=localstack.services.ec2.resource_providers.aws_ec2_transitgatewayattachment_plugin:EC2TransitGatewayAttachmentProviderPlugin", "AWS::Lambda::Version=localstack.services.lambda_.resource_providers.aws_lambda_version_plugin:LambdaVersionProviderPlugin", "AWS::EC2::Instance=localstack.services.ec2.resource_providers.aws_ec2_instance_plugin:EC2InstanceProviderPlugin", "AWS::EC2::TransitGateway=localstack.services.ec2.resource_providers.aws_ec2_transitgateway_plugin:EC2TransitGatewayProviderPlugin", "AWS::Events::Connection=localstack.services.events.resource_providers.aws_events_connection_plugin:EventsConnectionProviderPlugin", "AWS::CloudWatch::Alarm=localstack.services.cloudwatch.resource_providers.aws_cloudwatch_alarm_plugin:CloudWatchAlarmProviderPlugin", "AWS::Lambda::Permission=localstack.services.lambda_.resource_providers.aws_lambda_permission_plugin:LambdaPermissionProviderPlugin", "AWS::ApiGateway::BasePathMapping=localstack.services.apigateway.resource_providers.aws_apigateway_basepathmapping_plugin:ApiGatewayBasePathMappingProviderPlugin", "AWS::ApiGateway::UsagePlanKey=localstack.services.apigateway.resource_providers.aws_apigateway_usageplankey_plugin:ApiGatewayUsagePlanKeyProviderPlugin", "AWS::Lambda::CodeSigningConfig=localstack.services.lambda_.resource_providers.aws_lambda_codesigningconfig_plugin:LambdaCodeSigningConfigProviderPlugin", "AWS::SES::EmailIdentity=localstack.services.ses.resource_providers.aws_ses_emailidentity_plugin:SESEmailIdentityProviderPlugin", "AWS::IAM::ServiceLinkedRole=localstack.services.iam.resource_providers.aws_iam_servicelinkedrole_plugin:IAMServiceLinkedRoleProviderPlugin", "AWS::EC2::InternetGateway=localstack.services.ec2.resource_providers.aws_ec2_internetgateway_plugin:EC2InternetGatewayProviderPlugin", "AWS::Lambda::EventInvokeConfig=localstack.services.lambda_.resource_providers.aws_lambda_eventinvokeconfig_plugin:LambdaEventInvokeConfigProviderPlugin", "AWS::SSM::MaintenanceWindow=localstack.services.ssm.resource_providers.aws_ssm_maintenancewindow_plugin:SSMMaintenanceWindowProviderPlugin", "AWS::DynamoDB::GlobalTable=localstack.services.dynamodb.resource_providers.aws_dynamodb_globaltable_plugin:DynamoDBGlobalTableProviderPlugin", "AWS::CloudFormation::WaitCondition=localstack.services.cloudformation.resource_providers.aws_cloudformation_waitcondition_plugin:CloudFormationWaitConditionProviderPlugin", "AWS::Events::Rule=localstack.services.events.resource_providers.aws_events_rule_plugin:EventsRuleProviderPlugin", "AWS::CloudFormation::Stack=localstack.services.cloudformation.resource_providers.aws_cloudformation_stack_plugin:CloudFormationStackProviderPlugin", "AWS::EC2::SubnetRouteTableAssociation=localstack.services.ec2.resource_providers.aws_ec2_subnetroutetableassociation_plugin:EC2SubnetRouteTableAssociationProviderPlugin", "AWS::EC2::VPCEndpoint=localstack.services.ec2.resource_providers.aws_ec2_vpcendpoint_plugin:EC2VPCEndpointProviderPlugin", "AWS::ApiGateway::Stage=localstack.services.apigateway.resource_providers.aws_apigateway_stage_plugin:ApiGatewayStageProviderPlugin"], "localstack.packages": ["kinesis-mock/community=localstack.services.kinesis.plugins:kinesismock_package", "lambda-java-libs/community=localstack.services.lambda_.plugins:lambda_java_libs", "lambda-runtime/community=localstack.services.lambda_.plugins:lambda_runtime_package", "jpype-jsonata/community=localstack.services.stepfunctions.plugins:jpype_jsonata_package", "vosk/community=localstack.services.transcribe.plugins:vosk_package", "elasticsearch/community=localstack.services.es.plugins:elasticsearch_package", "opensearch/community=localstack.services.opensearch.plugins:opensearch_package", "dynamodb-local/community=localstack.services.dynamodb.plugins:dynamodb_local_package", "ffmpeg/community=localstack.packages.plugins:ffmpeg_package", "java/community=localstack.packages.plugins:java_package", "terraform/community=localstack.packages.plugins:terraform_package"], "localstack.hooks.on_infra_start": ["register_custom_endpoints=localstack.services.lambda_.plugins:register_custom_endpoints", "validate_configuration=localstack.services.lambda_.plugins:validate_configuration", "delete_cached_certificate=localstack.plugins:delete_cached_certificate", "deprecation_warnings=localstack.plugins:deprecation_warnings", "_publish_config_as_analytics_event=localstack.runtime.analytics:_publish_config_as_analytics_event", "_publish_container_info=localstack.runtime.analytics:_publish_container_info", "apply_aws_runtime_patches=localstack.aws.patches:apply_aws_runtime_patches", "setup_dns_configuration_on_host=localstack.dns.plugins:setup_dns_configuration_on_host", "start_dns_server=localstack.dns.plugins:start_dns_server", "apply_runtime_patches=localstack.runtime.patches:apply_runtime_patches", "eager_load_services=localstack.services.plugins:eager_load_services", "register_cloudformation_deploy_ui=localstack.services.cloudformation.plugins:register_cloudformation_deploy_ui", "init_response_mutation_handler=localstack.aws.handlers.response:init_response_mutation_handler", "register_swagger_endpoints=localstack.http.resources.swagger.plugins:register_swagger_endpoints", "_patch_botocore_endpoint_in_memory=localstack.aws.client:_patch_botocore_endpoint_in_memory", "_patch_botocore_json_parser=localstack.aws.client:_patch_botocore_json_parser", "_patch_cbor2=localstack.aws.client:_patch_cbor2", "conditionally_enable_debugger=localstack.dev.debugger.plugins:conditionally_enable_debugger", "_run_init_scripts_on_start=localstack.runtime.init:_run_init_scripts_on_start"], "localstack.hooks.on_infra_shutdown": ["remove_custom_endpoints=localstack.services.lambda_.plugins:remove_custom_endpoints", "run_on_after_service_shutdown_handlers=localstack.runtime.shutdown:run_on_after_service_shutdown_handlers", "run_shutdown_handlers=localstack.runtime.shutdown:run_shutdown_handlers", "shutdown_services=localstack.runtime.shutdown:shutdown_services", "publish_metrics=localstack.utils.analytics.metrics.publisher:publish_metrics", "stop_server=localstack.dns.plugins:stop_server", "_run_init_scripts_on_shutdown=localstack.runtime.init:_run_init_scripts_on_shutdown"], "localstack.runtime.server": ["hypercorn=localstack.runtime.server.plugins:HypercornRuntimeServerPlugin", "twisted=localstack.runtime.server.plugins:TwistedRuntimeServerPlugin"], "localstack.openapi.spec": ["localstack=localstack.plugins:CoreOASPlugin"], "localstack.runtime.components": ["aws=localstack.aws.components:AwsComponents"], "localstack.hooks.configure_localstack_container": ["_mount_machine_file=localstack.utils.analytics.metadata:_mount_machine_file"], "localstack.hooks.prepare_host": ["prepare_host_machine_id=localstack.utils.analytics.metadata:prepare_host_machine_id"], "localstack.lambda.runtime_executor": ["docker=localstack.services.lambda_.invocation.plugins:DockerRuntimeExecutorPlugin"], "localstack.init.runner": ["py=localstack.runtime.init:PythonScriptRunner", "sh=localstack.runtime.init:ShellScriptRunner"], "localstack.hooks.on_infra_ready": ["_run_init_scripts_on_ready=localstack.runtime.init:_run_init_scripts_on_ready"], "localstack.aws.provider": ["acm:default=localstack.services.providers:acm", "apigateway:default=localstack.services.providers:apigateway", "apigateway:legacy=localstack.services.providers:apigateway_legacy", "apigateway:next_gen=localstack.services.providers:apigateway_next_gen", "config:default=localstack.services.providers:awsconfig", "cloudformation:default=localstack.services.providers:cloudformation", "cloudformation:engine-v2=localstack.services.providers:cloudformation_v2", "cloudwatch:default=localstack.services.providers:cloudwatch", "cloudwatch:v1=localstack.services.providers:cloudwatch_v1", "cloudwatch:v2=localstack.services.providers:cloudwatch_v2", "dynamodb:default=localstack.services.providers:dynamodb", "dynamodb:v2=localstack.services.providers:dynamodb_v2", "dynamodbstreams:default=localstack.services.providers:dynamodbstreams", "dynamodbstreams:v2=localstack.services.providers:dynamodbstreams_v2", "ec2:default=localstack.services.providers:ec2", "es:default=localstack.services.providers:es", "events:default=localstack.services.providers:events", "events:legacy=localstack.services.providers:events_legacy", "events:v1=localstack.services.providers:events_v1", "events:v2=localstack.services.providers:events_v2", "firehose:default=localstack.services.providers:firehose", "iam:default=localstack.services.providers:iam", "kinesis:default=localstack.services.providers:kinesis", "kms:default=localstack.services.providers:kms", "lambda:default=localstack.services.providers:lambda_", "lambda:asf=localstack.services.providers:lambda_asf", "lambda:v2=localstack.services.providers:lambda_v2", "logs:default=localstack.services.providers:logs", "opensearch:default=localstack.services.providers:opensearch", "redshift:default=localstack.services.providers:redshift", "resource-groups:default=localstack.services.providers:resource_groups", "resourcegroupstaggingapi:default=localstack.services.providers:resourcegroupstaggingapi", "route53:default=localstack.services.providers:route53", "route53resolver:default=localstack.services.providers:route53resolver", "s3:default=localstack.services.providers:s3", "s3control:default=localstack.services.providers:s3control", "scheduler:default=localstack.services.providers:scheduler", "secretsmanager:default=localstack.services.providers:secretsmanager", "ses:default=localstack.services.providers:ses", "sns:default=localstack.services.providers:sns", "sqs:default=localstack.services.providers:sqs", "ssm:default=localstack.services.providers:ssm", "stepfunctions:default=localstack.services.providers:stepfunctions", "stepfunctions:v2=localstack.services.providers:stepfunctions_v2", "sts:default=localstack.services.providers:sts", "support:default=localstack.services.providers:support", "swf:default=localstack.services.providers:swf", "transcribe:default=localstack.services.providers:transcribe"]}