localstack-core 4.2.1.dev47__py3-none-any.whl → 4.2.1.dev49__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.
@@ -4,6 +4,7 @@ import logging
4
4
  import random
5
5
  import re
6
6
  import string
7
+ import uuid
7
8
  from datetime import datetime
8
9
  from typing import Any, Dict, List, TypeVar
9
10
  from urllib.parse import quote
@@ -36,6 +37,7 @@ from localstack.aws.api.iam import (
36
37
  GetServiceLinkedRoleDeletionStatusResponse,
37
38
  GetUserResponse,
38
39
  IamApi,
40
+ InvalidInputException,
39
41
  ListInstanceProfileTagsResponse,
40
42
  ListRolesResponse,
41
43
  ListServiceSpecificCredentialsResponse,
@@ -75,9 +77,9 @@ from localstack.aws.api.iam import (
75
77
  from localstack.aws.connect import connect_to
76
78
  from localstack.constants import INTERNAL_AWS_SECRET_ACCESS_KEY
77
79
  from localstack.services.iam.iam_patches import apply_iam_patches
80
+ from localstack.services.iam.resources.service_linked_roles import SERVICE_LINKED_ROLES
78
81
  from localstack.services.moto import call_moto
79
82
  from localstack.utils.aws.request_context import extract_access_key_id_from_auth_header
80
- from localstack.utils.common import short_uid
81
83
 
82
84
  LOG = logging.getLogger(__name__)
83
85
 
@@ -311,8 +313,6 @@ class IamProvider(IamApi):
311
313
  custom_suffix: customSuffixType = None,
312
314
  **kwargs,
313
315
  ) -> CreateServiceLinkedRoleResponse:
314
- # TODO: test
315
- # TODO: how to support "CustomSuffix" API request parameter?
316
316
  policy_doc = json.dumps(
317
317
  {
318
318
  "Version": "2012-10-17",
@@ -325,9 +325,28 @@ class IamProvider(IamApi):
325
325
  ],
326
326
  }
327
327
  )
328
- path = f"{SERVICE_LINKED_ROLE_PATH_PREFIX}/{aws_service_name}"
329
- role_name = f"r-{short_uid()}"
328
+ service_role_data = SERVICE_LINKED_ROLES.get(aws_service_name)
329
+
330
+ path = f"{SERVICE_LINKED_ROLE_PATH_PREFIX}/{aws_service_name}/"
331
+ if service_role_data:
332
+ if custom_suffix and not service_role_data["suffix_allowed"]:
333
+ raise InvalidInputException(f"Custom suffix is not allowed for {aws_service_name}")
334
+ role_name = service_role_data.get("role_name")
335
+ attached_policies = service_role_data["attached_policies"]
336
+ else:
337
+ role_name = f"AWSServiceRoleFor{aws_service_name.split('.')[0].capitalize()}"
338
+ attached_policies = []
339
+ if custom_suffix:
340
+ role_name = f"{role_name}_{custom_suffix}"
330
341
  backend = get_iam_backend(context)
342
+
343
+ # check for role duplicates
344
+ for role in backend.roles.values():
345
+ if role.name == role_name:
346
+ raise InvalidInputException(
347
+ f"Service role name {role_name} has been taken in this account, please try a different suffix."
348
+ )
349
+
331
350
  role = backend.create_role(
332
351
  role_name=role_name,
333
352
  assume_role_policy_document=policy_doc,
@@ -336,10 +355,19 @@ class IamProvider(IamApi):
336
355
  description=description,
337
356
  tags={},
338
357
  max_session_duration=3600,
358
+ linked_service=aws_service_name,
339
359
  )
340
- role.service_linked_role_arn = "arn:{0}:iam::{1}:role/aws-service-role/{2}/{3}".format(
341
- context.partition, context.account_id, aws_service_name, role.name
342
- )
360
+ # attach policies
361
+ for policy in attached_policies:
362
+ try:
363
+ backend.attach_role_policy(policy, role_name)
364
+ except Exception as e:
365
+ LOG.warning(
366
+ "Policy %s for service linked role %s does not exist: %s",
367
+ policy,
368
+ aws_service_name,
369
+ e,
370
+ )
343
371
 
344
372
  res_role = self.moto_role_to_role_type(role)
345
373
  return CreateServiceLinkedRoleResponse(Role=res_role)
@@ -347,15 +375,18 @@ class IamProvider(IamApi):
347
375
  def delete_service_linked_role(
348
376
  self, context: RequestContext, role_name: roleNameType, **kwargs
349
377
  ) -> DeleteServiceLinkedRoleResponse:
350
- # TODO: test
351
378
  backend = get_iam_backend(context)
379
+ role = backend.get_role(role_name=role_name)
380
+ role.managed_policies.clear()
352
381
  backend.delete_role(role_name)
353
- return DeleteServiceLinkedRoleResponse(DeletionTaskId=short_uid())
382
+ return DeleteServiceLinkedRoleResponse(
383
+ DeletionTaskId=f"task{role.path}{role.name}/{uuid.uuid4()}"
384
+ )
354
385
 
355
386
  def get_service_linked_role_deletion_status(
356
387
  self, context: RequestContext, deletion_task_id: DeletionTaskIdType, **kwargs
357
388
  ) -> GetServiceLinkedRoleDeletionStatusResponse:
358
- # TODO: test
389
+ # TODO: check if task id is valid
359
390
  return GetServiceLinkedRoleDeletionStatusResponse(Status=DeletionTaskStatusType.SUCCEEDED)
360
391
 
361
392
  def put_user_permissions_boundary(
@@ -0,0 +1,550 @@
1
+ SERVICE_LINKED_ROLES = {
2
+ "accountdiscovery.ssm.amazonaws.com": {
3
+ "service": "accountdiscovery.ssm.amazonaws.com",
4
+ "role_name": "AWSServiceRoleForAmazonSSM_AccountDiscovery",
5
+ "attached_policies": [
6
+ "arn:aws:iam::aws:policy/aws-service-role/AWSSystemsManagerAccountDiscoveryServicePolicy"
7
+ ],
8
+ "suffix_allowed": False,
9
+ },
10
+ "acm.amazonaws.com": {
11
+ "service": "acm.amazonaws.com",
12
+ "role_name": "AWSServiceRoleForCertificateManager",
13
+ "attached_policies": [
14
+ "arn:aws:iam::aws:policy/aws-service-role/CertificateManagerServiceRolePolicy"
15
+ ],
16
+ "suffix_allowed": False,
17
+ },
18
+ "appmesh.amazonaws.com": {
19
+ "service": "appmesh.amazonaws.com",
20
+ "role_name": "AWSServiceRoleForAppMesh",
21
+ "attached_policies": [
22
+ "arn:aws:iam::aws:policy/aws-service-role/AWSAppMeshServiceRolePolicy"
23
+ ],
24
+ "suffix_allowed": False,
25
+ },
26
+ "autoscaling-plans.amazonaws.com": {
27
+ "service": "autoscaling-plans.amazonaws.com",
28
+ "role_name": "AWSServiceRoleForAutoScalingPlans_EC2AutoScaling",
29
+ "attached_policies": [
30
+ "arn:aws:iam::aws:policy/aws-service-role/AWSAutoScalingPlansEC2AutoScalingPolicy"
31
+ ],
32
+ "suffix_allowed": False,
33
+ },
34
+ "autoscaling.amazonaws.com": {
35
+ "service": "autoscaling.amazonaws.com",
36
+ "role_name": "AWSServiceRoleForAutoScaling",
37
+ "attached_policies": [
38
+ "arn:aws:iam::aws:policy/aws-service-role/AutoScalingServiceRolePolicy"
39
+ ],
40
+ "suffix_allowed": True,
41
+ },
42
+ "backup.amazonaws.com": {
43
+ "service": "backup.amazonaws.com",
44
+ "role_name": "AWSServiceRoleForBackup",
45
+ "attached_policies": [
46
+ "arn:aws:iam::aws:policy/aws-service-role/AWSBackupServiceLinkedRolePolicyForBackup"
47
+ ],
48
+ "suffix_allowed": False,
49
+ },
50
+ "batch.amazonaws.com": {
51
+ "service": "batch.amazonaws.com",
52
+ "role_name": "AWSServiceRoleForBatch",
53
+ "attached_policies": ["arn:aws:iam::aws:policy/aws-service-role/BatchServiceRolePolicy"],
54
+ "suffix_allowed": False,
55
+ },
56
+ "cassandra.application-autoscaling.amazonaws.com": {
57
+ "service": "cassandra.application-autoscaling.amazonaws.com",
58
+ "role_name": "AWSServiceRoleForApplicationAutoScaling_CassandraTable",
59
+ "attached_policies": [
60
+ "arn:aws:iam::aws:policy/aws-service-role/AWSApplicationAutoscalingCassandraTablePolicy"
61
+ ],
62
+ "suffix_allowed": False,
63
+ },
64
+ "cks.kms.amazonaws.com": {
65
+ "service": "cks.kms.amazonaws.com",
66
+ "role_name": "AWSServiceRoleForKeyManagementServiceCustomKeyStores",
67
+ "attached_policies": [
68
+ "arn:aws:iam::aws:policy/aws-service-role/AWSKeyManagementServiceCustomKeyStoresServiceRolePolicy"
69
+ ],
70
+ "suffix_allowed": False,
71
+ },
72
+ "cloudtrail.amazonaws.com": {
73
+ "service": "cloudtrail.amazonaws.com",
74
+ "role_name": "AWSServiceRoleForCloudTrail",
75
+ "attached_policies": [
76
+ "arn:aws:iam::aws:policy/aws-service-role/CloudTrailServiceRolePolicy"
77
+ ],
78
+ "suffix_allowed": False,
79
+ },
80
+ "codestar-notifications.amazonaws.com": {
81
+ "service": "codestar-notifications.amazonaws.com",
82
+ "role_name": "AWSServiceRoleForCodeStarNotifications",
83
+ "attached_policies": [
84
+ "arn:aws:iam::aws:policy/aws-service-role/AWSCodeStarNotificationsServiceRolePolicy"
85
+ ],
86
+ "suffix_allowed": False,
87
+ },
88
+ "config.amazonaws.com": {
89
+ "service": "config.amazonaws.com",
90
+ "role_name": "AWSServiceRoleForConfig",
91
+ "attached_policies": [
92
+ "arn:aws:iam::aws:policy/aws-service-role/AWSConfigServiceRolePolicy"
93
+ ],
94
+ "suffix_allowed": False,
95
+ },
96
+ "connect.amazonaws.com": {
97
+ "service": "connect.amazonaws.com",
98
+ "role_name": "AWSServiceRoleForAmazonConnect",
99
+ "attached_policies": [
100
+ "arn:aws:iam::aws:policy/aws-service-role/AmazonConnectServiceLinkedRolePolicy"
101
+ ],
102
+ "suffix_allowed": True,
103
+ },
104
+ "dms-fleet-advisor.amazonaws.com": {
105
+ "service": "dms-fleet-advisor.amazonaws.com",
106
+ "role_name": "AWSServiceRoleForDMSFleetAdvisor",
107
+ "attached_policies": [
108
+ "arn:aws:iam::aws:policy/aws-service-role/AWSDMSFleetAdvisorServiceRolePolicy"
109
+ ],
110
+ "suffix_allowed": False,
111
+ },
112
+ "dms.amazonaws.com": {
113
+ "service": "dms.amazonaws.com",
114
+ "role_name": "AWSServiceRoleForDMSServerless",
115
+ "attached_policies": [
116
+ "arn:aws:iam::aws:policy/aws-service-role/AWSDMSServerlessServiceRolePolicy"
117
+ ],
118
+ "suffix_allowed": False,
119
+ },
120
+ "docdb-elastic.amazonaws.com": {
121
+ "service": "docdb-elastic.amazonaws.com",
122
+ "role_name": "AWSServiceRoleForDocDB-Elastic",
123
+ "attached_policies": [
124
+ "arn:aws:iam::aws:policy/aws-service-role/AmazonDocDB-ElasticServiceRolePolicy"
125
+ ],
126
+ "suffix_allowed": False,
127
+ },
128
+ "ec2-instance-connect.amazonaws.com": {
129
+ "service": "ec2-instance-connect.amazonaws.com",
130
+ "role_name": "AWSServiceRoleForEc2InstanceConnect",
131
+ "attached_policies": [
132
+ "arn:aws:iam::aws:policy/aws-service-role/Ec2InstanceConnectEndpoint"
133
+ ],
134
+ "suffix_allowed": False,
135
+ },
136
+ "ec2.application-autoscaling.amazonaws.com": {
137
+ "service": "ec2.application-autoscaling.amazonaws.com",
138
+ "role_name": "AWSServiceRoleForApplicationAutoScaling_EC2SpotFleetRequest",
139
+ "attached_policies": [
140
+ "arn:aws:iam::aws:policy/aws-service-role/AWSApplicationAutoscalingEC2SpotFleetRequestPolicy"
141
+ ],
142
+ "suffix_allowed": False,
143
+ },
144
+ "ecr.amazonaws.com": {
145
+ "service": "ecr.amazonaws.com",
146
+ "role_name": "AWSServiceRoleForECRTemplate",
147
+ "attached_policies": [
148
+ "arn:aws:iam::aws:policy/aws-service-role/ECRTemplateServiceRolePolicy"
149
+ ],
150
+ "suffix_allowed": False,
151
+ },
152
+ "ecs.amazonaws.com": {
153
+ "service": "ecs.amazonaws.com",
154
+ "role_name": "AWSServiceRoleForECS",
155
+ "attached_policies": [
156
+ "arn:aws:iam::aws:policy/aws-service-role/AmazonECSServiceRolePolicy"
157
+ ],
158
+ "suffix_allowed": False,
159
+ },
160
+ "eks-connector.amazonaws.com": {
161
+ "service": "eks-connector.amazonaws.com",
162
+ "role_name": "AWSServiceRoleForAmazonEKSConnector",
163
+ "attached_policies": [
164
+ "arn:aws:iam::aws:policy/aws-service-role/AmazonEKSConnectorServiceRolePolicy"
165
+ ],
166
+ "suffix_allowed": False,
167
+ },
168
+ "eks-fargate.amazonaws.com": {
169
+ "service": "eks-fargate.amazonaws.com",
170
+ "role_name": "AWSServiceRoleForAmazonEKSForFargate",
171
+ "attached_policies": [
172
+ "arn:aws:iam::aws:policy/aws-service-role/AmazonEKSForFargateServiceRolePolicy"
173
+ ],
174
+ "suffix_allowed": False,
175
+ },
176
+ "eks-nodegroup.amazonaws.com": {
177
+ "service": "eks-nodegroup.amazonaws.com",
178
+ "role_name": "AWSServiceRoleForAmazonEKSNodegroup",
179
+ "attached_policies": [
180
+ "arn:aws:iam::aws:policy/aws-service-role/AWSServiceRoleForAmazonEKSNodegroup"
181
+ ],
182
+ "suffix_allowed": False,
183
+ },
184
+ "eks.amazonaws.com": {
185
+ "service": "eks.amazonaws.com",
186
+ "role_name": "AWSServiceRoleForAmazonEKS",
187
+ "attached_policies": [
188
+ "arn:aws:iam::aws:policy/aws-service-role/AmazonEKSServiceRolePolicy"
189
+ ],
190
+ "suffix_allowed": False,
191
+ },
192
+ "elasticache.amazonaws.com": {
193
+ "service": "elasticache.amazonaws.com",
194
+ "role_name": "AWSServiceRoleForElastiCache",
195
+ "attached_policies": [
196
+ "arn:aws:iam::aws:policy/aws-service-role/ElastiCacheServiceRolePolicy"
197
+ ],
198
+ "suffix_allowed": False,
199
+ },
200
+ "elasticbeanstalk.amazonaws.com": {
201
+ "service": "elasticbeanstalk.amazonaws.com",
202
+ "role_name": "AWSServiceRoleForElasticBeanstalk",
203
+ "attached_policies": [
204
+ "arn:aws:iam::aws:policy/aws-service-role/AWSElasticBeanstalkServiceRolePolicy"
205
+ ],
206
+ "suffix_allowed": False,
207
+ },
208
+ "elasticfilesystem.amazonaws.com": {
209
+ "service": "elasticfilesystem.amazonaws.com",
210
+ "role_name": "AWSServiceRoleForAmazonElasticFileSystem",
211
+ "attached_policies": [
212
+ "arn:aws:iam::aws:policy/aws-service-role/AmazonElasticFileSystemServiceRolePolicy"
213
+ ],
214
+ "suffix_allowed": False,
215
+ },
216
+ "elasticloadbalancing.amazonaws.com": {
217
+ "service": "elasticloadbalancing.amazonaws.com",
218
+ "role_name": "AWSServiceRoleForElasticLoadBalancing",
219
+ "attached_policies": [
220
+ "arn:aws:iam::aws:policy/aws-service-role/AWSElasticLoadBalancingServiceRolePolicy"
221
+ ],
222
+ "suffix_allowed": False,
223
+ },
224
+ "email.cognito-idp.amazonaws.com": {
225
+ "service": "email.cognito-idp.amazonaws.com",
226
+ "role_name": "AWSServiceRoleForAmazonCognitoIdpEmailService",
227
+ "attached_policies": [
228
+ "arn:aws:iam::aws:policy/aws-service-role/AmazonCognitoIdpEmailServiceRolePolicy"
229
+ ],
230
+ "suffix_allowed": False,
231
+ },
232
+ "emr-containers.amazonaws.com": {
233
+ "service": "emr-containers.amazonaws.com",
234
+ "role_name": "AWSServiceRoleForAmazonEMRContainers",
235
+ "attached_policies": [
236
+ "arn:aws:iam::aws:policy/aws-service-role/AmazonEMRContainersServiceRolePolicy"
237
+ ],
238
+ "suffix_allowed": False,
239
+ },
240
+ "emrwal.amazonaws.com": {
241
+ "service": "emrwal.amazonaws.com",
242
+ "role_name": "AWSServiceRoleForEMRWAL",
243
+ "attached_policies": [
244
+ "arn:aws:iam::aws:policy/aws-service-role/EMRDescribeClusterPolicyForEMRWAL"
245
+ ],
246
+ "suffix_allowed": False,
247
+ },
248
+ "fis.amazonaws.com": {
249
+ "service": "fis.amazonaws.com",
250
+ "role_name": "AWSServiceRoleForFIS",
251
+ "attached_policies": [
252
+ "arn:aws:iam::aws:policy/aws-service-role/AmazonFISServiceRolePolicy"
253
+ ],
254
+ "suffix_allowed": False,
255
+ },
256
+ "grafana.amazonaws.com": {
257
+ "service": "grafana.amazonaws.com",
258
+ "role_name": "AWSServiceRoleForAmazonGrafana",
259
+ "attached_policies": [
260
+ "arn:aws:iam::aws:policy/aws-service-role/AmazonGrafanaServiceLinkedRolePolicy"
261
+ ],
262
+ "suffix_allowed": False,
263
+ },
264
+ "imagebuilder.amazonaws.com": {
265
+ "service": "imagebuilder.amazonaws.com",
266
+ "role_name": "AWSServiceRoleForImageBuilder",
267
+ "attached_policies": [
268
+ "arn:aws:iam::aws:policy/aws-service-role/AWSServiceRoleForImageBuilder"
269
+ ],
270
+ "suffix_allowed": False,
271
+ },
272
+ "iotmanagedintegrations.amazonaws.com": {
273
+ "service": "iotmanagedintegrations.amazonaws.com",
274
+ "role_name": "AWSServiceRoleForIoTManagedIntegrations",
275
+ "attached_policies": [
276
+ "arn:aws:iam::aws:policy/aws-service-role/AWSIoTManagedIntegrationsRolePolicy"
277
+ ],
278
+ "suffix_allowed": False,
279
+ },
280
+ "kafka.amazonaws.com": {
281
+ "service": "kafka.amazonaws.com",
282
+ "role_name": "AWSServiceRoleForKafka",
283
+ "attached_policies": ["arn:aws:iam::aws:policy/aws-service-role/KafkaServiceRolePolicy"],
284
+ "suffix_allowed": False,
285
+ },
286
+ "kafkaconnect.amazonaws.com": {
287
+ "service": "kafkaconnect.amazonaws.com",
288
+ "role_name": "AWSServiceRoleForKafkaConnect",
289
+ "attached_policies": [
290
+ "arn:aws:iam::aws:policy/aws-service-role/KafkaConnectServiceRolePolicy"
291
+ ],
292
+ "suffix_allowed": False,
293
+ },
294
+ "lakeformation.amazonaws.com": {
295
+ "service": "lakeformation.amazonaws.com",
296
+ "role_name": "AWSServiceRoleForLakeFormationDataAccess",
297
+ "attached_policies": [
298
+ "arn:aws:iam::aws:policy/aws-service-role/LakeFormationDataAccessServiceRolePolicy"
299
+ ],
300
+ "suffix_allowed": False,
301
+ },
302
+ "lex.amazonaws.com": {
303
+ "service": "lex.amazonaws.com",
304
+ "role_name": "AWSServiceRoleForLexBots",
305
+ "attached_policies": ["arn:aws:iam::aws:policy/aws-service-role/AmazonLexBotPolicy"],
306
+ "suffix_allowed": False,
307
+ },
308
+ "lexv2.amazonaws.com": {
309
+ "service": "lexv2.amazonaws.com",
310
+ "role_name": "AWSServiceRoleForLexV2Bots",
311
+ "attached_policies": ["arn:aws:iam::aws:policy/aws-service-role/AmazonLexV2BotPolicy"],
312
+ "suffix_allowed": True,
313
+ },
314
+ "lightsail.amazonaws.com": {
315
+ "service": "lightsail.amazonaws.com",
316
+ "role_name": "AWSServiceRoleForLightsail",
317
+ "attached_policies": ["arn:aws:iam::aws:policy/aws-service-role/LightsailExportAccess"],
318
+ "suffix_allowed": False,
319
+ },
320
+ "m2.amazonaws.com": {
321
+ "service": "m2.amazonaws.com",
322
+ "role_name": "AWSServiceRoleForAWSM2",
323
+ "attached_policies": ["arn:aws:iam::aws:policy/aws-service-role/AWSM2ServicePolicy"],
324
+ "suffix_allowed": False,
325
+ },
326
+ "memorydb.amazonaws.com": {
327
+ "service": "memorydb.amazonaws.com",
328
+ "role_name": "AWSServiceRoleForMemoryDB",
329
+ "attached_policies": ["arn:aws:iam::aws:policy/aws-service-role/MemoryDBServiceRolePolicy"],
330
+ "suffix_allowed": False,
331
+ },
332
+ "mq.amazonaws.com": {
333
+ "service": "mq.amazonaws.com",
334
+ "role_name": "AWSServiceRoleForAmazonMQ",
335
+ "attached_policies": ["arn:aws:iam::aws:policy/aws-service-role/AmazonMQServiceRolePolicy"],
336
+ "suffix_allowed": False,
337
+ },
338
+ "mrk.kms.amazonaws.com": {
339
+ "service": "mrk.kms.amazonaws.com",
340
+ "role_name": "AWSServiceRoleForKeyManagementServiceMultiRegionKeys",
341
+ "attached_policies": [
342
+ "arn:aws:iam::aws:policy/aws-service-role/AWSKeyManagementServiceMultiRegionKeysServiceRolePolicy"
343
+ ],
344
+ "suffix_allowed": False,
345
+ },
346
+ "notifications.amazonaws.com": {
347
+ "service": "notifications.amazonaws.com",
348
+ "role_name": "AWSServiceRoleForAwsUserNotifications",
349
+ "attached_policies": [
350
+ "arn:aws:iam::aws:policy/aws-service-role/AWSUserNotificationsServiceLinkedRolePolicy"
351
+ ],
352
+ "suffix_allowed": False,
353
+ },
354
+ "observability.aoss.amazonaws.com": {
355
+ "service": "observability.aoss.amazonaws.com",
356
+ "role_name": "AWSServiceRoleForAmazonOpenSearchServerless",
357
+ "attached_policies": [
358
+ "arn:aws:iam::aws:policy/aws-service-role/AmazonOpenSearchServerlessServiceRolePolicy"
359
+ ],
360
+ "suffix_allowed": False,
361
+ },
362
+ "opensearchservice.amazonaws.com": {
363
+ "service": "opensearchservice.amazonaws.com",
364
+ "role_name": "AWSServiceRoleForAmazonOpenSearchService",
365
+ "attached_policies": [
366
+ "arn:aws:iam::aws:policy/aws-service-role/AmazonOpenSearchServiceRolePolicy"
367
+ ],
368
+ "suffix_allowed": False,
369
+ },
370
+ "ops.apigateway.amazonaws.com": {
371
+ "service": "ops.apigateway.amazonaws.com",
372
+ "role_name": "AWSServiceRoleForAPIGateway",
373
+ "attached_policies": [
374
+ "arn:aws:iam::aws:policy/aws-service-role/APIGatewayServiceRolePolicy"
375
+ ],
376
+ "suffix_allowed": False,
377
+ },
378
+ "ops.emr-serverless.amazonaws.com": {
379
+ "service": "ops.emr-serverless.amazonaws.com",
380
+ "role_name": "AWSServiceRoleForAmazonEMRServerless",
381
+ "attached_policies": [
382
+ "arn:aws:iam::aws:policy/aws-service-role/AmazonEMRServerlessServiceRolePolicy"
383
+ ],
384
+ "suffix_allowed": False,
385
+ },
386
+ "opsdatasync.ssm.amazonaws.com": {
387
+ "service": "opsdatasync.ssm.amazonaws.com",
388
+ "role_name": "AWSServiceRoleForSystemsManagerOpsDataSync",
389
+ "attached_policies": [
390
+ "arn:aws:iam::aws:policy/aws-service-role/AWSSystemsManagerOpsDataSyncServiceRolePolicy"
391
+ ],
392
+ "suffix_allowed": False,
393
+ },
394
+ "opsinsights.ssm.amazonaws.com": {
395
+ "service": "opsinsights.ssm.amazonaws.com",
396
+ "role_name": "AWSServiceRoleForAmazonSSM_OpsInsights",
397
+ "attached_policies": [
398
+ "arn:aws:iam::aws:policy/aws-service-role/AWSSSMOpsInsightsServiceRolePolicy"
399
+ ],
400
+ "suffix_allowed": False,
401
+ },
402
+ "pullthroughcache.ecr.amazonaws.com": {
403
+ "service": "pullthroughcache.ecr.amazonaws.com",
404
+ "role_name": "AWSServiceRoleForECRPullThroughCache",
405
+ "attached_policies": [
406
+ "arn:aws:iam::aws:policy/aws-service-role/AWSECRPullThroughCache_ServiceRolePolicy"
407
+ ],
408
+ "suffix_allowed": False,
409
+ },
410
+ "ram.amazonaws.com": {
411
+ "service": "ram.amazonaws.com",
412
+ "role_name": "AWSServiceRoleForResourceAccessManager",
413
+ "attached_policies": [
414
+ "arn:aws:iam::aws:policy/aws-service-role/AWSResourceAccessManagerServiceRolePolicy"
415
+ ],
416
+ "suffix_allowed": False,
417
+ },
418
+ "rds.amazonaws.com": {
419
+ "service": "rds.amazonaws.com",
420
+ "role_name": "AWSServiceRoleForRDS",
421
+ "attached_policies": [
422
+ "arn:aws:iam::aws:policy/aws-service-role/AmazonRDSServiceRolePolicy"
423
+ ],
424
+ "suffix_allowed": False,
425
+ },
426
+ "redshift.amazonaws.com": {
427
+ "service": "redshift.amazonaws.com",
428
+ "role_name": "AWSServiceRoleForRedshift",
429
+ "attached_policies": [
430
+ "arn:aws:iam::aws:policy/aws-service-role/AmazonRedshiftServiceLinkedRolePolicy"
431
+ ],
432
+ "suffix_allowed": False,
433
+ },
434
+ "replication.cassandra.amazonaws.com": {
435
+ "service": "replication.cassandra.amazonaws.com",
436
+ "role_name": "AWSServiceRoleForKeyspacesReplication",
437
+ "attached_policies": [
438
+ "arn:aws:iam::aws:policy/aws-service-role/KeyspacesReplicationServiceRolePolicy"
439
+ ],
440
+ "suffix_allowed": False,
441
+ },
442
+ "replication.ecr.amazonaws.com": {
443
+ "service": "replication.ecr.amazonaws.com",
444
+ "role_name": "AWSServiceRoleForECRReplication",
445
+ "attached_policies": [
446
+ "arn:aws:iam::aws:policy/aws-service-role/ECRReplicationServiceRolePolicy"
447
+ ],
448
+ "suffix_allowed": False,
449
+ },
450
+ "repository.sync.codeconnections.amazonaws.com": {
451
+ "service": "repository.sync.codeconnections.amazonaws.com",
452
+ "role_name": "AWSServiceRoleForGitSync",
453
+ "attached_policies": [
454
+ "arn:aws:iam::aws:policy/aws-service-role/AWSGitSyncServiceRolePolicy"
455
+ ],
456
+ "suffix_allowed": False,
457
+ },
458
+ "resource-explorer-2.amazonaws.com": {
459
+ "service": "resource-explorer-2.amazonaws.com",
460
+ "role_name": "AWSServiceRoleForResourceExplorer",
461
+ "attached_policies": [
462
+ "arn:aws:iam::aws:policy/aws-service-role/AWSResourceExplorerServiceRolePolicy"
463
+ ],
464
+ "suffix_allowed": False,
465
+ },
466
+ "rolesanywhere.amazonaws.com": {
467
+ "service": "rolesanywhere.amazonaws.com",
468
+ "role_name": "AWSServiceRoleForRolesAnywhere",
469
+ "attached_policies": [
470
+ "arn:aws:iam::aws:policy/aws-service-role/AWSRolesAnywhereServicePolicy"
471
+ ],
472
+ "suffix_allowed": False,
473
+ },
474
+ "s3-outposts.amazonaws.com": {
475
+ "service": "s3-outposts.amazonaws.com",
476
+ "role_name": "AWSServiceRoleForS3OnOutposts",
477
+ "attached_policies": [
478
+ "arn:aws:iam::aws:policy/aws-service-role/AWSS3OnOutpostsServiceRolePolicy"
479
+ ],
480
+ "suffix_allowed": False,
481
+ },
482
+ "ses.amazonaws.com": {
483
+ "service": "ses.amazonaws.com",
484
+ "role_name": "AWSServiceRoleForAmazonSES",
485
+ "attached_policies": [
486
+ "arn:aws:iam::aws:policy/aws-service-role/AmazonSESServiceRolePolicy"
487
+ ],
488
+ "suffix_allowed": False,
489
+ },
490
+ "shield.amazonaws.com": {
491
+ "service": "shield.amazonaws.com",
492
+ "role_name": "AWSServiceRoleForAWSShield",
493
+ "attached_policies": [
494
+ "arn:aws:iam::aws:policy/aws-service-role/AWSShieldServiceRolePolicy"
495
+ ],
496
+ "suffix_allowed": False,
497
+ },
498
+ "ssm-incidents.amazonaws.com": {
499
+ "service": "ssm-incidents.amazonaws.com",
500
+ "role_name": "AWSServiceRoleForIncidentManager",
501
+ "attached_policies": [
502
+ "arn:aws:iam::aws:policy/aws-service-role/AWSIncidentManagerServiceRolePolicy"
503
+ ],
504
+ "suffix_allowed": False,
505
+ },
506
+ "ssm-quicksetup.amazonaws.com": {
507
+ "service": "ssm-quicksetup.amazonaws.com",
508
+ "role_name": "AWSServiceRoleForSSMQuickSetup",
509
+ "attached_policies": ["arn:aws:iam::aws:policy/aws-service-role/SSMQuickSetupRolePolicy"],
510
+ "suffix_allowed": False,
511
+ },
512
+ "ssm.amazonaws.com": {
513
+ "service": "ssm.amazonaws.com",
514
+ "role_name": "AWSServiceRoleForAmazonSSM",
515
+ "attached_policies": [
516
+ "arn:aws:iam::aws:policy/aws-service-role/AmazonSSMServiceRolePolicy"
517
+ ],
518
+ "suffix_allowed": False,
519
+ },
520
+ "sso.amazonaws.com": {
521
+ "service": "sso.amazonaws.com",
522
+ "role_name": "AWSServiceRoleForSSO",
523
+ "attached_policies": ["arn:aws:iam::aws:policy/aws-service-role/AWSSSOServiceRolePolicy"],
524
+ "suffix_allowed": False,
525
+ },
526
+ "vpcorigin.cloudfront.amazonaws.com": {
527
+ "service": "vpcorigin.cloudfront.amazonaws.com",
528
+ "role_name": "AWSServiceRoleForCloudFrontVPCOrigin",
529
+ "attached_policies": [
530
+ "arn:aws:iam::aws:policy/aws-service-role/AWSCloudFrontVPCOriginServiceRolePolicy"
531
+ ],
532
+ "suffix_allowed": False,
533
+ },
534
+ "waf.amazonaws.com": {
535
+ "service": "waf.amazonaws.com",
536
+ "role_name": "AWSServiceRoleForWAFLogging",
537
+ "attached_policies": [
538
+ "arn:aws:iam::aws:policy/aws-service-role/WAFLoggingServiceRolePolicy"
539
+ ],
540
+ "suffix_allowed": False,
541
+ },
542
+ "wafv2.amazonaws.com": {
543
+ "service": "wafv2.amazonaws.com",
544
+ "role_name": "AWSServiceRoleForWAFV2Logging",
545
+ "attached_policies": [
546
+ "arn:aws:iam::aws:policy/aws-service-role/WAFV2LoggingServiceRolePolicy"
547
+ ],
548
+ "suffix_allowed": False,
549
+ },
550
+ }
@@ -0,0 +1,9 @@
1
+ """
2
+ Usage analytics for SNS internal endpoints
3
+ """
4
+
5
+ from localstack.utils.analytics.metrics import Counter
6
+
7
+ # number of times SNS internal endpoint per resource types
8
+ # (e.g. PlatformMessage invoked 10x times, SMSMessage invoked 3x times, SubscriptionToken...)
9
+ internal_api_calls = Counter(namespace="sns", name="internal_api_call", labels=["resource_type"])
@@ -61,7 +61,6 @@ from localstack.services.edge import ROUTER
61
61
  from localstack.services.moto import call_moto
62
62
  from localstack.services.plugins import ServiceLifecycleHook
63
63
  from localstack.services.sns import constants as sns_constants
64
- from localstack.services.sns import usage
65
64
  from localstack.services.sns.certificate import SNS_SERVER_CERT
66
65
  from localstack.services.sns.filter import FilterPolicyValidator
67
66
  from localstack.services.sns.models import (
@@ -86,6 +85,8 @@ from localstack.utils.aws.arns import (
86
85
  from localstack.utils.collections import PaginatedList, select_from_typed_dict
87
86
  from localstack.utils.strings import short_uid, to_bytes, to_str
88
87
 
88
+ from .analytics import internal_api_calls
89
+
89
90
  # set up logger
90
91
  LOG = logging.getLogger(__name__)
91
92
 
@@ -1134,7 +1135,7 @@ class SNSInternalResource:
1134
1135
  """Base class with helper to properly track usage of internal endpoints"""
1135
1136
 
1136
1137
  def count_usage(self):
1137
- usage.internalapi.record(f"{self.resource_type}")
1138
+ internal_api_calls.labels(resource_type=self.resource_type).increment()
1138
1139
 
1139
1140
 
1140
1141
  def count_usage(f):
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.2.1.dev47'
21
- __version_tuple__ = version_tuple = (4, 2, 1, 'dev47')
20
+ __version__ = version = '4.2.1.dev49'
21
+ __version_tuple__ = version_tuple = (4, 2, 1, 'dev49')
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: localstack-core
3
- Version: 4.2.1.dev47
3
+ Version: 4.2.1.dev49
4
4
  Summary: The core library and runtime of LocalStack
5
5
  Author-email: LocalStack Contributors <info@localstack.cloud>
6
6
  Project-URL: Homepage, https://localstack.cloud
@@ -3,7 +3,7 @@ localstack/constants.py,sha256=bBh6djh4x37MrS8az8LizX_APMZ56XdtJHCnZdOnmeg,6867
3
3
  localstack/deprecations.py,sha256=t3zeaZaHhKYM8snP1wRZhpvAy6MbB12Vqv5hK78bwJ0,15162
4
4
  localstack/openapi.yaml,sha256=B803NmpwsxG8PHpHrdZYBrUYjnrRh7B_JX0XuNynuFs,30237
5
5
  localstack/plugins.py,sha256=BIJC9dlo0WbP7lLKkCiGtd_2q5oeqiHZohvoRTcejXM,2457
6
- localstack/version.py,sha256=BTQEEv8UeYbcAB-LPpKw5E4AUzcOwecQrDaH0yxKyi8,526
6
+ localstack/version.py,sha256=d-uSu0XlzI86NsphYz3teA4Ttl5YeVSGRveHZlKVplU,526
7
7
  localstack/aws/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
8
8
  localstack/aws/accounts.py,sha256=102zpGowOxo0S6UGMpfjw14QW7WCLVAGsnFK5xFMLoo,3043
9
9
  localstack/aws/app.py,sha256=n9bJCfJRuMz_gLGAH430c3bIQXgUXeWO5NPfcdL2MV8,5145
@@ -469,7 +469,7 @@ localstack/services/firehose/models.py,sha256=ks3vcvE7scWtXQSHQDc5GkBpBQkmlPtTu7
469
469
  localstack/services/firehose/provider.py,sha256=yKgeUWVo0jBnMgfr35BoCxVB1Hj6yCvUoayyLnKzCDc,41007
470
470
  localstack/services/iam/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
471
471
  localstack/services/iam/iam_patches.py,sha256=qb-YZPsLUOiuwtPsWFz698bt2W-Bfl-TkFHhw2ZKXDY,4652
472
- localstack/services/iam/provider.py,sha256=ic1TGbyj9-0g0UlNaSkEsFo3GkcwflVWCfj5zUv0HJQ,26232
472
+ localstack/services/iam/provider.py,sha256=E18bk6lsEtiL7l1S_Y3-b5qSEtUIkkyQvRoXTJ0sXNI,27513
473
473
  localstack/services/iam/resource_providers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
474
474
  localstack/services/iam/resource_providers/aws_iam_accesskey.py,sha256=TYRGHM9nMD3dyx-edea0NY-LFp6Fn_b7L5zjqIuubHg,3905
475
475
  localstack/services/iam/resource_providers/aws_iam_accesskey.schema.json,sha256=Gr00xlh-7HHx6447OdCV3Pm0RUvBQb5vQ3owiMArjok,662
@@ -498,6 +498,7 @@ localstack/services/iam/resource_providers/aws_iam_servicelinkedrole_plugin.py,s
498
498
  localstack/services/iam/resource_providers/aws_iam_user.py,sha256=Q8BiqSRJ3aJXRCiCbB_0dVpy7ptuE8ILlZWF8j4Tak4,5203
499
499
  localstack/services/iam/resource_providers/aws_iam_user.schema.json,sha256=NjcoBDf9F35BNvkgpszQm18cuuPtXmc3LdzU8Z79Ue0,2102
500
500
  localstack/services/iam/resource_providers/aws_iam_user_plugin.py,sha256=n0OuJYcG4YhM52YKkpu_LkiBv7_13LLp1n8sYCXx78E,505
501
+ localstack/services/iam/resources/service_linked_roles.py,sha256=4LWz9vTSTOQTxT4kxqmqm3CnS6GqzN_5BZtxgLPjUNs,21955
501
502
  localstack/services/kinesis/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
502
503
  localstack/services/kinesis/kinesis_mock_server.py,sha256=fT6fa8EtmmGkp-7SdcJJ-p0AI7kJ6RY79B0Y1stUIYo,6580
503
504
  localstack/services/kinesis/models.py,sha256=Ttmo8o_f9QpIlGX9zKxkLM-ITJSkahCOo6vXs-pT4rc,641
@@ -725,14 +726,14 @@ localstack/services/ses/resource_providers/aws_ses_emailidentity.py,sha256=R_oS_
725
726
  localstack/services/ses/resource_providers/aws_ses_emailidentity.schema.json,sha256=V2e0GQp6xp8kjmyaBe-uTVl3_Za3DDrKXoDyA5ZCcTI,6093
726
727
  localstack/services/ses/resource_providers/aws_ses_emailidentity_plugin.py,sha256=J3Yoh1xxPs5y3Wmm-_c7Ep5HECCLINdNdwlmNIXMpVw,575
727
728
  localstack/services/sns/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
729
+ localstack/services/sns/analytics.py,sha256=V4397csx8ZZTw_IwYPubASgc4giiAxvucv7clyOhYBk,359
728
730
  localstack/services/sns/certificate.py,sha256=g30Pi4CMu9u4hFTGUPua6JG5f-kOFmRIJdDu0RpIj7I,1882
729
731
  localstack/services/sns/constants.py,sha256=iAQLU6qVkA6DumYytm3pHkNLzjh4BubXHIHBK91Ix_M,1216
730
732
  localstack/services/sns/executor.py,sha256=hP8vf0C8xlBLGNJozzI_ZzE0l-O0f_4bYjSQIz1Fzwg,3960
731
733
  localstack/services/sns/filter.py,sha256=gMNN4ULrswX1j4RrKM_EVpaKT11wg4cEhBthDTobjzU,22221
732
734
  localstack/services/sns/models.py,sha256=xgw1wUJ1gmFsKgVTNWG87aGst1vHrf3zF9GQ5eZZRS4,5894
733
- localstack/services/sns/provider.py,sha256=EPSw1Kbu9ZmssXOWTRf4V847HjquBJpybnAAmBeCF7Y,58800
735
+ localstack/services/sns/provider.py,sha256=OutaN-T7K4NpCDuG1AYSmiCDU-kYtyN8Uk-9cvCZl1Q,58823
734
736
  localstack/services/sns/publisher.py,sha256=b0tWlqCGs5wd3O5hEscMLdHjC_7-nWsMi--7Wam_0qw,59447
735
- localstack/services/sns/usage.py,sha256=mYlfUWRQJ6wHtFFnGhMRE4iq27LaUhPV1QCSpO1Imxc,324
736
737
  localstack/services/sns/resource_providers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
737
738
  localstack/services/sns/resource_providers/aws_sns_subscription.py,sha256=jRWle6n99pWRCuh54FBEXZXmiW0pa7QmiF7SmpIQuYc,4170
738
739
  localstack/services/sns/resource_providers/aws_sns_subscription.schema.json,sha256=3Ro_73uHocAWgjsekaflOty3RzzVlO5Ch1I_Tmua71E,1059
@@ -1265,13 +1266,13 @@ localstack/utils/server/tcp_proxy.py,sha256=rR6d5jR0ozDvIlpHiqW0cfyY9a2fRGdOzyA8
1265
1266
  localstack/utils/xray/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1266
1267
  localstack/utils/xray/trace_header.py,sha256=ahXk9eonq7LpeENwlqUEPj3jDOCiVRixhntQuxNor-Q,6209
1267
1268
  localstack/utils/xray/traceid.py,sha256=SQSsMV2rhbTNK6ceIoozZYuGU7Fg687EXcgqxoDl1Fw,1106
1268
- localstack_core-4.2.1.dev47.data/scripts/localstack,sha256=WyL11vp5CkuP79iIR-L8XT7Cj8nvmxX7XRAgxhbmXNE,529
1269
- localstack_core-4.2.1.dev47.data/scripts/localstack-supervisor,sha256=nm1Il2d6ASyOB6Vo4CRHd90w7TK9FdRl9VPp0NN6hUk,6378
1270
- localstack_core-4.2.1.dev47.data/scripts/localstack.bat,sha256=tlzZTXtveHkMX_s_fa7VDfvdNdS8iVpEz2ER3uk9B_c,29
1271
- localstack_core-4.2.1.dev47.dist-info/LICENSE.txt,sha256=3PC-9Z69UsNARuQ980gNR_JsLx8uvMjdG6C7cc4LBYs,606
1272
- localstack_core-4.2.1.dev47.dist-info/METADATA,sha256=RbXJQ6TF52Ggo0wO-ZbTOE_2Ye0CT2iYesfz19VNFrE,5481
1273
- localstack_core-4.2.1.dev47.dist-info/WHEEL,sha256=52BFRY2Up02UkjOa29eZOS2VxUrpPORXg1pkohGGUS8,91
1274
- localstack_core-4.2.1.dev47.dist-info/entry_points.txt,sha256=UqGFR0MPKa2sfresdqiCpqBZuWyRxCb3UG77oPVMzVA,20564
1275
- localstack_core-4.2.1.dev47.dist-info/plux.json,sha256=clapoLbo7Q_4A1dvOUPEcyb42JCKgEmM6dxcS_a9KB0,20786
1276
- localstack_core-4.2.1.dev47.dist-info/top_level.txt,sha256=3sqmK2lGac8nCy8nwsbS5SpIY_izmtWtgaTFKHYVHbI,11
1277
- localstack_core-4.2.1.dev47.dist-info/RECORD,,
1269
+ localstack_core-4.2.1.dev49.data/scripts/localstack,sha256=WyL11vp5CkuP79iIR-L8XT7Cj8nvmxX7XRAgxhbmXNE,529
1270
+ localstack_core-4.2.1.dev49.data/scripts/localstack-supervisor,sha256=nm1Il2d6ASyOB6Vo4CRHd90w7TK9FdRl9VPp0NN6hUk,6378
1271
+ localstack_core-4.2.1.dev49.data/scripts/localstack.bat,sha256=tlzZTXtveHkMX_s_fa7VDfvdNdS8iVpEz2ER3uk9B_c,29
1272
+ localstack_core-4.2.1.dev49.dist-info/LICENSE.txt,sha256=3PC-9Z69UsNARuQ980gNR_JsLx8uvMjdG6C7cc4LBYs,606
1273
+ localstack_core-4.2.1.dev49.dist-info/METADATA,sha256=rIylZUniAPo29_ETX5AcvKzNh6lDyfSr6G4UVqZGQHE,5481
1274
+ localstack_core-4.2.1.dev49.dist-info/WHEEL,sha256=52BFRY2Up02UkjOa29eZOS2VxUrpPORXg1pkohGGUS8,91
1275
+ localstack_core-4.2.1.dev49.dist-info/entry_points.txt,sha256=UqGFR0MPKa2sfresdqiCpqBZuWyRxCb3UG77oPVMzVA,20564
1276
+ localstack_core-4.2.1.dev49.dist-info/plux.json,sha256=d7SDvIpC3-w-feEBwjjPTK1CsKW6TALL4f1RX-94pE8,20786
1277
+ localstack_core-4.2.1.dev49.dist-info/top_level.txt,sha256=3sqmK2lGac8nCy8nwsbS5SpIY_izmtWtgaTFKHYVHbI,11
1278
+ localstack_core-4.2.1.dev49.dist-info/RECORD,,
@@ -0,0 +1 @@
1
+ {"localstack.cloudformation.resource_providers": ["AWS::DynamoDB::GlobalTable=localstack.services.dynamodb.resource_providers.aws_dynamodb_globaltable_plugin:DynamoDBGlobalTableProviderPlugin", "AWS::EC2::Instance=localstack.services.ec2.resource_providers.aws_ec2_instance_plugin:EC2InstanceProviderPlugin", "AWS::EC2::Route=localstack.services.ec2.resource_providers.aws_ec2_route_plugin:EC2RouteProviderPlugin", "AWS::EC2::InternetGateway=localstack.services.ec2.resource_providers.aws_ec2_internetgateway_plugin:EC2InternetGatewayProviderPlugin", "AWS::CloudFormation::Macro=localstack.services.cloudformation.resource_providers.aws_cloudformation_macro_plugin:CloudFormationMacroProviderPlugin", "AWS::SSM::MaintenanceWindowTask=localstack.services.ssm.resource_providers.aws_ssm_maintenancewindowtask_plugin:SSMMaintenanceWindowTaskProviderPlugin", "AWS::OpenSearchService::Domain=localstack.services.opensearch.resource_providers.aws_opensearchservice_domain_plugin:OpenSearchServiceDomainProviderPlugin", "AWS::ApiGateway::Account=localstack.services.apigateway.resource_providers.aws_apigateway_account_plugin:ApiGatewayAccountProviderPlugin", "AWS::IAM::ServiceLinkedRole=localstack.services.iam.resource_providers.aws_iam_servicelinkedrole_plugin:IAMServiceLinkedRoleProviderPlugin", "AWS::StepFunctions::Activity=localstack.services.stepfunctions.resource_providers.aws_stepfunctions_activity_plugin:StepFunctionsActivityProviderPlugin", "AWS::DynamoDB::Table=localstack.services.dynamodb.resource_providers.aws_dynamodb_table_plugin:DynamoDBTableProviderPlugin", "AWS::ApiGateway::Resource=localstack.services.apigateway.resource_providers.aws_apigateway_resource_plugin:ApiGatewayResourceProviderPlugin", "AWS::SecretsManager::ResourcePolicy=localstack.services.secretsmanager.resource_providers.aws_secretsmanager_resourcepolicy_plugin:SecretsManagerResourcePolicyProviderPlugin", "AWS::CertificateManager::Certificate=localstack.services.certificatemanager.resource_providers.aws_certificatemanager_certificate_plugin:CertificateManagerCertificateProviderPlugin", "AWS::EC2::VPC=localstack.services.ec2.resource_providers.aws_ec2_vpc_plugin:EC2VPCProviderPlugin", "AWS::EC2::Subnet=localstack.services.ec2.resource_providers.aws_ec2_subnet_plugin:EC2SubnetProviderPlugin", "AWS::Lambda::LayerVersion=localstack.services.lambda_.resource_providers.aws_lambda_layerversion_plugin:LambdaLayerVersionProviderPlugin", "AWS::IAM::Role=localstack.services.iam.resource_providers.aws_iam_role_plugin:IAMRoleProviderPlugin", "AWS::Kinesis::Stream=localstack.services.kinesis.resource_providers.aws_kinesis_stream_plugin:KinesisStreamProviderPlugin", "AWS::S3::BucketPolicy=localstack.services.s3.resource_providers.aws_s3_bucketpolicy_plugin:S3BucketPolicyProviderPlugin", "AWS::KMS::Key=localstack.services.kms.resource_providers.aws_kms_key_plugin:KMSKeyProviderPlugin", "AWS::EC2::KeyPair=localstack.services.ec2.resource_providers.aws_ec2_keypair_plugin:EC2KeyPairProviderPlugin", "AWS::Scheduler::Schedule=localstack.services.scheduler.resource_providers.aws_scheduler_schedule_plugin:SchedulerScheduleProviderPlugin", "AWS::ApiGateway::RestApi=localstack.services.apigateway.resource_providers.aws_apigateway_restapi_plugin:ApiGatewayRestApiProviderPlugin", "AWS::EC2::NetworkAcl=localstack.services.ec2.resource_providers.aws_ec2_networkacl_plugin:EC2NetworkAclProviderPlugin", "AWS::Logs::SubscriptionFilter=localstack.services.logs.resource_providers.aws_logs_subscriptionfilter_plugin:LogsSubscriptionFilterProviderPlugin", "AWS::Lambda::EventInvokeConfig=localstack.services.lambda_.resource_providers.aws_lambda_eventinvokeconfig_plugin:LambdaEventInvokeConfigProviderPlugin", "AWS::Lambda::Url=localstack.services.lambda_.resource_providers.aws_lambda_url_plugin:LambdaUrlProviderPlugin", "AWS::EC2::RouteTable=localstack.services.ec2.resource_providers.aws_ec2_routetable_plugin:EC2RouteTableProviderPlugin", "AWS::EC2::TransitGatewayAttachment=localstack.services.ec2.resource_providers.aws_ec2_transitgatewayattachment_plugin:EC2TransitGatewayAttachmentProviderPlugin", "AWS::ApiGateway::GatewayResponse=localstack.services.apigateway.resource_providers.aws_apigateway_gatewayresponse_plugin:ApiGatewayGatewayResponseProviderPlugin", "AWS::Route53::RecordSet=localstack.services.route53.resource_providers.aws_route53_recordset_plugin:Route53RecordSetProviderPlugin", "AWS::Redshift::Cluster=localstack.services.redshift.resource_providers.aws_redshift_cluster_plugin:RedshiftClusterProviderPlugin", "AWS::ApiGateway::UsagePlanKey=localstack.services.apigateway.resource_providers.aws_apigateway_usageplankey_plugin:ApiGatewayUsagePlanKeyProviderPlugin", "AWS::EC2::TransitGateway=localstack.services.ec2.resource_providers.aws_ec2_transitgateway_plugin:EC2TransitGatewayProviderPlugin", "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::Events::EventBusPolicy=localstack.services.events.resource_providers.aws_events_eventbuspolicy_plugin:EventsEventBusPolicyProviderPlugin", "AWS::IAM::InstanceProfile=localstack.services.iam.resource_providers.aws_iam_instanceprofile_plugin:IAMInstanceProfileProviderPlugin", "AWS::Events::Rule=localstack.services.events.resource_providers.aws_events_rule_plugin:EventsRuleProviderPlugin", "AWS::SQS::Queue=localstack.services.sqs.resource_providers.aws_sqs_queue_plugin:SQSQueueProviderPlugin", "AWS::SSM::PatchBaseline=localstack.services.ssm.resource_providers.aws_ssm_patchbaseline_plugin:SSMPatchBaselineProviderPlugin", "AWS::KinesisFirehose::DeliveryStream=localstack.services.kinesisfirehose.resource_providers.aws_kinesisfirehose_deliverystream_plugin:KinesisFirehoseDeliveryStreamProviderPlugin", "AWS::KMS::Alias=localstack.services.kms.resource_providers.aws_kms_alias_plugin:KMSAliasProviderPlugin", "AWS::IAM::ManagedPolicy=localstack.services.iam.resource_providers.aws_iam_managedpolicy_plugin:IAMManagedPolicyProviderPlugin", "AWS::ApiGateway::BasePathMapping=localstack.services.apigateway.resource_providers.aws_apigateway_basepathmapping_plugin:ApiGatewayBasePathMappingProviderPlugin", "AWS::EC2::VPCGatewayAttachment=localstack.services.ec2.resource_providers.aws_ec2_vpcgatewayattachment_plugin:EC2VPCGatewayAttachmentProviderPlugin", "AWS::EC2::SubnetRouteTableAssociation=localstack.services.ec2.resource_providers.aws_ec2_subnetroutetableassociation_plugin:EC2SubnetRouteTableAssociationProviderPlugin", "AWS::ApiGateway::DomainName=localstack.services.apigateway.resource_providers.aws_apigateway_domainname_plugin:ApiGatewayDomainNameProviderPlugin", "AWS::SecretsManager::RotationSchedule=localstack.services.secretsmanager.resource_providers.aws_secretsmanager_rotationschedule_plugin:SecretsManagerRotationScheduleProviderPlugin", "AWS::Lambda::EventSourceMapping=localstack.services.lambda_.resource_providers.aws_lambda_eventsourcemapping_plugin:LambdaEventSourceMappingProviderPlugin", "AWS::EC2::DHCPOptions=localstack.services.ec2.resource_providers.aws_ec2_dhcpoptions_plugin:EC2DHCPOptionsProviderPlugin", "AWS::SSM::MaintenanceWindow=localstack.services.ssm.resource_providers.aws_ssm_maintenancewindow_plugin:SSMMaintenanceWindowProviderPlugin", "AWS::CloudFormation::Stack=localstack.services.cloudformation.resource_providers.aws_cloudformation_stack_plugin:CloudFormationStackProviderPlugin", "AWS::ApiGateway::ApiKey=localstack.services.apigateway.resource_providers.aws_apigateway_apikey_plugin:ApiGatewayApiKeyProviderPlugin", "AWS::SQS::QueuePolicy=localstack.services.sqs.resource_providers.aws_sqs_queuepolicy_plugin:SQSQueuePolicyProviderPlugin", "AWS::IAM::Group=localstack.services.iam.resource_providers.aws_iam_group_plugin:IAMGroupProviderPlugin", "AWS::SNS::Topic=localstack.services.sns.resource_providers.aws_sns_topic_plugin:SNSTopicProviderPlugin", "AWS::SNS::TopicPolicy=localstack.services.sns.resource_providers.aws_sns_topicpolicy_plugin:SNSTopicPolicyProviderPlugin", "AWS::SecretsManager::SecretTargetAttachment=localstack.services.secretsmanager.resource_providers.aws_secretsmanager_secrettargetattachment_plugin:SecretsManagerSecretTargetAttachmentProviderPlugin", "AWS::S3::Bucket=localstack.services.s3.resource_providers.aws_s3_bucket_plugin:S3BucketProviderPlugin", "AWS::EC2::NatGateway=localstack.services.ec2.resource_providers.aws_ec2_natgateway_plugin:EC2NatGatewayProviderPlugin", "AWS::EC2::SecurityGroup=localstack.services.ec2.resource_providers.aws_ec2_securitygroup_plugin:EC2SecurityGroupProviderPlugin", "AWS::Events::EventBus=localstack.services.events.resource_providers.aws_events_eventbus_plugin:EventsEventBusProviderPlugin", "AWS::ApiGateway::Deployment=localstack.services.apigateway.resource_providers.aws_apigateway_deployment_plugin:ApiGatewayDeploymentProviderPlugin", "AWS::Route53::HealthCheck=localstack.services.route53.resource_providers.aws_route53_healthcheck_plugin:Route53HealthCheckProviderPlugin", "AWS::ResourceGroups::Group=localstack.services.resource_groups.resource_providers.aws_resourcegroups_group_plugin:ResourceGroupsGroupProviderPlugin", "AWS::CloudFormation::WaitCondition=localstack.services.cloudformation.resource_providers.aws_cloudformation_waitcondition_plugin:CloudFormationWaitConditionProviderPlugin", "AWS::Logs::LogGroup=localstack.services.logs.resource_providers.aws_logs_loggroup_plugin:LogsLogGroupProviderPlugin", "AWS::ECR::Repository=localstack.services.ecr.resource_providers.aws_ecr_repository_plugin:ECRRepositoryProviderPlugin", "AWS::EC2::PrefixList=localstack.services.ec2.resource_providers.aws_ec2_prefixlist_plugin:EC2PrefixListProviderPlugin", "AWS::Scheduler::ScheduleGroup=localstack.services.scheduler.resource_providers.aws_scheduler_schedulegroup_plugin:SchedulerScheduleGroupProviderPlugin", "AWS::Lambda::Version=localstack.services.lambda_.resource_providers.aws_lambda_version_plugin:LambdaVersionProviderPlugin", "AWS::Logs::LogStream=localstack.services.logs.resource_providers.aws_logs_logstream_plugin:LogsLogStreamProviderPlugin", "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::ApiGateway::UsagePlan=localstack.services.apigateway.resource_providers.aws_apigateway_usageplan_plugin:ApiGatewayUsagePlanProviderPlugin", "AWS::Lambda::Function=localstack.services.lambda_.resource_providers.aws_lambda_function_plugin:LambdaFunctionProviderPlugin", "AWS::Events::ApiDestination=localstack.services.events.resource_providers.aws_events_apidestination_plugin:EventsApiDestinationProviderPlugin", "AWS::ApiGateway::Model=localstack.services.apigateway.resource_providers.aws_apigateway_model_plugin:ApiGatewayModelProviderPlugin", "AWS::Events::Connection=localstack.services.events.resource_providers.aws_events_connection_plugin:EventsConnectionProviderPlugin", "AWS::ApiGateway::Stage=localstack.services.apigateway.resource_providers.aws_apigateway_stage_plugin:ApiGatewayStageProviderPlugin", "AWS::Kinesis::StreamConsumer=localstack.services.kinesis.resource_providers.aws_kinesis_streamconsumer_plugin:KinesisStreamConsumerProviderPlugin", "AWS::IAM::ServerCertificate=localstack.services.iam.resource_providers.aws_iam_servercertificate_plugin:IAMServerCertificateProviderPlugin", "AWS::Lambda::LayerVersionPermission=localstack.services.lambda_.resource_providers.aws_lambda_layerversionpermission_plugin:LambdaLayerVersionPermissionProviderPlugin", "AWS::SSM::Parameter=localstack.services.ssm.resource_providers.aws_ssm_parameter_plugin:SSMParameterProviderPlugin", "AWS::IAM::Policy=localstack.services.iam.resource_providers.aws_iam_policy_plugin:IAMPolicyProviderPlugin", "AWS::SNS::Subscription=localstack.services.sns.resource_providers.aws_sns_subscription_plugin:SNSSubscriptionProviderPlugin", "AWS::Elasticsearch::Domain=localstack.services.opensearch.resource_providers.aws_elasticsearch_domain_plugin:ElasticsearchDomainProviderPlugin", "AWS::ApiGateway::RequestValidator=localstack.services.apigateway.resource_providers.aws_apigateway_requestvalidator_plugin:ApiGatewayRequestValidatorProviderPlugin", "AWS::Lambda::Alias=localstack.services.lambda_.resource_providers.lambda_alias_plugin:LambdaAliasProviderPlugin", "AWS::SES::EmailIdentity=localstack.services.ses.resource_providers.aws_ses_emailidentity_plugin:SESEmailIdentityProviderPlugin", "AWS::EC2::VPCEndpoint=localstack.services.ec2.resource_providers.aws_ec2_vpcendpoint_plugin:EC2VPCEndpointProviderPlugin", "AWS::IAM::User=localstack.services.iam.resource_providers.aws_iam_user_plugin:IAMUserProviderPlugin", "AWS::SSM::MaintenanceWindowTarget=localstack.services.ssm.resource_providers.aws_ssm_maintenancewindowtarget_plugin:SSMMaintenanceWindowTargetProviderPlugin", "AWS::IAM::AccessKey=localstack.services.iam.resource_providers.aws_iam_accesskey_plugin:IAMAccessKeyProviderPlugin", "AWS::StepFunctions::StateMachine=localstack.services.stepfunctions.resource_providers.aws_stepfunctions_statemachine_plugin:StepFunctionsStateMachineProviderPlugin", "AWS::Lambda::CodeSigningConfig=localstack.services.lambda_.resource_providers.aws_lambda_codesigningconfig_plugin:LambdaCodeSigningConfigProviderPlugin", "AWS::CloudFormation::WaitConditionHandle=localstack.services.cloudformation.resource_providers.aws_cloudformation_waitconditionhandle_plugin:CloudFormationWaitConditionHandleProviderPlugin", "AWS::ApiGateway::Method=localstack.services.apigateway.resource_providers.aws_apigateway_method_plugin:ApiGatewayMethodProviderPlugin", "AWS::CDK::Metadata=localstack.services.cdk.resource_providers.cdk_metadata_plugin:LambdaAliasProviderPlugin"], "localstack.hooks.on_infra_shutdown": ["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", "stop_server=localstack.dns.plugins:stop_server", "remove_custom_endpoints=localstack.services.lambda_.plugins:remove_custom_endpoints", "_run_init_scripts_on_shutdown=localstack.runtime.init:_run_init_scripts_on_shutdown", "aggregate_and_send=localstack.utils.analytics.usage:aggregate_and_send", "publish_metrics=localstack.utils.analytics.metrics:publish_metrics"], "localstack.packages": ["opensearch/community=localstack.services.opensearch.plugins:opensearch_package", "elasticsearch/community=localstack.services.es.plugins:elasticsearch_package", "ffmpeg/community=localstack.packages.plugins:ffmpeg_package", "java/community=localstack.packages.plugins:java_package", "terraform/community=localstack.packages.plugins:terraform_package", "dynamodb-local/community=localstack.services.dynamodb.plugins:dynamodb_local_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", "kinesis-mock/community=localstack.services.kinesis.plugins:kinesismock_package", "vosk/community=localstack.services.transcribe.plugins:vosk_package"], "localstack.hooks.on_infra_start": ["_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", "setup_dns_configuration_on_host=localstack.dns.plugins:setup_dns_configuration_on_host", "start_dns_server=localstack.dns.plugins:start_dns_server", "_publish_config_as_analytics_event=localstack.runtime.analytics:_publish_config_as_analytics_event", "_publish_container_info=localstack.runtime.analytics:_publish_container_info", "register_swagger_endpoints=localstack.http.resources.swagger.plugins:register_swagger_endpoints", "delete_cached_certificate=localstack.plugins:delete_cached_certificate", "deprecation_warnings=localstack.plugins:deprecation_warnings", "register_custom_endpoints=localstack.services.lambda_.plugins:register_custom_endpoints", "validate_configuration=localstack.services.lambda_.plugins:validate_configuration", "_run_init_scripts_on_start=localstack.runtime.init:_run_init_scripts_on_start", "conditionally_enable_debugger=localstack.dev.debugger.plugins:conditionally_enable_debugger", "register_cloudformation_deploy_ui=localstack.services.cloudformation.plugins:register_cloudformation_deploy_ui", "apply_aws_runtime_patches=localstack.aws.patches:apply_aws_runtime_patches", "apply_runtime_patches=localstack.runtime.patches:apply_runtime_patches"], "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.runtime.server": ["hypercorn=localstack.runtime.server.plugins:HypercornRuntimeServerPlugin", "twisted=localstack.runtime.server.plugins:TwistedRuntimeServerPlugin"], "localstack.lambda.runtime_executor": ["docker=localstack.services.lambda_.invocation.plugins:DockerRuntimeExecutorPlugin"], "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.runtime.components": ["aws=localstack.aws.components:AwsComponents"]}
@@ -1,9 +0,0 @@
1
- """
2
- Usage reporting for SNS internal endpoints
3
- """
4
-
5
- from localstack.utils.analytics.usage import UsageSetCounter
6
-
7
- # number of times SNS internal endpoint per resource types
8
- # (e.g. PlatformMessage:get invoked 10x times, SMSMessage:get invoked 3x times, SubscriptionToken...)
9
- internalapi = UsageSetCounter("sns:internalapi")
@@ -1 +0,0 @@
1
- {"localstack.cloudformation.resource_providers": ["AWS::SSM::MaintenanceWindowTask=localstack.services.ssm.resource_providers.aws_ssm_maintenancewindowtask_plugin:SSMMaintenanceWindowTaskProviderPlugin", "AWS::Elasticsearch::Domain=localstack.services.opensearch.resource_providers.aws_elasticsearch_domain_plugin:ElasticsearchDomainProviderPlugin", "AWS::SecretsManager::SecretTargetAttachment=localstack.services.secretsmanager.resource_providers.aws_secretsmanager_secrettargetattachment_plugin:SecretsManagerSecretTargetAttachmentProviderPlugin", "AWS::Lambda::Version=localstack.services.lambda_.resource_providers.aws_lambda_version_plugin:LambdaVersionProviderPlugin", "AWS::SSM::PatchBaseline=localstack.services.ssm.resource_providers.aws_ssm_patchbaseline_plugin:SSMPatchBaselineProviderPlugin", "AWS::SQS::QueuePolicy=localstack.services.sqs.resource_providers.aws_sqs_queuepolicy_plugin:SQSQueuePolicyProviderPlugin", "AWS::EC2::Subnet=localstack.services.ec2.resource_providers.aws_ec2_subnet_plugin:EC2SubnetProviderPlugin", "AWS::ApiGateway::Method=localstack.services.apigateway.resource_providers.aws_apigateway_method_plugin:ApiGatewayMethodProviderPlugin", "AWS::EC2::NetworkAcl=localstack.services.ec2.resource_providers.aws_ec2_networkacl_plugin:EC2NetworkAclProviderPlugin", "AWS::EC2::SecurityGroup=localstack.services.ec2.resource_providers.aws_ec2_securitygroup_plugin:EC2SecurityGroupProviderPlugin", "AWS::SES::EmailIdentity=localstack.services.ses.resource_providers.aws_ses_emailidentity_plugin:SESEmailIdentityProviderPlugin", "AWS::CloudFormation::WaitConditionHandle=localstack.services.cloudformation.resource_providers.aws_cloudformation_waitconditionhandle_plugin:CloudFormationWaitConditionHandleProviderPlugin", "AWS::EC2::Route=localstack.services.ec2.resource_providers.aws_ec2_route_plugin:EC2RouteProviderPlugin", "AWS::EC2::VPCGatewayAttachment=localstack.services.ec2.resource_providers.aws_ec2_vpcgatewayattachment_plugin:EC2VPCGatewayAttachmentProviderPlugin", "AWS::ResourceGroups::Group=localstack.services.resource_groups.resource_providers.aws_resourcegroups_group_plugin:ResourceGroupsGroupProviderPlugin", "AWS::SecretsManager::Secret=localstack.services.secretsmanager.resource_providers.aws_secretsmanager_secret_plugin:SecretsManagerSecretProviderPlugin", "AWS::Redshift::Cluster=localstack.services.redshift.resource_providers.aws_redshift_cluster_plugin:RedshiftClusterProviderPlugin", "AWS::IAM::User=localstack.services.iam.resource_providers.aws_iam_user_plugin:IAMUserProviderPlugin", "AWS::Lambda::Url=localstack.services.lambda_.resource_providers.aws_lambda_url_plugin:LambdaUrlProviderPlugin", "AWS::SNS::TopicPolicy=localstack.services.sns.resource_providers.aws_sns_topicpolicy_plugin:SNSTopicPolicyProviderPlugin", "AWS::Scheduler::ScheduleGroup=localstack.services.scheduler.resource_providers.aws_scheduler_schedulegroup_plugin:SchedulerScheduleGroupProviderPlugin", "AWS::Route53::HealthCheck=localstack.services.route53.resource_providers.aws_route53_healthcheck_plugin:Route53HealthCheckProviderPlugin", "AWS::ApiGateway::Model=localstack.services.apigateway.resource_providers.aws_apigateway_model_plugin:ApiGatewayModelProviderPlugin", "AWS::ApiGateway::RestApi=localstack.services.apigateway.resource_providers.aws_apigateway_restapi_plugin:ApiGatewayRestApiProviderPlugin", "AWS::EC2::RouteTable=localstack.services.ec2.resource_providers.aws_ec2_routetable_plugin:EC2RouteTableProviderPlugin", "AWS::EC2::InternetGateway=localstack.services.ec2.resource_providers.aws_ec2_internetgateway_plugin:EC2InternetGatewayProviderPlugin", "AWS::CertificateManager::Certificate=localstack.services.certificatemanager.resource_providers.aws_certificatemanager_certificate_plugin:CertificateManagerCertificateProviderPlugin", "AWS::StepFunctions::StateMachine=localstack.services.stepfunctions.resource_providers.aws_stepfunctions_statemachine_plugin:StepFunctionsStateMachineProviderPlugin", "AWS::CloudFormation::Macro=localstack.services.cloudformation.resource_providers.aws_cloudformation_macro_plugin:CloudFormationMacroProviderPlugin", "AWS::Events::EventBusPolicy=localstack.services.events.resource_providers.aws_events_eventbuspolicy_plugin:EventsEventBusPolicyProviderPlugin", "AWS::SNS::Topic=localstack.services.sns.resource_providers.aws_sns_topic_plugin:SNSTopicProviderPlugin", "AWS::Logs::LogGroup=localstack.services.logs.resource_providers.aws_logs_loggroup_plugin:LogsLogGroupProviderPlugin", "AWS::EC2::KeyPair=localstack.services.ec2.resource_providers.aws_ec2_keypair_plugin:EC2KeyPairProviderPlugin", "AWS::ApiGateway::ApiKey=localstack.services.apigateway.resource_providers.aws_apigateway_apikey_plugin:ApiGatewayApiKeyProviderPlugin", "AWS::Lambda::EventInvokeConfig=localstack.services.lambda_.resource_providers.aws_lambda_eventinvokeconfig_plugin:LambdaEventInvokeConfigProviderPlugin", "AWS::IAM::Policy=localstack.services.iam.resource_providers.aws_iam_policy_plugin:IAMPolicyProviderPlugin", "AWS::S3::Bucket=localstack.services.s3.resource_providers.aws_s3_bucket_plugin:S3BucketProviderPlugin", "AWS::Lambda::EventSourceMapping=localstack.services.lambda_.resource_providers.aws_lambda_eventsourcemapping_plugin:LambdaEventSourceMappingProviderPlugin", "AWS::IAM::InstanceProfile=localstack.services.iam.resource_providers.aws_iam_instanceprofile_plugin:IAMInstanceProfileProviderPlugin", "AWS::ApiGateway::BasePathMapping=localstack.services.apigateway.resource_providers.aws_apigateway_basepathmapping_plugin:ApiGatewayBasePathMappingProviderPlugin", "AWS::SSM::Parameter=localstack.services.ssm.resource_providers.aws_ssm_parameter_plugin:SSMParameterProviderPlugin", "AWS::KMS::Key=localstack.services.kms.resource_providers.aws_kms_key_plugin:KMSKeyProviderPlugin", "AWS::ApiGateway::GatewayResponse=localstack.services.apigateway.resource_providers.aws_apigateway_gatewayresponse_plugin:ApiGatewayGatewayResponseProviderPlugin", "AWS::CloudFormation::Stack=localstack.services.cloudformation.resource_providers.aws_cloudformation_stack_plugin:CloudFormationStackProviderPlugin", "AWS::Route53::RecordSet=localstack.services.route53.resource_providers.aws_route53_recordset_plugin:Route53RecordSetProviderPlugin", "AWS::Events::Connection=localstack.services.events.resource_providers.aws_events_connection_plugin:EventsConnectionProviderPlugin", "AWS::ECR::Repository=localstack.services.ecr.resource_providers.aws_ecr_repository_plugin:ECRRepositoryProviderPlugin", "AWS::EC2::Instance=localstack.services.ec2.resource_providers.aws_ec2_instance_plugin:EC2InstanceProviderPlugin", "AWS::IAM::ServiceLinkedRole=localstack.services.iam.resource_providers.aws_iam_servicelinkedrole_plugin:IAMServiceLinkedRoleProviderPlugin", "AWS::Lambda::Function=localstack.services.lambda_.resource_providers.aws_lambda_function_plugin:LambdaFunctionProviderPlugin", "AWS::Logs::SubscriptionFilter=localstack.services.logs.resource_providers.aws_logs_subscriptionfilter_plugin:LogsSubscriptionFilterProviderPlugin", "AWS::ApiGateway::RequestValidator=localstack.services.apigateway.resource_providers.aws_apigateway_requestvalidator_plugin:ApiGatewayRequestValidatorProviderPlugin", "AWS::KinesisFirehose::DeliveryStream=localstack.services.kinesisfirehose.resource_providers.aws_kinesisfirehose_deliverystream_plugin:KinesisFirehoseDeliveryStreamProviderPlugin", "AWS::IAM::AccessKey=localstack.services.iam.resource_providers.aws_iam_accesskey_plugin:IAMAccessKeyProviderPlugin", "AWS::Logs::LogStream=localstack.services.logs.resource_providers.aws_logs_logstream_plugin:LogsLogStreamProviderPlugin", "AWS::Lambda::LayerVersion=localstack.services.lambda_.resource_providers.aws_lambda_layerversion_plugin:LambdaLayerVersionProviderPlugin", "AWS::StepFunctions::Activity=localstack.services.stepfunctions.resource_providers.aws_stepfunctions_activity_plugin:StepFunctionsActivityProviderPlugin", "AWS::IAM::ServerCertificate=localstack.services.iam.resource_providers.aws_iam_servercertificate_plugin:IAMServerCertificateProviderPlugin", "AWS::EC2::VPC=localstack.services.ec2.resource_providers.aws_ec2_vpc_plugin:EC2VPCProviderPlugin", "AWS::ApiGateway::Account=localstack.services.apigateway.resource_providers.aws_apigateway_account_plugin:ApiGatewayAccountProviderPlugin", "AWS::EC2::VPCEndpoint=localstack.services.ec2.resource_providers.aws_ec2_vpcendpoint_plugin:EC2VPCEndpointProviderPlugin", "AWS::EC2::DHCPOptions=localstack.services.ec2.resource_providers.aws_ec2_dhcpoptions_plugin:EC2DHCPOptionsProviderPlugin", "AWS::Lambda::Permission=localstack.services.lambda_.resource_providers.aws_lambda_permission_plugin:LambdaPermissionProviderPlugin", "AWS::CloudWatch::Alarm=localstack.services.cloudwatch.resource_providers.aws_cloudwatch_alarm_plugin:CloudWatchAlarmProviderPlugin", "AWS::ApiGateway::Stage=localstack.services.apigateway.resource_providers.aws_apigateway_stage_plugin:ApiGatewayStageProviderPlugin", "AWS::IAM::ManagedPolicy=localstack.services.iam.resource_providers.aws_iam_managedpolicy_plugin:IAMManagedPolicyProviderPlugin", "AWS::CloudFormation::WaitCondition=localstack.services.cloudformation.resource_providers.aws_cloudformation_waitcondition_plugin:CloudFormationWaitConditionProviderPlugin", "AWS::EC2::SubnetRouteTableAssociation=localstack.services.ec2.resource_providers.aws_ec2_subnetroutetableassociation_plugin:EC2SubnetRouteTableAssociationProviderPlugin", "AWS::CloudWatch::CompositeAlarm=localstack.services.cloudwatch.resource_providers.aws_cloudwatch_compositealarm_plugin:CloudWatchCompositeAlarmProviderPlugin", "AWS::SecretsManager::RotationSchedule=localstack.services.secretsmanager.resource_providers.aws_secretsmanager_rotationschedule_plugin:SecretsManagerRotationScheduleProviderPlugin", "AWS::SSM::MaintenanceWindow=localstack.services.ssm.resource_providers.aws_ssm_maintenancewindow_plugin:SSMMaintenanceWindowProviderPlugin", "AWS::Events::ApiDestination=localstack.services.events.resource_providers.aws_events_apidestination_plugin:EventsApiDestinationProviderPlugin", "AWS::Lambda::CodeSigningConfig=localstack.services.lambda_.resource_providers.aws_lambda_codesigningconfig_plugin:LambdaCodeSigningConfigProviderPlugin", "AWS::Events::EventBus=localstack.services.events.resource_providers.aws_events_eventbus_plugin:EventsEventBusProviderPlugin", "AWS::DynamoDB::GlobalTable=localstack.services.dynamodb.resource_providers.aws_dynamodb_globaltable_plugin:DynamoDBGlobalTableProviderPlugin", "AWS::Kinesis::StreamConsumer=localstack.services.kinesis.resource_providers.aws_kinesis_streamconsumer_plugin:KinesisStreamConsumerProviderPlugin", "AWS::Events::Rule=localstack.services.events.resource_providers.aws_events_rule_plugin:EventsRuleProviderPlugin", "AWS::EC2::PrefixList=localstack.services.ec2.resource_providers.aws_ec2_prefixlist_plugin:EC2PrefixListProviderPlugin", "AWS::SNS::Subscription=localstack.services.sns.resource_providers.aws_sns_subscription_plugin:SNSSubscriptionProviderPlugin", "AWS::EC2::TransitGatewayAttachment=localstack.services.ec2.resource_providers.aws_ec2_transitgatewayattachment_plugin:EC2TransitGatewayAttachmentProviderPlugin", "AWS::EC2::NatGateway=localstack.services.ec2.resource_providers.aws_ec2_natgateway_plugin:EC2NatGatewayProviderPlugin", "AWS::CDK::Metadata=localstack.services.cdk.resource_providers.cdk_metadata_plugin:LambdaAliasProviderPlugin", "AWS::KMS::Alias=localstack.services.kms.resource_providers.aws_kms_alias_plugin:KMSAliasProviderPlugin", "AWS::ApiGateway::UsagePlan=localstack.services.apigateway.resource_providers.aws_apigateway_usageplan_plugin:ApiGatewayUsagePlanProviderPlugin", "AWS::SSM::MaintenanceWindowTarget=localstack.services.ssm.resource_providers.aws_ssm_maintenancewindowtarget_plugin:SSMMaintenanceWindowTargetProviderPlugin", "AWS::ApiGateway::UsagePlanKey=localstack.services.apigateway.resource_providers.aws_apigateway_usageplankey_plugin:ApiGatewayUsagePlanKeyProviderPlugin", "AWS::EC2::TransitGateway=localstack.services.ec2.resource_providers.aws_ec2_transitgateway_plugin:EC2TransitGatewayProviderPlugin", "AWS::Scheduler::Schedule=localstack.services.scheduler.resource_providers.aws_scheduler_schedule_plugin:SchedulerScheduleProviderPlugin", "AWS::SQS::Queue=localstack.services.sqs.resource_providers.aws_sqs_queue_plugin:SQSQueueProviderPlugin", "AWS::SecretsManager::ResourcePolicy=localstack.services.secretsmanager.resource_providers.aws_secretsmanager_resourcepolicy_plugin:SecretsManagerResourcePolicyProviderPlugin", "AWS::DynamoDB::Table=localstack.services.dynamodb.resource_providers.aws_dynamodb_table_plugin:DynamoDBTableProviderPlugin", "AWS::S3::BucketPolicy=localstack.services.s3.resource_providers.aws_s3_bucketpolicy_plugin:S3BucketPolicyProviderPlugin", "AWS::Kinesis::Stream=localstack.services.kinesis.resource_providers.aws_kinesis_stream_plugin:KinesisStreamProviderPlugin", "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::ApiGateway::DomainName=localstack.services.apigateway.resource_providers.aws_apigateway_domainname_plugin:ApiGatewayDomainNameProviderPlugin", "AWS::IAM::Group=localstack.services.iam.resource_providers.aws_iam_group_plugin:IAMGroupProviderPlugin", "AWS::Lambda::Alias=localstack.services.lambda_.resource_providers.lambda_alias_plugin:LambdaAliasProviderPlugin", "AWS::ApiGateway::Resource=localstack.services.apigateway.resource_providers.aws_apigateway_resource_plugin:ApiGatewayResourceProviderPlugin", "AWS::IAM::Role=localstack.services.iam.resource_providers.aws_iam_role_plugin:IAMRoleProviderPlugin", "AWS::ApiGateway::Deployment=localstack.services.apigateway.resource_providers.aws_apigateway_deployment_plugin:ApiGatewayDeploymentProviderPlugin"], "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_swagger_endpoints=localstack.http.resources.swagger.plugins:register_swagger_endpoints", "conditionally_enable_debugger=localstack.dev.debugger.plugins:conditionally_enable_debugger", "_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", "delete_cached_certificate=localstack.plugins:delete_cached_certificate", "deprecation_warnings=localstack.plugins:deprecation_warnings", "apply_aws_runtime_patches=localstack.aws.patches:apply_aws_runtime_patches", "register_cloudformation_deploy_ui=localstack.services.cloudformation.plugins:register_cloudformation_deploy_ui", "apply_runtime_patches=localstack.runtime.patches:apply_runtime_patches", "_run_init_scripts_on_start=localstack.runtime.init:_run_init_scripts_on_start", "register_custom_endpoints=localstack.services.lambda_.plugins:register_custom_endpoints", "validate_configuration=localstack.services.lambda_.plugins:validate_configuration", "setup_dns_configuration_on_host=localstack.dns.plugins:setup_dns_configuration_on_host", "start_dns_server=localstack.dns.plugins:start_dns_server"], "localstack.runtime.components": ["aws=localstack.aws.components:AwsComponents"], "localstack.packages": ["vosk/community=localstack.services.transcribe.plugins:vosk_package", "ffmpeg/community=localstack.packages.plugins:ffmpeg_package", "java/community=localstack.packages.plugins:java_package", "terraform/community=localstack.packages.plugins:terraform_package", "kinesis-mock/community=localstack.services.kinesis.plugins:kinesismock_package", "elasticsearch/community=localstack.services.es.plugins:elasticsearch_package", "jpype-jsonata/community=localstack.services.stepfunctions.plugins:jpype_jsonata_package", "opensearch/community=localstack.services.opensearch.plugins:opensearch_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"], "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.hooks.on_infra_shutdown": ["aggregate_and_send=localstack.utils.analytics.usage:aggregate_and_send", "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:publish_metrics", "_run_init_scripts_on_shutdown=localstack.runtime.init:_run_init_scripts_on_shutdown", "remove_custom_endpoints=localstack.services.lambda_.plugins:remove_custom_endpoints", "stop_server=localstack.dns.plugins:stop_server"], "localstack.runtime.server": ["hypercorn=localstack.runtime.server.plugins:HypercornRuntimeServerPlugin", "twisted=localstack.runtime.server.plugins:TwistedRuntimeServerPlugin"], "localstack.openapi.spec": ["localstack=localstack.plugins:CoreOASPlugin"], "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.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"]}