aws-cdk-lib 2.176.0__py3-none-any.whl → 2.177.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 (44) hide show
  1. aws_cdk/__init__.py +11 -1
  2. aws_cdk/_jsii/__init__.py +1 -1
  3. aws_cdk/_jsii/{aws-cdk-lib@2.176.0.jsii.tgz → aws-cdk-lib@2.177.0.jsii.tgz} +0 -0
  4. aws_cdk/aws_apigatewayv2_integrations/__init__.py +2 -2
  5. aws_cdk/aws_appsync/__init__.py +4 -3
  6. aws_cdk/aws_batch/__init__.py +4 -2
  7. aws_cdk/aws_bedrock/__init__.py +5395 -2508
  8. aws_cdk/aws_cloudfront/__init__.py +12 -2
  9. aws_cdk/aws_cloudfront_origins/__init__.py +33 -2
  10. aws_cdk/aws_codepipeline/__init__.py +35 -0
  11. aws_cdk/aws_cognito/__init__.py +162 -139
  12. aws_cdk/aws_customerprofiles/__init__.py +3 -3
  13. aws_cdk/aws_datazone/__init__.py +195 -125
  14. aws_cdk/aws_ec2/__init__.py +5 -3
  15. aws_cdk/aws_ecs/__init__.py +27 -8
  16. aws_cdk/aws_efs/__init__.py +5 -5
  17. aws_cdk/aws_eks/__init__.py +24 -3
  18. aws_cdk/aws_emrserverless/__init__.py +86 -0
  19. aws_cdk/aws_fms/__init__.py +42 -0
  20. aws_cdk/aws_gamelift/__init__.py +8 -10
  21. aws_cdk/aws_iam/__init__.py +8 -0
  22. aws_cdk/aws_imagebuilder/__init__.py +62 -48
  23. aws_cdk/aws_lambda/__init__.py +13 -0
  24. aws_cdk/aws_logs/__init__.py +59 -59
  25. aws_cdk/aws_notifications/__init__.py +1390 -0
  26. aws_cdk/aws_notificationscontacts/__init__.py +593 -0
  27. aws_cdk/aws_rds/__init__.py +16 -22
  28. aws_cdk/aws_redshift/__init__.py +9 -5
  29. aws_cdk/aws_route53/__init__.py +4 -4
  30. aws_cdk/aws_route53_targets/__init__.py +15 -15
  31. aws_cdk/aws_s3/__init__.py +789 -0
  32. aws_cdk/aws_s3_notifications/__init__.py +5 -5
  33. aws_cdk/aws_s3tables/__init__.py +2 -2
  34. aws_cdk/aws_sns/__init__.py +39 -0
  35. aws_cdk/aws_ssm/__init__.py +5 -5
  36. aws_cdk/aws_synthetics/__init__.py +105 -32
  37. aws_cdk/cloud_assembly_schema/__init__.py +63 -4
  38. aws_cdk/cx_api/__init__.py +44 -4
  39. {aws_cdk_lib-2.176.0.dist-info → aws_cdk_lib-2.177.0.dist-info}/METADATA +3 -3
  40. {aws_cdk_lib-2.176.0.dist-info → aws_cdk_lib-2.177.0.dist-info}/RECORD +44 -42
  41. {aws_cdk_lib-2.176.0.dist-info → aws_cdk_lib-2.177.0.dist-info}/LICENSE +0 -0
  42. {aws_cdk_lib-2.176.0.dist-info → aws_cdk_lib-2.177.0.dist-info}/NOTICE +0 -0
  43. {aws_cdk_lib-2.176.0.dist-info → aws_cdk_lib-2.177.0.dist-info}/WHEEL +0 -0
  44. {aws_cdk_lib-2.176.0.dist-info → aws_cdk_lib-2.177.0.dist-info}/top_level.txt +0 -0
@@ -891,6 +891,110 @@ s3.Bucket(self, "Bucket2",
891
891
  object_lock_default_retention=s3.ObjectLockRetention.compliance(Duration.days(365))
892
892
  )
893
893
  ```
894
+
895
+ ## Replicating Objects
896
+
897
+ You can use [replicating objects](https://docs.aws.amazon.com/AmazonS3/latest/userguide/replication.html) to enable automatic, asynchronous copying of objects across Amazon S3 buckets.
898
+ Buckets that are configured for object replication can be owned by the same AWS account or by different accounts.
899
+ You can replicate objects to a single destination bucket or to multiple destination buckets.
900
+ The destination buckets can be in different AWS Regions or within the same Region as the source bucket.
901
+
902
+ To replicate objects to a destination bucket, you can specify the `replicationRules` property:
903
+
904
+ ```python
905
+ # destination_bucket1: s3.IBucket
906
+ # destination_bucket2: s3.IBucket
907
+ # kms_key: kms.IKey
908
+
909
+
910
+ source_bucket = s3.Bucket(self, "SourceBucket",
911
+ # Versioning must be enabled on both the source and destination bucket
912
+ versioned=True,
913
+ replication_rules=[s3.ReplicationRule(
914
+ # The destination bucket for the replication rule.
915
+ destination=destination_bucket1,
916
+ # The priority of the rule.
917
+ # Amazon S3 will attempt to replicate objects according to all replication rules.
918
+ # However, if there are two or more rules with the same destination bucket, then objects will be replicated according to the rule with the highest priority.
919
+ # The higher the number, the higher the priority.
920
+ # It is essential to specify priority explicitly when the replication configuration has multiple rules.
921
+ priority=1
922
+ ), s3.ReplicationRule(
923
+ destination=destination_bucket2,
924
+ priority=2,
925
+ # Whether to specify S3 Replication Time Control (S3 RTC).
926
+ # S3 RTC replicates most objects that you upload to Amazon S3 in seconds,
927
+ # and 99.99 percent of those objects within specified time.
928
+ replication_time_control=s3.ReplicationTimeValue.FIFTEEN_MINUTES,
929
+ # Whether to enable replication metrics about S3 RTC.
930
+ # If set, metrics will be output to indicate whether replication by S3 RTC took longer than the configured time.
931
+ metrics=s3.ReplicationTimeValue.FIFTEEN_MINUTES,
932
+ # The kms key to use for the destination bucket.
933
+ kms_key=kms_key,
934
+ # The storage class to use for the destination bucket.
935
+ storage_class=s3.StorageClass.INFREQUENT_ACCESS,
936
+ # Whether to replicate objects with SSE-KMS encryption.
937
+ sse_kms_encrypted_objects=False,
938
+ # Whether to replicate modifications on replicas.
939
+ replica_modifications=True,
940
+ # Whether to replicate delete markers.
941
+ # This property cannot be enabled if the replication rule has a tag filter.
942
+ delete_marker_replication=False,
943
+ # The ID of the rule.
944
+ id="full-settings-rule",
945
+ # The object filter for the rule.
946
+ filter=s3.Filter(
947
+ # The prefix filter for the rule.
948
+ prefix="prefix",
949
+ # The tag filter for the rule.
950
+ tags=[s3.Tag(
951
+ key="tagKey",
952
+ value="tagValue"
953
+ )
954
+ ]
955
+ )
956
+ )
957
+ ]
958
+ )
959
+ ```
960
+
961
+ ### Cross Account Replication
962
+
963
+ You can also set a destination bucket from a different account as the replication destination.
964
+
965
+ In this case, the bucket policy for the destination bucket is required, to configure it through CDK use `addReplicationPolicy()` method to add bucket policy on destination bucket.
966
+ In a cross-account scenario, where the source and destination buckets are owned by different AWS accounts, you can use a KMS key to encrypt object replicas. However, the KMS key owner must grant the source bucket owner permission to use the KMS key.
967
+ For more information, please refer to https://docs.aws.amazon.com/AmazonS3/latest/userguide/replication-walkthrough-2.html .
968
+
969
+ > **NOTE:** AWS managed keys don't allow cross-account use, and therefore can't be used to perform cross-account replication.
970
+
971
+ If you need to ovveride the bucket ownership to destination account pass the account value to the method to provide permissions to override bucket owner.
972
+ `addReplicationPolicy(bucket.replicationRoleArn, true, '11111111111')`;
973
+
974
+ However, if the destination bucket is a referenced bucket, CDK cannot set the bucket policy,
975
+ so you will need to [configure the necessary bucket policy](https://docs.aws.amazon.com/AmazonS3/latest/userguide/replication-walkthrough-2.html) separately.
976
+
977
+ ```python
978
+ # The destination bucket in a different account.
979
+ # destination_bucket: s3.IBucket
980
+
981
+
982
+ source_bucket = s3.Bucket(self, "SourceBucket",
983
+ versioned=True,
984
+ replication_rules=[s3.ReplicationRule(
985
+ destination=destination_bucket,
986
+ priority=1,
987
+ # Whether to want to change replica ownership to the AWS account that owns the destination bucket.
988
+ # The replicas are owned by same AWS account that owns the source object by default.
989
+ access_control_transition=True
990
+ )
991
+ ]
992
+ )
993
+
994
+ # Add permissions to the destination after replication role is created
995
+ if source_bucket.replication_role_arn:
996
+ destination_bucket.add_replication_policy(source_bucket.replication_role_arn, True, "111111111111")
997
+ ```
894
998
  '''
895
999
  from pkgutil import extend_path
896
1000
  __path__ = extend_path(__path__, __name__)
@@ -1926,6 +2030,7 @@ class BucketPolicyProps:
1926
2030
  "object_ownership": "objectOwnership",
1927
2031
  "public_read_access": "publicReadAccess",
1928
2032
  "removal_policy": "removalPolicy",
2033
+ "replication_rules": "replicationRules",
1929
2034
  "server_access_logs_bucket": "serverAccessLogsBucket",
1930
2035
  "server_access_logs_prefix": "serverAccessLogsPrefix",
1931
2036
  "target_object_key_format": "targetObjectKeyFormat",
@@ -1964,6 +2069,7 @@ class BucketProps:
1964
2069
  object_ownership: typing.Optional["ObjectOwnership"] = None,
1965
2070
  public_read_access: typing.Optional[builtins.bool] = None,
1966
2071
  removal_policy: typing.Optional[_RemovalPolicy_9f93c814] = None,
2072
+ replication_rules: typing.Optional[typing.Sequence[typing.Union["ReplicationRule", typing.Dict[builtins.str, typing.Any]]]] = None,
1967
2073
  server_access_logs_bucket: typing.Optional["IBucket"] = None,
1968
2074
  server_access_logs_prefix: typing.Optional[builtins.str] = None,
1969
2075
  target_object_key_format: typing.Optional["TargetObjectKeyFormat"] = None,
@@ -1998,6 +2104,7 @@ class BucketProps:
1998
2104
  :param object_ownership: The objectOwnership of the bucket. Default: - No ObjectOwnership configuration. By default, Amazon S3 sets Object Ownership to ``Bucket owner enforced``. This means ACLs are disabled and the bucket owner will own every object.
1999
2105
  :param public_read_access: Grants public read access to all objects in the bucket. Similar to calling ``bucket.grantPublicAccess()`` Default: false
2000
2106
  :param removal_policy: Policy to apply when the bucket is removed from this stack. Default: - The bucket will be orphaned.
2107
+ :param replication_rules: A container for one or more replication rules. Default: - No replication
2001
2108
  :param server_access_logs_bucket: Destination bucket for the server access logs. Default: - If "serverAccessLogsPrefix" undefined - access logs disabled, otherwise - log to current bucket.
2002
2109
  :param server_access_logs_prefix: Optional log file prefix to use for the bucket's access logs. If defined without "serverAccessLogsBucket", enables access logs to current bucket with this prefix. Default: - No log file prefix
2003
2110
  :param target_object_key_format: Optional key format for log objects. Default: - the default key format is: [DestinationPrefix][YYYY]-[MM]-[DD]-[hh]-[mm]-[ss]-[UniqueString]
@@ -2055,6 +2162,7 @@ class BucketProps:
2055
2162
  check_type(argname="argument object_ownership", value=object_ownership, expected_type=type_hints["object_ownership"])
2056
2163
  check_type(argname="argument public_read_access", value=public_read_access, expected_type=type_hints["public_read_access"])
2057
2164
  check_type(argname="argument removal_policy", value=removal_policy, expected_type=type_hints["removal_policy"])
2165
+ check_type(argname="argument replication_rules", value=replication_rules, expected_type=type_hints["replication_rules"])
2058
2166
  check_type(argname="argument server_access_logs_bucket", value=server_access_logs_bucket, expected_type=type_hints["server_access_logs_bucket"])
2059
2167
  check_type(argname="argument server_access_logs_prefix", value=server_access_logs_prefix, expected_type=type_hints["server_access_logs_prefix"])
2060
2168
  check_type(argname="argument target_object_key_format", value=target_object_key_format, expected_type=type_hints["target_object_key_format"])
@@ -2110,6 +2218,8 @@ class BucketProps:
2110
2218
  self._values["public_read_access"] = public_read_access
2111
2219
  if removal_policy is not None:
2112
2220
  self._values["removal_policy"] = removal_policy
2221
+ if replication_rules is not None:
2222
+ self._values["replication_rules"] = replication_rules
2113
2223
  if server_access_logs_bucket is not None:
2114
2224
  self._values["server_access_logs_bucket"] = server_access_logs_bucket
2115
2225
  if server_access_logs_prefix is not None:
@@ -2400,6 +2510,15 @@ class BucketProps:
2400
2510
  result = self._values.get("removal_policy")
2401
2511
  return typing.cast(typing.Optional[_RemovalPolicy_9f93c814], result)
2402
2512
 
2513
+ @builtins.property
2514
+ def replication_rules(self) -> typing.Optional[typing.List["ReplicationRule"]]:
2515
+ '''A container for one or more replication rules.
2516
+
2517
+ :default: - No replication
2518
+ '''
2519
+ result = self._values.get("replication_rules")
2520
+ return typing.cast(typing.Optional[typing.List["ReplicationRule"]], result)
2521
+
2403
2522
  @builtins.property
2404
2523
  def server_access_logs_bucket(self) -> typing.Optional["IBucket"]:
2405
2524
  '''Destination bucket for the server access logs.
@@ -15360,6 +15479,124 @@ class EventType(enum.Enum):
15360
15479
  '''
15361
15480
 
15362
15481
 
15482
+ @jsii.data_type(
15483
+ jsii_type="aws-cdk-lib.aws_s3.Filter",
15484
+ jsii_struct_bases=[],
15485
+ name_mapping={"prefix": "prefix", "tags": "tags"},
15486
+ )
15487
+ class Filter:
15488
+ def __init__(
15489
+ self,
15490
+ *,
15491
+ prefix: typing.Optional[builtins.str] = None,
15492
+ tags: typing.Optional[typing.Sequence[typing.Union["Tag", typing.Dict[builtins.str, typing.Any]]]] = None,
15493
+ ) -> None:
15494
+ '''A filter that identifies the subset of objects to which the replication rule applies.
15495
+
15496
+ :param prefix: An object key name prefix that identifies the object or objects to which the rule applies. Default: - applies to all objects
15497
+ :param tags: The tag array used for tag filters. The rule applies only to objects that have the tag in this set. Default: - applies to all objects
15498
+
15499
+ :exampleMetadata: infused
15500
+
15501
+ Example::
15502
+
15503
+ # destination_bucket1: s3.IBucket
15504
+ # destination_bucket2: s3.IBucket
15505
+ # kms_key: kms.IKey
15506
+
15507
+
15508
+ source_bucket = s3.Bucket(self, "SourceBucket",
15509
+ # Versioning must be enabled on both the source and destination bucket
15510
+ versioned=True,
15511
+ replication_rules=[s3.ReplicationRule(
15512
+ # The destination bucket for the replication rule.
15513
+ destination=destination_bucket1,
15514
+ # The priority of the rule.
15515
+ # Amazon S3 will attempt to replicate objects according to all replication rules.
15516
+ # However, if there are two or more rules with the same destination bucket, then objects will be replicated according to the rule with the highest priority.
15517
+ # The higher the number, the higher the priority.
15518
+ # It is essential to specify priority explicitly when the replication configuration has multiple rules.
15519
+ priority=1
15520
+ ), s3.ReplicationRule(
15521
+ destination=destination_bucket2,
15522
+ priority=2,
15523
+ # Whether to specify S3 Replication Time Control (S3 RTC).
15524
+ # S3 RTC replicates most objects that you upload to Amazon S3 in seconds,
15525
+ # and 99.99 percent of those objects within specified time.
15526
+ replication_time_control=s3.ReplicationTimeValue.FIFTEEN_MINUTES,
15527
+ # Whether to enable replication metrics about S3 RTC.
15528
+ # If set, metrics will be output to indicate whether replication by S3 RTC took longer than the configured time.
15529
+ metrics=s3.ReplicationTimeValue.FIFTEEN_MINUTES,
15530
+ # The kms key to use for the destination bucket.
15531
+ kms_key=kms_key,
15532
+ # The storage class to use for the destination bucket.
15533
+ storage_class=s3.StorageClass.INFREQUENT_ACCESS,
15534
+ # Whether to replicate objects with SSE-KMS encryption.
15535
+ sse_kms_encrypted_objects=False,
15536
+ # Whether to replicate modifications on replicas.
15537
+ replica_modifications=True,
15538
+ # Whether to replicate delete markers.
15539
+ # This property cannot be enabled if the replication rule has a tag filter.
15540
+ delete_marker_replication=False,
15541
+ # The ID of the rule.
15542
+ id="full-settings-rule",
15543
+ # The object filter for the rule.
15544
+ filter=s3.Filter(
15545
+ # The prefix filter for the rule.
15546
+ prefix="prefix",
15547
+ # The tag filter for the rule.
15548
+ tags=[s3.Tag(
15549
+ key="tagKey",
15550
+ value="tagValue"
15551
+ )
15552
+ ]
15553
+ )
15554
+ )
15555
+ ]
15556
+ )
15557
+ '''
15558
+ if __debug__:
15559
+ type_hints = typing.get_type_hints(_typecheckingstub__ff4b8a813f6812ab1464fced92fa61b97e151767705973ce994c0970fde139df)
15560
+ check_type(argname="argument prefix", value=prefix, expected_type=type_hints["prefix"])
15561
+ check_type(argname="argument tags", value=tags, expected_type=type_hints["tags"])
15562
+ self._values: typing.Dict[builtins.str, typing.Any] = {}
15563
+ if prefix is not None:
15564
+ self._values["prefix"] = prefix
15565
+ if tags is not None:
15566
+ self._values["tags"] = tags
15567
+
15568
+ @builtins.property
15569
+ def prefix(self) -> typing.Optional[builtins.str]:
15570
+ '''An object key name prefix that identifies the object or objects to which the rule applies.
15571
+
15572
+ :default: - applies to all objects
15573
+ '''
15574
+ result = self._values.get("prefix")
15575
+ return typing.cast(typing.Optional[builtins.str], result)
15576
+
15577
+ @builtins.property
15578
+ def tags(self) -> typing.Optional[typing.List["Tag"]]:
15579
+ '''The tag array used for tag filters.
15580
+
15581
+ The rule applies only to objects that have the tag in this set.
15582
+
15583
+ :default: - applies to all objects
15584
+ '''
15585
+ result = self._values.get("tags")
15586
+ return typing.cast(typing.Optional[typing.List["Tag"]], result)
15587
+
15588
+ def __eq__(self, rhs: typing.Any) -> builtins.bool:
15589
+ return isinstance(rhs, self.__class__) and rhs._values == self._values
15590
+
15591
+ def __ne__(self, rhs: typing.Any) -> builtins.bool:
15592
+ return not (rhs == self)
15593
+
15594
+ def __repr__(self) -> str:
15595
+ return "Filter(%s)" % ", ".join(
15596
+ k + "=" + repr(v) for k, v in self._values.items()
15597
+ )
15598
+
15599
+
15363
15600
  @jsii.enum(jsii_type="aws-cdk-lib.aws_s3.HttpMethods")
15364
15601
  class HttpMethods(enum.Enum):
15365
15602
  '''All http request methods.'''
@@ -15467,6 +15704,16 @@ class IBucket(_IResource_c80c4260, typing_extensions.Protocol):
15467
15704
  def policy(self, value: typing.Optional[BucketPolicy]) -> None:
15468
15705
  ...
15469
15706
 
15707
+ @builtins.property
15708
+ @jsii.member(jsii_name="replicationRoleArn")
15709
+ def replication_role_arn(self) -> typing.Optional[builtins.str]:
15710
+ '''Role used to set up permissions on this bucket for replication.'''
15711
+ ...
15712
+
15713
+ @replication_role_arn.setter
15714
+ def replication_role_arn(self, value: typing.Optional[builtins.str]) -> None:
15715
+ ...
15716
+
15470
15717
  @jsii.member(jsii_name="addEventNotification")
15471
15718
  def add_event_notification(
15472
15719
  self,
@@ -15523,6 +15770,25 @@ class IBucket(_IResource_c80c4260, typing_extensions.Protocol):
15523
15770
  '''
15524
15771
  ...
15525
15772
 
15773
+ @jsii.member(jsii_name="addReplicationPolicy")
15774
+ def add_replication_policy(
15775
+ self,
15776
+ role_arn: builtins.str,
15777
+ access_control_transition: typing.Optional[builtins.bool] = None,
15778
+ account: typing.Optional[builtins.str] = None,
15779
+ ) -> None:
15780
+ '''Function to add required permissions to the destination bucket for cross account replication.
15781
+
15782
+ These permissions will be added as a resource based policy on the bucket.
15783
+
15784
+ :param role_arn: -
15785
+ :param access_control_transition: -
15786
+ :param account: -
15787
+
15788
+ :see: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-accesscontroltranslation.html
15789
+ '''
15790
+ ...
15791
+
15526
15792
  @jsii.member(jsii_name="addToResourcePolicy")
15527
15793
  def add_to_resource_policy(
15528
15794
  self,
@@ -15982,6 +16248,19 @@ class _IBucketProxy(
15982
16248
  check_type(argname="argument value", value=value, expected_type=type_hints["value"])
15983
16249
  jsii.set(self, "policy", value) # pyright: ignore[reportArgumentType]
15984
16250
 
16251
+ @builtins.property
16252
+ @jsii.member(jsii_name="replicationRoleArn")
16253
+ def replication_role_arn(self) -> typing.Optional[builtins.str]:
16254
+ '''Role used to set up permissions on this bucket for replication.'''
16255
+ return typing.cast(typing.Optional[builtins.str], jsii.get(self, "replicationRoleArn"))
16256
+
16257
+ @replication_role_arn.setter
16258
+ def replication_role_arn(self, value: typing.Optional[builtins.str]) -> None:
16259
+ if __debug__:
16260
+ type_hints = typing.get_type_hints(_typecheckingstub__45b20ede572212a5391ce58bc0693933ac9d1bc950c6cafac24d9b7d29ad1405)
16261
+ check_type(argname="argument value", value=value, expected_type=type_hints["value"])
16262
+ jsii.set(self, "replicationRoleArn", value) # pyright: ignore[reportArgumentType]
16263
+
15985
16264
  @jsii.member(jsii_name="addEventNotification")
15986
16265
  def add_event_notification(
15987
16266
  self,
@@ -16051,6 +16330,30 @@ class _IBucketProxy(
16051
16330
  check_type(argname="argument filters", value=filters, expected_type=typing.Tuple[type_hints["filters"], ...]) # pyright: ignore [reportGeneralTypeIssues]
16052
16331
  return typing.cast(None, jsii.invoke(self, "addObjectRemovedNotification", [dest, *filters]))
16053
16332
 
16333
+ @jsii.member(jsii_name="addReplicationPolicy")
16334
+ def add_replication_policy(
16335
+ self,
16336
+ role_arn: builtins.str,
16337
+ access_control_transition: typing.Optional[builtins.bool] = None,
16338
+ account: typing.Optional[builtins.str] = None,
16339
+ ) -> None:
16340
+ '''Function to add required permissions to the destination bucket for cross account replication.
16341
+
16342
+ These permissions will be added as a resource based policy on the bucket.
16343
+
16344
+ :param role_arn: -
16345
+ :param access_control_transition: -
16346
+ :param account: -
16347
+
16348
+ :see: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-accesscontroltranslation.html
16349
+ '''
16350
+ if __debug__:
16351
+ type_hints = typing.get_type_hints(_typecheckingstub__6c2e7fc14ca3997ce00436db7203d2e5669fde630c0dd481f20a6192f12706c7)
16352
+ check_type(argname="argument role_arn", value=role_arn, expected_type=type_hints["role_arn"])
16353
+ check_type(argname="argument access_control_transition", value=access_control_transition, expected_type=type_hints["access_control_transition"])
16354
+ check_type(argname="argument account", value=account, expected_type=type_hints["account"])
16355
+ return typing.cast(None, jsii.invoke(self, "addReplicationPolicy", [role_arn, access_control_transition, account]))
16356
+
16054
16357
  @jsii.member(jsii_name="addToResourcePolicy")
16055
16358
  def add_to_resource_policy(
16056
16359
  self,
@@ -18098,6 +18401,362 @@ class ReplaceKey(metaclass=jsii.JSIIMeta, jsii_type="aws-cdk-lib.aws_s3.ReplaceK
18098
18401
  return typing.cast(typing.Optional[builtins.str], jsii.get(self, "withKey"))
18099
18402
 
18100
18403
 
18404
+ @jsii.data_type(
18405
+ jsii_type="aws-cdk-lib.aws_s3.ReplicationRule",
18406
+ jsii_struct_bases=[],
18407
+ name_mapping={
18408
+ "destination": "destination",
18409
+ "access_control_transition": "accessControlTransition",
18410
+ "delete_marker_replication": "deleteMarkerReplication",
18411
+ "filter": "filter",
18412
+ "id": "id",
18413
+ "kms_key": "kmsKey",
18414
+ "metrics": "metrics",
18415
+ "priority": "priority",
18416
+ "replica_modifications": "replicaModifications",
18417
+ "replication_time_control": "replicationTimeControl",
18418
+ "sse_kms_encrypted_objects": "sseKmsEncryptedObjects",
18419
+ "storage_class": "storageClass",
18420
+ },
18421
+ )
18422
+ class ReplicationRule:
18423
+ def __init__(
18424
+ self,
18425
+ *,
18426
+ destination: IBucket,
18427
+ access_control_transition: typing.Optional[builtins.bool] = None,
18428
+ delete_marker_replication: typing.Optional[builtins.bool] = None,
18429
+ filter: typing.Optional[typing.Union[Filter, typing.Dict[builtins.str, typing.Any]]] = None,
18430
+ id: typing.Optional[builtins.str] = None,
18431
+ kms_key: typing.Optional[_IKey_5f11635f] = None,
18432
+ metrics: typing.Optional["ReplicationTimeValue"] = None,
18433
+ priority: typing.Optional[jsii.Number] = None,
18434
+ replica_modifications: typing.Optional[builtins.bool] = None,
18435
+ replication_time_control: typing.Optional["ReplicationTimeValue"] = None,
18436
+ sse_kms_encrypted_objects: typing.Optional[builtins.bool] = None,
18437
+ storage_class: typing.Optional["StorageClass"] = None,
18438
+ ) -> None:
18439
+ '''Specifies which Amazon S3 objects to replicate and where to store the replicas.
18440
+
18441
+ :param destination: The destination bucket for the replicated objects. The destination can be either in the same AWS account or a cross account. If you want to configure cross-account replication, the destination bucket must have a policy that allows the source bucket to replicate objects to it.
18442
+ :param access_control_transition: Whether to want to change replica ownership to the AWS account that owns the destination bucket. This can only be specified if the source bucket and the destination bucket are not in the same AWS account. Default: - The replicas are owned by same AWS account that owns the source object
18443
+ :param delete_marker_replication: Specifies whether Amazon S3 replicates delete markers. Default: - delete markers in source bucket is not replicated to destination bucket
18444
+ :param filter: A filter that identifies the subset of objects to which the replication rule applies. Default: - applies to all objects
18445
+ :param id: A unique identifier for the rule. The maximum value is 255 characters. Default: - auto generated random ID
18446
+ :param kms_key: The customer managed AWS KMS key stored in AWS Key Management Service (KMS) for the destination bucket. Amazon S3 uses this key to encrypt replica objects. Amazon S3 only supports symmetric encryption KMS keys. Default: - Amazon S3 uses the AWS managed KMS key for encryption
18447
+ :param metrics: A container specifying replication metrics-related settings enabling replication metrics and events. When a value is set, metrics will be output to indicate whether the replication took longer than the specified time. Default: - Replication metrics are not enabled
18448
+ :param priority: The priority indicates which rule has precedence whenever two or more replication rules conflict. Amazon S3 will attempt to replicate objects according to all replication rules. However, if there are two or more rules with the same destination bucket, then objects will be replicated according to the rule with the highest priority. The higher the number, the higher the priority. It is essential to specify priority explicitly when the replication configuration has multiple rules. Default: 0
18449
+ :param replica_modifications: Specifies whether Amazon S3 replicates modifications on replicas. Default: false
18450
+ :param replication_time_control: Specifying S3 Replication Time Control (S3 RTC), including whether S3 RTC is enabled and the time when all objects and operations on objects must be replicated. Default: - S3 Replication Time Control is not enabled
18451
+ :param sse_kms_encrypted_objects: Specifies whether Amazon S3 replicates objects created with server-side encryption using an AWS KMS key stored in AWS Key Management Service. Default: false
18452
+ :param storage_class: The storage class to use when replicating objects, such as S3 Standard or reduced redundancy. Default: - The storage class of the source object
18453
+
18454
+ :exampleMetadata: fixture=_generated
18455
+
18456
+ Example::
18457
+
18458
+ # The code below shows an example of how to instantiate this type.
18459
+ # The values are placeholders you should change.
18460
+ from aws_cdk import aws_kms as kms
18461
+ from aws_cdk import aws_s3 as s3
18462
+
18463
+ # bucket: s3.Bucket
18464
+ # key: kms.Key
18465
+ # replication_time_value: s3.ReplicationTimeValue
18466
+ # storage_class: s3.StorageClass
18467
+
18468
+ replication_rule = s3.ReplicationRule(
18469
+ destination=bucket,
18470
+
18471
+ # the properties below are optional
18472
+ access_control_transition=False,
18473
+ delete_marker_replication=False,
18474
+ filter=s3.Filter(
18475
+ prefix="prefix",
18476
+ tags=[s3.Tag(
18477
+ key="key",
18478
+ value="value"
18479
+ )]
18480
+ ),
18481
+ id="id",
18482
+ kms_key=key,
18483
+ metrics=replication_time_value,
18484
+ priority=123,
18485
+ replica_modifications=False,
18486
+ replication_time_control=replication_time_value,
18487
+ sse_kms_encrypted_objects=False,
18488
+ storage_class=storage_class
18489
+ )
18490
+ '''
18491
+ if isinstance(filter, dict):
18492
+ filter = Filter(**filter)
18493
+ if __debug__:
18494
+ type_hints = typing.get_type_hints(_typecheckingstub__2eb99af4044ffb625b707ac7ff5de3796f00ec1217ed24e21f6c240e90e846f0)
18495
+ check_type(argname="argument destination", value=destination, expected_type=type_hints["destination"])
18496
+ check_type(argname="argument access_control_transition", value=access_control_transition, expected_type=type_hints["access_control_transition"])
18497
+ check_type(argname="argument delete_marker_replication", value=delete_marker_replication, expected_type=type_hints["delete_marker_replication"])
18498
+ check_type(argname="argument filter", value=filter, expected_type=type_hints["filter"])
18499
+ check_type(argname="argument id", value=id, expected_type=type_hints["id"])
18500
+ check_type(argname="argument kms_key", value=kms_key, expected_type=type_hints["kms_key"])
18501
+ check_type(argname="argument metrics", value=metrics, expected_type=type_hints["metrics"])
18502
+ check_type(argname="argument priority", value=priority, expected_type=type_hints["priority"])
18503
+ check_type(argname="argument replica_modifications", value=replica_modifications, expected_type=type_hints["replica_modifications"])
18504
+ check_type(argname="argument replication_time_control", value=replication_time_control, expected_type=type_hints["replication_time_control"])
18505
+ check_type(argname="argument sse_kms_encrypted_objects", value=sse_kms_encrypted_objects, expected_type=type_hints["sse_kms_encrypted_objects"])
18506
+ check_type(argname="argument storage_class", value=storage_class, expected_type=type_hints["storage_class"])
18507
+ self._values: typing.Dict[builtins.str, typing.Any] = {
18508
+ "destination": destination,
18509
+ }
18510
+ if access_control_transition is not None:
18511
+ self._values["access_control_transition"] = access_control_transition
18512
+ if delete_marker_replication is not None:
18513
+ self._values["delete_marker_replication"] = delete_marker_replication
18514
+ if filter is not None:
18515
+ self._values["filter"] = filter
18516
+ if id is not None:
18517
+ self._values["id"] = id
18518
+ if kms_key is not None:
18519
+ self._values["kms_key"] = kms_key
18520
+ if metrics is not None:
18521
+ self._values["metrics"] = metrics
18522
+ if priority is not None:
18523
+ self._values["priority"] = priority
18524
+ if replica_modifications is not None:
18525
+ self._values["replica_modifications"] = replica_modifications
18526
+ if replication_time_control is not None:
18527
+ self._values["replication_time_control"] = replication_time_control
18528
+ if sse_kms_encrypted_objects is not None:
18529
+ self._values["sse_kms_encrypted_objects"] = sse_kms_encrypted_objects
18530
+ if storage_class is not None:
18531
+ self._values["storage_class"] = storage_class
18532
+
18533
+ @builtins.property
18534
+ def destination(self) -> IBucket:
18535
+ '''The destination bucket for the replicated objects.
18536
+
18537
+ The destination can be either in the same AWS account or a cross account.
18538
+
18539
+ If you want to configure cross-account replication,
18540
+ the destination bucket must have a policy that allows the source bucket to replicate objects to it.
18541
+
18542
+ :see: https://docs.aws.amazon.com/AmazonS3/latest/userguide/replication-walkthrough-2.html
18543
+ '''
18544
+ result = self._values.get("destination")
18545
+ assert result is not None, "Required property 'destination' is missing"
18546
+ return typing.cast(IBucket, result)
18547
+
18548
+ @builtins.property
18549
+ def access_control_transition(self) -> typing.Optional[builtins.bool]:
18550
+ '''Whether to want to change replica ownership to the AWS account that owns the destination bucket.
18551
+
18552
+ This can only be specified if the source bucket and the destination bucket are not in the same AWS account.
18553
+
18554
+ :default: - The replicas are owned by same AWS account that owns the source object
18555
+ '''
18556
+ result = self._values.get("access_control_transition")
18557
+ return typing.cast(typing.Optional[builtins.bool], result)
18558
+
18559
+ @builtins.property
18560
+ def delete_marker_replication(self) -> typing.Optional[builtins.bool]:
18561
+ '''Specifies whether Amazon S3 replicates delete markers.
18562
+
18563
+ :default: - delete markers in source bucket is not replicated to destination bucket
18564
+
18565
+ :see: https://docs.aws.amazon.com/AmazonS3/latest/userguide/delete-marker-replication.html
18566
+ '''
18567
+ result = self._values.get("delete_marker_replication")
18568
+ return typing.cast(typing.Optional[builtins.bool], result)
18569
+
18570
+ @builtins.property
18571
+ def filter(self) -> typing.Optional[Filter]:
18572
+ '''A filter that identifies the subset of objects to which the replication rule applies.
18573
+
18574
+ :default: - applies to all objects
18575
+ '''
18576
+ result = self._values.get("filter")
18577
+ return typing.cast(typing.Optional[Filter], result)
18578
+
18579
+ @builtins.property
18580
+ def id(self) -> typing.Optional[builtins.str]:
18581
+ '''A unique identifier for the rule.
18582
+
18583
+ The maximum value is 255 characters.
18584
+
18585
+ :default: - auto generated random ID
18586
+ '''
18587
+ result = self._values.get("id")
18588
+ return typing.cast(typing.Optional[builtins.str], result)
18589
+
18590
+ @builtins.property
18591
+ def kms_key(self) -> typing.Optional[_IKey_5f11635f]:
18592
+ '''The customer managed AWS KMS key stored in AWS Key Management Service (KMS) for the destination bucket.
18593
+
18594
+ Amazon S3 uses this key to encrypt replica objects.
18595
+
18596
+ Amazon S3 only supports symmetric encryption KMS keys.
18597
+
18598
+ :default: - Amazon S3 uses the AWS managed KMS key for encryption
18599
+
18600
+ :see: https://docs.aws.amazon.com/kms/latest/developerguide/symmetric-asymmetric.html
18601
+ '''
18602
+ result = self._values.get("kms_key")
18603
+ return typing.cast(typing.Optional[_IKey_5f11635f], result)
18604
+
18605
+ @builtins.property
18606
+ def metrics(self) -> typing.Optional["ReplicationTimeValue"]:
18607
+ '''A container specifying replication metrics-related settings enabling replication metrics and events.
18608
+
18609
+ When a value is set, metrics will be output to indicate whether the replication took longer than the specified time.
18610
+
18611
+ :default: - Replication metrics are not enabled
18612
+ '''
18613
+ result = self._values.get("metrics")
18614
+ return typing.cast(typing.Optional["ReplicationTimeValue"], result)
18615
+
18616
+ @builtins.property
18617
+ def priority(self) -> typing.Optional[jsii.Number]:
18618
+ '''The priority indicates which rule has precedence whenever two or more replication rules conflict.
18619
+
18620
+ Amazon S3 will attempt to replicate objects according to all replication rules.
18621
+ However, if there are two or more rules with the same destination bucket,
18622
+ then objects will be replicated according to the rule with the highest priority.
18623
+
18624
+ The higher the number, the higher the priority.
18625
+
18626
+ It is essential to specify priority explicitly when the replication configuration has multiple rules.
18627
+
18628
+ :default: 0
18629
+ '''
18630
+ result = self._values.get("priority")
18631
+ return typing.cast(typing.Optional[jsii.Number], result)
18632
+
18633
+ @builtins.property
18634
+ def replica_modifications(self) -> typing.Optional[builtins.bool]:
18635
+ '''Specifies whether Amazon S3 replicates modifications on replicas.
18636
+
18637
+ :default: false
18638
+ '''
18639
+ result = self._values.get("replica_modifications")
18640
+ return typing.cast(typing.Optional[builtins.bool], result)
18641
+
18642
+ @builtins.property
18643
+ def replication_time_control(self) -> typing.Optional["ReplicationTimeValue"]:
18644
+ '''Specifying S3 Replication Time Control (S3 RTC), including whether S3 RTC is enabled and the time when all objects and operations on objects must be replicated.
18645
+
18646
+ :default: - S3 Replication Time Control is not enabled
18647
+ '''
18648
+ result = self._values.get("replication_time_control")
18649
+ return typing.cast(typing.Optional["ReplicationTimeValue"], result)
18650
+
18651
+ @builtins.property
18652
+ def sse_kms_encrypted_objects(self) -> typing.Optional[builtins.bool]:
18653
+ '''Specifies whether Amazon S3 replicates objects created with server-side encryption using an AWS KMS key stored in AWS Key Management Service.
18654
+
18655
+ :default: false
18656
+ '''
18657
+ result = self._values.get("sse_kms_encrypted_objects")
18658
+ return typing.cast(typing.Optional[builtins.bool], result)
18659
+
18660
+ @builtins.property
18661
+ def storage_class(self) -> typing.Optional["StorageClass"]:
18662
+ '''The storage class to use when replicating objects, such as S3 Standard or reduced redundancy.
18663
+
18664
+ :default: - The storage class of the source object
18665
+ '''
18666
+ result = self._values.get("storage_class")
18667
+ return typing.cast(typing.Optional["StorageClass"], result)
18668
+
18669
+ def __eq__(self, rhs: typing.Any) -> builtins.bool:
18670
+ return isinstance(rhs, self.__class__) and rhs._values == self._values
18671
+
18672
+ def __ne__(self, rhs: typing.Any) -> builtins.bool:
18673
+ return not (rhs == self)
18674
+
18675
+ def __repr__(self) -> str:
18676
+ return "ReplicationRule(%s)" % ", ".join(
18677
+ k + "=" + repr(v) for k, v in self._values.items()
18678
+ )
18679
+
18680
+
18681
+ class ReplicationTimeValue(
18682
+ metaclass=jsii.JSIIMeta,
18683
+ jsii_type="aws-cdk-lib.aws_s3.ReplicationTimeValue",
18684
+ ):
18685
+ '''The replication time value used for S3 Replication Time Control (S3 RTC).
18686
+
18687
+ :exampleMetadata: infused
18688
+
18689
+ Example::
18690
+
18691
+ # destination_bucket1: s3.IBucket
18692
+ # destination_bucket2: s3.IBucket
18693
+ # kms_key: kms.IKey
18694
+
18695
+
18696
+ source_bucket = s3.Bucket(self, "SourceBucket",
18697
+ # Versioning must be enabled on both the source and destination bucket
18698
+ versioned=True,
18699
+ replication_rules=[s3.ReplicationRule(
18700
+ # The destination bucket for the replication rule.
18701
+ destination=destination_bucket1,
18702
+ # The priority of the rule.
18703
+ # Amazon S3 will attempt to replicate objects according to all replication rules.
18704
+ # However, if there are two or more rules with the same destination bucket, then objects will be replicated according to the rule with the highest priority.
18705
+ # The higher the number, the higher the priority.
18706
+ # It is essential to specify priority explicitly when the replication configuration has multiple rules.
18707
+ priority=1
18708
+ ), s3.ReplicationRule(
18709
+ destination=destination_bucket2,
18710
+ priority=2,
18711
+ # Whether to specify S3 Replication Time Control (S3 RTC).
18712
+ # S3 RTC replicates most objects that you upload to Amazon S3 in seconds,
18713
+ # and 99.99 percent of those objects within specified time.
18714
+ replication_time_control=s3.ReplicationTimeValue.FIFTEEN_MINUTES,
18715
+ # Whether to enable replication metrics about S3 RTC.
18716
+ # If set, metrics will be output to indicate whether replication by S3 RTC took longer than the configured time.
18717
+ metrics=s3.ReplicationTimeValue.FIFTEEN_MINUTES,
18718
+ # The kms key to use for the destination bucket.
18719
+ kms_key=kms_key,
18720
+ # The storage class to use for the destination bucket.
18721
+ storage_class=s3.StorageClass.INFREQUENT_ACCESS,
18722
+ # Whether to replicate objects with SSE-KMS encryption.
18723
+ sse_kms_encrypted_objects=False,
18724
+ # Whether to replicate modifications on replicas.
18725
+ replica_modifications=True,
18726
+ # Whether to replicate delete markers.
18727
+ # This property cannot be enabled if the replication rule has a tag filter.
18728
+ delete_marker_replication=False,
18729
+ # The ID of the rule.
18730
+ id="full-settings-rule",
18731
+ # The object filter for the rule.
18732
+ filter=s3.Filter(
18733
+ # The prefix filter for the rule.
18734
+ prefix="prefix",
18735
+ # The tag filter for the rule.
18736
+ tags=[s3.Tag(
18737
+ key="tagKey",
18738
+ value="tagValue"
18739
+ )
18740
+ ]
18741
+ )
18742
+ )
18743
+ ]
18744
+ )
18745
+ '''
18746
+
18747
+ @jsii.python.classproperty
18748
+ @jsii.member(jsii_name="FIFTEEN_MINUTES")
18749
+ def FIFTEEN_MINUTES(cls) -> "ReplicationTimeValue":
18750
+ '''Fifteen minutes.'''
18751
+ return typing.cast("ReplicationTimeValue", jsii.sget(cls, "FIFTEEN_MINUTES"))
18752
+
18753
+ @builtins.property
18754
+ @jsii.member(jsii_name="minutes")
18755
+ def minutes(self) -> jsii.Number:
18756
+ '''the time in minutes.'''
18757
+ return typing.cast(jsii.Number, jsii.get(self, "minutes"))
18758
+
18759
+
18101
18760
  @jsii.data_type(
18102
18761
  jsii_type="aws-cdk-lib.aws_s3.RoutingRule",
18103
18762
  jsii_struct_bases=[],
@@ -18916,6 +19575,30 @@ class BucketBase(
18916
19575
  check_type(argname="argument filters", value=filters, expected_type=typing.Tuple[type_hints["filters"], ...]) # pyright: ignore [reportGeneralTypeIssues]
18917
19576
  return typing.cast(None, jsii.invoke(self, "addObjectRemovedNotification", [dest, *filters]))
18918
19577
 
19578
+ @jsii.member(jsii_name="addReplicationPolicy")
19579
+ def add_replication_policy(
19580
+ self,
19581
+ role_arn: builtins.str,
19582
+ access_control_transition: typing.Optional[builtins.bool] = None,
19583
+ account: typing.Optional[builtins.str] = None,
19584
+ ) -> None:
19585
+ '''Function to add required permissions to the destination bucket for cross account replication.
19586
+
19587
+ These permissions will be added as a resource based policy on the bucket
19588
+
19589
+ :param role_arn: -
19590
+ :param access_control_transition: -
19591
+ :param account: -
19592
+
19593
+ :see: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-accesscontroltranslation.html
19594
+ '''
19595
+ if __debug__:
19596
+ type_hints = typing.get_type_hints(_typecheckingstub__2baf8c6982c06606b5434f658a8175f6838f55345a6d423d335af89dfa1728cd)
19597
+ check_type(argname="argument role_arn", value=role_arn, expected_type=type_hints["role_arn"])
19598
+ check_type(argname="argument access_control_transition", value=access_control_transition, expected_type=type_hints["access_control_transition"])
19599
+ check_type(argname="argument account", value=account, expected_type=type_hints["account"])
19600
+ return typing.cast(None, jsii.invoke(self, "addReplicationPolicy", [role_arn, access_control_transition, account]))
19601
+
18919
19602
  @jsii.member(jsii_name="addToResourcePolicy")
18920
19603
  def add_to_resource_policy(
18921
19604
  self,
@@ -19515,6 +20198,18 @@ class BucketBase(
19515
20198
  def policy(self, value: typing.Optional[BucketPolicy]) -> None:
19516
20199
  ...
19517
20200
 
20201
+ @builtins.property
20202
+ @jsii.member(jsii_name="replicationRoleArn")
20203
+ @abc.abstractmethod
20204
+ def replication_role_arn(self) -> typing.Optional[builtins.str]:
20205
+ '''Role used to set up permissions on this bucket for replication.'''
20206
+ ...
20207
+
20208
+ @replication_role_arn.setter
20209
+ @abc.abstractmethod
20210
+ def replication_role_arn(self, value: typing.Optional[builtins.str]) -> None:
20211
+ ...
20212
+
19518
20213
 
19519
20214
  class _BucketBaseProxy(
19520
20215
  BucketBase,
@@ -19617,6 +20312,19 @@ class _BucketBaseProxy(
19617
20312
  check_type(argname="argument value", value=value, expected_type=type_hints["value"])
19618
20313
  jsii.set(self, "policy", value) # pyright: ignore[reportArgumentType]
19619
20314
 
20315
+ @builtins.property
20316
+ @jsii.member(jsii_name="replicationRoleArn")
20317
+ def replication_role_arn(self) -> typing.Optional[builtins.str]:
20318
+ '''Role used to set up permissions on this bucket for replication.'''
20319
+ return typing.cast(typing.Optional[builtins.str], jsii.get(self, "replicationRoleArn"))
20320
+
20321
+ @replication_role_arn.setter
20322
+ def replication_role_arn(self, value: typing.Optional[builtins.str]) -> None:
20323
+ if __debug__:
20324
+ type_hints = typing.get_type_hints(_typecheckingstub__0f4abefa77a469d6581b7fbd2e412d7d2f099dc365ac4138047e78313165885b)
20325
+ check_type(argname="argument value", value=value, expected_type=type_hints["value"])
20326
+ jsii.set(self, "replicationRoleArn", value) # pyright: ignore[reportArgumentType]
20327
+
19620
20328
  # Adding a "__jsii_proxy_class__(): typing.Type" function to the abstract class
19621
20329
  typing.cast(typing.Any, BucketBase).__jsii_proxy_class__ = lambda : _BucketBaseProxy
19622
20330
 
@@ -19672,6 +20380,7 @@ class Bucket(
19672
20380
  object_ownership: typing.Optional[ObjectOwnership] = None,
19673
20381
  public_read_access: typing.Optional[builtins.bool] = None,
19674
20382
  removal_policy: typing.Optional[_RemovalPolicy_9f93c814] = None,
20383
+ replication_rules: typing.Optional[typing.Sequence[typing.Union[ReplicationRule, typing.Dict[builtins.str, typing.Any]]]] = None,
19675
20384
  server_access_logs_bucket: typing.Optional[IBucket] = None,
19676
20385
  server_access_logs_prefix: typing.Optional[builtins.str] = None,
19677
20386
  target_object_key_format: typing.Optional[TargetObjectKeyFormat] = None,
@@ -19708,6 +20417,7 @@ class Bucket(
19708
20417
  :param object_ownership: The objectOwnership of the bucket. Default: - No ObjectOwnership configuration. By default, Amazon S3 sets Object Ownership to ``Bucket owner enforced``. This means ACLs are disabled and the bucket owner will own every object.
19709
20418
  :param public_read_access: Grants public read access to all objects in the bucket. Similar to calling ``bucket.grantPublicAccess()`` Default: false
19710
20419
  :param removal_policy: Policy to apply when the bucket is removed from this stack. Default: - The bucket will be orphaned.
20420
+ :param replication_rules: A container for one or more replication rules. Default: - No replication
19711
20421
  :param server_access_logs_bucket: Destination bucket for the server access logs. Default: - If "serverAccessLogsPrefix" undefined - access logs disabled, otherwise - log to current bucket.
19712
20422
  :param server_access_logs_prefix: Optional log file prefix to use for the bucket's access logs. If defined without "serverAccessLogsBucket", enables access logs to current bucket with this prefix. Default: - No log file prefix
19713
20423
  :param target_object_key_format: Optional key format for log objects. Default: - the default key format is: [DestinationPrefix][YYYY]-[MM]-[DD]-[hh]-[mm]-[ss]-[UniqueString]
@@ -19746,6 +20456,7 @@ class Bucket(
19746
20456
  object_ownership=object_ownership,
19747
20457
  public_read_access=public_read_access,
19748
20458
  removal_policy=removal_policy,
20459
+ replication_rules=replication_rules,
19749
20460
  server_access_logs_bucket=server_access_logs_bucket,
19750
20461
  server_access_logs_prefix=server_access_logs_prefix,
19751
20462
  target_object_key_format=target_object_key_format,
@@ -20126,6 +20837,19 @@ class Bucket(
20126
20837
  check_type(argname="argument value", value=value, expected_type=type_hints["value"])
20127
20838
  jsii.set(self, "policy", value) # pyright: ignore[reportArgumentType]
20128
20839
 
20840
+ @builtins.property
20841
+ @jsii.member(jsii_name="replicationRoleArn")
20842
+ def replication_role_arn(self) -> typing.Optional[builtins.str]:
20843
+ '''Role used to set up permissions on this bucket for replication.'''
20844
+ return typing.cast(typing.Optional[builtins.str], jsii.get(self, "replicationRoleArn"))
20845
+
20846
+ @replication_role_arn.setter
20847
+ def replication_role_arn(self, value: typing.Optional[builtins.str]) -> None:
20848
+ if __debug__:
20849
+ type_hints = typing.get_type_hints(_typecheckingstub__3cb691a849de33681a4f0021424f266609c2785cf8cbf5306c98726a6230a9e2)
20850
+ check_type(argname="argument value", value=value, expected_type=type_hints["value"])
20851
+ jsii.set(self, "replicationRoleArn", value) # pyright: ignore[reportArgumentType]
20852
+
20129
20853
 
20130
20854
  __all__ = [
20131
20855
  "BlockPublicAccess",
@@ -20163,6 +20887,7 @@ __all__ = [
20163
20887
  "CfnStorageLensProps",
20164
20888
  "CorsRule",
20165
20889
  "EventType",
20890
+ "Filter",
20166
20891
  "HttpMethods",
20167
20892
  "IBucket",
20168
20893
  "IBucketNotificationDestination",
@@ -20184,6 +20909,8 @@ __all__ = [
20184
20909
  "RedirectProtocol",
20185
20910
  "RedirectTarget",
20186
20911
  "ReplaceKey",
20912
+ "ReplicationRule",
20913
+ "ReplicationTimeValue",
20187
20914
  "RoutingRule",
20188
20915
  "RoutingRuleCondition",
20189
20916
  "StorageClass",
@@ -20321,6 +21048,7 @@ def _typecheckingstub__f2ff878f2dca3dd037442155369c2fcc7bd194425c0967a7fd7bfa576
20321
21048
  object_ownership: typing.Optional[ObjectOwnership] = None,
20322
21049
  public_read_access: typing.Optional[builtins.bool] = None,
20323
21050
  removal_policy: typing.Optional[_RemovalPolicy_9f93c814] = None,
21051
+ replication_rules: typing.Optional[typing.Sequence[typing.Union[ReplicationRule, typing.Dict[builtins.str, typing.Any]]]] = None,
20324
21052
  server_access_logs_bucket: typing.Optional[IBucket] = None,
20325
21053
  server_access_logs_prefix: typing.Optional[builtins.str] = None,
20326
21054
  target_object_key_format: typing.Optional[TargetObjectKeyFormat] = None,
@@ -21781,12 +22509,26 @@ def _typecheckingstub__beafb715fedc4fd96130b462f30e56792d8aa655173f4d4fa2e8dcd77
21781
22509
  """Type checking stubs"""
21782
22510
  pass
21783
22511
 
22512
+ def _typecheckingstub__ff4b8a813f6812ab1464fced92fa61b97e151767705973ce994c0970fde139df(
22513
+ *,
22514
+ prefix: typing.Optional[builtins.str] = None,
22515
+ tags: typing.Optional[typing.Sequence[typing.Union[Tag, typing.Dict[builtins.str, typing.Any]]]] = None,
22516
+ ) -> None:
22517
+ """Type checking stubs"""
22518
+ pass
22519
+
21784
22520
  def _typecheckingstub__eee382ff86c17d46379012dcccee86976ea92e15cb6d63c3e3f4e853c058ac53(
21785
22521
  value: typing.Optional[BucketPolicy],
21786
22522
  ) -> None:
21787
22523
  """Type checking stubs"""
21788
22524
  pass
21789
22525
 
22526
+ def _typecheckingstub__45b20ede572212a5391ce58bc0693933ac9d1bc950c6cafac24d9b7d29ad1405(
22527
+ value: typing.Optional[builtins.str],
22528
+ ) -> None:
22529
+ """Type checking stubs"""
22530
+ pass
22531
+
21790
22532
  def _typecheckingstub__168148771b23de203b7e69eb1dbaf2f881de4c7cc276b7648b26fd4a3eddbcf0(
21791
22533
  event: EventType,
21792
22534
  dest: IBucketNotificationDestination,
@@ -21809,6 +22551,14 @@ def _typecheckingstub__4910aa7bbd431cf72fd4b6ab066e8ea5996c68d10a0bccf26fab5d478
21809
22551
  """Type checking stubs"""
21810
22552
  pass
21811
22553
 
22554
+ def _typecheckingstub__6c2e7fc14ca3997ce00436db7203d2e5669fde630c0dd481f20a6192f12706c7(
22555
+ role_arn: builtins.str,
22556
+ access_control_transition: typing.Optional[builtins.bool] = None,
22557
+ account: typing.Optional[builtins.str] = None,
22558
+ ) -> None:
22559
+ """Type checking stubs"""
22560
+ pass
22561
+
21812
22562
  def _typecheckingstub__53d6461d1a4f06eb11f149b8578ad4a818c59103b2c6b4af84212b71aed4c24b(
21813
22563
  permission: _PolicyStatement_0fe33853,
21814
22564
  ) -> None:
@@ -22069,6 +22819,24 @@ def _typecheckingstub__080e6df7f96363149eb8dfbb9c1dcddefe96fd0ba7c0bb0e46fdbcf1b
22069
22819
  """Type checking stubs"""
22070
22820
  pass
22071
22821
 
22822
+ def _typecheckingstub__2eb99af4044ffb625b707ac7ff5de3796f00ec1217ed24e21f6c240e90e846f0(
22823
+ *,
22824
+ destination: IBucket,
22825
+ access_control_transition: typing.Optional[builtins.bool] = None,
22826
+ delete_marker_replication: typing.Optional[builtins.bool] = None,
22827
+ filter: typing.Optional[typing.Union[Filter, typing.Dict[builtins.str, typing.Any]]] = None,
22828
+ id: typing.Optional[builtins.str] = None,
22829
+ kms_key: typing.Optional[_IKey_5f11635f] = None,
22830
+ metrics: typing.Optional[ReplicationTimeValue] = None,
22831
+ priority: typing.Optional[jsii.Number] = None,
22832
+ replica_modifications: typing.Optional[builtins.bool] = None,
22833
+ replication_time_control: typing.Optional[ReplicationTimeValue] = None,
22834
+ sse_kms_encrypted_objects: typing.Optional[builtins.bool] = None,
22835
+ storage_class: typing.Optional[StorageClass] = None,
22836
+ ) -> None:
22837
+ """Type checking stubs"""
22838
+ pass
22839
+
22072
22840
  def _typecheckingstub__a8752d303f1211901bb201082ccfac00227de7385764f326153a028696cc3c69(
22073
22841
  *,
22074
22842
  condition: typing.Optional[typing.Union[RoutingRuleCondition, typing.Dict[builtins.str, typing.Any]]] = None,
@@ -22165,6 +22933,14 @@ def _typecheckingstub__8f64f0928c3476db108d977ca1410bedef163a53d2b6d451e140ea634
22165
22933
  """Type checking stubs"""
22166
22934
  pass
22167
22935
 
22936
+ def _typecheckingstub__2baf8c6982c06606b5434f658a8175f6838f55345a6d423d335af89dfa1728cd(
22937
+ role_arn: builtins.str,
22938
+ access_control_transition: typing.Optional[builtins.bool] = None,
22939
+ account: typing.Optional[builtins.str] = None,
22940
+ ) -> None:
22941
+ """Type checking stubs"""
22942
+ pass
22943
+
22168
22944
  def _typecheckingstub__9fb30c6ad4f147f97466d3202c95d1247eaa1236b9e36d84d77037fde8af5fb9(
22169
22945
  permission: _PolicyStatement_0fe33853,
22170
22946
  ) -> None:
@@ -22330,6 +23106,12 @@ def _typecheckingstub__1d54fb5dd19da2dbb943d620662efadde1df29be901c2f95b3ae6d389
22330
23106
  """Type checking stubs"""
22331
23107
  pass
22332
23108
 
23109
+ def _typecheckingstub__0f4abefa77a469d6581b7fbd2e412d7d2f099dc365ac4138047e78313165885b(
23110
+ value: typing.Optional[builtins.str],
23111
+ ) -> None:
23112
+ """Type checking stubs"""
23113
+ pass
23114
+
22333
23115
  def _typecheckingstub__25f24cbf29544d9c579e765350a7b51ec4ec81bc2cc07a21660738a1e6bc81fe(
22334
23116
  scope: _constructs_77d1e7e8.Construct,
22335
23117
  id: builtins.str,
@@ -22356,6 +23138,7 @@ def _typecheckingstub__25f24cbf29544d9c579e765350a7b51ec4ec81bc2cc07a21660738a1e
22356
23138
  object_ownership: typing.Optional[ObjectOwnership] = None,
22357
23139
  public_read_access: typing.Optional[builtins.bool] = None,
22358
23140
  removal_policy: typing.Optional[_RemovalPolicy_9f93c814] = None,
23141
+ replication_rules: typing.Optional[typing.Sequence[typing.Union[ReplicationRule, typing.Dict[builtins.str, typing.Any]]]] = None,
22359
23142
  server_access_logs_bucket: typing.Optional[IBucket] = None,
22360
23143
  server_access_logs_prefix: typing.Optional[builtins.str] = None,
22361
23144
  target_object_key_format: typing.Optional[TargetObjectKeyFormat] = None,
@@ -22436,3 +23219,9 @@ def _typecheckingstub__afd8c4da1d866abcdc76879948bb11bd5a21a374e5ebf1e4445208dec
22436
23219
  ) -> None:
22437
23220
  """Type checking stubs"""
22438
23221
  pass
23222
+
23223
+ def _typecheckingstub__3cb691a849de33681a4f0021424f266609c2785cf8cbf5306c98726a6230a9e2(
23224
+ value: typing.Optional[builtins.str],
23225
+ ) -> None:
23226
+ """Type checking stubs"""
23227
+ pass