aws-cdk-lib 2.154.1__py3-none-any.whl → 2.156.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 (37) hide show
  1. aws_cdk/__init__.py +2 -2
  2. aws_cdk/_jsii/__init__.py +1 -1
  3. aws_cdk/_jsii/{aws-cdk-lib@2.154.1.jsii.tgz → aws-cdk-lib@2.156.0.jsii.tgz} +0 -0
  4. aws_cdk/assertions/__init__.py +17 -17
  5. aws_cdk/aws_bedrock/__init__.py +22 -4
  6. aws_cdk/aws_cloudfront/__init__.py +654 -59
  7. aws_cdk/aws_cloudfront_origins/__init__.py +2034 -91
  8. aws_cdk/aws_codebuild/__init__.py +349 -8
  9. aws_cdk/aws_docdb/__init__.py +78 -6
  10. aws_cdk/aws_ec2/__init__.py +250 -61
  11. aws_cdk/aws_ecs/__init__.py +18 -14
  12. aws_cdk/aws_ecs_patterns/__init__.py +129 -11
  13. aws_cdk/aws_eks/__init__.py +74 -8
  14. aws_cdk/aws_elasticloadbalancingv2/__init__.py +22 -46
  15. aws_cdk/aws_events/__init__.py +40 -14
  16. aws_cdk/aws_events_targets/__init__.py +357 -0
  17. aws_cdk/aws_iam/__init__.py +7 -8
  18. aws_cdk/aws_ivs/__init__.py +10 -8
  19. aws_cdk/aws_kms/__init__.py +89 -10
  20. aws_cdk/aws_lambda/__init__.py +38 -23
  21. aws_cdk/aws_lambda_event_sources/__init__.py +27 -0
  22. aws_cdk/aws_rds/__init__.py +12 -0
  23. aws_cdk/aws_s3/__init__.py +13 -14
  24. aws_cdk/aws_secretsmanager/__init__.py +3 -2
  25. aws_cdk/aws_ses/__init__.py +7 -7
  26. aws_cdk/aws_ssmcontacts/__init__.py +12 -0
  27. aws_cdk/aws_stepfunctions/__init__.py +12 -14
  28. aws_cdk/aws_stepfunctions_tasks/__init__.py +178 -41
  29. aws_cdk/aws_synthetics/__init__.py +26 -0
  30. aws_cdk/custom_resources/__init__.py +106 -1
  31. aws_cdk/cx_api/__init__.py +16 -0
  32. {aws_cdk_lib-2.154.1.dist-info → aws_cdk_lib-2.156.0.dist-info}/METADATA +1 -1
  33. {aws_cdk_lib-2.154.1.dist-info → aws_cdk_lib-2.156.0.dist-info}/RECORD +37 -37
  34. {aws_cdk_lib-2.154.1.dist-info → aws_cdk_lib-2.156.0.dist-info}/LICENSE +0 -0
  35. {aws_cdk_lib-2.154.1.dist-info → aws_cdk_lib-2.156.0.dist-info}/NOTICE +0 -0
  36. {aws_cdk_lib-2.154.1.dist-info → aws_cdk_lib-2.156.0.dist-info}/WHEEL +0 -0
  37. {aws_cdk_lib-2.154.1.dist-info → aws_cdk_lib-2.156.0.dist-info}/top_level.txt +0 -0
@@ -2558,7 +2558,7 @@ class CfnStage(
2558
2558
  '''
2559
2559
  :param scope: Scope in which this resource is defined.
2560
2560
  :param id: Construct identifier for this resource (unique in its scope).
2561
- :param auto_participant_recording_configuration: An object representing a configuration to record a channel stream.
2561
+ :param auto_participant_recording_configuration: Configuration object for individual participant recording, to attach to the new stage.
2562
2562
  :param name: Stage name.
2563
2563
  :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-ivs-stage-tag.html>`_ .
2564
2564
  '''
@@ -2642,7 +2642,7 @@ class CfnStage(
2642
2642
  def auto_participant_recording_configuration(
2643
2643
  self,
2644
2644
  ) -> typing.Optional[typing.Union[_IResolvable_da3f097b, "CfnStage.AutoParticipantRecordingConfigurationProperty"]]:
2645
- '''An object representing a configuration to record a channel stream.'''
2645
+ '''Configuration object for individual participant recording, to attach to the new stage.'''
2646
2646
  return typing.cast(typing.Optional[typing.Union[_IResolvable_da3f097b, "CfnStage.AutoParticipantRecordingConfigurationProperty"]], jsii.get(self, "autoParticipantRecordingConfiguration"))
2647
2647
 
2648
2648
  @auto_participant_recording_configuration.setter
@@ -2696,10 +2696,10 @@ class CfnStage(
2696
2696
  storage_configuration_arn: builtins.str,
2697
2697
  media_types: typing.Optional[typing.Sequence[builtins.str]] = None,
2698
2698
  ) -> None:
2699
- '''Configuration object for individual participant recording, to attach to the new stage.
2699
+ '''The ``AWS::IVS::AutoParticipantRecordingConfiguration`` property type describes a configuration for individual participant recording.
2700
2700
 
2701
- :param storage_configuration_arn: ARN of the StorageConfiguration resource to use for individual participant recording.
2702
- :param media_types: Types of media to be recorded. Default: AUDIO_VIDEO.
2701
+ :param storage_configuration_arn: ARN of the StorageConfiguration resource to use for individual participant recording. Default: "" (empty string, no storage configuration is specified). Individual participant recording cannot be started unless a storage configuration is specified, when a Stage is created or updated.
2702
+ :param media_types: Types of media to be recorded. Default: ``AUDIO_VIDEO`` .
2703
2703
 
2704
2704
  :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ivs-stage-autoparticipantrecordingconfiguration.html
2705
2705
  :exampleMetadata: fixture=_generated
@@ -2731,6 +2731,8 @@ class CfnStage(
2731
2731
  def storage_configuration_arn(self) -> builtins.str:
2732
2732
  '''ARN of the StorageConfiguration resource to use for individual participant recording.
2733
2733
 
2734
+ Default: "" (empty string, no storage configuration is specified). Individual participant recording cannot be started unless a storage configuration is specified, when a Stage is created or updated.
2735
+
2734
2736
  :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ivs-stage-autoparticipantrecordingconfiguration.html#cfn-ivs-stage-autoparticipantrecordingconfiguration-storageconfigurationarn
2735
2737
  '''
2736
2738
  result = self._values.get("storage_configuration_arn")
@@ -2741,7 +2743,7 @@ class CfnStage(
2741
2743
  def media_types(self) -> typing.Optional[typing.List[builtins.str]]:
2742
2744
  '''Types of media to be recorded.
2743
2745
 
2744
- Default: AUDIO_VIDEO.
2746
+ Default: ``AUDIO_VIDEO`` .
2745
2747
 
2746
2748
  :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ivs-stage-autoparticipantrecordingconfiguration.html#cfn-ivs-stage-autoparticipantrecordingconfiguration-mediatypes
2747
2749
  '''
@@ -2779,7 +2781,7 @@ class CfnStageProps:
2779
2781
  ) -> None:
2780
2782
  '''Properties for defining a ``CfnStage``.
2781
2783
 
2782
- :param auto_participant_recording_configuration: An object representing a configuration to record a channel stream.
2784
+ :param auto_participant_recording_configuration: Configuration object for individual participant recording, to attach to the new stage.
2783
2785
  :param name: Stage name.
2784
2786
  :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-ivs-stage-tag.html>`_ .
2785
2787
 
@@ -2823,7 +2825,7 @@ class CfnStageProps:
2823
2825
  def auto_participant_recording_configuration(
2824
2826
  self,
2825
2827
  ) -> typing.Optional[typing.Union[_IResolvable_da3f097b, CfnStage.AutoParticipantRecordingConfigurationProperty]]:
2826
- '''An object representing a configuration to record a channel stream.
2828
+ '''Configuration object for individual participant recording, to attach to the new stage.
2827
2829
 
2828
2830
  :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ivs-stage.html#cfn-ivs-stage-autoparticipantrecordingconfiguration
2829
2831
  '''
@@ -39,6 +39,14 @@ key = kms.Key(self, "MyKey",
39
39
  )
40
40
  ```
41
41
 
42
+ Create a multi-Region primary key:
43
+
44
+ ```python
45
+ key = kms.Key(self, "MyKey",
46
+ multi_region=True
47
+ )
48
+ ```
49
+
42
50
  ## Sharing keys between stacks
43
51
 
44
52
  To use a KMS key in a different stack in the same CDK application,
@@ -700,10 +708,49 @@ class CfnKey(
700
708
 
701
709
  Example::
702
710
 
703
- # cfn_template: cfn_inc.CfnInclude
711
+ import aws_cdk.aws_kms as kms
704
712
 
705
- cfn_key = cfn_template.get_resource("Key")
706
- key = kms.Key.from_cfn_key(cfn_key)
713
+
714
+ kms_key = kms.Key(self, "myKMSKey")
715
+ my_bucket = s3.Bucket(self, "mySSEKMSEncryptedBucket",
716
+ encryption=s3.BucketEncryption.KMS,
717
+ encryption_key=kms_key,
718
+ object_ownership=s3.ObjectOwnership.BUCKET_OWNER_ENFORCED
719
+ )
720
+ cloudfront.Distribution(self, "myDist",
721
+ default_behavior=cloudfront.BehaviorOptions(
722
+ origin=origins.S3BucketOrigin.with_origin_access_control(my_bucket)
723
+ )
724
+ )
725
+
726
+ # Add the following to scope down the key policy
727
+ scoped_down_key_policy = {
728
+ "Version": "2012-10-17",
729
+ "Statement": [{
730
+ "Effect": "Allow",
731
+ "Principal": {
732
+ "AWS": "arn:aws:iam::111122223333:root"
733
+ },
734
+ "Action": "kms:*",
735
+ "Resource": "*"
736
+ }, {
737
+ "Effect": "Allow",
738
+ "Principal": {
739
+ "Service": "cloudfront.amazonaws.com"
740
+ },
741
+ "Action": ["kms:Decrypt", "kms:Encrypt", "kms:GenerateDataKey*"
742
+ ],
743
+ "Resource": "*",
744
+ "Condition": {
745
+ "StringEquals": {
746
+ "AWS:SourceArn": "arn:aws:cloudfront::111122223333:distribution/<CloudFront distribution ID>"
747
+ }
748
+ }
749
+ }
750
+ ]
751
+ }
752
+ cfn_key = (kms_key.node.default_child)
753
+ cfn_key.key_policy = scoped_down_key_policy
707
754
  '''
708
755
 
709
756
  def __init__(
@@ -2078,15 +2125,19 @@ class Key(
2078
2125
 
2079
2126
  Example::
2080
2127
 
2081
- # destination_bucket: s3.Bucket
2128
+ import aws_cdk.aws_kms as kms
2082
2129
 
2083
- source_bucket = s3.Bucket.from_bucket_attributes(self, "SourceBucket",
2084
- bucket_arn="arn:aws:s3:::my-source-bucket-name",
2085
- encryption_key=kms.Key.from_key_arn(self, "SourceBucketEncryptionKey", "arn:aws:kms:us-east-1:123456789012:key/<key-id>")
2130
+
2131
+ my_kms_key = kms.Key(self, "myKMSKey")
2132
+ my_bucket = s3.Bucket(self, "mySSEKMSEncryptedBucket",
2133
+ encryption=s3.BucketEncryption.KMS,
2134
+ encryption_key=my_kms_key,
2135
+ object_ownership=s3.ObjectOwnership.BUCKET_OWNER_ENFORCED
2086
2136
  )
2087
- deployment = s3deploy.BucketDeployment(self, "DeployFiles",
2088
- sources=[s3deploy.Source.bucket(source_bucket, "source.zip")],
2089
- destination_bucket=destination_bucket
2137
+ cloudfront.Distribution(self, "myDist",
2138
+ default_behavior=cloudfront.BehaviorOptions(
2139
+ origin=origins.S3BucketOrigin.with_origin_access_control(my_bucket)
2140
+ )
2090
2141
  )
2091
2142
  '''
2092
2143
 
@@ -2102,6 +2153,7 @@ class Key(
2102
2153
  enable_key_rotation: typing.Optional[builtins.bool] = None,
2103
2154
  key_spec: typing.Optional["KeySpec"] = None,
2104
2155
  key_usage: typing.Optional["KeyUsage"] = None,
2156
+ multi_region: typing.Optional[builtins.bool] = None,
2105
2157
  pending_window: typing.Optional[_Duration_4839e8c3] = None,
2106
2158
  policy: typing.Optional[_PolicyDocument_3ac34393] = None,
2107
2159
  removal_policy: typing.Optional[_RemovalPolicy_9f93c814] = None,
@@ -2117,6 +2169,7 @@ class Key(
2117
2169
  :param enable_key_rotation: Indicates whether AWS KMS rotates the key. Default: false
2118
2170
  :param key_spec: The cryptographic configuration of the key. The valid value depends on usage of the key. IMPORTANT: If you change this property of an existing key, the existing key is scheduled for deletion and a new key is created with the specified value. Default: KeySpec.SYMMETRIC_DEFAULT
2119
2171
  :param key_usage: The cryptographic operations for which the key can be used. IMPORTANT: If you change this property of an existing key, the existing key is scheduled for deletion and a new key is created with the specified value. Default: KeyUsage.ENCRYPT_DECRYPT
2172
+ :param multi_region: Creates a multi-Region primary key that you can replicate in other AWS Regions. You can't change the ``multiRegion`` value after the KMS key is created. IMPORTANT: If you change the value of the ``multiRegion`` property on an existing KMS key, the update request fails, regardless of the value of the UpdateReplacePolicy attribute. This prevents you from accidentally deleting a KMS key by changing an immutable property value. Default: false
2120
2173
  :param pending_window: Specifies the number of days in the waiting period before AWS KMS deletes a CMK that has been removed from a CloudFormation stack. When you remove a customer master key (CMK) from a CloudFormation stack, AWS KMS schedules the CMK for deletion and starts the mandatory waiting period. The PendingWindowInDays property determines the length of waiting period. During the waiting period, the key state of CMK is Pending Deletion, which prevents the CMK from being used in cryptographic operations. When the waiting period expires, AWS KMS permanently deletes the CMK. Enter a value between 7 and 30 days. Default: - 30 days
2121
2174
  :param policy: Custom policy document to attach to the KMS key. NOTE - If the ``@aws-cdk/aws-kms:defaultKeyPolicies`` feature flag is set (the default for new projects), this policy will *override* the default key policy and become the only key policy for the key. If the feature flag is not set, this policy will be appended to the default key policy. Default: - A policy document with permissions for the account root to administer the key will be created.
2122
2175
  :param removal_policy: Whether the encryption key should be retained when it is removed from the Stack. This is useful when one wants to retain access to data that was encrypted with a key that is being retired. Default: RemovalPolicy.Retain
@@ -2134,6 +2187,7 @@ class Key(
2134
2187
  enable_key_rotation=enable_key_rotation,
2135
2188
  key_spec=key_spec,
2136
2189
  key_usage=key_usage,
2190
+ multi_region=multi_region,
2137
2191
  pending_window=pending_window,
2138
2192
  policy=policy,
2139
2193
  removal_policy=removal_policy,
@@ -2439,6 +2493,7 @@ class KeyLookupOptions:
2439
2493
  "enable_key_rotation": "enableKeyRotation",
2440
2494
  "key_spec": "keySpec",
2441
2495
  "key_usage": "keyUsage",
2496
+ "multi_region": "multiRegion",
2442
2497
  "pending_window": "pendingWindow",
2443
2498
  "policy": "policy",
2444
2499
  "removal_policy": "removalPolicy",
@@ -2456,6 +2511,7 @@ class KeyProps:
2456
2511
  enable_key_rotation: typing.Optional[builtins.bool] = None,
2457
2512
  key_spec: typing.Optional["KeySpec"] = None,
2458
2513
  key_usage: typing.Optional["KeyUsage"] = None,
2514
+ multi_region: typing.Optional[builtins.bool] = None,
2459
2515
  pending_window: typing.Optional[_Duration_4839e8c3] = None,
2460
2516
  policy: typing.Optional[_PolicyDocument_3ac34393] = None,
2461
2517
  removal_policy: typing.Optional[_RemovalPolicy_9f93c814] = None,
@@ -2470,6 +2526,7 @@ class KeyProps:
2470
2526
  :param enable_key_rotation: Indicates whether AWS KMS rotates the key. Default: false
2471
2527
  :param key_spec: The cryptographic configuration of the key. The valid value depends on usage of the key. IMPORTANT: If you change this property of an existing key, the existing key is scheduled for deletion and a new key is created with the specified value. Default: KeySpec.SYMMETRIC_DEFAULT
2472
2528
  :param key_usage: The cryptographic operations for which the key can be used. IMPORTANT: If you change this property of an existing key, the existing key is scheduled for deletion and a new key is created with the specified value. Default: KeyUsage.ENCRYPT_DECRYPT
2529
+ :param multi_region: Creates a multi-Region primary key that you can replicate in other AWS Regions. You can't change the ``multiRegion`` value after the KMS key is created. IMPORTANT: If you change the value of the ``multiRegion`` property on an existing KMS key, the update request fails, regardless of the value of the UpdateReplacePolicy attribute. This prevents you from accidentally deleting a KMS key by changing an immutable property value. Default: false
2473
2530
  :param pending_window: Specifies the number of days in the waiting period before AWS KMS deletes a CMK that has been removed from a CloudFormation stack. When you remove a customer master key (CMK) from a CloudFormation stack, AWS KMS schedules the CMK for deletion and starts the mandatory waiting period. The PendingWindowInDays property determines the length of waiting period. During the waiting period, the key state of CMK is Pending Deletion, which prevents the CMK from being used in cryptographic operations. When the waiting period expires, AWS KMS permanently deletes the CMK. Enter a value between 7 and 30 days. Default: - 30 days
2474
2531
  :param policy: Custom policy document to attach to the KMS key. NOTE - If the ``@aws-cdk/aws-kms:defaultKeyPolicies`` feature flag is set (the default for new projects), this policy will *override* the default key policy and become the only key policy for the key. If the feature flag is not set, this policy will be appended to the default key policy. Default: - A policy document with permissions for the account root to administer the key will be created.
2475
2532
  :param removal_policy: Whether the encryption key should be retained when it is removed from the Stack. This is useful when one wants to retain access to data that was encrypted with a key that is being retired. Default: RemovalPolicy.Retain
@@ -2509,6 +2566,7 @@ class KeyProps:
2509
2566
  check_type(argname="argument enable_key_rotation", value=enable_key_rotation, expected_type=type_hints["enable_key_rotation"])
2510
2567
  check_type(argname="argument key_spec", value=key_spec, expected_type=type_hints["key_spec"])
2511
2568
  check_type(argname="argument key_usage", value=key_usage, expected_type=type_hints["key_usage"])
2569
+ check_type(argname="argument multi_region", value=multi_region, expected_type=type_hints["multi_region"])
2512
2570
  check_type(argname="argument pending_window", value=pending_window, expected_type=type_hints["pending_window"])
2513
2571
  check_type(argname="argument policy", value=policy, expected_type=type_hints["policy"])
2514
2572
  check_type(argname="argument removal_policy", value=removal_policy, expected_type=type_hints["removal_policy"])
@@ -2528,6 +2586,8 @@ class KeyProps:
2528
2586
  self._values["key_spec"] = key_spec
2529
2587
  if key_usage is not None:
2530
2588
  self._values["key_usage"] = key_usage
2589
+ if multi_region is not None:
2590
+ self._values["multi_region"] = multi_region
2531
2591
  if pending_window is not None:
2532
2592
  self._values["pending_window"] = pending_window
2533
2593
  if policy is not None:
@@ -2616,6 +2676,23 @@ class KeyProps:
2616
2676
  result = self._values.get("key_usage")
2617
2677
  return typing.cast(typing.Optional["KeyUsage"], result)
2618
2678
 
2679
+ @builtins.property
2680
+ def multi_region(self) -> typing.Optional[builtins.bool]:
2681
+ '''Creates a multi-Region primary key that you can replicate in other AWS Regions.
2682
+
2683
+ You can't change the ``multiRegion`` value after the KMS key is created.
2684
+
2685
+ IMPORTANT: If you change the value of the ``multiRegion`` property on an existing KMS key, the update request fails,
2686
+ regardless of the value of the UpdateReplacePolicy attribute.
2687
+ This prevents you from accidentally deleting a KMS key by changing an immutable property value.
2688
+
2689
+ :default: false
2690
+
2691
+ :see: https://docs.aws.amazon.com/kms/latest/developerguide/multi-region-keys-overview.html
2692
+ '''
2693
+ result = self._values.get("multi_region")
2694
+ return typing.cast(typing.Optional[builtins.bool], result)
2695
+
2619
2696
  @builtins.property
2620
2697
  def pending_window(self) -> typing.Optional[_Duration_4839e8c3]:
2621
2698
  '''Specifies the number of days in the waiting period before AWS KMS deletes a CMK that has been removed from a CloudFormation stack.
@@ -3491,6 +3568,7 @@ def _typecheckingstub__2cde9534bdfe7c19d6e24354f8a0de8ca349632d3f565addcaed7e86a
3491
3568
  enable_key_rotation: typing.Optional[builtins.bool] = None,
3492
3569
  key_spec: typing.Optional[KeySpec] = None,
3493
3570
  key_usage: typing.Optional[KeyUsage] = None,
3571
+ multi_region: typing.Optional[builtins.bool] = None,
3494
3572
  pending_window: typing.Optional[_Duration_4839e8c3] = None,
3495
3573
  policy: typing.Optional[_PolicyDocument_3ac34393] = None,
3496
3574
  removal_policy: typing.Optional[_RemovalPolicy_9f93c814] = None,
@@ -3594,6 +3672,7 @@ def _typecheckingstub__b3cbd21baa1113e5b2864ce6b440a0d87704642442943c3a554ab23ae
3594
3672
  enable_key_rotation: typing.Optional[builtins.bool] = None,
3595
3673
  key_spec: typing.Optional[KeySpec] = None,
3596
3674
  key_usage: typing.Optional[KeyUsage] = None,
3675
+ multi_region: typing.Optional[builtins.bool] = None,
3597
3676
  pending_window: typing.Optional[_Duration_4839e8c3] = None,
3598
3677
  policy: typing.Optional[_PolicyDocument_3ac34393] = None,
3599
3678
  removal_policy: typing.Optional[_RemovalPolicy_9f93c814] = None,
@@ -85,6 +85,10 @@ configurations as well as choosing a specific tag or digest. See their docs for
85
85
  To deploy a `DockerImageFunction` on Lambda `arm64` architecture, specify `Architecture.ARM_64` in `architecture`.
86
86
  This will bundle docker image assets for `arm64` architecture with `--platform linux/arm64` even if build within an `x86_64` host.
87
87
 
88
+ With that being said, if you are bundling `DockerImageFunction` for Lambda `amd64` architecture from a `arm64` machine like a Macbook with `arm64` CPU, you would
89
+ need to specify `architecture: lambda.Architecture.X86_64` as well. This ensures the `--platform` argument is passed to the image assets
90
+ bundling process so you can bundle up `X86_64` images from the `arm64` machine.
91
+
88
92
  ```python
89
93
  lambda_.DockerImageFunction(self, "AssetFunction",
90
94
  code=lambda_.DockerImageCode.from_image_asset(path.join(__dirname, "docker-arm64-handler")),
@@ -10120,7 +10124,7 @@ class CfnVersion(
10120
10124
  @builtins.property
10121
10125
  @jsii.member(jsii_name="attrFunctionArn")
10122
10126
  def attr_function_arn(self) -> builtins.str:
10123
- '''The ARN of the version.
10127
+ '''The ARN of the function.
10124
10128
 
10125
10129
  :cloudformationAttribute: FunctionArn
10126
10130
  '''
@@ -13774,21 +13778,25 @@ class FilterCriteria(
13774
13778
 
13775
13779
  Example::
13776
13780
 
13777
- import aws_cdk.aws_lambda_event_sources as eventsources
13778
13781
  import aws_cdk.aws_dynamodb as dynamodb
13782
+ from aws_cdk.aws_lambda_event_sources import DynamoEventSource
13783
+
13784
+ # table: dynamodb.Table
13779
13785
 
13780
13786
  # fn: lambda.Function
13781
13787
 
13782
- table = dynamodb.Table(self, "Table",
13783
- partition_key=dynamodb.Attribute(
13784
- name="id",
13785
- type=dynamodb.AttributeType.STRING
13786
- ),
13787
- stream=dynamodb.StreamViewType.NEW_IMAGE
13788
- )
13789
- fn.add_event_source(eventsources.DynamoEventSource(table,
13788
+ fn.add_event_source(DynamoEventSource(table,
13790
13789
  starting_position=lambda_.StartingPosition.LATEST,
13791
- filters=[lambda_.FilterCriteria.filter({"event_name": lambda_.FilterRule.is_equal("INSERT")})]
13790
+ filters=[
13791
+ lambda_.FilterCriteria.filter({
13792
+ "event_name": lambda_.FilterRule.is_equal("INSERT"),
13793
+ "dynamodb": {
13794
+ "NewImage": {
13795
+ "id": {"BOOL": lambda_.FilterRule.is_equal(True)}
13796
+ }
13797
+ }
13798
+ })
13799
+ ]
13792
13800
  ))
13793
13801
  '''
13794
13802
 
@@ -13821,21 +13829,25 @@ class FilterRule(
13821
13829
 
13822
13830
  Example::
13823
13831
 
13824
- import aws_cdk.aws_lambda_event_sources as eventsources
13825
13832
  import aws_cdk.aws_dynamodb as dynamodb
13833
+ from aws_cdk.aws_lambda_event_sources import DynamoEventSource
13834
+
13835
+ # table: dynamodb.Table
13826
13836
 
13827
13837
  # fn: lambda.Function
13828
13838
 
13829
- table = dynamodb.Table(self, "Table",
13830
- partition_key=dynamodb.Attribute(
13831
- name="id",
13832
- type=dynamodb.AttributeType.STRING
13833
- ),
13834
- stream=dynamodb.StreamViewType.NEW_IMAGE
13835
- )
13836
- fn.add_event_source(eventsources.DynamoEventSource(table,
13839
+ fn.add_event_source(DynamoEventSource(table,
13837
13840
  starting_position=lambda_.StartingPosition.LATEST,
13838
- filters=[lambda_.FilterCriteria.filter({"event_name": lambda_.FilterRule.is_equal("INSERT")})]
13841
+ filters=[
13842
+ lambda_.FilterCriteria.filter({
13843
+ "event_name": lambda_.FilterRule.is_equal("INSERT"),
13844
+ "dynamodb": {
13845
+ "NewImage": {
13846
+ "id": {"BOOL": lambda_.FilterRule.is_equal(True)}
13847
+ }
13848
+ }
13849
+ })
13850
+ ]
13839
13851
  ))
13840
13852
  '''
13841
13853
 
@@ -13889,7 +13901,10 @@ class FilterRule(
13889
13901
 
13890
13902
  @jsii.member(jsii_name="isEqual")
13891
13903
  @builtins.classmethod
13892
- def is_equal(cls, item: typing.Union[builtins.str, jsii.Number]) -> typing.Any:
13904
+ def is_equal(
13905
+ cls,
13906
+ item: typing.Union[builtins.str, jsii.Number, builtins.bool],
13907
+ ) -> typing.Any:
13893
13908
  '''Equals comparison operator.
13894
13909
 
13895
13910
  :param item: -
@@ -29506,7 +29521,7 @@ def _typecheckingstub__e532ccec0d2d2a11fd00b0da70142d367dca7a52eb785533bf0fe354f
29506
29521
  pass
29507
29522
 
29508
29523
  def _typecheckingstub__6ffacf0ca301bfbc6a30c7fc32201cecba4e3530eb53e51d1b21c3349a4e5ba5(
29509
- item: typing.Union[builtins.str, jsii.Number],
29524
+ item: typing.Union[builtins.str, jsii.Number, builtins.bool],
29510
29525
  ) -> None:
29511
29526
  """Type checking stubs"""
29512
29527
  pass
@@ -175,6 +175,7 @@ and add it to your Lambda function. The following parameters will impact Amazon
175
175
  * **startingPosition**: Will determine where to being consumption, either at the most recent ('LATEST') record or the oldest record ('TRIM_HORIZON'). 'TRIM_HORIZON' will ensure you process all available data, while 'LATEST' will ignore all records that arrived prior to attaching the event source.
176
176
  * **tumblingWindow**: The duration in seconds of a processing window when using streams.
177
177
  * **enabled**: If the DynamoDB Streams event source mapping should be enabled. The default is true.
178
+ * **filters**: Filters to apply before sending a change event from a DynamoDB table to a Lambda function. Events that are filtered out are not sent to the Lambda function.
178
179
 
179
180
  ```python
180
181
  import aws_cdk.aws_dynamodb as dynamodb
@@ -195,6 +196,32 @@ fn.add_event_source(DynamoEventSource(table,
195
196
  ))
196
197
  ```
197
198
 
199
+ The following code sets up a Lambda function with a DynamoDB event source. A filter is applied to only send DynamoDB events to
200
+ the Lambda function when the `id` column is a boolean that equals `true`.
201
+
202
+ ```python
203
+ import aws_cdk.aws_dynamodb as dynamodb
204
+ from aws_cdk.aws_lambda_event_sources import DynamoEventSource
205
+
206
+ # table: dynamodb.Table
207
+
208
+ # fn: lambda.Function
209
+
210
+ fn.add_event_source(DynamoEventSource(table,
211
+ starting_position=lambda_.StartingPosition.LATEST,
212
+ filters=[
213
+ lambda_.FilterCriteria.filter({
214
+ "event_name": lambda_.FilterRule.is_equal("INSERT"),
215
+ "dynamodb": {
216
+ "NewImage": {
217
+ "id": {"BOOL": lambda_.FilterRule.is_equal(True)}
218
+ }
219
+ }
220
+ })
221
+ ]
222
+ ))
223
+ ```
224
+
198
225
  ## Kinesis
199
226
 
200
227
  You can write Lambda functions to process streaming data in Amazon Kinesis Streams. For more information about Amazon Kinesis, see [Amazon Kinesis
@@ -30343,6 +30343,12 @@ class MysqlEngineVersion(
30343
30343
  '''Version "5.7.44-rds.20240529".'''
30344
30344
  return typing.cast("MysqlEngineVersion", jsii.sget(cls, "VER_5_7_44_RDS_20240529"))
30345
30345
 
30346
+ @jsii.python.classproperty
30347
+ @jsii.member(jsii_name="VER_5_7_44_RDS_20240808")
30348
+ def VER_5_7_44_RDS_20240808(cls) -> "MysqlEngineVersion":
30349
+ '''Version "5.7.44-rds.20240808".'''
30350
+ return typing.cast("MysqlEngineVersion", jsii.sget(cls, "VER_5_7_44_RDS_20240808"))
30351
+
30346
30352
  @jsii.python.classproperty
30347
30353
  @jsii.member(jsii_name="VER_8_0")
30348
30354
  def VER_8_0(cls) -> "MysqlEngineVersion":
@@ -33229,6 +33235,12 @@ class PostgresEngineVersion(
33229
33235
  '''Version "11.22-rds.20240509".'''
33230
33236
  return typing.cast("PostgresEngineVersion", jsii.sget(cls, "VER_11_22_RDS_20240509"))
33231
33237
 
33238
+ @jsii.python.classproperty
33239
+ @jsii.member(jsii_name="VER_11_22_RDS_20240808")
33240
+ def VER_11_22_RDS_20240808(cls) -> "PostgresEngineVersion":
33241
+ '''Version "11.22-rds.20240808".'''
33242
+ return typing.cast("PostgresEngineVersion", jsii.sget(cls, "VER_11_22_RDS_20240808"))
33243
+
33232
33244
  @jsii.python.classproperty
33233
33245
  @jsii.member(jsii_name="VER_11_4")
33234
33246
  def VER_11_4(cls) -> "PostgresEngineVersion":
@@ -1328,7 +1328,8 @@ class BucketEncryption(enum.Enum):
1328
1328
  default_stack_synthesizer=AppStagingSynthesizer.default_resources(
1329
1329
  app_id="my-app-id",
1330
1330
  staging_bucket_encryption=BucketEncryption.S3_MANAGED,
1331
- deployment_identities=DeploymentIdentities.cli_credentials()
1331
+ file_asset_publishing_role=BootstrapRole.from_role_arn("arn:aws:iam::123456789012:role/S3Access"),
1332
+ image_asset_publishing_role=BootstrapRole.from_role_arn("arn:aws:iam::123456789012:role/ECRAccess")
1332
1333
  )
1333
1334
  )
1334
1335
  '''
@@ -1827,21 +1828,19 @@ class BucketProps:
1827
1828
 
1828
1829
  Example::
1829
1830
 
1830
- source_bucket = s3.Bucket(self, "MyBucket",
1831
- versioned=True
1832
- )
1831
+ import aws_cdk.aws_kms as kms
1832
+
1833
1833
 
1834
- pipeline = codepipeline.Pipeline(self, "MyPipeline")
1835
- source_output = codepipeline.Artifact()
1836
- source_action = codepipeline_actions.S3SourceAction(
1837
- action_name="S3Source",
1838
- bucket=source_bucket,
1839
- bucket_key="path/to/file.zip",
1840
- output=source_output
1834
+ my_kms_key = kms.Key(self, "myKMSKey")
1835
+ my_bucket = s3.Bucket(self, "mySSEKMSEncryptedBucket",
1836
+ encryption=s3.BucketEncryption.KMS,
1837
+ encryption_key=my_kms_key,
1838
+ object_ownership=s3.ObjectOwnership.BUCKET_OWNER_ENFORCED
1841
1839
  )
1842
- pipeline.add_stage(
1843
- stage_name="Source",
1844
- actions=[source_action]
1840
+ cloudfront.Distribution(self, "myDist",
1841
+ default_behavior=cloudfront.BehaviorOptions(
1842
+ origin=origins.S3BucketOrigin.with_origin_access_control(my_bucket)
1843
+ )
1845
1844
  )
1846
1845
  '''
1847
1846
  if isinstance(website_redirect, dict):
@@ -2251,7 +2251,7 @@ class CfnSecretTargetAttachment(
2251
2251
  :param id: Construct identifier for this resource (unique in its scope).
2252
2252
  :param secret_id: The ARN or name of the secret. To reference a secret also created in this template, use the see `Ref <https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/intrinsic-function-reference-ref.html>`_ function with the secret's logical ID.
2253
2253
  :param target_id: The ID of the database or cluster.
2254
- :param target_type: A string that defines the type of service or database associated with the secret. This value instructs Secrets Manager how to update the secret with the details of the service or database. This value must be one of the following: - AWS::RDS::DBInstance - AWS::RDS::DBCluster - AWS::Redshift::Cluster - AWS::DocDB::DBInstance - AWS::DocDB::DBCluster
2254
+ :param target_type: A string that defines the type of service or database associated with the secret. This value instructs Secrets Manager how to update the secret with the details of the service or database. This value must be one of the following: - AWS::RDS::DBInstance - AWS::RDS::DBCluster - AWS::Redshift::Cluster - AWS::DocDB::DBInstance - AWS::DocDB::DBCluster - AWS::DocDBElastic::Cluster
2255
2255
  '''
2256
2256
  if __debug__:
2257
2257
  type_hints = typing.get_type_hints(_typecheckingstub__f27548ced74eb3d06a9cd3710e7d562d307b5a2c264476a3e685fcb94ccdee58)
@@ -2367,7 +2367,7 @@ class CfnSecretTargetAttachmentProps:
2367
2367
 
2368
2368
  :param secret_id: The ARN or name of the secret. To reference a secret also created in this template, use the see `Ref <https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/intrinsic-function-reference-ref.html>`_ function with the secret's logical ID.
2369
2369
  :param target_id: The ID of the database or cluster.
2370
- :param target_type: A string that defines the type of service or database associated with the secret. This value instructs Secrets Manager how to update the secret with the details of the service or database. This value must be one of the following: - AWS::RDS::DBInstance - AWS::RDS::DBCluster - AWS::Redshift::Cluster - AWS::DocDB::DBInstance - AWS::DocDB::DBCluster
2370
+ :param target_type: A string that defines the type of service or database associated with the secret. This value instructs Secrets Manager how to update the secret with the details of the service or database. This value must be one of the following: - AWS::RDS::DBInstance - AWS::RDS::DBCluster - AWS::Redshift::Cluster - AWS::DocDB::DBInstance - AWS::DocDB::DBCluster - AWS::DocDBElastic::Cluster
2371
2371
 
2372
2372
  :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-secretsmanager-secrettargetattachment.html
2373
2373
  :exampleMetadata: fixture=_generated
@@ -2428,6 +2428,7 @@ class CfnSecretTargetAttachmentProps:
2428
2428
  - AWS::Redshift::Cluster
2429
2429
  - AWS::DocDB::DBInstance
2430
2430
  - AWS::DocDB::DBCluster
2431
+ - AWS::DocDBElastic::Cluster
2431
2432
 
2432
2433
  :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-secretsmanager-secrettargetattachment.html#cfn-secretsmanager-secrettargetattachment-targettype
2433
2434
  '''
@@ -10850,7 +10850,7 @@ class CfnReceiptRule(
10850
10850
  For information about specifying Amazon S3 actions in receipt rules, see the `Amazon SES Developer Guide <https://docs.aws.amazon.com/ses/latest/dg/receiving-email-action-s3.html>`_ .
10851
10851
 
10852
10852
  :param bucket_name: The name of the Amazon S3 bucket for incoming email.
10853
- :param kms_key_arn: The customer master key that Amazon SES should use to encrypt your emails before saving them to the Amazon S3 bucket. You can use the default master key or a custom master key that you created in AWS KMS as follows: - To use the default master key, provide an ARN in the form of ``arn:aws:kms:REGION:ACCOUNT-ID-WITHOUT-HYPHENS:alias/aws/ses`` . For example, if your AWS account ID is 123456789012 and you want to use the default master key in the US West (Oregon) Region, the ARN of the default master key would be ``arn:aws:kms:us-west-2:123456789012:alias/aws/ses`` . If you use the default master key, you don't need to perform any extra steps to give Amazon SES permission to use the key. - To use a custom master key that you created in AWS KMS, provide the ARN of the master key and ensure that you add a statement to your key's policy to give Amazon SES permission to use it. For more information about giving permissions, see the `Amazon SES Developer Guide <https://docs.aws.amazon.com/ses/latest/dg/receiving-email-permissions.html>`_ . For more information about key policies, see the `AWS KMS Developer Guide <https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html>`_ . If you do not specify a master key, Amazon SES does not encrypt your emails. .. epigraph:: Your mail is encrypted by Amazon SES using the Amazon S3 encryption client before the mail is submitted to Amazon S3 for storage. It is not encrypted using Amazon S3 server-side encryption. This means that you must use the Amazon S3 encryption client to decrypt the email after retrieving it from Amazon S3, as the service has no access to use your AWS KMS keys for decryption. This encryption client is currently available with the `AWS SDK for Java <https://docs.aws.amazon.com/sdk-for-java/>`_ and `AWS SDK for Ruby <https://docs.aws.amazon.com/sdk-for-ruby/>`_ only. For more information about client-side encryption using AWS KMS master keys, see the `Amazon S3 Developer Guide <https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingClientSideEncryption.html>`_ .
10853
+ :param kms_key_arn: The customer managed key that Amazon SES should use to encrypt your emails before saving them to the Amazon S3 bucket. You can use the AWS managed key or a customer managed key that you created in AWS KMS as follows: - To use the AWS managed key, provide an ARN in the form of ``arn:aws:kms:REGION:ACCOUNT-ID-WITHOUT-HYPHENS:alias/aws/ses`` . For example, if your AWS account ID is 123456789012 and you want to use the AWS managed key in the US West (Oregon) Region, the ARN of the AWS managed key would be ``arn:aws:kms:us-west-2:123456789012:alias/aws/ses`` . If you use the AWS managed key, you don't need to perform any extra steps to give Amazon SES permission to use the key. - To use a customer managed key that you created in AWS KMS, provide the ARN of the customer managed key and ensure that you add a statement to your key's policy to give Amazon SES permission to use it. For more information about giving permissions, see the `Amazon SES Developer Guide <https://docs.aws.amazon.com/ses/latest/dg/receiving-email-permissions.html>`_ . For more information about key policies, see the `AWS KMS Developer Guide <https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html>`_ . If you do not specify an AWS KMS key, Amazon SES does not encrypt your emails. .. epigraph:: Your mail is encrypted by Amazon SES using the Amazon S3 encryption client before the mail is submitted to Amazon S3 for storage. It is not encrypted using Amazon S3 server-side encryption. This means that you must use the Amazon S3 encryption client to decrypt the email after retrieving it from Amazon S3, as the service has no access to use your AWS KMS keys for decryption. This encryption client is currently available with the `AWS SDK for Java <https://docs.aws.amazon.com/sdk-for-java/>`_ and `AWS SDK for Ruby <https://docs.aws.amazon.com/sdk-for-ruby/>`_ only. For more information about client-side encryption using AWS KMS managed keys, see the `Amazon S3 Developer Guide <https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingClientSideEncryption.html>`_ .
10854
10854
  :param object_key_prefix: The key prefix of the Amazon S3 bucket. The key prefix is similar to a directory name that enables you to store similar data under the same directory in a bucket.
10855
10855
  :param topic_arn: The ARN of the Amazon SNS topic to notify when the message is saved to the Amazon S3 bucket. You can find the ARN of a topic by using the `ListTopics <https://docs.aws.amazon.com/sns/latest/api/API_ListTopics.html>`_ operation in Amazon SNS. For more information about Amazon SNS topics, see the `Amazon SNS Developer Guide <https://docs.aws.amazon.com/sns/latest/dg/CreateTopic.html>`_ .
10856
10856
 
@@ -10900,17 +10900,17 @@ class CfnReceiptRule(
10900
10900
 
10901
10901
  @builtins.property
10902
10902
  def kms_key_arn(self) -> typing.Optional[builtins.str]:
10903
- '''The customer master key that Amazon SES should use to encrypt your emails before saving them to the Amazon S3 bucket.
10903
+ '''The customer managed key that Amazon SES should use to encrypt your emails before saving them to the Amazon S3 bucket.
10904
10904
 
10905
- You can use the default master key or a custom master key that you created in AWS KMS as follows:
10905
+ You can use the AWS managed key or a customer managed key that you created in AWS KMS as follows:
10906
10906
 
10907
- - To use the default master key, provide an ARN in the form of ``arn:aws:kms:REGION:ACCOUNT-ID-WITHOUT-HYPHENS:alias/aws/ses`` . For example, if your AWS account ID is 123456789012 and you want to use the default master key in the US West (Oregon) Region, the ARN of the default master key would be ``arn:aws:kms:us-west-2:123456789012:alias/aws/ses`` . If you use the default master key, you don't need to perform any extra steps to give Amazon SES permission to use the key.
10908
- - To use a custom master key that you created in AWS KMS, provide the ARN of the master key and ensure that you add a statement to your key's policy to give Amazon SES permission to use it. For more information about giving permissions, see the `Amazon SES Developer Guide <https://docs.aws.amazon.com/ses/latest/dg/receiving-email-permissions.html>`_ .
10907
+ - To use the AWS managed key, provide an ARN in the form of ``arn:aws:kms:REGION:ACCOUNT-ID-WITHOUT-HYPHENS:alias/aws/ses`` . For example, if your AWS account ID is 123456789012 and you want to use the AWS managed key in the US West (Oregon) Region, the ARN of the AWS managed key would be ``arn:aws:kms:us-west-2:123456789012:alias/aws/ses`` . If you use the AWS managed key, you don't need to perform any extra steps to give Amazon SES permission to use the key.
10908
+ - To use a customer managed key that you created in AWS KMS, provide the ARN of the customer managed key and ensure that you add a statement to your key's policy to give Amazon SES permission to use it. For more information about giving permissions, see the `Amazon SES Developer Guide <https://docs.aws.amazon.com/ses/latest/dg/receiving-email-permissions.html>`_ .
10909
10909
 
10910
- For more information about key policies, see the `AWS KMS Developer Guide <https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html>`_ . If you do not specify a master key, Amazon SES does not encrypt your emails.
10910
+ For more information about key policies, see the `AWS KMS Developer Guide <https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html>`_ . If you do not specify an AWS KMS key, Amazon SES does not encrypt your emails.
10911
10911
  .. epigraph::
10912
10912
 
10913
- Your mail is encrypted by Amazon SES using the Amazon S3 encryption client before the mail is submitted to Amazon S3 for storage. It is not encrypted using Amazon S3 server-side encryption. This means that you must use the Amazon S3 encryption client to decrypt the email after retrieving it from Amazon S3, as the service has no access to use your AWS KMS keys for decryption. This encryption client is currently available with the `AWS SDK for Java <https://docs.aws.amazon.com/sdk-for-java/>`_ and `AWS SDK for Ruby <https://docs.aws.amazon.com/sdk-for-ruby/>`_ only. For more information about client-side encryption using AWS KMS master keys, see the `Amazon S3 Developer Guide <https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingClientSideEncryption.html>`_ .
10913
+ Your mail is encrypted by Amazon SES using the Amazon S3 encryption client before the mail is submitted to Amazon S3 for storage. It is not encrypted using Amazon S3 server-side encryption. This means that you must use the Amazon S3 encryption client to decrypt the email after retrieving it from Amazon S3, as the service has no access to use your AWS KMS keys for decryption. This encryption client is currently available with the `AWS SDK for Java <https://docs.aws.amazon.com/sdk-for-java/>`_ and `AWS SDK for Ruby <https://docs.aws.amazon.com/sdk-for-ruby/>`_ only. For more information about client-side encryption using AWS KMS managed keys, see the `Amazon S3 Developer Guide <https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingClientSideEncryption.html>`_ .
10914
10914
 
10915
10915
  :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ses-receiptrule-s3action.html#cfn-ses-receiptrule-s3action-kmskeyarn
10916
10916
  '''
@@ -565,6 +565,10 @@ class CfnContactChannel(
565
565
  ):
566
566
  '''The ``AWS::SSMContacts::ContactChannel`` resource specifies a contact channel as the method that Incident Manager uses to engage your contact.
567
567
 
568
+ .. epigraph::
569
+
570
+ *Template example* : We recommend creating all Incident Manager ``Contacts`` resources using a single AWS CloudFormation template. For a demonstration, see the examples for `AWS::SSMContacts::Contacts <https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ssmcontacts-contact.html>`_ .
571
+
568
572
  :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ssmcontacts-contactchannel.html
569
573
  :cloudformationResource: AWS::SSMContacts::ContactChannel
570
574
  :exampleMetadata: fixture=_generated
@@ -1009,6 +1013,10 @@ class CfnPlan(
1009
1013
  ):
1010
1014
  '''Information about the stages and on-call rotation teams associated with an escalation plan or engagement plan.
1011
1015
 
1016
+ .. epigraph::
1017
+
1018
+ *Template example* : We recommend creating all Incident Manager ``Contacts`` resources using a single AWS CloudFormation template. For a demonstration, see the examples for `AWS::SSMContacts::Contacts <https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ssmcontacts-contact.html>`_ .
1019
+
1012
1020
  :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ssmcontacts-plan.html
1013
1021
  :cloudformationResource: AWS::SSMContacts::Plan
1014
1022
  :exampleMetadata: fixture=_generated
@@ -1591,6 +1599,10 @@ class CfnRotation(
1591
1599
  ):
1592
1600
  '''Specifies a rotation in an on-call schedule.
1593
1601
 
1602
+ .. epigraph::
1603
+
1604
+ *Template example* : We recommend creating all Incident Manager ``Contacts`` resources using a single AWS CloudFormation template. For a demonstration, see the examples for `AWS::SSMContacts::Contacts <https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ssmcontacts-contact.html>`_ .
1605
+
1594
1606
  :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ssmcontacts-rotation.html
1595
1607
  :cloudformationResource: AWS::SSMContacts::Rotation
1596
1608
  :exampleMetadata: fixture=_generated