aws-cdk-lib 2.212.0__py3-none-any.whl → 2.214.0__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.

Potentially problematic release.


This version of aws-cdk-lib might be problematic. Click here for more details.

Files changed (65) hide show
  1. aws_cdk/__init__.py +23 -3
  2. aws_cdk/_jsii/__init__.py +1 -1
  3. aws_cdk/_jsii/{aws-cdk-lib@2.212.0.jsii.tgz → aws-cdk-lib@2.214.0.jsii.tgz} +0 -0
  4. aws_cdk/aws_appconfig/__init__.py +18 -6
  5. aws_cdk/aws_appintegrations/__init__.py +4 -4
  6. aws_cdk/aws_apprunner/__init__.py +5 -8
  7. aws_cdk/aws_aps/__init__.py +243 -10
  8. aws_cdk/aws_b2bi/__init__.py +1015 -128
  9. aws_cdk/aws_batch/__init__.py +33 -11
  10. aws_cdk/aws_bedrock/__init__.py +22 -216
  11. aws_cdk/aws_budgets/__init__.py +18 -0
  12. aws_cdk/aws_certificatemanager/__init__.py +96 -15
  13. aws_cdk/aws_cloudformation/__init__.py +3 -3
  14. aws_cdk/aws_cloudwatch/__init__.py +80 -49
  15. aws_cdk/aws_cognito/__init__.py +76 -5
  16. aws_cdk/aws_connect/__init__.py +188 -2
  17. aws_cdk/aws_datazone/__init__.py +2267 -0
  18. aws_cdk/aws_deadline/__init__.py +6 -5
  19. aws_cdk/aws_dynamodb/__init__.py +418 -56
  20. aws_cdk/aws_ec2/__init__.py +51 -10
  21. aws_cdk/aws_ecs/__init__.py +288 -25
  22. aws_cdk/aws_ecs_patterns/__init__.py +2 -0
  23. aws_cdk/aws_eks/__init__.py +124 -0
  24. aws_cdk/aws_elasticloadbalancingv2/__init__.py +6 -2
  25. aws_cdk/aws_entityresolution/__init__.py +107 -0
  26. aws_cdk/aws_events/__init__.py +153 -55
  27. aws_cdk/aws_events_targets/__init__.py +87 -36
  28. aws_cdk/aws_fsx/__init__.py +62 -0
  29. aws_cdk/aws_gameliftstreams/__init__.py +1 -1
  30. aws_cdk/aws_glue/__init__.py +205 -23
  31. aws_cdk/aws_guardduty/__init__.py +205 -100
  32. aws_cdk/aws_iam/__init__.py +18 -0
  33. aws_cdk/aws_inspectorv2/__init__.py +125 -80
  34. aws_cdk/aws_iot/__init__.py +37 -19
  35. aws_cdk/aws_iotsitewise/__init__.py +111 -75
  36. aws_cdk/aws_ivs/__init__.py +17 -17
  37. aws_cdk/aws_kinesisanalytics/__init__.py +122 -3
  38. aws_cdk/aws_kinesisanalyticsv2/__init__.py +122 -3
  39. aws_cdk/aws_lambda/__init__.py +23 -2
  40. aws_cdk/aws_logs/__init__.py +20 -15
  41. aws_cdk/aws_mediapackagev2/__init__.py +2 -2
  42. aws_cdk/aws_networkfirewall/__init__.py +6 -6
  43. aws_cdk/aws_omics/__init__.py +477 -2
  44. aws_cdk/aws_qbusiness/__init__.py +4 -2
  45. aws_cdk/aws_rds/__init__.py +132 -4
  46. aws_cdk/aws_route53/__init__.py +18 -11
  47. aws_cdk/aws_s3/__init__.py +4 -4
  48. aws_cdk/aws_s3_deployment/__init__.py +45 -0
  49. aws_cdk/aws_sagemaker/__init__.py +653 -0
  50. aws_cdk/aws_servicediscovery/__init__.py +22 -37
  51. aws_cdk/aws_sns/__init__.py +12 -2
  52. aws_cdk/aws_sns_subscriptions/__init__.py +3 -1
  53. aws_cdk/aws_sqs/__init__.py +5 -5
  54. aws_cdk/aws_ssm/__init__.py +8 -3
  55. aws_cdk/aws_ssmquicksetup/__init__.py +2 -2
  56. aws_cdk/aws_synthetics/__init__.py +222 -12
  57. aws_cdk/aws_transfer/__init__.py +15 -2
  58. aws_cdk/aws_vpclattice/__init__.py +41 -0
  59. aws_cdk/aws_workspacesweb/__init__.py +71 -41
  60. {aws_cdk_lib-2.212.0.dist-info → aws_cdk_lib-2.214.0.dist-info}/METADATA +2 -2
  61. {aws_cdk_lib-2.212.0.dist-info → aws_cdk_lib-2.214.0.dist-info}/RECORD +65 -65
  62. {aws_cdk_lib-2.212.0.dist-info → aws_cdk_lib-2.214.0.dist-info}/LICENSE +0 -0
  63. {aws_cdk_lib-2.212.0.dist-info → aws_cdk_lib-2.214.0.dist-info}/NOTICE +0 -0
  64. {aws_cdk_lib-2.212.0.dist-info → aws_cdk_lib-2.214.0.dist-info}/WHEEL +0 -0
  65. {aws_cdk_lib-2.212.0.dist-info → aws_cdk_lib-2.214.0.dist-info}/top_level.txt +0 -0
@@ -18,7 +18,9 @@ By default, `TableV2` will create a single table in the main deployment region r
18
18
  ```python
19
19
  table = dynamodb.TableV2(self, "Table",
20
20
  partition_key=dynamodb.Attribute(name="pk", type=dynamodb.AttributeType.STRING),
21
- contributor_insights=True,
21
+ contributor_insights_specification=dynamodb.ContributorInsightsSpecification(
22
+ enabled=True
23
+ ),
22
24
  table_class=dynamodb.TableClass.STANDARD_INFREQUENT_ACCESS,
23
25
  point_in_time_recovery_specification=dynamodb.PointInTimeRecoverySpecification(
24
26
  point_in_time_recovery_enabled=True
@@ -68,12 +70,12 @@ global_table.add_replica(region="us-east-2", deletion_protection=True)
68
70
 
69
71
  The following properties are configurable on a per-replica basis, but will be inherited from the `TableV2` properties if not specified:
70
72
 
71
- * contributorInsights
73
+ * contributorInsightsSpecification
72
74
  * deletionProtection
73
75
  * pointInTimeRecoverySpecification
74
76
  * tableClass
75
77
  * readCapacity (only configurable if the `TableV2` billing mode is `PROVISIONED`)
76
- * globalSecondaryIndexes (only `contributorInsights` and `readCapacity`)
78
+ * globalSecondaryIndexes (only `contributorInsightsSpecification` and `readCapacity`)
77
79
 
78
80
  The following example shows how to define properties on a per-replica basis:
79
81
 
@@ -86,7 +88,9 @@ stack = cdk.Stack(app, "Stack", env=cdk.Environment(region="us-west-2"))
86
88
 
87
89
  global_table = dynamodb.TableV2(stack, "GlobalTable",
88
90
  partition_key=dynamodb.Attribute(name="pk", type=dynamodb.AttributeType.STRING),
89
- contributor_insights=True,
91
+ contributor_insights_specification=dynamodb.ContributorInsightsSpecification(
92
+ enabled=True
93
+ ),
90
94
  point_in_time_recovery_specification=dynamodb.PointInTimeRecoverySpecification(
91
95
  point_in_time_recovery_enabled=True
92
96
  ),
@@ -98,7 +102,9 @@ global_table = dynamodb.TableV2(stack, "GlobalTable",
98
102
  )
99
103
  ), dynamodb.ReplicaTableProps(
100
104
  region="us-east-2",
101
- contributor_insights=False
105
+ contributor_insights_specification=dynamodb.ContributorInsightsSpecification(
106
+ enabled=False
107
+ )
102
108
  )
103
109
  ]
104
110
  )
@@ -430,7 +436,7 @@ table = dynamodb.TableV2(self, "Table",
430
436
  )
431
437
  ```
432
438
 
433
- All `globalSecondaryIndexes` for replica tables are inherited from the primary table. You can configure `contributorInsights` and `readCapacity` for each `globalSecondaryIndex` on a per-replica basis:
439
+ All `globalSecondaryIndexes` for replica tables are inherited from the primary table. You can configure `contributorInsightsSpecification` and `readCapacity` for each `globalSecondaryIndex` on a per-replica basis:
434
440
 
435
441
  ```python
436
442
  import aws_cdk as cdk
@@ -441,7 +447,9 @@ stack = cdk.Stack(app, "Stack", env=cdk.Environment(region="us-west-2"))
441
447
 
442
448
  global_table = dynamodb.TableV2(stack, "GlobalTable",
443
449
  partition_key=dynamodb.Attribute(name="pk", type=dynamodb.AttributeType.STRING),
444
- contributor_insights=True,
450
+ contributor_insights_specification=dynamodb.ContributorInsightsSpecification(
451
+ enabled=True
452
+ ),
445
453
  billing=dynamodb.Billing.provisioned(
446
454
  read_capacity=dynamodb.Capacity.fixed(10),
447
455
  write_capacity=dynamodb.Capacity.autoscaled(max_capacity=10)
@@ -468,7 +476,9 @@ global_table = dynamodb.TableV2(stack, "GlobalTable",
468
476
  region="us-east-2",
469
477
  global_secondary_index_options={
470
478
  "gsi2": dynamodb.ReplicaGlobalSecondaryIndexOptions(
471
- contributor_insights=False
479
+ contributor_insights_specification=dynamodb.ContributorInsightsSpecification(
480
+ enabled=False
481
+ )
472
482
  )
473
483
  }
474
484
  )
@@ -586,25 +596,37 @@ table = dynamodb.TableV2(self, "Table",
586
596
 
587
597
  ## Contributor Insights
588
598
 
589
- Enabling `contributorInsights` for `TableV2` will provide information about the most accessed and throttled items in a table or `globalSecondaryIndex`. DynamoDB delivers this information to you via CloudWatch Contributor Insights rules, reports, and graphs of report data.
599
+ Enabling `contributorInsightSpecification` for `TableV2` will provide information about the most accessed and throttled or throttled only items in a table or `globalSecondaryIndex`. DynamoDB delivers this information to you via CloudWatch Contributor Insights rules, reports, and graphs of report data.
600
+
601
+ By default, Contributor Insights for DynamoDB monitors all requests, including both the most accessed and most throttled items.
602
+ To limit the scope to only the most accessed or only the most throttled items, use the optional `mode` parameter.
603
+
604
+ * To monitor all traffic on a table or index, set `mode` to `ContributorInsightsMode.ACCESSED_AND_THROTTLED_KEYS`.
605
+ * To monitor only throttled traffic on a table or index, set `mode` to `ContributorInsightsMode.THROTTLED_KEYS`.
590
606
 
591
607
  ```python
592
608
  table = dynamodb.TableV2(self, "Table",
593
609
  partition_key=dynamodb.Attribute(name="pk", type=dynamodb.AttributeType.STRING),
594
- contributor_insights=True
610
+ contributor_insights_specification=dynamodb.ContributorInsightsSpecification(
611
+ enabled=True,
612
+ mode=dynamodb.ContributorInsightsMode.ACCESSED_AND_THROTTLED_KEYS
613
+ )
595
614
  )
596
615
  ```
597
616
 
598
- When you use `Table`, you can enable contributor insights for a table or specific global secondary index by setting `contributorInsightsEnabled` to `true`.
617
+ When you use `Table`, you can enable contributor insights for a table or specific global secondary index by setting `contributorInsightsSpecification` parameter `enabled` to `true`.
599
618
 
600
619
  ```python
601
620
  table = dynamodb.Table(self, "Table",
602
621
  partition_key=dynamodb.Attribute(name="pk", type=dynamodb.AttributeType.STRING),
603
- contributor_insights_enabled=True
622
+ contributor_insights_specification=dynamodb.ContributorInsightsSpecification( # for a table
623
+ enabled=True,
624
+ mode=dynamodb.ContributorInsightsMode.THROTTLED_KEYS)
604
625
  )
605
626
 
606
627
  table.add_global_secondary_index(
607
- contributor_insights_enabled=True, # for a specific global secondary index
628
+ contributor_insights_specification=dynamodb.ContributorInsightsSpecification( # for a specific global secondary index
629
+ enabled=True),
608
630
  index_name="gsi",
609
631
  partition_key=dynamodb.Attribute(name="pk", type=dynamodb.AttributeType.STRING)
610
632
  )
@@ -2376,7 +2398,7 @@ class CfnGlobalTable(
2376
2398
  '''Configures contributor insights settings for a replica or one of its indexes.
2377
2399
 
2378
2400
  :param enabled: Indicates whether CloudWatch Contributor Insights are to be enabled (true) or disabled (false).
2379
- :param mode:
2401
+ :param mode: Specifies the CloudWatch Contributor Insights mode for a global table. Valid values are ``ACCESSED_AND_THROTTLED_KEYS`` (tracks all access and throttled events) or ``THROTTLED_KEYS`` (tracks only throttled events). This setting determines what type of contributor insights data is collected for the global table.
2380
2402
 
2381
2403
  :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-globaltable-contributorinsightsspecification.html
2382
2404
  :exampleMetadata: fixture=_generated
@@ -2416,7 +2438,10 @@ class CfnGlobalTable(
2416
2438
 
2417
2439
  @builtins.property
2418
2440
  def mode(self) -> typing.Optional[builtins.str]:
2419
- '''
2441
+ '''Specifies the CloudWatch Contributor Insights mode for a global table.
2442
+
2443
+ Valid values are ``ACCESSED_AND_THROTTLED_KEYS`` (tracks all access and throttled events) or ``THROTTLED_KEYS`` (tracks only throttled events). This setting determines what type of contributor insights data is collected for the global table.
2444
+
2420
2445
  :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-globaltable-contributorinsightsspecification.html#cfn-dynamodb-globaltable-contributorinsightsspecification-mode
2421
2446
  '''
2422
2447
  result = self._values.get("mode")
@@ -5242,7 +5267,7 @@ class CfnTable(
5242
5267
  :param key_schema: Specifies the attributes that make up the primary key for the table. The attributes in the ``KeySchema`` property must also be defined in the ``AttributeDefinitions`` property.
5243
5268
  :param attribute_definitions: A list of attributes that describe the key schema for the table and indexes. This property is required to create a DynamoDB table. Update requires: `Some interruptions <https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-some-interrupt>`_ . Replacement if you edit an existing AttributeDefinition.
5244
5269
  :param billing_mode: Specify how you are charged for read and write throughput and how you manage capacity. Valid values include: - ``PAY_PER_REQUEST`` - We recommend using ``PAY_PER_REQUEST`` for most DynamoDB workloads. ``PAY_PER_REQUEST`` sets the billing mode to `On-demand capacity mode <https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/on-demand-capacity-mode.html>`_ . - ``PROVISIONED`` - We recommend using ``PROVISIONED`` for steady workloads with predictable growth where capacity requirements can be reliably forecasted. ``PROVISIONED`` sets the billing mode to `Provisioned capacity mode <https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/provisioned-capacity-mode.html>`_ . If not specified, the default is ``PROVISIONED`` .
5245
- :param contributor_insights_specification: The settings used to enable or disable CloudWatch Contributor Insights for the specified table.
5270
+ :param contributor_insights_specification: The settings used to specify whether to enable CloudWatch Contributor Insights for the table and define which events to monitor.
5246
5271
  :param deletion_protection_enabled: Determines if a table is protected from deletion. When enabled, the table cannot be deleted by any user or process. This setting is disabled by default. For more information, see `Using deletion protection <https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/WorkingWithTables.Basics.html#WorkingWithTables.Basics.DeletionProtection>`_ in the *Amazon DynamoDB Developer Guide* .
5247
5272
  :param global_secondary_indexes: Global secondary indexes to be created on the table. You can create up to 20 global secondary indexes. .. epigraph:: If you update a table to include a new global secondary index, AWS CloudFormation initiates the index creation and then proceeds with the stack update. AWS CloudFormation doesn't wait for the index to complete creation because the backfilling phase can take a long time, depending on the size of the table. You can't use the index or update the table until the index's status is ``ACTIVE`` . You can track its status by using the DynamoDB `DescribeTable <https://docs.aws.amazon.com/cli/latest/reference/dynamodb/describe-table.html>`_ command. If you add or delete an index during an update, we recommend that you don't update any other resources. If your stack fails to update and is rolled back while adding a new index, you must manually delete the index. Updates are not supported. The following are exceptions: - If you update either the contributor insights specification or the provisioned throughput values of global secondary indexes, you can update the table without interruption. - You can delete or add one global secondary index without interruption. If you do both in the same update (for example, by changing the index's logical ID), the update fails.
5248
5273
  :param import_source_specification: Specifies the properties of data being imported from the S3 bucket source to the" table. .. epigraph:: If you specify the ``ImportSourceSpecification`` property, and also specify either the ``StreamSpecification`` , the ``TableClass`` property, the ``DeletionProtectionEnabled`` property, or the ``WarmThroughput`` property, the IAM entity creating/updating stack must have ``UpdateTable`` permission.
@@ -5253,7 +5278,7 @@ class CfnTable(
5253
5278
  :param provisioned_throughput: Throughput for the specified table, which consists of values for ``ReadCapacityUnits`` and ``WriteCapacityUnits`` . For more information about the contents of a provisioned throughput structure, see `Amazon DynamoDB Table ProvisionedThroughput <https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_ProvisionedThroughput.html>`_ . If you set ``BillingMode`` as ``PROVISIONED`` , you must specify this property. If you set ``BillingMode`` as ``PAY_PER_REQUEST`` , you cannot specify this property.
5254
5279
  :param resource_policy: An AWS resource-based policy document in JSON format that will be attached to the table. When you attach a resource-based policy while creating a table, the policy application is *strongly consistent* . The maximum size supported for a resource-based policy document is 20 KB. DynamoDB counts whitespaces when calculating the size of a policy against this limit. For a full list of all considerations that apply for resource-based policies, see `Resource-based policy considerations <https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/rbac-considerations.html>`_ . .. epigraph:: You need to specify the ``CreateTable`` and ``PutResourcePolicy`` IAM actions for authorizing a user to create a table with a resource-based policy.
5255
5280
  :param sse_specification: Specifies the settings to enable server-side encryption.
5256
- :param stream_specification: The settings for the DynamoDB table stream, which capture changes to items stored in the table.
5281
+ :param stream_specification: The settings for the DynamoDB table stream, which captures changes to items stored in the table. Including this property in your AWS CloudFormation template automatically enables streaming.
5257
5282
  :param table_class: The table class of the new table. Valid values are ``STANDARD`` and ``STANDARD_INFREQUENT_ACCESS`` .
5258
5283
  :param table_name: A name for the table. If you don't specify a name, AWS CloudFormation generates a unique physical ID and uses that ID for the table name. For more information, see `Name Type <https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-name.html>`_ . .. epigraph:: If you specify a name, you cannot perform updates that require replacement of this resource. You can perform updates that require no or some interruption. If you must replace the resource, specify a new name.
5259
5284
  :param tags: An array of key-value pairs to apply to this resource. For more information, see `Tag <https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-resource-tags.html>`_ .
@@ -5406,7 +5431,7 @@ class CfnTable(
5406
5431
  def contributor_insights_specification(
5407
5432
  self,
5408
5433
  ) -> typing.Optional[typing.Union[_IResolvable_da3f097b, "CfnTable.ContributorInsightsSpecificationProperty"]]:
5409
- '''The settings used to enable or disable CloudWatch Contributor Insights for the specified table.'''
5434
+ '''The settings used to specify whether to enable CloudWatch Contributor Insights for the table and define which events to monitor.'''
5410
5435
  return typing.cast(typing.Optional[typing.Union[_IResolvable_da3f097b, "CfnTable.ContributorInsightsSpecificationProperty"]], jsii.get(self, "contributorInsightsSpecification"))
5411
5436
 
5412
5437
  @contributor_insights_specification.setter
@@ -5607,7 +5632,7 @@ class CfnTable(
5607
5632
  def stream_specification(
5608
5633
  self,
5609
5634
  ) -> typing.Optional[typing.Union[_IResolvable_da3f097b, "CfnTable.StreamSpecificationProperty"]]:
5610
- '''The settings for the DynamoDB table stream, which capture changes to items stored in the table.'''
5635
+ '''The settings for the DynamoDB table stream, which captures changes to items stored in the table.'''
5611
5636
  return typing.cast(typing.Optional[typing.Union[_IResolvable_da3f097b, "CfnTable.StreamSpecificationProperty"]], jsii.get(self, "streamSpecification"))
5612
5637
 
5613
5638
  @stream_specification.setter
@@ -5785,10 +5810,10 @@ class CfnTable(
5785
5810
  enabled: typing.Union[builtins.bool, _IResolvable_da3f097b],
5786
5811
  mode: typing.Optional[builtins.str] = None,
5787
5812
  ) -> None:
5788
- '''The settings used to enable or disable CloudWatch Contributor Insights.
5813
+ '''Configures contributor insights settings for a table or one of its indexes.
5789
5814
 
5790
5815
  :param enabled: Indicates whether CloudWatch Contributor Insights are to be enabled (true) or disabled (false).
5791
- :param mode:
5816
+ :param mode: Specifies the CloudWatch Contributor Insights mode for a table. Valid values are ``ACCESSED_AND_THROTTLED_KEYS`` (tracks all access and throttled events) or ``THROTTLED_KEYS`` (tracks only throttled events). This setting determines what type of contributor insights data is collected for the table.
5792
5817
 
5793
5818
  :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-table-contributorinsightsspecification.html
5794
5819
  :exampleMetadata: fixture=_generated
@@ -5828,7 +5853,10 @@ class CfnTable(
5828
5853
 
5829
5854
  @builtins.property
5830
5855
  def mode(self) -> typing.Optional[builtins.str]:
5831
- '''
5856
+ '''Specifies the CloudWatch Contributor Insights mode for a table.
5857
+
5858
+ Valid values are ``ACCESSED_AND_THROTTLED_KEYS`` (tracks all access and throttled events) or ``THROTTLED_KEYS`` (tracks only throttled events). This setting determines what type of contributor insights data is collected for the table.
5859
+
5832
5860
  :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-table-contributorinsightsspecification.html#cfn-dynamodb-table-contributorinsightsspecification-mode
5833
5861
  '''
5834
5862
  result = self._values.get("mode")
@@ -5949,7 +5977,7 @@ class CfnTable(
5949
5977
  :param index_name: The name of the global secondary index. The name must be unique among all other indexes on this table.
5950
5978
  :param key_schema: The complete key schema for a global secondary index, which consists of one or more pairs of attribute names and key types: - ``HASH`` - partition key - ``RANGE`` - sort key > The partition key of an item is also known as its *hash attribute* . The term "hash attribute" derives from DynamoDB's usage of an internal hash function to evenly distribute data items across partitions, based on their partition key values. .. epigraph:: The sort key of an item is also known as its *range attribute* . The term "range attribute" derives from the way DynamoDB stores items with the same partition key physically close together, in sorted order by the sort key value.
5951
5979
  :param projection: Represents attributes that are copied (projected) from the table into the global secondary index. These are in addition to the primary key attributes and index key attributes, which are automatically projected.
5952
- :param contributor_insights_specification: The settings used to enable or disable CloudWatch Contributor Insights for the specified global secondary index.
5980
+ :param contributor_insights_specification: The settings used to specify whether to enable CloudWatch Contributor Insights for the global table and define which events to monitor.
5953
5981
  :param on_demand_throughput: The maximum number of read and write units for the specified global secondary index. If you use this parameter, you must specify ``MaxReadRequestUnits`` , ``MaxWriteRequestUnits`` , or both. You must use either ``OnDemandThroughput`` or ``ProvisionedThroughput`` based on your table's capacity mode.
5954
5982
  :param provisioned_throughput: Represents the provisioned throughput settings for the specified global secondary index. You must use either ``OnDemandThroughput`` or ``ProvisionedThroughput`` based on your table's capacity mode. For current minimum and maximum provisioned throughput values, see `Service, Account, and Table Quotas <https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Limits.html>`_ in the *Amazon DynamoDB Developer Guide* .
5955
5983
  :param warm_throughput: Represents the warm throughput value (in read units per second and write units per second) for the specified secondary index. If you use this parameter, you must specify ``ReadUnitsPerSecond`` , ``WriteUnitsPerSecond`` , or both.
@@ -6065,7 +6093,7 @@ class CfnTable(
6065
6093
  def contributor_insights_specification(
6066
6094
  self,
6067
6095
  ) -> typing.Optional[typing.Union[_IResolvable_da3f097b, "CfnTable.ContributorInsightsSpecificationProperty"]]:
6068
- '''The settings used to enable or disable CloudWatch Contributor Insights for the specified global secondary index.
6096
+ '''The settings used to specify whether to enable CloudWatch Contributor Insights for the global table and define which events to monitor.
6069
6097
 
6070
6098
  :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-table-globalsecondaryindex.html#cfn-dynamodb-table-globalsecondaryindex-contributorinsightsspecification
6071
6099
  '''
@@ -7195,7 +7223,7 @@ class CfnTable(
7195
7223
  '''Represents the DynamoDB Streams configuration for a table in DynamoDB.
7196
7224
 
7197
7225
  :param stream_view_type: When an item in the table is modified, ``StreamViewType`` determines what information is written to the stream for this table. Valid values for ``StreamViewType`` are: - ``KEYS_ONLY`` - Only the key attributes of the modified item are written to the stream. - ``NEW_IMAGE`` - The entire item, as it appears after it was modified, is written to the stream. - ``OLD_IMAGE`` - The entire item, as it appeared before it was modified, is written to the stream. - ``NEW_AND_OLD_IMAGES`` - Both the new and the old item images of the item are written to the stream.
7198
- :param resource_policy: Creates or updates a resource-based policy document that contains the permissions for DynamoDB resources, such as a table's streams. Resource-based policies let you define access permissions by specifying who has access to each resource, and the actions they are allowed to perform on each resource. In a CloudFormation template, you can provide the policy in JSON or YAML format because CloudFormation converts YAML to JSON before submitting it to DynamoDB . For more information about resource-based policies, see `Using resource-based policies for DynamoDB <https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/access-control-resource-based.html>`_ and `Resource-based policy examples <https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/rbac-examples.html>`_ .
7226
+ :param resource_policy: Creates or updates a resource-based policy document that contains the permissions for DynamoDB resources, such as a table's streams. Resource-based policies let you define access permissions by specifying who has access to each resource, and the actions they are allowed to perform on each resource. .. epigraph:: When you remove the ``StreamSpecification`` property from the template, DynamoDB disables the stream but retains any attached resource policy until the stream is deleted after 24 hours. When you modify the ``StreamViewType`` property, DynamoDB creates a new stream and retains the old stream's resource policy. The old stream and its resource policy are deleted after the 24-hour retention period. In a CloudFormation template, you can provide the policy in JSON or YAML format because CloudFormation converts YAML to JSON before submitting it to DynamoDB . For more information about resource-based policies, see `Using resource-based policies for DynamoDB <https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/access-control-resource-based.html>`_ and `Resource-based policy examples <https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/rbac-examples.html>`_ .
7199
7227
 
7200
7228
  :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-table-streamspecification.html
7201
7229
  :exampleMetadata: fixture=_generated
@@ -7251,6 +7279,9 @@ class CfnTable(
7251
7279
  '''Creates or updates a resource-based policy document that contains the permissions for DynamoDB resources, such as a table's streams.
7252
7280
 
7253
7281
  Resource-based policies let you define access permissions by specifying who has access to each resource, and the actions they are allowed to perform on each resource.
7282
+ .. epigraph::
7283
+
7284
+ When you remove the ``StreamSpecification`` property from the template, DynamoDB disables the stream but retains any attached resource policy until the stream is deleted after 24 hours. When you modify the ``StreamViewType`` property, DynamoDB creates a new stream and retains the old stream's resource policy. The old stream and its resource policy are deleted after the 24-hour retention period.
7254
7285
 
7255
7286
  In a CloudFormation template, you can provide the policy in JSON or YAML format because CloudFormation converts YAML to JSON before submitting it to DynamoDB . For more information about resource-based policies, see `Using resource-based policies for DynamoDB <https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/access-control-resource-based.html>`_ and `Resource-based policy examples <https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/rbac-examples.html>`_ .
7256
7287
 
@@ -7480,7 +7511,7 @@ class CfnTableProps:
7480
7511
  :param key_schema: Specifies the attributes that make up the primary key for the table. The attributes in the ``KeySchema`` property must also be defined in the ``AttributeDefinitions`` property.
7481
7512
  :param attribute_definitions: A list of attributes that describe the key schema for the table and indexes. This property is required to create a DynamoDB table. Update requires: `Some interruptions <https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-some-interrupt>`_ . Replacement if you edit an existing AttributeDefinition.
7482
7513
  :param billing_mode: Specify how you are charged for read and write throughput and how you manage capacity. Valid values include: - ``PAY_PER_REQUEST`` - We recommend using ``PAY_PER_REQUEST`` for most DynamoDB workloads. ``PAY_PER_REQUEST`` sets the billing mode to `On-demand capacity mode <https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/on-demand-capacity-mode.html>`_ . - ``PROVISIONED`` - We recommend using ``PROVISIONED`` for steady workloads with predictable growth where capacity requirements can be reliably forecasted. ``PROVISIONED`` sets the billing mode to `Provisioned capacity mode <https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/provisioned-capacity-mode.html>`_ . If not specified, the default is ``PROVISIONED`` .
7483
- :param contributor_insights_specification: The settings used to enable or disable CloudWatch Contributor Insights for the specified table.
7514
+ :param contributor_insights_specification: The settings used to specify whether to enable CloudWatch Contributor Insights for the table and define which events to monitor.
7484
7515
  :param deletion_protection_enabled: Determines if a table is protected from deletion. When enabled, the table cannot be deleted by any user or process. This setting is disabled by default. For more information, see `Using deletion protection <https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/WorkingWithTables.Basics.html#WorkingWithTables.Basics.DeletionProtection>`_ in the *Amazon DynamoDB Developer Guide* .
7485
7516
  :param global_secondary_indexes: Global secondary indexes to be created on the table. You can create up to 20 global secondary indexes. .. epigraph:: If you update a table to include a new global secondary index, AWS CloudFormation initiates the index creation and then proceeds with the stack update. AWS CloudFormation doesn't wait for the index to complete creation because the backfilling phase can take a long time, depending on the size of the table. You can't use the index or update the table until the index's status is ``ACTIVE`` . You can track its status by using the DynamoDB `DescribeTable <https://docs.aws.amazon.com/cli/latest/reference/dynamodb/describe-table.html>`_ command. If you add or delete an index during an update, we recommend that you don't update any other resources. If your stack fails to update and is rolled back while adding a new index, you must manually delete the index. Updates are not supported. The following are exceptions: - If you update either the contributor insights specification or the provisioned throughput values of global secondary indexes, you can update the table without interruption. - You can delete or add one global secondary index without interruption. If you do both in the same update (for example, by changing the index's logical ID), the update fails.
7486
7517
  :param import_source_specification: Specifies the properties of data being imported from the S3 bucket source to the" table. .. epigraph:: If you specify the ``ImportSourceSpecification`` property, and also specify either the ``StreamSpecification`` , the ``TableClass`` property, the ``DeletionProtectionEnabled`` property, or the ``WarmThroughput`` property, the IAM entity creating/updating stack must have ``UpdateTable`` permission.
@@ -7491,7 +7522,7 @@ class CfnTableProps:
7491
7522
  :param provisioned_throughput: Throughput for the specified table, which consists of values for ``ReadCapacityUnits`` and ``WriteCapacityUnits`` . For more information about the contents of a provisioned throughput structure, see `Amazon DynamoDB Table ProvisionedThroughput <https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_ProvisionedThroughput.html>`_ . If you set ``BillingMode`` as ``PROVISIONED`` , you must specify this property. If you set ``BillingMode`` as ``PAY_PER_REQUEST`` , you cannot specify this property.
7492
7523
  :param resource_policy: An AWS resource-based policy document in JSON format that will be attached to the table. When you attach a resource-based policy while creating a table, the policy application is *strongly consistent* . The maximum size supported for a resource-based policy document is 20 KB. DynamoDB counts whitespaces when calculating the size of a policy against this limit. For a full list of all considerations that apply for resource-based policies, see `Resource-based policy considerations <https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/rbac-considerations.html>`_ . .. epigraph:: You need to specify the ``CreateTable`` and ``PutResourcePolicy`` IAM actions for authorizing a user to create a table with a resource-based policy.
7493
7524
  :param sse_specification: Specifies the settings to enable server-side encryption.
7494
- :param stream_specification: The settings for the DynamoDB table stream, which capture changes to items stored in the table.
7525
+ :param stream_specification: The settings for the DynamoDB table stream, which captures changes to items stored in the table. Including this property in your AWS CloudFormation template automatically enables streaming.
7495
7526
  :param table_class: The table class of the new table. Valid values are ``STANDARD`` and ``STANDARD_INFREQUENT_ACCESS`` .
7496
7527
  :param table_name: A name for the table. If you don't specify a name, AWS CloudFormation generates a unique physical ID and uses that ID for the table name. For more information, see `Name Type <https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-name.html>`_ . .. epigraph:: If you specify a name, you cannot perform updates that require replacement of this resource. You can perform updates that require no or some interruption. If you must replace the resource, specify a new name.
7497
7528
  :param tags: An array of key-value pairs to apply to this resource. For more information, see `Tag <https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-resource-tags.html>`_ .
@@ -7756,7 +7787,7 @@ class CfnTableProps:
7756
7787
  def contributor_insights_specification(
7757
7788
  self,
7758
7789
  ) -> typing.Optional[typing.Union[_IResolvable_da3f097b, CfnTable.ContributorInsightsSpecificationProperty]]:
7759
- '''The settings used to enable or disable CloudWatch Contributor Insights for the specified table.
7790
+ '''The settings used to specify whether to enable CloudWatch Contributor Insights for the table and define which events to monitor.
7760
7791
 
7761
7792
  :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dynamodb-table.html#cfn-dynamodb-table-contributorinsightsspecification
7762
7793
  '''
@@ -7909,7 +7940,9 @@ class CfnTableProps:
7909
7940
  def stream_specification(
7910
7941
  self,
7911
7942
  ) -> typing.Optional[typing.Union[_IResolvable_da3f097b, CfnTable.StreamSpecificationProperty]]:
7912
- '''The settings for the DynamoDB table stream, which capture changes to items stored in the table.
7943
+ '''The settings for the DynamoDB table stream, which captures changes to items stored in the table.
7944
+
7945
+ Including this property in your AWS CloudFormation template automatically enables streaming.
7913
7946
 
7914
7947
  :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dynamodb-table.html#cfn-dynamodb-table-streamspecification
7915
7948
  '''
@@ -7990,6 +8023,121 @@ class CfnTableProps:
7990
8023
  )
7991
8024
 
7992
8025
 
8026
+ @jsii.enum(jsii_type="aws-cdk-lib.aws_dynamodb.ContributorInsightsMode")
8027
+ class ContributorInsightsMode(enum.Enum):
8028
+ '''DynamoDB's Contributor Insights Mode.
8029
+
8030
+ :see: https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-properties-dynamodb-table-contributorinsightsspecification.html
8031
+ :exampleMetadata: infused
8032
+
8033
+ Example::
8034
+
8035
+ table = dynamodb.TableV2(self, "Table",
8036
+ partition_key=dynamodb.Attribute(name="pk", type=dynamodb.AttributeType.STRING),
8037
+ contributor_insights_specification=dynamodb.ContributorInsightsSpecification(
8038
+ enabled=True,
8039
+ mode=dynamodb.ContributorInsightsMode.ACCESSED_AND_THROTTLED_KEYS
8040
+ )
8041
+ )
8042
+ '''
8043
+
8044
+ ACCESSED_AND_THROTTLED_KEYS = "ACCESSED_AND_THROTTLED_KEYS"
8045
+ '''Emits metrics for all read and write requests, whether successful or throttled.'''
8046
+ THROTTLED_KEYS = "THROTTLED_KEYS"
8047
+ '''Emits metrics for read and write requests that were throttled.'''
8048
+
8049
+
8050
+ @jsii.data_type(
8051
+ jsii_type="aws-cdk-lib.aws_dynamodb.ContributorInsightsSpecification",
8052
+ jsii_struct_bases=[],
8053
+ name_mapping={"enabled": "enabled", "mode": "mode"},
8054
+ )
8055
+ class ContributorInsightsSpecification:
8056
+ def __init__(
8057
+ self,
8058
+ *,
8059
+ enabled: builtins.bool,
8060
+ mode: typing.Optional[ContributorInsightsMode] = None,
8061
+ ) -> None:
8062
+ '''Reference to ContributorInsightsSpecification.
8063
+
8064
+ :param enabled: Indicates whether contributor insights is enabled. Default: false
8065
+ :param mode: Indicates the type of metrics captured by contributor insights. Default: ACCESSED_AND_THROTTLED_KEYS
8066
+
8067
+ :exampleMetadata: infused
8068
+
8069
+ Example::
8070
+
8071
+ import aws_cdk as cdk
8072
+
8073
+
8074
+ app = cdk.App()
8075
+ stack = cdk.Stack(app, "Stack", env=cdk.Environment(region="us-west-2"))
8076
+
8077
+ global_table = dynamodb.TableV2(stack, "GlobalTable",
8078
+ partition_key=dynamodb.Attribute(name="pk", type=dynamodb.AttributeType.STRING),
8079
+ contributor_insights_specification=dynamodb.ContributorInsightsSpecification(
8080
+ enabled=True
8081
+ ),
8082
+ point_in_time_recovery_specification=dynamodb.PointInTimeRecoverySpecification(
8083
+ point_in_time_recovery_enabled=True
8084
+ ),
8085
+ replicas=[dynamodb.ReplicaTableProps(
8086
+ region="us-east-1",
8087
+ table_class=dynamodb.TableClass.STANDARD_INFREQUENT_ACCESS,
8088
+ point_in_time_recovery_specification=dynamodb.PointInTimeRecoverySpecification(
8089
+ point_in_time_recovery_enabled=False
8090
+ )
8091
+ ), dynamodb.ReplicaTableProps(
8092
+ region="us-east-2",
8093
+ contributor_insights_specification=dynamodb.ContributorInsightsSpecification(
8094
+ enabled=False
8095
+ )
8096
+ )
8097
+ ]
8098
+ )
8099
+ '''
8100
+ if __debug__:
8101
+ type_hints = typing.get_type_hints(_typecheckingstub__656543bd456aefaef11a80dfb0950fe5597d4bc0465f2f4fdec81a81dfe7358d)
8102
+ check_type(argname="argument enabled", value=enabled, expected_type=type_hints["enabled"])
8103
+ check_type(argname="argument mode", value=mode, expected_type=type_hints["mode"])
8104
+ self._values: typing.Dict[builtins.str, typing.Any] = {
8105
+ "enabled": enabled,
8106
+ }
8107
+ if mode is not None:
8108
+ self._values["mode"] = mode
8109
+
8110
+ @builtins.property
8111
+ def enabled(self) -> builtins.bool:
8112
+ '''Indicates whether contributor insights is enabled.
8113
+
8114
+ :default: false
8115
+ '''
8116
+ result = self._values.get("enabled")
8117
+ assert result is not None, "Required property 'enabled' is missing"
8118
+ return typing.cast(builtins.bool, result)
8119
+
8120
+ @builtins.property
8121
+ def mode(self) -> typing.Optional[ContributorInsightsMode]:
8122
+ '''Indicates the type of metrics captured by contributor insights.
8123
+
8124
+ :default: ACCESSED_AND_THROTTLED_KEYS
8125
+ '''
8126
+ result = self._values.get("mode")
8127
+ return typing.cast(typing.Optional[ContributorInsightsMode], result)
8128
+
8129
+ def __eq__(self, rhs: typing.Any) -> builtins.bool:
8130
+ return isinstance(rhs, self.__class__) and rhs._values == self._values
8131
+
8132
+ def __ne__(self, rhs: typing.Any) -> builtins.bool:
8133
+ return not (rhs == self)
8134
+
8135
+ def __repr__(self) -> str:
8136
+ return "ContributorInsightsSpecification(%s)" % ", ".join(
8137
+ k + "=" + repr(v) for k, v in self._values.items()
8138
+ )
8139
+
8140
+
7993
8141
  @jsii.data_type(
7994
8142
  jsii_type="aws-cdk-lib.aws_dynamodb.CsvOptions",
7995
8143
  jsii_struct_bases=[],
@@ -9800,7 +9948,9 @@ class PointInTimeRecoverySpecification:
9800
9948
 
9801
9949
  table = dynamodb.TableV2(self, "Table",
9802
9950
  partition_key=dynamodb.Attribute(name="pk", type=dynamodb.AttributeType.STRING),
9803
- contributor_insights=True,
9951
+ contributor_insights_specification=dynamodb.ContributorInsightsSpecification(
9952
+ enabled=True
9953
+ ),
9804
9954
  table_class=dynamodb.TableClass.STANDARD_INFREQUENT_ACCESS,
9805
9955
  point_in_time_recovery_specification=dynamodb.PointInTimeRecoverySpecification(
9806
9956
  point_in_time_recovery_enabled=True
@@ -9875,6 +10025,7 @@ class ProjectionType(enum.Enum):
9875
10025
  jsii_struct_bases=[],
9876
10026
  name_mapping={
9877
10027
  "contributor_insights": "contributorInsights",
10028
+ "contributor_insights_specification": "contributorInsightsSpecification",
9878
10029
  "max_read_request_units": "maxReadRequestUnits",
9879
10030
  "read_capacity": "readCapacity",
9880
10031
  },
@@ -9884,12 +10035,14 @@ class ReplicaGlobalSecondaryIndexOptions:
9884
10035
  self,
9885
10036
  *,
9886
10037
  contributor_insights: typing.Optional[builtins.bool] = None,
10038
+ contributor_insights_specification: typing.Optional[typing.Union[ContributorInsightsSpecification, typing.Dict[builtins.str, typing.Any]]] = None,
9887
10039
  max_read_request_units: typing.Optional[jsii.Number] = None,
9888
10040
  read_capacity: typing.Optional[Capacity] = None,
9889
10041
  ) -> None:
9890
10042
  '''Options used to configure global secondary indexes on a replica table.
9891
10043
 
9892
- :param contributor_insights: Whether CloudWatch contributor insights is enabled for a specific global secondary index on a replica table. Default: - inherited from the primary table
10044
+ :param contributor_insights: (deprecated) Whether CloudWatch contributor insights is enabled for a specific global secondary index on a replica table. Default: - inherited from the primary table
10045
+ :param contributor_insights_specification: Whether CloudWatch contributor insights is enabled and what mode is selected for a specific global secondary index on a replica table. Default: - contributor insights is not enabled
9893
10046
  :param max_read_request_units: The maximum read request units for a specific global secondary index on a replica table. Note: This can only be configured if primary table billing is PAY_PER_REQUEST. Default: - inherited from the primary table
9894
10047
  :param read_capacity: The read capacity for a specific global secondary index on a replica table. Note: This can only be configured if primary table billing is provisioned. Default: - inherited from the primary table
9895
10048
 
@@ -9905,7 +10058,9 @@ class ReplicaGlobalSecondaryIndexOptions:
9905
10058
 
9906
10059
  global_table = dynamodb.TableV2(stack, "GlobalTable",
9907
10060
  partition_key=dynamodb.Attribute(name="pk", type=dynamodb.AttributeType.STRING),
9908
- contributor_insights=True,
10061
+ contributor_insights_specification=dynamodb.ContributorInsightsSpecification(
10062
+ enabled=True
10063
+ ),
9909
10064
  billing=dynamodb.Billing.provisioned(
9910
10065
  read_capacity=dynamodb.Capacity.fixed(10),
9911
10066
  write_capacity=dynamodb.Capacity.autoscaled(max_capacity=10)
@@ -9932,21 +10087,28 @@ class ReplicaGlobalSecondaryIndexOptions:
9932
10087
  region="us-east-2",
9933
10088
  global_secondary_index_options={
9934
10089
  "gsi2": dynamodb.ReplicaGlobalSecondaryIndexOptions(
9935
- contributor_insights=False
10090
+ contributor_insights_specification=dynamodb.ContributorInsightsSpecification(
10091
+ enabled=False
10092
+ )
9936
10093
  )
9937
10094
  }
9938
10095
  )
9939
10096
  ]
9940
10097
  )
9941
10098
  '''
10099
+ if isinstance(contributor_insights_specification, dict):
10100
+ contributor_insights_specification = ContributorInsightsSpecification(**contributor_insights_specification)
9942
10101
  if __debug__:
9943
10102
  type_hints = typing.get_type_hints(_typecheckingstub__eaa3a170e1978a5997011b8319bcd83bf34642dac50e342aad0705ee28b15714)
9944
10103
  check_type(argname="argument contributor_insights", value=contributor_insights, expected_type=type_hints["contributor_insights"])
10104
+ check_type(argname="argument contributor_insights_specification", value=contributor_insights_specification, expected_type=type_hints["contributor_insights_specification"])
9945
10105
  check_type(argname="argument max_read_request_units", value=max_read_request_units, expected_type=type_hints["max_read_request_units"])
9946
10106
  check_type(argname="argument read_capacity", value=read_capacity, expected_type=type_hints["read_capacity"])
9947
10107
  self._values: typing.Dict[builtins.str, typing.Any] = {}
9948
10108
  if contributor_insights is not None:
9949
10109
  self._values["contributor_insights"] = contributor_insights
10110
+ if contributor_insights_specification is not None:
10111
+ self._values["contributor_insights_specification"] = contributor_insights_specification
9950
10112
  if max_read_request_units is not None:
9951
10113
  self._values["max_read_request_units"] = max_read_request_units
9952
10114
  if read_capacity is not None:
@@ -9954,13 +10116,28 @@ class ReplicaGlobalSecondaryIndexOptions:
9954
10116
 
9955
10117
  @builtins.property
9956
10118
  def contributor_insights(self) -> typing.Optional[builtins.bool]:
9957
- '''Whether CloudWatch contributor insights is enabled for a specific global secondary index on a replica table.
10119
+ '''(deprecated) Whether CloudWatch contributor insights is enabled for a specific global secondary index on a replica table.
9958
10120
 
9959
10121
  :default: - inherited from the primary table
10122
+
10123
+ :deprecated: use ``contributorInsightsSpecification`` instead
10124
+
10125
+ :stability: deprecated
9960
10126
  '''
9961
10127
  result = self._values.get("contributor_insights")
9962
10128
  return typing.cast(typing.Optional[builtins.bool], result)
9963
10129
 
10130
+ @builtins.property
10131
+ def contributor_insights_specification(
10132
+ self,
10133
+ ) -> typing.Optional[ContributorInsightsSpecification]:
10134
+ '''Whether CloudWatch contributor insights is enabled and what mode is selected for a specific global secondary index on a replica table.
10135
+
10136
+ :default: - contributor insights is not enabled
10137
+ '''
10138
+ result = self._values.get("contributor_insights_specification")
10139
+ return typing.cast(typing.Optional[ContributorInsightsSpecification], result)
10140
+
9964
10141
  @builtins.property
9965
10142
  def max_read_request_units(self) -> typing.Optional[jsii.Number]:
9966
10143
  '''The maximum read request units for a specific global secondary index on a replica table.
@@ -12707,7 +12884,9 @@ class TableClass(enum.Enum):
12707
12884
 
12708
12885
  table = dynamodb.TableV2(self, "Table",
12709
12886
  partition_key=dynamodb.Attribute(name="pk", type=dynamodb.AttributeType.STRING),
12710
- contributor_insights=True,
12887
+ contributor_insights_specification=dynamodb.ContributorInsightsSpecification(
12888
+ enabled=True
12889
+ ),
12711
12890
  table_class=dynamodb.TableClass.STANDARD_INFREQUENT_ACCESS,
12712
12891
  point_in_time_recovery_specification=dynamodb.PointInTimeRecoverySpecification(
12713
12892
  point_in_time_recovery_enabled=True
@@ -12837,6 +13016,7 @@ typing.cast(typing.Any, TableEncryptionV2).__jsii_proxy_class__ = lambda : _Tabl
12837
13016
  "sort_key": "sortKey",
12838
13017
  "billing_mode": "billingMode",
12839
13018
  "contributor_insights_enabled": "contributorInsightsEnabled",
13019
+ "contributor_insights_specification": "contributorInsightsSpecification",
12840
13020
  "deletion_protection": "deletionProtection",
12841
13021
  "encryption": "encryption",
12842
13022
  "encryption_key": "encryptionKey",
@@ -12867,6 +13047,7 @@ class TableOptions(SchemaOptions):
12867
13047
  sort_key: typing.Optional[typing.Union[Attribute, typing.Dict[builtins.str, typing.Any]]] = None,
12868
13048
  billing_mode: typing.Optional[BillingMode] = None,
12869
13049
  contributor_insights_enabled: typing.Optional[builtins.bool] = None,
13050
+ contributor_insights_specification: typing.Optional[typing.Union[ContributorInsightsSpecification, typing.Dict[builtins.str, typing.Any]]] = None,
12870
13051
  deletion_protection: typing.Optional[builtins.bool] = None,
12871
13052
  encryption: typing.Optional[TableEncryption] = None,
12872
13053
  encryption_key: typing.Optional[_IKey_5f11635f] = None,
@@ -12895,7 +13076,8 @@ class TableOptions(SchemaOptions):
12895
13076
  :param partition_key: Partition key attribute definition.
12896
13077
  :param sort_key: Sort key attribute definition. Default: no sort key
12897
13078
  :param billing_mode: Specify how you are charged for read and write throughput and how you manage capacity. Default: PROVISIONED if ``replicationRegions`` is not specified, PAY_PER_REQUEST otherwise
12898
- :param contributor_insights_enabled: Whether CloudWatch contributor insights is enabled. Default: false
13079
+ :param contributor_insights_enabled: (deprecated) Whether CloudWatch contributor insights is enabled. Default: false
13080
+ :param contributor_insights_specification: Whether CloudWatch contributor insights is enabled and what mode is selected. Default: - contributor insights is not enabled
12899
13081
  :param deletion_protection: Enables deletion protection for the table. Default: false
12900
13082
  :param encryption: Whether server-side encryption with an AWS managed customer master key is enabled. This property cannot be set if ``serverSideEncryption`` is set. .. epigraph:: **NOTE**: if you set this to ``CUSTOMER_MANAGED`` and ``encryptionKey`` is not specified, the key that the Tablet generates for you will be created with default permissions. If you are using CDKv2, these permissions will be sufficient to enable the key for use with DynamoDB tables. If you are using CDKv1, make sure the feature flag ``@aws-cdk/aws-kms:defaultKeyPolicies`` is set to ``true`` in your ``cdk.json``. Default: - The table is encrypted with an encryption key managed by DynamoDB, and you are not charged any fee for using it.
12901
13083
  :param encryption_key: External KMS key to use for table encryption. This property can only be set if ``encryption`` is set to ``TableEncryption.CUSTOMER_MANAGED``. Default: - If ``encryption`` is set to ``TableEncryption.CUSTOMER_MANAGED`` and this property is undefined, a new KMS key will be created and associated with this table. If ``encryption`` and this property are both undefined, then the table is encrypted with an encryption key managed by DynamoDB, and you are not charged any fee for using it.
@@ -12943,6 +13125,12 @@ class TableOptions(SchemaOptions):
12943
13125
  # the properties below are optional
12944
13126
  billing_mode=dynamodb.BillingMode.PAY_PER_REQUEST,
12945
13127
  contributor_insights_enabled=False,
13128
+ contributor_insights_specification=dynamodb.ContributorInsightsSpecification(
13129
+ enabled=False,
13130
+
13131
+ # the properties below are optional
13132
+ mode=dynamodb.ContributorInsightsMode.ACCESSED_AND_THROTTLED_KEYS
13133
+ ),
12946
13134
  deletion_protection=False,
12947
13135
  encryption=dynamodb.TableEncryption.DEFAULT,
12948
13136
  encryption_key=key,
@@ -12989,6 +13177,8 @@ class TableOptions(SchemaOptions):
12989
13177
  partition_key = Attribute(**partition_key)
12990
13178
  if isinstance(sort_key, dict):
12991
13179
  sort_key = Attribute(**sort_key)
13180
+ if isinstance(contributor_insights_specification, dict):
13181
+ contributor_insights_specification = ContributorInsightsSpecification(**contributor_insights_specification)
12992
13182
  if isinstance(import_source, dict):
12993
13183
  import_source = ImportSourceSpecification(**import_source)
12994
13184
  if isinstance(point_in_time_recovery_specification, dict):
@@ -13001,6 +13191,7 @@ class TableOptions(SchemaOptions):
13001
13191
  check_type(argname="argument sort_key", value=sort_key, expected_type=type_hints["sort_key"])
13002
13192
  check_type(argname="argument billing_mode", value=billing_mode, expected_type=type_hints["billing_mode"])
13003
13193
  check_type(argname="argument contributor_insights_enabled", value=contributor_insights_enabled, expected_type=type_hints["contributor_insights_enabled"])
13194
+ check_type(argname="argument contributor_insights_specification", value=contributor_insights_specification, expected_type=type_hints["contributor_insights_specification"])
13004
13195
  check_type(argname="argument deletion_protection", value=deletion_protection, expected_type=type_hints["deletion_protection"])
13005
13196
  check_type(argname="argument encryption", value=encryption, expected_type=type_hints["encryption"])
13006
13197
  check_type(argname="argument encryption_key", value=encryption_key, expected_type=type_hints["encryption_key"])
@@ -13030,6 +13221,8 @@ class TableOptions(SchemaOptions):
13030
13221
  self._values["billing_mode"] = billing_mode
13031
13222
  if contributor_insights_enabled is not None:
13032
13223
  self._values["contributor_insights_enabled"] = contributor_insights_enabled
13224
+ if contributor_insights_specification is not None:
13225
+ self._values["contributor_insights_specification"] = contributor_insights_specification
13033
13226
  if deletion_protection is not None:
13034
13227
  self._values["deletion_protection"] = deletion_protection
13035
13228
  if encryption is not None:
@@ -13098,13 +13291,28 @@ class TableOptions(SchemaOptions):
13098
13291
 
13099
13292
  @builtins.property
13100
13293
  def contributor_insights_enabled(self) -> typing.Optional[builtins.bool]:
13101
- '''Whether CloudWatch contributor insights is enabled.
13294
+ '''(deprecated) Whether CloudWatch contributor insights is enabled.
13102
13295
 
13103
13296
  :default: false
13297
+
13298
+ :deprecated: use `contributorInsightsSpecification instead
13299
+
13300
+ :stability: deprecated
13104
13301
  '''
13105
13302
  result = self._values.get("contributor_insights_enabled")
13106
13303
  return typing.cast(typing.Optional[builtins.bool], result)
13107
13304
 
13305
+ @builtins.property
13306
+ def contributor_insights_specification(
13307
+ self,
13308
+ ) -> typing.Optional[ContributorInsightsSpecification]:
13309
+ '''Whether CloudWatch contributor insights is enabled and what mode is selected.
13310
+
13311
+ :default: - contributor insights is not enabled
13312
+ '''
13313
+ result = self._values.get("contributor_insights_specification")
13314
+ return typing.cast(typing.Optional[ContributorInsightsSpecification], result)
13315
+
13108
13316
  @builtins.property
13109
13317
  def deletion_protection(self) -> typing.Optional[builtins.bool]:
13110
13318
  '''Enables deletion protection for the table.
@@ -13369,6 +13577,7 @@ class TableOptions(SchemaOptions):
13369
13577
  jsii_struct_bases=[],
13370
13578
  name_mapping={
13371
13579
  "contributor_insights": "contributorInsights",
13580
+ "contributor_insights_specification": "contributorInsightsSpecification",
13372
13581
  "deletion_protection": "deletionProtection",
13373
13582
  "kinesis_stream": "kinesisStream",
13374
13583
  "point_in_time_recovery": "pointInTimeRecovery",
@@ -13383,6 +13592,7 @@ class TableOptionsV2:
13383
13592
  self,
13384
13593
  *,
13385
13594
  contributor_insights: typing.Optional[builtins.bool] = None,
13595
+ contributor_insights_specification: typing.Optional[typing.Union[ContributorInsightsSpecification, typing.Dict[builtins.str, typing.Any]]] = None,
13386
13596
  deletion_protection: typing.Optional[builtins.bool] = None,
13387
13597
  kinesis_stream: typing.Optional[_IStream_4e2457d2] = None,
13388
13598
  point_in_time_recovery: typing.Optional[builtins.bool] = None,
@@ -13393,7 +13603,8 @@ class TableOptionsV2:
13393
13603
  ) -> None:
13394
13604
  '''Options used to configure a DynamoDB table.
13395
13605
 
13396
- :param contributor_insights: Whether CloudWatch contributor insights is enabled. Default: false
13606
+ :param contributor_insights: (deprecated) Whether CloudWatch contributor insights is enabled. Default: false
13607
+ :param contributor_insights_specification: Whether CloudWatch contributor insights is enabled and what mode is selected. Default: - contributor insights is not enabled
13397
13608
  :param deletion_protection: Whether deletion protection is enabled. Default: false
13398
13609
  :param kinesis_stream: Kinesis Data Stream to capture item level changes. Default: - no Kinesis Data Stream
13399
13610
  :param point_in_time_recovery: (deprecated) Whether point-in-time recovery is enabled. Default: false - point in time recovery is not enabled.
@@ -13417,6 +13628,12 @@ class TableOptionsV2:
13417
13628
 
13418
13629
  table_options_v2 = dynamodb.TableOptionsV2(
13419
13630
  contributor_insights=False,
13631
+ contributor_insights_specification=dynamodb.ContributorInsightsSpecification(
13632
+ enabled=False,
13633
+
13634
+ # the properties below are optional
13635
+ mode=dynamodb.ContributorInsightsMode.ACCESSED_AND_THROTTLED_KEYS
13636
+ ),
13420
13637
  deletion_protection=False,
13421
13638
  kinesis_stream=stream,
13422
13639
  point_in_time_recovery=False,
@@ -13434,11 +13651,14 @@ class TableOptionsV2:
13434
13651
  )]
13435
13652
  )
13436
13653
  '''
13654
+ if isinstance(contributor_insights_specification, dict):
13655
+ contributor_insights_specification = ContributorInsightsSpecification(**contributor_insights_specification)
13437
13656
  if isinstance(point_in_time_recovery_specification, dict):
13438
13657
  point_in_time_recovery_specification = PointInTimeRecoverySpecification(**point_in_time_recovery_specification)
13439
13658
  if __debug__:
13440
13659
  type_hints = typing.get_type_hints(_typecheckingstub__1b65ee3c8ef5c3b632f4d1fad233252caadaa5f607c0fd92f49b64933f1de51c)
13441
13660
  check_type(argname="argument contributor_insights", value=contributor_insights, expected_type=type_hints["contributor_insights"])
13661
+ check_type(argname="argument contributor_insights_specification", value=contributor_insights_specification, expected_type=type_hints["contributor_insights_specification"])
13442
13662
  check_type(argname="argument deletion_protection", value=deletion_protection, expected_type=type_hints["deletion_protection"])
13443
13663
  check_type(argname="argument kinesis_stream", value=kinesis_stream, expected_type=type_hints["kinesis_stream"])
13444
13664
  check_type(argname="argument point_in_time_recovery", value=point_in_time_recovery, expected_type=type_hints["point_in_time_recovery"])
@@ -13449,6 +13669,8 @@ class TableOptionsV2:
13449
13669
  self._values: typing.Dict[builtins.str, typing.Any] = {}
13450
13670
  if contributor_insights is not None:
13451
13671
  self._values["contributor_insights"] = contributor_insights
13672
+ if contributor_insights_specification is not None:
13673
+ self._values["contributor_insights_specification"] = contributor_insights_specification
13452
13674
  if deletion_protection is not None:
13453
13675
  self._values["deletion_protection"] = deletion_protection
13454
13676
  if kinesis_stream is not None:
@@ -13466,13 +13688,28 @@ class TableOptionsV2:
13466
13688
 
13467
13689
  @builtins.property
13468
13690
  def contributor_insights(self) -> typing.Optional[builtins.bool]:
13469
- '''Whether CloudWatch contributor insights is enabled.
13691
+ '''(deprecated) Whether CloudWatch contributor insights is enabled.
13470
13692
 
13471
13693
  :default: false
13694
+
13695
+ :deprecated: use ``contributorInsightsSpecification`` instead
13696
+
13697
+ :stability: deprecated
13472
13698
  '''
13473
13699
  result = self._values.get("contributor_insights")
13474
13700
  return typing.cast(typing.Optional[builtins.bool], result)
13475
13701
 
13702
+ @builtins.property
13703
+ def contributor_insights_specification(
13704
+ self,
13705
+ ) -> typing.Optional[ContributorInsightsSpecification]:
13706
+ '''Whether CloudWatch contributor insights is enabled and what mode is selected.
13707
+
13708
+ :default: - contributor insights is not enabled
13709
+ '''
13710
+ result = self._values.get("contributor_insights_specification")
13711
+ return typing.cast(typing.Optional[ContributorInsightsSpecification], result)
13712
+
13476
13713
  @builtins.property
13477
13714
  def deletion_protection(self) -> typing.Optional[builtins.bool]:
13478
13715
  '''Whether deletion protection is enabled.
@@ -13564,6 +13801,7 @@ class TableOptionsV2:
13564
13801
  "sort_key": "sortKey",
13565
13802
  "billing_mode": "billingMode",
13566
13803
  "contributor_insights_enabled": "contributorInsightsEnabled",
13804
+ "contributor_insights_specification": "contributorInsightsSpecification",
13567
13805
  "deletion_protection": "deletionProtection",
13568
13806
  "encryption": "encryption",
13569
13807
  "encryption_key": "encryptionKey",
@@ -13597,6 +13835,7 @@ class TableProps(TableOptions):
13597
13835
  sort_key: typing.Optional[typing.Union[Attribute, typing.Dict[builtins.str, typing.Any]]] = None,
13598
13836
  billing_mode: typing.Optional[BillingMode] = None,
13599
13837
  contributor_insights_enabled: typing.Optional[builtins.bool] = None,
13838
+ contributor_insights_specification: typing.Optional[typing.Union[ContributorInsightsSpecification, typing.Dict[builtins.str, typing.Any]]] = None,
13600
13839
  deletion_protection: typing.Optional[builtins.bool] = None,
13601
13840
  encryption: typing.Optional[TableEncryption] = None,
13602
13841
  encryption_key: typing.Optional[_IKey_5f11635f] = None,
@@ -13626,7 +13865,8 @@ class TableProps(TableOptions):
13626
13865
  :param partition_key: Partition key attribute definition.
13627
13866
  :param sort_key: Sort key attribute definition. Default: no sort key
13628
13867
  :param billing_mode: Specify how you are charged for read and write throughput and how you manage capacity. Default: PROVISIONED if ``replicationRegions`` is not specified, PAY_PER_REQUEST otherwise
13629
- :param contributor_insights_enabled: Whether CloudWatch contributor insights is enabled. Default: false
13868
+ :param contributor_insights_enabled: (deprecated) Whether CloudWatch contributor insights is enabled. Default: false
13869
+ :param contributor_insights_specification: Whether CloudWatch contributor insights is enabled and what mode is selected. Default: - contributor insights is not enabled
13630
13870
  :param deletion_protection: Enables deletion protection for the table. Default: false
13631
13871
  :param encryption: Whether server-side encryption with an AWS managed customer master key is enabled. This property cannot be set if ``serverSideEncryption`` is set. .. epigraph:: **NOTE**: if you set this to ``CUSTOMER_MANAGED`` and ``encryptionKey`` is not specified, the key that the Tablet generates for you will be created with default permissions. If you are using CDKv2, these permissions will be sufficient to enable the key for use with DynamoDB tables. If you are using CDKv1, make sure the feature flag ``@aws-cdk/aws-kms:defaultKeyPolicies`` is set to ``true`` in your ``cdk.json``. Default: - The table is encrypted with an encryption key managed by DynamoDB, and you are not charged any fee for using it.
13632
13872
  :param encryption_key: External KMS key to use for table encryption. This property can only be set if ``encryption`` is set to ``TableEncryption.CUSTOMER_MANAGED``. Default: - If ``encryption`` is set to ``TableEncryption.CUSTOMER_MANAGED`` and this property is undefined, a new KMS key will be created and associated with this table. If ``encryption`` and this property are both undefined, then the table is encrypted with an encryption key managed by DynamoDB, and you are not charged any fee for using it.
@@ -13681,6 +13921,8 @@ class TableProps(TableOptions):
13681
13921
  partition_key = Attribute(**partition_key)
13682
13922
  if isinstance(sort_key, dict):
13683
13923
  sort_key = Attribute(**sort_key)
13924
+ if isinstance(contributor_insights_specification, dict):
13925
+ contributor_insights_specification = ContributorInsightsSpecification(**contributor_insights_specification)
13684
13926
  if isinstance(import_source, dict):
13685
13927
  import_source = ImportSourceSpecification(**import_source)
13686
13928
  if isinstance(point_in_time_recovery_specification, dict):
@@ -13693,6 +13935,7 @@ class TableProps(TableOptions):
13693
13935
  check_type(argname="argument sort_key", value=sort_key, expected_type=type_hints["sort_key"])
13694
13936
  check_type(argname="argument billing_mode", value=billing_mode, expected_type=type_hints["billing_mode"])
13695
13937
  check_type(argname="argument contributor_insights_enabled", value=contributor_insights_enabled, expected_type=type_hints["contributor_insights_enabled"])
13938
+ check_type(argname="argument contributor_insights_specification", value=contributor_insights_specification, expected_type=type_hints["contributor_insights_specification"])
13696
13939
  check_type(argname="argument deletion_protection", value=deletion_protection, expected_type=type_hints["deletion_protection"])
13697
13940
  check_type(argname="argument encryption", value=encryption, expected_type=type_hints["encryption"])
13698
13941
  check_type(argname="argument encryption_key", value=encryption_key, expected_type=type_hints["encryption_key"])
@@ -13725,6 +13968,8 @@ class TableProps(TableOptions):
13725
13968
  self._values["billing_mode"] = billing_mode
13726
13969
  if contributor_insights_enabled is not None:
13727
13970
  self._values["contributor_insights_enabled"] = contributor_insights_enabled
13971
+ if contributor_insights_specification is not None:
13972
+ self._values["contributor_insights_specification"] = contributor_insights_specification
13728
13973
  if deletion_protection is not None:
13729
13974
  self._values["deletion_protection"] = deletion_protection
13730
13975
  if encryption is not None:
@@ -13799,13 +14044,28 @@ class TableProps(TableOptions):
13799
14044
 
13800
14045
  @builtins.property
13801
14046
  def contributor_insights_enabled(self) -> typing.Optional[builtins.bool]:
13802
- '''Whether CloudWatch contributor insights is enabled.
14047
+ '''(deprecated) Whether CloudWatch contributor insights is enabled.
13803
14048
 
13804
14049
  :default: false
14050
+
14051
+ :deprecated: use `contributorInsightsSpecification instead
14052
+
14053
+ :stability: deprecated
13805
14054
  '''
13806
14055
  result = self._values.get("contributor_insights_enabled")
13807
14056
  return typing.cast(typing.Optional[builtins.bool], result)
13808
14057
 
14058
+ @builtins.property
14059
+ def contributor_insights_specification(
14060
+ self,
14061
+ ) -> typing.Optional[ContributorInsightsSpecification]:
14062
+ '''Whether CloudWatch contributor insights is enabled and what mode is selected.
14063
+
14064
+ :default: - contributor insights is not enabled
14065
+ '''
14066
+ result = self._values.get("contributor_insights_specification")
14067
+ return typing.cast(typing.Optional[ContributorInsightsSpecification], result)
14068
+
13809
14069
  @builtins.property
13810
14070
  def deletion_protection(self) -> typing.Optional[builtins.bool]:
13811
14071
  '''Enables deletion protection for the table.
@@ -14099,6 +14359,7 @@ class TableProps(TableOptions):
14099
14359
  jsii_struct_bases=[TableOptionsV2],
14100
14360
  name_mapping={
14101
14361
  "contributor_insights": "contributorInsights",
14362
+ "contributor_insights_specification": "contributorInsightsSpecification",
14102
14363
  "deletion_protection": "deletionProtection",
14103
14364
  "kinesis_stream": "kinesisStream",
14104
14365
  "point_in_time_recovery": "pointInTimeRecovery",
@@ -14127,6 +14388,7 @@ class TablePropsV2(TableOptionsV2):
14127
14388
  self,
14128
14389
  *,
14129
14390
  contributor_insights: typing.Optional[builtins.bool] = None,
14391
+ contributor_insights_specification: typing.Optional[typing.Union[ContributorInsightsSpecification, typing.Dict[builtins.str, typing.Any]]] = None,
14130
14392
  deletion_protection: typing.Optional[builtins.bool] = None,
14131
14393
  kinesis_stream: typing.Optional[_IStream_4e2457d2] = None,
14132
14394
  point_in_time_recovery: typing.Optional[builtins.bool] = None,
@@ -14151,7 +14413,8 @@ class TablePropsV2(TableOptionsV2):
14151
14413
  ) -> None:
14152
14414
  '''Properties used to configure a DynamoDB table.
14153
14415
 
14154
- :param contributor_insights: Whether CloudWatch contributor insights is enabled. Default: false
14416
+ :param contributor_insights: (deprecated) Whether CloudWatch contributor insights is enabled. Default: false
14417
+ :param contributor_insights_specification: Whether CloudWatch contributor insights is enabled and what mode is selected. Default: - contributor insights is not enabled
14155
14418
  :param deletion_protection: Whether deletion protection is enabled. Default: false
14156
14419
  :param kinesis_stream: Kinesis Data Stream to capture item level changes. Default: - no Kinesis Data Stream
14157
14420
  :param point_in_time_recovery: (deprecated) Whether point-in-time recovery is enabled. Default: false - point in time recovery is not enabled.
@@ -14187,11 +14450,12 @@ class TablePropsV2(TableOptionsV2):
14187
14450
  mrsc_table = dynamodb.TableV2(stack, "MRSCTable",
14188
14451
  partition_key=dynamodb.Attribute(name="pk", type=dynamodb.AttributeType.STRING),
14189
14452
  multi_region_consistency=dynamodb.MultiRegionConsistency.STRONG,
14190
- replicas=[dynamodb.ReplicaTableProps(region="us-east-1")
14191
- ],
14192
- witness_region="us-east-2"
14453
+ replicas=[dynamodb.ReplicaTableProps(region="us-east-1"), dynamodb.ReplicaTableProps(region="us-east-2")
14454
+ ]
14193
14455
  )
14194
14456
  '''
14457
+ if isinstance(contributor_insights_specification, dict):
14458
+ contributor_insights_specification = ContributorInsightsSpecification(**contributor_insights_specification)
14195
14459
  if isinstance(point_in_time_recovery_specification, dict):
14196
14460
  point_in_time_recovery_specification = PointInTimeRecoverySpecification(**point_in_time_recovery_specification)
14197
14461
  if isinstance(partition_key, dict):
@@ -14203,6 +14467,7 @@ class TablePropsV2(TableOptionsV2):
14203
14467
  if __debug__:
14204
14468
  type_hints = typing.get_type_hints(_typecheckingstub__205e5df85e01c6c2d91d5922a57e3ed5903027748a8b3222622bebd1077e84ba)
14205
14469
  check_type(argname="argument contributor_insights", value=contributor_insights, expected_type=type_hints["contributor_insights"])
14470
+ check_type(argname="argument contributor_insights_specification", value=contributor_insights_specification, expected_type=type_hints["contributor_insights_specification"])
14206
14471
  check_type(argname="argument deletion_protection", value=deletion_protection, expected_type=type_hints["deletion_protection"])
14207
14472
  check_type(argname="argument kinesis_stream", value=kinesis_stream, expected_type=type_hints["kinesis_stream"])
14208
14473
  check_type(argname="argument point_in_time_recovery", value=point_in_time_recovery, expected_type=type_hints["point_in_time_recovery"])
@@ -14229,6 +14494,8 @@ class TablePropsV2(TableOptionsV2):
14229
14494
  }
14230
14495
  if contributor_insights is not None:
14231
14496
  self._values["contributor_insights"] = contributor_insights
14497
+ if contributor_insights_specification is not None:
14498
+ self._values["contributor_insights_specification"] = contributor_insights_specification
14232
14499
  if deletion_protection is not None:
14233
14500
  self._values["deletion_protection"] = deletion_protection
14234
14501
  if kinesis_stream is not None:
@@ -14272,13 +14539,28 @@ class TablePropsV2(TableOptionsV2):
14272
14539
 
14273
14540
  @builtins.property
14274
14541
  def contributor_insights(self) -> typing.Optional[builtins.bool]:
14275
- '''Whether CloudWatch contributor insights is enabled.
14542
+ '''(deprecated) Whether CloudWatch contributor insights is enabled.
14276
14543
 
14277
14544
  :default: false
14545
+
14546
+ :deprecated: use ``contributorInsightsSpecification`` instead
14547
+
14548
+ :stability: deprecated
14278
14549
  '''
14279
14550
  result = self._values.get("contributor_insights")
14280
14551
  return typing.cast(typing.Optional[builtins.bool], result)
14281
14552
 
14553
+ @builtins.property
14554
+ def contributor_insights_specification(
14555
+ self,
14556
+ ) -> typing.Optional[ContributorInsightsSpecification]:
14557
+ '''Whether CloudWatch contributor insights is enabled and what mode is selected.
14558
+
14559
+ :default: - contributor insights is not enabled
14560
+ '''
14561
+ result = self._values.get("contributor_insights_specification")
14562
+ return typing.cast(typing.Optional[ContributorInsightsSpecification], result)
14563
+
14282
14564
  @builtins.property
14283
14565
  def deletion_protection(self) -> typing.Optional[builtins.bool]:
14284
14566
  '''Whether deletion protection is enabled.
@@ -14553,6 +14835,7 @@ class TableV2(
14553
14835
  warm_throughput: typing.Optional[typing.Union["WarmThroughput", typing.Dict[builtins.str, typing.Any]]] = None,
14554
14836
  witness_region: typing.Optional[builtins.str] = None,
14555
14837
  contributor_insights: typing.Optional[builtins.bool] = None,
14838
+ contributor_insights_specification: typing.Optional[typing.Union[ContributorInsightsSpecification, typing.Dict[builtins.str, typing.Any]]] = None,
14556
14839
  deletion_protection: typing.Optional[builtins.bool] = None,
14557
14840
  kinesis_stream: typing.Optional[_IStream_4e2457d2] = None,
14558
14841
  point_in_time_recovery: typing.Optional[builtins.bool] = None,
@@ -14578,7 +14861,8 @@ class TableV2(
14578
14861
  :param time_to_live_attribute: The name of the TTL attribute. Default: - TTL is disabled
14579
14862
  :param warm_throughput: The warm throughput configuration for the table. Default: - no warm throughput is configured
14580
14863
  :param witness_region: The witness Region for the MRSC global table. A MRSC global table can be configured with either three replicas, or with two replicas and one witness. Note: Witness region cannot be specified for a Multi-Region Eventual Consistency (MREC) Global Table. Witness regions are only supported for Multi-Region Strong Consistency (MRSC) Global Tables. Default: - no witness region
14581
- :param contributor_insights: Whether CloudWatch contributor insights is enabled. Default: false
14864
+ :param contributor_insights: (deprecated) Whether CloudWatch contributor insights is enabled. Default: false
14865
+ :param contributor_insights_specification: Whether CloudWatch contributor insights is enabled and what mode is selected. Default: - contributor insights is not enabled
14582
14866
  :param deletion_protection: Whether deletion protection is enabled. Default: false
14583
14867
  :param kinesis_stream: Kinesis Data Stream to capture item level changes. Default: - no Kinesis Data Stream
14584
14868
  :param point_in_time_recovery: (deprecated) Whether point-in-time recovery is enabled. Default: false - point in time recovery is not enabled.
@@ -14607,6 +14891,7 @@ class TableV2(
14607
14891
  warm_throughput=warm_throughput,
14608
14892
  witness_region=witness_region,
14609
14893
  contributor_insights=contributor_insights,
14894
+ contributor_insights_specification=contributor_insights_specification,
14610
14895
  deletion_protection=deletion_protection,
14611
14896
  kinesis_stream=kinesis_stream,
14612
14897
  point_in_time_recovery=point_in_time_recovery,
@@ -14787,6 +15072,7 @@ class TableV2(
14787
15072
  max_read_request_units: typing.Optional[jsii.Number] = None,
14788
15073
  read_capacity: typing.Optional[Capacity] = None,
14789
15074
  contributor_insights: typing.Optional[builtins.bool] = None,
15075
+ contributor_insights_specification: typing.Optional[typing.Union[ContributorInsightsSpecification, typing.Dict[builtins.str, typing.Any]]] = None,
14790
15076
  deletion_protection: typing.Optional[builtins.bool] = None,
14791
15077
  kinesis_stream: typing.Optional[_IStream_4e2457d2] = None,
14792
15078
  point_in_time_recovery: typing.Optional[builtins.bool] = None,
@@ -14803,7 +15089,8 @@ class TableV2(
14803
15089
  :param global_secondary_index_options: Options used to configure global secondary index properties. Default: - inherited from the primary table
14804
15090
  :param max_read_request_units: The maximum read request units. Note: This can only be configured if the primary table billing is PAY_PER_REQUEST. Default: - inherited from the primary table
14805
15091
  :param read_capacity: The read capacity. Note: This can only be configured if the primary table billing is provisioned. Default: - inherited from the primary table
14806
- :param contributor_insights: Whether CloudWatch contributor insights is enabled. Default: false
15092
+ :param contributor_insights: (deprecated) Whether CloudWatch contributor insights is enabled. Default: false
15093
+ :param contributor_insights_specification: Whether CloudWatch contributor insights is enabled and what mode is selected. Default: - contributor insights is not enabled
14807
15094
  :param deletion_protection: Whether deletion protection is enabled. Default: false
14808
15095
  :param kinesis_stream: Kinesis Data Stream to capture item level changes. Default: - no Kinesis Data Stream
14809
15096
  :param point_in_time_recovery: (deprecated) Whether point-in-time recovery is enabled. Default: false - point in time recovery is not enabled.
@@ -14818,6 +15105,7 @@ class TableV2(
14818
15105
  max_read_request_units=max_read_request_units,
14819
15106
  read_capacity=read_capacity,
14820
15107
  contributor_insights=contributor_insights,
15108
+ contributor_insights_specification=contributor_insights_specification,
14821
15109
  deletion_protection=deletion_protection,
14822
15110
  kinesis_stream=kinesis_stream,
14823
15111
  point_in_time_recovery=point_in_time_recovery,
@@ -15215,6 +15503,7 @@ class WarmThroughput:
15215
15503
  "partition_key": "partitionKey",
15216
15504
  "sort_key": "sortKey",
15217
15505
  "contributor_insights_enabled": "contributorInsightsEnabled",
15506
+ "contributor_insights_specification": "contributorInsightsSpecification",
15218
15507
  "max_read_request_units": "maxReadRequestUnits",
15219
15508
  "max_write_request_units": "maxWriteRequestUnits",
15220
15509
  "read_capacity": "readCapacity",
@@ -15232,6 +15521,7 @@ class GlobalSecondaryIndexProps(SecondaryIndexProps, SchemaOptions):
15232
15521
  partition_key: typing.Union[Attribute, typing.Dict[builtins.str, typing.Any]],
15233
15522
  sort_key: typing.Optional[typing.Union[Attribute, typing.Dict[builtins.str, typing.Any]]] = None,
15234
15523
  contributor_insights_enabled: typing.Optional[builtins.bool] = None,
15524
+ contributor_insights_specification: typing.Optional[typing.Union[ContributorInsightsSpecification, typing.Dict[builtins.str, typing.Any]]] = None,
15235
15525
  max_read_request_units: typing.Optional[jsii.Number] = None,
15236
15526
  max_write_request_units: typing.Optional[jsii.Number] = None,
15237
15527
  read_capacity: typing.Optional[jsii.Number] = None,
@@ -15245,7 +15535,8 @@ class GlobalSecondaryIndexProps(SecondaryIndexProps, SchemaOptions):
15245
15535
  :param projection_type: The set of attributes that are projected into the secondary index. Default: ALL
15246
15536
  :param partition_key: Partition key attribute definition.
15247
15537
  :param sort_key: Sort key attribute definition. Default: no sort key
15248
- :param contributor_insights_enabled: Whether CloudWatch contributor insights is enabled for the specified global secondary index. Default: false
15538
+ :param contributor_insights_enabled: (deprecated) Whether CloudWatch contributor insights is enabled for the specified global secondary index. Default: false
15539
+ :param contributor_insights_specification: Whether CloudWatch contributor insights is enabled and what mode is selected. Default: - contributor insights is not enabled
15249
15540
  :param max_read_request_units: The maximum read request units for the global secondary index. Can only be provided if table billingMode is PAY_PER_REQUEST. Default: - on-demand throughput is disabled
15250
15541
  :param max_write_request_units: The maximum write request units for the global secondary index. Can only be provided if table billingMode is PAY_PER_REQUEST. Default: - on-demand throughput is disabled
15251
15542
  :param read_capacity: The read capacity for the global secondary index. Can only be provided if table billingMode is Provisioned or undefined. Default: 5
@@ -15258,11 +15549,14 @@ class GlobalSecondaryIndexProps(SecondaryIndexProps, SchemaOptions):
15258
15549
 
15259
15550
  table = dynamodb.Table(self, "Table",
15260
15551
  partition_key=dynamodb.Attribute(name="pk", type=dynamodb.AttributeType.STRING),
15261
- contributor_insights_enabled=True
15552
+ contributor_insights_specification=dynamodb.ContributorInsightsSpecification( # for a table
15553
+ enabled=True,
15554
+ mode=dynamodb.ContributorInsightsMode.THROTTLED_KEYS)
15262
15555
  )
15263
15556
 
15264
15557
  table.add_global_secondary_index(
15265
- contributor_insights_enabled=True, # for a specific global secondary index
15558
+ contributor_insights_specification=dynamodb.ContributorInsightsSpecification( # for a specific global secondary index
15559
+ enabled=True),
15266
15560
  index_name="gsi",
15267
15561
  partition_key=dynamodb.Attribute(name="pk", type=dynamodb.AttributeType.STRING)
15268
15562
  )
@@ -15271,6 +15565,8 @@ class GlobalSecondaryIndexProps(SecondaryIndexProps, SchemaOptions):
15271
15565
  partition_key = Attribute(**partition_key)
15272
15566
  if isinstance(sort_key, dict):
15273
15567
  sort_key = Attribute(**sort_key)
15568
+ if isinstance(contributor_insights_specification, dict):
15569
+ contributor_insights_specification = ContributorInsightsSpecification(**contributor_insights_specification)
15274
15570
  if isinstance(warm_throughput, dict):
15275
15571
  warm_throughput = WarmThroughput(**warm_throughput)
15276
15572
  if __debug__:
@@ -15281,6 +15577,7 @@ class GlobalSecondaryIndexProps(SecondaryIndexProps, SchemaOptions):
15281
15577
  check_type(argname="argument partition_key", value=partition_key, expected_type=type_hints["partition_key"])
15282
15578
  check_type(argname="argument sort_key", value=sort_key, expected_type=type_hints["sort_key"])
15283
15579
  check_type(argname="argument contributor_insights_enabled", value=contributor_insights_enabled, expected_type=type_hints["contributor_insights_enabled"])
15580
+ check_type(argname="argument contributor_insights_specification", value=contributor_insights_specification, expected_type=type_hints["contributor_insights_specification"])
15284
15581
  check_type(argname="argument max_read_request_units", value=max_read_request_units, expected_type=type_hints["max_read_request_units"])
15285
15582
  check_type(argname="argument max_write_request_units", value=max_write_request_units, expected_type=type_hints["max_write_request_units"])
15286
15583
  check_type(argname="argument read_capacity", value=read_capacity, expected_type=type_hints["read_capacity"])
@@ -15298,6 +15595,8 @@ class GlobalSecondaryIndexProps(SecondaryIndexProps, SchemaOptions):
15298
15595
  self._values["sort_key"] = sort_key
15299
15596
  if contributor_insights_enabled is not None:
15300
15597
  self._values["contributor_insights_enabled"] = contributor_insights_enabled
15598
+ if contributor_insights_specification is not None:
15599
+ self._values["contributor_insights_specification"] = contributor_insights_specification
15301
15600
  if max_read_request_units is not None:
15302
15601
  self._values["max_read_request_units"] = max_read_request_units
15303
15602
  if max_write_request_units is not None:
@@ -15352,13 +15651,28 @@ class GlobalSecondaryIndexProps(SecondaryIndexProps, SchemaOptions):
15352
15651
 
15353
15652
  @builtins.property
15354
15653
  def contributor_insights_enabled(self) -> typing.Optional[builtins.bool]:
15355
- '''Whether CloudWatch contributor insights is enabled for the specified global secondary index.
15654
+ '''(deprecated) Whether CloudWatch contributor insights is enabled for the specified global secondary index.
15356
15655
 
15357
15656
  :default: false
15657
+
15658
+ :deprecated: use ``contributorInsightsSpecification`` instead
15659
+
15660
+ :stability: deprecated
15358
15661
  '''
15359
15662
  result = self._values.get("contributor_insights_enabled")
15360
15663
  return typing.cast(typing.Optional[builtins.bool], result)
15361
15664
 
15665
+ @builtins.property
15666
+ def contributor_insights_specification(
15667
+ self,
15668
+ ) -> typing.Optional[ContributorInsightsSpecification]:
15669
+ '''Whether CloudWatch contributor insights is enabled and what mode is selected.
15670
+
15671
+ :default: - contributor insights is not enabled
15672
+ '''
15673
+ result = self._values.get("contributor_insights_specification")
15674
+ return typing.cast(typing.Optional[ContributorInsightsSpecification], result)
15675
+
15362
15676
  @builtins.property
15363
15677
  def max_read_request_units(self) -> typing.Optional[jsii.Number]:
15364
15678
  '''The maximum read request units for the global secondary index.
@@ -16038,6 +16352,7 @@ class OperationsMetricOptions(SystemErrorsForOperationsMetricOptions):
16038
16352
  jsii_struct_bases=[TableOptionsV2],
16039
16353
  name_mapping={
16040
16354
  "contributor_insights": "contributorInsights",
16355
+ "contributor_insights_specification": "contributorInsightsSpecification",
16041
16356
  "deletion_protection": "deletionProtection",
16042
16357
  "kinesis_stream": "kinesisStream",
16043
16358
  "point_in_time_recovery": "pointInTimeRecovery",
@@ -16056,6 +16371,7 @@ class ReplicaTableProps(TableOptionsV2):
16056
16371
  self,
16057
16372
  *,
16058
16373
  contributor_insights: typing.Optional[builtins.bool] = None,
16374
+ contributor_insights_specification: typing.Optional[typing.Union[ContributorInsightsSpecification, typing.Dict[builtins.str, typing.Any]]] = None,
16059
16375
  deletion_protection: typing.Optional[builtins.bool] = None,
16060
16376
  kinesis_stream: typing.Optional[_IStream_4e2457d2] = None,
16061
16377
  point_in_time_recovery: typing.Optional[builtins.bool] = None,
@@ -16070,7 +16386,8 @@ class ReplicaTableProps(TableOptionsV2):
16070
16386
  ) -> None:
16071
16387
  '''Properties used to configure a replica table.
16072
16388
 
16073
- :param contributor_insights: Whether CloudWatch contributor insights is enabled. Default: false
16389
+ :param contributor_insights: (deprecated) Whether CloudWatch contributor insights is enabled. Default: false
16390
+ :param contributor_insights_specification: Whether CloudWatch contributor insights is enabled and what mode is selected. Default: - contributor insights is not enabled
16074
16391
  :param deletion_protection: Whether deletion protection is enabled. Default: false
16075
16392
  :param kinesis_stream: Kinesis Data Stream to capture item level changes. Default: - no Kinesis Data Stream
16076
16393
  :param point_in_time_recovery: (deprecated) Whether point-in-time recovery is enabled. Default: false - point in time recovery is not enabled.
@@ -16100,11 +16417,14 @@ class ReplicaTableProps(TableOptionsV2):
16100
16417
 
16101
16418
  global_table.add_replica(region="us-east-2", deletion_protection=True)
16102
16419
  '''
16420
+ if isinstance(contributor_insights_specification, dict):
16421
+ contributor_insights_specification = ContributorInsightsSpecification(**contributor_insights_specification)
16103
16422
  if isinstance(point_in_time_recovery_specification, dict):
16104
16423
  point_in_time_recovery_specification = PointInTimeRecoverySpecification(**point_in_time_recovery_specification)
16105
16424
  if __debug__:
16106
16425
  type_hints = typing.get_type_hints(_typecheckingstub__7500a741eaeb840f48aaefcd8fc5fbbb8b1082165601116ca363e5ddbaa79e6f)
16107
16426
  check_type(argname="argument contributor_insights", value=contributor_insights, expected_type=type_hints["contributor_insights"])
16427
+ check_type(argname="argument contributor_insights_specification", value=contributor_insights_specification, expected_type=type_hints["contributor_insights_specification"])
16108
16428
  check_type(argname="argument deletion_protection", value=deletion_protection, expected_type=type_hints["deletion_protection"])
16109
16429
  check_type(argname="argument kinesis_stream", value=kinesis_stream, expected_type=type_hints["kinesis_stream"])
16110
16430
  check_type(argname="argument point_in_time_recovery", value=point_in_time_recovery, expected_type=type_hints["point_in_time_recovery"])
@@ -16121,6 +16441,8 @@ class ReplicaTableProps(TableOptionsV2):
16121
16441
  }
16122
16442
  if contributor_insights is not None:
16123
16443
  self._values["contributor_insights"] = contributor_insights
16444
+ if contributor_insights_specification is not None:
16445
+ self._values["contributor_insights_specification"] = contributor_insights_specification
16124
16446
  if deletion_protection is not None:
16125
16447
  self._values["deletion_protection"] = deletion_protection
16126
16448
  if kinesis_stream is not None:
@@ -16144,13 +16466,28 @@ class ReplicaTableProps(TableOptionsV2):
16144
16466
 
16145
16467
  @builtins.property
16146
16468
  def contributor_insights(self) -> typing.Optional[builtins.bool]:
16147
- '''Whether CloudWatch contributor insights is enabled.
16469
+ '''(deprecated) Whether CloudWatch contributor insights is enabled.
16148
16470
 
16149
16471
  :default: false
16472
+
16473
+ :deprecated: use ``contributorInsightsSpecification`` instead
16474
+
16475
+ :stability: deprecated
16150
16476
  '''
16151
16477
  result = self._values.get("contributor_insights")
16152
16478
  return typing.cast(typing.Optional[builtins.bool], result)
16153
16479
 
16480
+ @builtins.property
16481
+ def contributor_insights_specification(
16482
+ self,
16483
+ ) -> typing.Optional[ContributorInsightsSpecification]:
16484
+ '''Whether CloudWatch contributor insights is enabled and what mode is selected.
16485
+
16486
+ :default: - contributor insights is not enabled
16487
+ '''
16488
+ result = self._values.get("contributor_insights_specification")
16489
+ return typing.cast(typing.Optional[ContributorInsightsSpecification], result)
16490
+
16154
16491
  @builtins.property
16155
16492
  def deletion_protection(self) -> typing.Optional[builtins.bool]:
16156
16493
  '''Whether deletion protection is enabled.
@@ -16318,6 +16655,7 @@ class Table(
16318
16655
  table_name: typing.Optional[builtins.str] = None,
16319
16656
  billing_mode: typing.Optional[BillingMode] = None,
16320
16657
  contributor_insights_enabled: typing.Optional[builtins.bool] = None,
16658
+ contributor_insights_specification: typing.Optional[typing.Union[ContributorInsightsSpecification, typing.Dict[builtins.str, typing.Any]]] = None,
16321
16659
  deletion_protection: typing.Optional[builtins.bool] = None,
16322
16660
  encryption: typing.Optional[TableEncryption] = None,
16323
16661
  encryption_key: typing.Optional[_IKey_5f11635f] = None,
@@ -16348,7 +16686,8 @@ class Table(
16348
16686
  :param kinesis_stream: Kinesis Data Stream to capture item-level changes for the table. Default: - no Kinesis Data Stream
16349
16687
  :param table_name: Enforces a particular physical table name. Default:
16350
16688
  :param billing_mode: Specify how you are charged for read and write throughput and how you manage capacity. Default: PROVISIONED if ``replicationRegions`` is not specified, PAY_PER_REQUEST otherwise
16351
- :param contributor_insights_enabled: Whether CloudWatch contributor insights is enabled. Default: false
16689
+ :param contributor_insights_enabled: (deprecated) Whether CloudWatch contributor insights is enabled. Default: false
16690
+ :param contributor_insights_specification: Whether CloudWatch contributor insights is enabled and what mode is selected. Default: - contributor insights is not enabled
16352
16691
  :param deletion_protection: Enables deletion protection for the table. Default: false
16353
16692
  :param encryption: Whether server-side encryption with an AWS managed customer master key is enabled. This property cannot be set if ``serverSideEncryption`` is set. .. epigraph:: **NOTE**: if you set this to ``CUSTOMER_MANAGED`` and ``encryptionKey`` is not specified, the key that the Tablet generates for you will be created with default permissions. If you are using CDKv2, these permissions will be sufficient to enable the key for use with DynamoDB tables. If you are using CDKv1, make sure the feature flag ``@aws-cdk/aws-kms:defaultKeyPolicies`` is set to ``true`` in your ``cdk.json``. Default: - The table is encrypted with an encryption key managed by DynamoDB, and you are not charged any fee for using it.
16354
16693
  :param encryption_key: External KMS key to use for table encryption. This property can only be set if ``encryption`` is set to ``TableEncryption.CUSTOMER_MANAGED``. Default: - If ``encryption`` is set to ``TableEncryption.CUSTOMER_MANAGED`` and this property is undefined, a new KMS key will be created and associated with this table. If ``encryption`` and this property are both undefined, then the table is encrypted with an encryption key managed by DynamoDB, and you are not charged any fee for using it.
@@ -16382,6 +16721,7 @@ class Table(
16382
16721
  table_name=table_name,
16383
16722
  billing_mode=billing_mode,
16384
16723
  contributor_insights_enabled=contributor_insights_enabled,
16724
+ contributor_insights_specification=contributor_insights_specification,
16385
16725
  deletion_protection=deletion_protection,
16386
16726
  encryption=encryption,
16387
16727
  encryption_key=encryption_key,
@@ -16498,6 +16838,7 @@ class Table(
16498
16838
  self,
16499
16839
  *,
16500
16840
  contributor_insights_enabled: typing.Optional[builtins.bool] = None,
16841
+ contributor_insights_specification: typing.Optional[typing.Union[ContributorInsightsSpecification, typing.Dict[builtins.str, typing.Any]]] = None,
16501
16842
  max_read_request_units: typing.Optional[jsii.Number] = None,
16502
16843
  max_write_request_units: typing.Optional[jsii.Number] = None,
16503
16844
  read_capacity: typing.Optional[jsii.Number] = None,
@@ -16511,7 +16852,8 @@ class Table(
16511
16852
  ) -> None:
16512
16853
  '''Add a global secondary index of table.
16513
16854
 
16514
- :param contributor_insights_enabled: Whether CloudWatch contributor insights is enabled for the specified global secondary index. Default: false
16855
+ :param contributor_insights_enabled: (deprecated) Whether CloudWatch contributor insights is enabled for the specified global secondary index. Default: false
16856
+ :param contributor_insights_specification: Whether CloudWatch contributor insights is enabled and what mode is selected. Default: - contributor insights is not enabled
16515
16857
  :param max_read_request_units: The maximum read request units for the global secondary index. Can only be provided if table billingMode is PAY_PER_REQUEST. Default: - on-demand throughput is disabled
16516
16858
  :param max_write_request_units: The maximum write request units for the global secondary index. Can only be provided if table billingMode is PAY_PER_REQUEST. Default: - on-demand throughput is disabled
16517
16859
  :param read_capacity: The read capacity for the global secondary index. Can only be provided if table billingMode is Provisioned or undefined. Default: 5
@@ -16525,6 +16867,7 @@ class Table(
16525
16867
  '''
16526
16868
  props = GlobalSecondaryIndexProps(
16527
16869
  contributor_insights_enabled=contributor_insights_enabled,
16870
+ contributor_insights_specification=contributor_insights_specification,
16528
16871
  max_read_request_units=max_read_request_units,
16529
16872
  max_write_request_units=max_write_request_units,
16530
16873
  read_capacity=read_capacity,
@@ -16744,6 +17087,8 @@ __all__ = [
16744
17087
  "CfnGlobalTableProps",
16745
17088
  "CfnTable",
16746
17089
  "CfnTableProps",
17090
+ "ContributorInsightsMode",
17091
+ "ContributorInsightsSpecification",
16747
17092
  "CsvOptions",
16748
17093
  "EnableScalingProps",
16749
17094
  "GlobalSecondaryIndexProps",
@@ -17509,6 +17854,14 @@ def _typecheckingstub__0b7f8e29621d526383ce725f2daafbe00b52cfe2381995edac86b72a6
17509
17854
  """Type checking stubs"""
17510
17855
  pass
17511
17856
 
17857
+ def _typecheckingstub__656543bd456aefaef11a80dfb0950fe5597d4bc0465f2f4fdec81a81dfe7358d(
17858
+ *,
17859
+ enabled: builtins.bool,
17860
+ mode: typing.Optional[ContributorInsightsMode] = None,
17861
+ ) -> None:
17862
+ """Type checking stubs"""
17863
+ pass
17864
+
17512
17865
  def _typecheckingstub__ea195ac1b9cf7ff33466083daefb8a95f1a8ce8a200cbc595c25050dc94670eb(
17513
17866
  *,
17514
17867
  delimiter: typing.Optional[builtins.str] = None,
@@ -17637,6 +17990,7 @@ def _typecheckingstub__4073f2e85ef31d8deba5f90be11b466e4a3f1ea003482bf5c4df5706f
17637
17990
  def _typecheckingstub__eaa3a170e1978a5997011b8319bcd83bf34642dac50e342aad0705ee28b15714(
17638
17991
  *,
17639
17992
  contributor_insights: typing.Optional[builtins.bool] = None,
17993
+ contributor_insights_specification: typing.Optional[typing.Union[ContributorInsightsSpecification, typing.Dict[builtins.str, typing.Any]]] = None,
17640
17994
  max_read_request_units: typing.Optional[jsii.Number] = None,
17641
17995
  read_capacity: typing.Optional[Capacity] = None,
17642
17996
  ) -> None:
@@ -17944,6 +18298,7 @@ def _typecheckingstub__dadf5733fac70178ab246582a0b777b8c203659229753a8396594d751
17944
18298
  sort_key: typing.Optional[typing.Union[Attribute, typing.Dict[builtins.str, typing.Any]]] = None,
17945
18299
  billing_mode: typing.Optional[BillingMode] = None,
17946
18300
  contributor_insights_enabled: typing.Optional[builtins.bool] = None,
18301
+ contributor_insights_specification: typing.Optional[typing.Union[ContributorInsightsSpecification, typing.Dict[builtins.str, typing.Any]]] = None,
17947
18302
  deletion_protection: typing.Optional[builtins.bool] = None,
17948
18303
  encryption: typing.Optional[TableEncryption] = None,
17949
18304
  encryption_key: typing.Optional[_IKey_5f11635f] = None,
@@ -17971,6 +18326,7 @@ def _typecheckingstub__dadf5733fac70178ab246582a0b777b8c203659229753a8396594d751
17971
18326
  def _typecheckingstub__1b65ee3c8ef5c3b632f4d1fad233252caadaa5f607c0fd92f49b64933f1de51c(
17972
18327
  *,
17973
18328
  contributor_insights: typing.Optional[builtins.bool] = None,
18329
+ contributor_insights_specification: typing.Optional[typing.Union[ContributorInsightsSpecification, typing.Dict[builtins.str, typing.Any]]] = None,
17974
18330
  deletion_protection: typing.Optional[builtins.bool] = None,
17975
18331
  kinesis_stream: typing.Optional[_IStream_4e2457d2] = None,
17976
18332
  point_in_time_recovery: typing.Optional[builtins.bool] = None,
@@ -17988,6 +18344,7 @@ def _typecheckingstub__00475a5e14af8c4c7049089f69b3d29ad81bc91e7e1f0a5a5b7b794a5
17988
18344
  sort_key: typing.Optional[typing.Union[Attribute, typing.Dict[builtins.str, typing.Any]]] = None,
17989
18345
  billing_mode: typing.Optional[BillingMode] = None,
17990
18346
  contributor_insights_enabled: typing.Optional[builtins.bool] = None,
18347
+ contributor_insights_specification: typing.Optional[typing.Union[ContributorInsightsSpecification, typing.Dict[builtins.str, typing.Any]]] = None,
17991
18348
  deletion_protection: typing.Optional[builtins.bool] = None,
17992
18349
  encryption: typing.Optional[TableEncryption] = None,
17993
18350
  encryption_key: typing.Optional[_IKey_5f11635f] = None,
@@ -18018,6 +18375,7 @@ def _typecheckingstub__00475a5e14af8c4c7049089f69b3d29ad81bc91e7e1f0a5a5b7b794a5
18018
18375
  def _typecheckingstub__205e5df85e01c6c2d91d5922a57e3ed5903027748a8b3222622bebd1077e84ba(
18019
18376
  *,
18020
18377
  contributor_insights: typing.Optional[builtins.bool] = None,
18378
+ contributor_insights_specification: typing.Optional[typing.Union[ContributorInsightsSpecification, typing.Dict[builtins.str, typing.Any]]] = None,
18021
18379
  deletion_protection: typing.Optional[builtins.bool] = None,
18022
18380
  kinesis_stream: typing.Optional[_IStream_4e2457d2] = None,
18023
18381
  point_in_time_recovery: typing.Optional[builtins.bool] = None,
@@ -18062,6 +18420,7 @@ def _typecheckingstub__9ea47b003cdb497ff620f1410260696f97dbb2b00fa8558235f23771f
18062
18420
  warm_throughput: typing.Optional[typing.Union[WarmThroughput, typing.Dict[builtins.str, typing.Any]]] = None,
18063
18421
  witness_region: typing.Optional[builtins.str] = None,
18064
18422
  contributor_insights: typing.Optional[builtins.bool] = None,
18423
+ contributor_insights_specification: typing.Optional[typing.Union[ContributorInsightsSpecification, typing.Dict[builtins.str, typing.Any]]] = None,
18065
18424
  deletion_protection: typing.Optional[builtins.bool] = None,
18066
18425
  kinesis_stream: typing.Optional[_IStream_4e2457d2] = None,
18067
18426
  point_in_time_recovery: typing.Optional[builtins.bool] = None,
@@ -18152,6 +18511,7 @@ def _typecheckingstub__7f586bf63a567e16bde337be791f392306be66abca1c4abb791989fb9
18152
18511
  partition_key: typing.Union[Attribute, typing.Dict[builtins.str, typing.Any]],
18153
18512
  sort_key: typing.Optional[typing.Union[Attribute, typing.Dict[builtins.str, typing.Any]]] = None,
18154
18513
  contributor_insights_enabled: typing.Optional[builtins.bool] = None,
18514
+ contributor_insights_specification: typing.Optional[typing.Union[ContributorInsightsSpecification, typing.Dict[builtins.str, typing.Any]]] = None,
18155
18515
  max_read_request_units: typing.Optional[jsii.Number] = None,
18156
18516
  max_write_request_units: typing.Optional[jsii.Number] = None,
18157
18517
  read_capacity: typing.Optional[jsii.Number] = None,
@@ -18209,6 +18569,7 @@ def _typecheckingstub__323fc564f2052282a189a09de9130b5d9a855212d7bd5a514ddb98a52
18209
18569
  def _typecheckingstub__7500a741eaeb840f48aaefcd8fc5fbbb8b1082165601116ca363e5ddbaa79e6f(
18210
18570
  *,
18211
18571
  contributor_insights: typing.Optional[builtins.bool] = None,
18572
+ contributor_insights_specification: typing.Optional[typing.Union[ContributorInsightsSpecification, typing.Dict[builtins.str, typing.Any]]] = None,
18212
18573
  deletion_protection: typing.Optional[builtins.bool] = None,
18213
18574
  kinesis_stream: typing.Optional[_IStream_4e2457d2] = None,
18214
18575
  point_in_time_recovery: typing.Optional[builtins.bool] = None,
@@ -18233,6 +18594,7 @@ def _typecheckingstub__b92f0ed514f00b57a2a41d754e55fe495d22b05b0ad4711b80ce00457
18233
18594
  table_name: typing.Optional[builtins.str] = None,
18234
18595
  billing_mode: typing.Optional[BillingMode] = None,
18235
18596
  contributor_insights_enabled: typing.Optional[builtins.bool] = None,
18597
+ contributor_insights_specification: typing.Optional[typing.Union[ContributorInsightsSpecification, typing.Dict[builtins.str, typing.Any]]] = None,
18236
18598
  deletion_protection: typing.Optional[builtins.bool] = None,
18237
18599
  encryption: typing.Optional[TableEncryption] = None,
18238
18600
  encryption_key: typing.Optional[_IKey_5f11635f] = None,