aws-cdk-lib 2.195.0__py3-none-any.whl → 2.224.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 (572) hide show
  1. aws_cdk/__init__.py +1806 -417
  2. aws_cdk/_jsii/__init__.py +1 -1
  3. aws_cdk/_jsii/{aws-cdk-lib@2.195.0.jsii.tgz → aws-cdk-lib@2.224.0.jsii.tgz} +0 -0
  4. aws_cdk/alexa_ask/__init__.py +12 -2
  5. aws_cdk/aws_accessanalyzer/__init__.py +323 -6
  6. aws_cdk/aws_acmpca/__init__.py +53 -10
  7. aws_cdk/aws_aiops/__init__.py +1019 -0
  8. aws_cdk/aws_amazonmq/__init__.py +357 -313
  9. aws_cdk/aws_amplify/__init__.py +173 -17
  10. aws_cdk/aws_amplifyuibuilder/__init__.py +35 -6
  11. aws_cdk/aws_apigateway/__init__.py +1245 -215
  12. aws_cdk/aws_apigatewayv2/__init__.py +3890 -476
  13. aws_cdk/aws_apigatewayv2_integrations/__init__.py +94 -16
  14. aws_cdk/aws_appconfig/__init__.py +618 -91
  15. aws_cdk/aws_appflow/__init__.py +151 -6
  16. aws_cdk/aws_appintegrations/__init__.py +546 -6
  17. aws_cdk/aws_applicationautoscaling/__init__.py +75 -10
  18. aws_cdk/aws_applicationinsights/__init__.py +13 -2
  19. aws_cdk/aws_applicationsignals/__init__.py +374 -6
  20. aws_cdk/aws_appmesh/__init__.py +136 -26
  21. aws_cdk/aws_apprunner/__init__.py +66 -18
  22. aws_cdk/aws_appstream/__init__.py +309 -55
  23. aws_cdk/aws_appsync/__init__.py +350 -94
  24. aws_cdk/aws_apptest/__init__.py +71 -2
  25. aws_cdk/aws_aps/__init__.py +2188 -94
  26. aws_cdk/aws_arcregionswitch/__init__.py +5095 -0
  27. aws_cdk/aws_arczonalshift/__init__.py +39 -12
  28. aws_cdk/aws_athena/__init__.py +365 -29
  29. aws_cdk/aws_auditmanager/__init__.py +71 -2
  30. aws_cdk/aws_autoscaling/__init__.py +165 -60
  31. aws_cdk/aws_autoscaling_common/__init__.py +3 -0
  32. aws_cdk/aws_autoscalingplans/__init__.py +13 -2
  33. aws_cdk/aws_b2bi/__init__.py +1819 -99
  34. aws_cdk/aws_backup/__init__.py +370 -42
  35. aws_cdk/aws_backupgateway/__init__.py +13 -2
  36. aws_cdk/aws_batch/__init__.py +1462 -163
  37. aws_cdk/aws_bcmdataexports/__init__.py +21 -2
  38. aws_cdk/aws_bedrock/__init__.py +7867 -727
  39. aws_cdk/aws_bedrockagentcore/__init__.py +10425 -0
  40. aws_cdk/aws_billingconductor/__init__.py +197 -11
  41. aws_cdk/aws_budgets/__init__.py +611 -4
  42. aws_cdk/aws_cassandra/__init__.py +247 -6
  43. aws_cdk/aws_ce/__init__.py +35 -6
  44. aws_cdk/aws_certificatemanager/__init__.py +258 -32
  45. aws_cdk/aws_chatbot/__init__.py +76 -6
  46. aws_cdk/aws_cleanrooms/__init__.py +709 -206
  47. aws_cdk/aws_cleanroomsml/__init__.py +13 -2
  48. aws_cdk/aws_cloud9/__init__.py +13 -2
  49. aws_cdk/aws_cloudformation/__init__.py +362 -189
  50. aws_cdk/aws_cloudfront/__init__.py +2188 -674
  51. aws_cdk/aws_cloudfront/experimental/__init__.py +114 -16
  52. aws_cdk/aws_cloudfront_origins/__init__.py +615 -74
  53. aws_cdk/aws_cloudtrail/__init__.py +311 -21
  54. aws_cdk/aws_cloudwatch/__init__.py +3093 -1038
  55. aws_cdk/aws_cloudwatch_actions/__init__.py +75 -1
  56. aws_cdk/aws_codeartifact/__init__.py +35 -6
  57. aws_cdk/aws_codebuild/__init__.py +1303 -135
  58. aws_cdk/aws_codecommit/__init__.py +29 -9
  59. aws_cdk/aws_codeconnections/__init__.py +13 -2
  60. aws_cdk/aws_codedeploy/__init__.py +130 -6
  61. aws_cdk/aws_codeguruprofiler/__init__.py +80 -2
  62. aws_cdk/aws_codegurureviewer/__init__.py +13 -2
  63. aws_cdk/aws_codepipeline/__init__.py +177 -71
  64. aws_cdk/aws_codepipeline_actions/__init__.py +753 -4
  65. aws_cdk/aws_codestar/__init__.py +13 -2
  66. aws_cdk/aws_codestarconnections/__init__.py +35 -6
  67. aws_cdk/aws_codestarnotifications/__init__.py +22 -2
  68. aws_cdk/aws_cognito/__init__.py +905 -92
  69. aws_cdk/aws_cognito_identitypool/__init__.py +23 -12
  70. aws_cdk/aws_comprehend/__init__.py +24 -4
  71. aws_cdk/aws_config/__init__.py +227 -30
  72. aws_cdk/aws_connect/__init__.py +2736 -191
  73. aws_cdk/aws_connectcampaigns/__init__.py +13 -2
  74. aws_cdk/aws_connectcampaignsv2/__init__.py +268 -6
  75. aws_cdk/aws_controltower/__init__.py +35 -6
  76. aws_cdk/aws_cur/__init__.py +100 -4
  77. aws_cdk/aws_customerprofiles/__init__.py +617 -27
  78. aws_cdk/aws_databrew/__init__.py +68 -12
  79. aws_cdk/aws_datapipeline/__init__.py +42 -2
  80. aws_cdk/aws_datasync/__init__.py +1514 -977
  81. aws_cdk/aws_datazone/__init__.py +7426 -1763
  82. aws_cdk/aws_dax/__init__.py +83 -6
  83. aws_cdk/aws_deadline/__init__.py +511 -36
  84. aws_cdk/aws_detective/__init__.py +35 -6
  85. aws_cdk/aws_devicefarm/__init__.py +68 -12
  86. aws_cdk/aws_devopsguru/__init__.py +37 -6
  87. aws_cdk/aws_directoryservice/__init__.py +53 -4
  88. aws_cdk/aws_dlm/__init__.py +13 -2
  89. aws_cdk/aws_dms/__init__.py +184 -27
  90. aws_cdk/aws_docdb/__init__.py +350 -49
  91. aws_cdk/aws_docdbelastic/__init__.py +13 -2
  92. aws_cdk/aws_dsql/__init__.py +386 -16
  93. aws_cdk/aws_dynamodb/__init__.py +1479 -170
  94. aws_cdk/aws_ec2/__init__.py +10465 -1335
  95. aws_cdk/aws_ecr/__init__.py +637 -43
  96. aws_cdk/aws_ecr_assets/__init__.py +10 -0
  97. aws_cdk/aws_ecs/__init__.py +6629 -490
  98. aws_cdk/aws_ecs_patterns/__init__.py +124 -12
  99. aws_cdk/aws_efs/__init__.py +276 -24
  100. aws_cdk/aws_eks/__init__.py +1132 -227
  101. aws_cdk/aws_elasticache/__init__.py +378 -25
  102. aws_cdk/aws_elasticbeanstalk/__init__.py +75 -8
  103. aws_cdk/aws_elasticloadbalancing/__init__.py +22 -2
  104. aws_cdk/aws_elasticloadbalancingv2/__init__.py +1796 -123
  105. aws_cdk/aws_elasticsearch/__init__.py +291 -9
  106. aws_cdk/aws_emr/__init__.py +219 -18
  107. aws_cdk/aws_emrcontainers/__init__.py +71 -2
  108. aws_cdk/aws_emrserverless/__init__.py +188 -3
  109. aws_cdk/aws_entityresolution/__init__.py +585 -58
  110. aws_cdk/aws_events/__init__.py +1007 -126
  111. aws_cdk/aws_events_targets/__init__.py +398 -65
  112. aws_cdk/aws_eventschemas/__init__.py +46 -8
  113. aws_cdk/aws_evidently/__init__.py +57 -10
  114. aws_cdk/aws_evs/__init__.py +2244 -0
  115. aws_cdk/aws_finspace/__init__.py +71 -2
  116. aws_cdk/aws_fis/__init__.py +26 -4
  117. aws_cdk/aws_fms/__init__.py +35 -6
  118. aws_cdk/aws_forecast/__init__.py +24 -4
  119. aws_cdk/aws_frauddetector/__init__.py +79 -14
  120. aws_cdk/aws_fsx/__init__.py +1349 -127
  121. aws_cdk/aws_gamelift/__init__.py +755 -94
  122. aws_cdk/aws_gameliftstreams/__init__.py +44 -22
  123. aws_cdk/aws_globalaccelerator/__init__.py +73 -14
  124. aws_cdk/aws_glue/__init__.py +1455 -378
  125. aws_cdk/aws_grafana/__init__.py +13 -2
  126. aws_cdk/aws_greengrass/__init__.py +654 -32
  127. aws_cdk/aws_greengrassv2/__init__.py +53 -4
  128. aws_cdk/aws_groundstation/__init__.py +122 -6
  129. aws_cdk/aws_guardduty/__init__.py +1613 -123
  130. aws_cdk/aws_healthimaging/__init__.py +71 -2
  131. aws_cdk/aws_healthlake/__init__.py +42 -2
  132. aws_cdk/aws_iam/__init__.py +921 -141
  133. aws_cdk/aws_identitystore/__init__.py +24 -4
  134. aws_cdk/aws_imagebuilder/__init__.py +1454 -199
  135. aws_cdk/aws_inspector/__init__.py +44 -6
  136. aws_cdk/aws_inspectorv2/__init__.py +2285 -243
  137. aws_cdk/aws_internetmonitor/__init__.py +71 -2
  138. aws_cdk/aws_invoicing/__init__.py +13 -2
  139. aws_cdk/aws_iot/__init__.py +1760 -64
  140. aws_cdk/aws_iotanalytics/__init__.py +162 -8
  141. aws_cdk/aws_iotcoredeviceadvisor/__init__.py +106 -40
  142. aws_cdk/aws_iotevents/__init__.py +122 -6
  143. aws_cdk/aws_iotfleethub/__init__.py +71 -2
  144. aws_cdk/aws_iotfleetwise/__init__.py +195 -14
  145. aws_cdk/aws_iotsitewise/__init__.py +1837 -89
  146. aws_cdk/aws_iotthingsgraph/__init__.py +13 -2
  147. aws_cdk/aws_iottwinmaker/__init__.py +115 -10
  148. aws_cdk/aws_iotwireless/__init__.py +649 -22
  149. aws_cdk/aws_ivs/__init__.py +561 -57
  150. aws_cdk/aws_ivschat/__init__.py +24 -4
  151. aws_cdk/aws_kafkaconnect/__init__.py +35 -6
  152. aws_cdk/aws_kendra/__init__.py +120 -28
  153. aws_cdk/aws_kendraranking/__init__.py +13 -2
  154. aws_cdk/aws_kinesis/__init__.py +641 -23
  155. aws_cdk/aws_kinesisanalytics/__init__.py +467 -96
  156. aws_cdk/aws_kinesisanalyticsv2/__init__.py +207 -19
  157. aws_cdk/aws_kinesisfirehose/__init__.py +3087 -295
  158. aws_cdk/aws_kinesisvideo/__init__.py +24 -4
  159. aws_cdk/aws_kms/__init__.py +204 -45
  160. aws_cdk/aws_lakeformation/__init__.py +80 -15
  161. aws_cdk/aws_lambda/__init__.py +2236 -297
  162. aws_cdk/aws_lambda_event_sources/__init__.py +638 -1
  163. aws_cdk/aws_lambda_nodejs/__init__.py +63 -24
  164. aws_cdk/aws_launchwizard/__init__.py +13 -2
  165. aws_cdk/aws_lex/__init__.py +2162 -212
  166. aws_cdk/aws_licensemanager/__init__.py +24 -4
  167. aws_cdk/aws_lightsail/__init__.py +2958 -1322
  168. aws_cdk/aws_location/__init__.py +618 -14
  169. aws_cdk/aws_logs/__init__.py +6014 -923
  170. aws_cdk/aws_lookoutequipment/__init__.py +13 -2
  171. aws_cdk/aws_lookoutmetrics/__init__.py +38 -6
  172. aws_cdk/aws_lookoutvision/__init__.py +71 -2
  173. aws_cdk/aws_m2/__init__.py +94 -19
  174. aws_cdk/aws_macie/__init__.py +49 -11
  175. aws_cdk/aws_managedblockchain/__init__.py +180 -6
  176. aws_cdk/aws_mediaconnect/__init__.py +101 -18
  177. aws_cdk/aws_mediaconvert/__init__.py +35 -6
  178. aws_cdk/aws_medialive/__init__.py +1938 -532
  179. aws_cdk/aws_mediapackage/__init__.py +59 -12
  180. aws_cdk/aws_mediapackagev2/__init__.py +1616 -233
  181. aws_cdk/aws_mediastore/__init__.py +13 -2
  182. aws_cdk/aws_mediatailor/__init__.py +583 -12
  183. aws_cdk/aws_memorydb/__init__.py +271 -12
  184. aws_cdk/aws_mpa/__init__.py +1495 -0
  185. aws_cdk/aws_msk/__init__.py +108 -22
  186. aws_cdk/aws_mwaa/__init__.py +121 -9
  187. aws_cdk/aws_neptune/__init__.py +290 -78
  188. aws_cdk/aws_neptunegraph/__init__.py +24 -4
  189. aws_cdk/aws_networkfirewall/__init__.py +1184 -164
  190. aws_cdk/aws_networkmanager/__init__.py +349 -33
  191. aws_cdk/aws_nimblestudio/__init__.py +283 -408
  192. aws_cdk/aws_notifications/__init__.py +317 -12
  193. aws_cdk/aws_notificationscontacts/__init__.py +13 -2
  194. aws_cdk/aws_oam/__init__.py +24 -4
  195. aws_cdk/aws_observabilityadmin/__init__.py +2561 -0
  196. aws_cdk/aws_odb/__init__.py +5872 -0
  197. aws_cdk/aws_omics/__init__.py +2967 -162
  198. aws_cdk/aws_opensearchserverless/__init__.py +312 -37
  199. aws_cdk/aws_opensearchservice/__init__.py +501 -19
  200. aws_cdk/aws_opsworks/__init__.py +235 -139
  201. aws_cdk/aws_opsworkscm/__init__.py +16 -52
  202. aws_cdk/aws_organizations/__init__.py +70 -10
  203. aws_cdk/aws_osis/__init__.py +167 -2
  204. aws_cdk/aws_panorama/__init__.py +181 -9
  205. aws_cdk/aws_paymentcryptography/__init__.py +24 -4
  206. aws_cdk/aws_pcaconnectorad/__init__.py +59 -10
  207. aws_cdk/aws_pcaconnectorscep/__init__.py +24 -4
  208. aws_cdk/aws_pcs/__init__.py +516 -64
  209. aws_cdk/aws_personalize/__init__.py +46 -8
  210. aws_cdk/aws_pinpoint/__init__.py +329 -38
  211. aws_cdk/aws_pinpointemail/__init__.py +48 -8
  212. aws_cdk/aws_pipes/__init__.py +12 -2
  213. aws_cdk/aws_proton/__init__.py +37 -6
  214. aws_cdk/aws_qbusiness/__init__.py +635 -34
  215. aws_cdk/aws_qldb/__init__.py +24 -4
  216. aws_cdk/aws_quicksight/__init__.py +7900 -1160
  217. aws_cdk/aws_ram/__init__.py +24 -4
  218. aws_cdk/aws_rbin/__init__.py +12 -2
  219. aws_cdk/aws_rds/__init__.py +3721 -573
  220. aws_cdk/aws_redshift/__init__.py +143 -20
  221. aws_cdk/aws_redshiftserverless/__init__.py +699 -11
  222. aws_cdk/aws_refactorspaces/__init__.py +64 -14
  223. aws_cdk/aws_rekognition/__init__.py +93 -6
  224. aws_cdk/aws_resiliencehub/__init__.py +24 -4
  225. aws_cdk/aws_resourceexplorer2/__init__.py +35 -6
  226. aws_cdk/aws_resourcegroups/__init__.py +82 -4
  227. aws_cdk/aws_robomaker/__init__.py +72 -12
  228. aws_cdk/aws_rolesanywhere/__init__.py +194 -19
  229. aws_cdk/aws_route53/__init__.py +3965 -1436
  230. aws_cdk/aws_route53_targets/__init__.py +3 -0
  231. aws_cdk/aws_route53profiles/__init__.py +37 -6
  232. aws_cdk/aws_route53recoverycontrol/__init__.py +46 -8
  233. aws_cdk/aws_route53recoveryreadiness/__init__.py +104 -8
  234. aws_cdk/aws_route53resolver/__init__.py +189 -40
  235. aws_cdk/aws_rtbfabric/__init__.py +3498 -0
  236. aws_cdk/aws_rum/__init__.py +13 -2
  237. aws_cdk/aws_s3/__init__.py +1742 -221
  238. aws_cdk/aws_s3_assets/__init__.py +11 -11
  239. aws_cdk/aws_s3_deployment/__init__.py +153 -11
  240. aws_cdk/aws_s3_notifications/__init__.py +7 -7
  241. aws_cdk/aws_s3express/__init__.py +1053 -6
  242. aws_cdk/aws_s3objectlambda/__init__.py +68 -16
  243. aws_cdk/aws_s3outposts/__init__.py +46 -8
  244. aws_cdk/aws_s3tables/__init__.py +2000 -323
  245. aws_cdk/aws_s3vectors/__init__.py +1378 -0
  246. aws_cdk/aws_sagemaker/__init__.py +6848 -373
  247. aws_cdk/aws_sam/__init__.py +79 -14
  248. aws_cdk/aws_scheduler/__init__.py +249 -4
  249. aws_cdk/aws_sdb/__init__.py +12 -2
  250. aws_cdk/aws_secretsmanager/__init__.py +194 -14
  251. aws_cdk/aws_securityhub/__init__.py +3121 -176
  252. aws_cdk/aws_securitylake/__init__.py +46 -8
  253. aws_cdk/aws_servicecatalog/__init__.py +429 -246
  254. aws_cdk/aws_servicecatalogappregistry/__init__.py +164 -8
  255. aws_cdk/aws_servicediscovery/__init__.py +188 -47
  256. aws_cdk/aws_ses/__init__.py +2265 -369
  257. aws_cdk/aws_shield/__init__.py +46 -8
  258. aws_cdk/aws_signer/__init__.py +33 -4
  259. aws_cdk/aws_simspaceweaver/__init__.py +42 -2
  260. aws_cdk/aws_smsvoice/__init__.py +4716 -0
  261. aws_cdk/aws_sns/__init__.py +263 -29
  262. aws_cdk/aws_sns_subscriptions/__init__.py +265 -2
  263. aws_cdk/aws_sqs/__init__.py +223 -14
  264. aws_cdk/aws_ssm/__init__.py +413 -58
  265. aws_cdk/aws_ssmcontacts/__init__.py +98 -9
  266. aws_cdk/aws_ssmguiconnect/__init__.py +20 -9
  267. aws_cdk/aws_ssmincidents/__init__.py +24 -4
  268. aws_cdk/aws_ssmquicksetup/__init__.py +393 -8
  269. aws_cdk/aws_sso/__init__.py +70 -12
  270. aws_cdk/aws_stepfunctions/__init__.py +823 -94
  271. aws_cdk/aws_stepfunctions_tasks/__init__.py +2323 -150
  272. aws_cdk/aws_supportapp/__init__.py +39 -6
  273. aws_cdk/aws_synthetics/__init__.py +1088 -126
  274. aws_cdk/aws_systemsmanagersap/__init__.py +13 -2
  275. aws_cdk/aws_timestream/__init__.py +104 -8
  276. aws_cdk/aws_transfer/__init__.py +784 -87
  277. aws_cdk/aws_verifiedpermissions/__init__.py +306 -13
  278. aws_cdk/aws_voiceid/__init__.py +54 -5
  279. aws_cdk/aws_vpclattice/__init__.py +589 -231
  280. aws_cdk/aws_waf/__init__.py +79 -14
  281. aws_cdk/aws_wafregional/__init__.py +123 -22
  282. aws_cdk/aws_wafv2/__init__.py +1183 -64
  283. aws_cdk/aws_wisdom/__init__.py +1403 -90
  284. aws_cdk/aws_workspaces/__init__.py +134 -6
  285. aws_cdk/aws_workspacesinstances/__init__.py +3940 -0
  286. aws_cdk/aws_workspacesthinclient/__init__.py +79 -10
  287. aws_cdk/aws_workspacesweb/__init__.py +1057 -141
  288. aws_cdk/aws_xray/__init__.py +48 -8
  289. aws_cdk/cloud_assembly_schema/__init__.py +368 -48
  290. aws_cdk/custom_resources/__init__.py +58 -12
  291. aws_cdk/cx_api/__init__.py +125 -21
  292. aws_cdk/interfaces/__init__.py +739 -0
  293. aws_cdk/interfaces/alexa_ask/__init__.py +146 -0
  294. aws_cdk/interfaces/aws_accessanalyzer/__init__.py +146 -0
  295. aws_cdk/interfaces/aws_acmpca/__init__.py +501 -0
  296. aws_cdk/interfaces/aws_aiops/__init__.py +146 -0
  297. aws_cdk/interfaces/aws_amazonmq/__init__.py +386 -0
  298. aws_cdk/interfaces/aws_amplify/__init__.py +352 -0
  299. aws_cdk/interfaces/aws_amplifyuibuilder/__init__.py +454 -0
  300. aws_cdk/interfaces/aws_apigateway/__init__.py +2486 -0
  301. aws_cdk/interfaces/aws_apigatewayv2/__init__.py +1651 -0
  302. aws_cdk/interfaces/aws_appconfig/__init__.py +1020 -0
  303. aws_cdk/interfaces/aws_appflow/__init__.py +404 -0
  304. aws_cdk/interfaces/aws_appintegrations/__init__.py +396 -0
  305. aws_cdk/interfaces/aws_applicationautoscaling/__init__.py +307 -0
  306. aws_cdk/interfaces/aws_applicationinsights/__init__.py +148 -0
  307. aws_cdk/interfaces/aws_applicationsignals/__init__.py +358 -0
  308. aws_cdk/interfaces/aws_appmesh/__init__.py +888 -0
  309. aws_cdk/interfaces/aws_apprunner/__init__.py +564 -0
  310. aws_cdk/interfaces/aws_appstream/__init__.py +1482 -0
  311. aws_cdk/interfaces/aws_appsync/__init__.py +1326 -0
  312. aws_cdk/interfaces/aws_apptest/__init__.py +163 -0
  313. aws_cdk/interfaces/aws_aps/__init__.py +558 -0
  314. aws_cdk/interfaces/aws_arcregionswitch/__init__.py +146 -0
  315. aws_cdk/interfaces/aws_arczonalshift/__init__.py +273 -0
  316. aws_cdk/interfaces/aws_athena/__init__.py +575 -0
  317. aws_cdk/interfaces/aws_auditmanager/__init__.py +163 -0
  318. aws_cdk/interfaces/aws_autoscaling/__init__.py +705 -0
  319. aws_cdk/interfaces/aws_autoscalingplans/__init__.py +148 -0
  320. aws_cdk/interfaces/aws_b2bi/__init__.py +524 -0
  321. aws_cdk/interfaces/aws_backup/__init__.py +955 -0
  322. aws_cdk/interfaces/aws_backupgateway/__init__.py +146 -0
  323. aws_cdk/interfaces/aws_batch/__init__.py +681 -0
  324. aws_cdk/interfaces/aws_bcmdataexports/__init__.py +146 -0
  325. aws_cdk/interfaces/aws_bedrock/__init__.py +1942 -0
  326. aws_cdk/interfaces/aws_bedrockagentcore/__init__.py +934 -0
  327. aws_cdk/interfaces/aws_billing/__init__.py +146 -0
  328. aws_cdk/interfaces/aws_billingconductor/__init__.py +463 -0
  329. aws_cdk/interfaces/aws_budgets/__init__.py +261 -0
  330. aws_cdk/interfaces/aws_cassandra/__init__.py +381 -0
  331. aws_cdk/interfaces/aws_ce/__init__.py +352 -0
  332. aws_cdk/interfaces/aws_certificatemanager/__init__.py +251 -0
  333. aws_cdk/interfaces/aws_chatbot/__init__.py +366 -0
  334. aws_cdk/interfaces/aws_cleanrooms/__init__.py +1103 -0
  335. aws_cdk/interfaces/aws_cleanroomsml/__init__.py +148 -0
  336. aws_cdk/interfaces/aws_cloud9/__init__.py +166 -0
  337. aws_cdk/interfaces/aws_cloudformation/__init__.py +1919 -0
  338. aws_cdk/interfaces/aws_cloudfront/__init__.py +1998 -0
  339. aws_cdk/interfaces/aws_cloudtrail/__init__.py +570 -0
  340. aws_cdk/interfaces/aws_cloudwatch/__init__.py +733 -0
  341. aws_cdk/interfaces/aws_codeartifact/__init__.py +352 -0
  342. aws_cdk/interfaces/aws_codebuild/__init__.py +487 -0
  343. aws_cdk/interfaces/aws_codecommit/__init__.py +163 -0
  344. aws_cdk/interfaces/aws_codeconnections/__init__.py +146 -0
  345. aws_cdk/interfaces/aws_codedeploy/__init__.py +352 -0
  346. aws_cdk/interfaces/aws_codeguruprofiler/__init__.py +168 -0
  347. aws_cdk/interfaces/aws_codegurureviewer/__init__.py +148 -0
  348. aws_cdk/interfaces/aws_codepipeline/__init__.py +388 -0
  349. aws_cdk/interfaces/aws_codestar/__init__.py +146 -0
  350. aws_cdk/interfaces/aws_codestarconnections/__init__.py +370 -0
  351. aws_cdk/interfaces/aws_codestarnotifications/__init__.py +148 -0
  352. aws_cdk/interfaces/aws_cognito/__init__.py +1929 -0
  353. aws_cdk/interfaces/aws_comprehend/__init__.py +251 -0
  354. aws_cdk/interfaces/aws_config/__init__.py +1165 -0
  355. aws_cdk/interfaces/aws_connect/__init__.py +2949 -0
  356. aws_cdk/interfaces/aws_connectcampaigns/__init__.py +146 -0
  357. aws_cdk/interfaces/aws_connectcampaignsv2/__init__.py +146 -0
  358. aws_cdk/interfaces/aws_controltower/__init__.py +394 -0
  359. aws_cdk/interfaces/aws_cur/__init__.py +146 -0
  360. aws_cdk/interfaces/aws_customerprofiles/__init__.py +915 -0
  361. aws_cdk/interfaces/aws_databrew/__init__.py +661 -0
  362. aws_cdk/interfaces/aws_datapipeline/__init__.py +146 -0
  363. aws_cdk/interfaces/aws_datasync/__init__.py +1384 -0
  364. aws_cdk/interfaces/aws_datazone/__init__.py +2238 -0
  365. aws_cdk/interfaces/aws_dax/__init__.py +364 -0
  366. aws_cdk/interfaces/aws_deadline/__init__.py +1303 -0
  367. aws_cdk/interfaces/aws_detective/__init__.py +364 -0
  368. aws_cdk/interfaces/aws_devicefarm/__init__.py +663 -0
  369. aws_cdk/interfaces/aws_devopsguru/__init__.py +362 -0
  370. aws_cdk/interfaces/aws_directoryservice/__init__.py +251 -0
  371. aws_cdk/interfaces/aws_dlm/__init__.py +166 -0
  372. aws_cdk/interfaces/aws_dms/__init__.py +1176 -0
  373. aws_cdk/interfaces/aws_docdb/__init__.py +560 -0
  374. aws_cdk/interfaces/aws_docdbelastic/__init__.py +146 -0
  375. aws_cdk/interfaces/aws_dsql/__init__.py +146 -0
  376. aws_cdk/interfaces/aws_dynamodb/__init__.py +278 -0
  377. aws_cdk/interfaces/aws_ec2/__init__.py +11963 -0
  378. aws_cdk/interfaces/aws_ecr/__init__.py +814 -0
  379. aws_cdk/interfaces/aws_ecs/__init__.py +845 -0
  380. aws_cdk/interfaces/aws_efs/__init__.py +392 -0
  381. aws_cdk/interfaces/aws_eks/__init__.py +948 -0
  382. aws_cdk/interfaces/aws_elasticache/__init__.py +1108 -0
  383. aws_cdk/interfaces/aws_elasticbeanstalk/__init__.py +503 -0
  384. aws_cdk/interfaces/aws_elasticloadbalancing/__init__.py +148 -0
  385. aws_cdk/interfaces/aws_elasticloadbalancingv2/__init__.py +795 -0
  386. aws_cdk/interfaces/aws_elasticsearch/__init__.py +158 -0
  387. aws_cdk/interfaces/aws_emr/__init__.py +913 -0
  388. aws_cdk/interfaces/aws_emrcontainers/__init__.py +168 -0
  389. aws_cdk/interfaces/aws_emrserverless/__init__.py +166 -0
  390. aws_cdk/interfaces/aws_entityresolution/__init__.py +608 -0
  391. aws_cdk/interfaces/aws_events/__init__.py +872 -0
  392. aws_cdk/interfaces/aws_eventschemas/__init__.py +455 -0
  393. aws_cdk/interfaces/aws_evidently/__init__.py +558 -0
  394. aws_cdk/interfaces/aws_evs/__init__.py +166 -0
  395. aws_cdk/interfaces/aws_finspace/__init__.py +166 -0
  396. aws_cdk/interfaces/aws_fis/__init__.py +271 -0
  397. aws_cdk/interfaces/aws_fms/__init__.py +364 -0
  398. aws_cdk/interfaces/aws_forecast/__init__.py +249 -0
  399. aws_cdk/interfaces/aws_frauddetector/__init__.py +764 -0
  400. aws_cdk/interfaces/aws_fsx/__init__.py +663 -0
  401. aws_cdk/interfaces/aws_gamelift/__init__.py +1325 -0
  402. aws_cdk/interfaces/aws_gameliftstreams/__init__.py +249 -0
  403. aws_cdk/interfaces/aws_globalaccelerator/__init__.py +461 -0
  404. aws_cdk/interfaces/aws_glue/__init__.py +2377 -0
  405. aws_cdk/interfaces/aws_grafana/__init__.py +146 -0
  406. aws_cdk/interfaces/aws_greengrass/__init__.py +1871 -0
  407. aws_cdk/interfaces/aws_greengrassv2/__init__.py +251 -0
  408. aws_cdk/interfaces/aws_groundstation/__init__.py +396 -0
  409. aws_cdk/interfaces/aws_guardduty/__init__.py +1225 -0
  410. aws_cdk/interfaces/aws_healthimaging/__init__.py +163 -0
  411. aws_cdk/interfaces/aws_healthlake/__init__.py +146 -0
  412. aws_cdk/interfaces/aws_iam/__init__.py +1803 -0
  413. aws_cdk/interfaces/aws_identitystore/__init__.py +288 -0
  414. aws_cdk/interfaces/aws_imagebuilder/__init__.py +984 -0
  415. aws_cdk/interfaces/aws_inspector/__init__.py +354 -0
  416. aws_cdk/interfaces/aws_inspectorv2/__init__.py +467 -0
  417. aws_cdk/interfaces/aws_internetmonitor/__init__.py +163 -0
  418. aws_cdk/interfaces/aws_invoicing/__init__.py +146 -0
  419. aws_cdk/interfaces/aws_iot/__init__.py +3483 -0
  420. aws_cdk/interfaces/aws_iotanalytics/__init__.py +455 -0
  421. aws_cdk/interfaces/aws_iotcoredeviceadvisor/__init__.py +168 -0
  422. aws_cdk/interfaces/aws_iotevents/__init__.py +352 -0
  423. aws_cdk/interfaces/aws_iotfleethub/__init__.py +166 -0
  424. aws_cdk/interfaces/aws_iotfleetwise/__init__.py +892 -0
  425. aws_cdk/interfaces/aws_iotsitewise/__init__.py +1097 -0
  426. aws_cdk/interfaces/aws_iotthingsgraph/__init__.py +146 -0
  427. aws_cdk/interfaces/aws_iottwinmaker/__init__.py +711 -0
  428. aws_cdk/interfaces/aws_iotwireless/__init__.py +1401 -0
  429. aws_cdk/interfaces/aws_ivs/__init__.py +1075 -0
  430. aws_cdk/interfaces/aws_ivschat/__init__.py +251 -0
  431. aws_cdk/interfaces/aws_kafkaconnect/__init__.py +354 -0
  432. aws_cdk/interfaces/aws_kendra/__init__.py +428 -0
  433. aws_cdk/interfaces/aws_kendraranking/__init__.py +166 -0
  434. aws_cdk/interfaces/aws_kinesis/__init__.py +364 -0
  435. aws_cdk/interfaces/aws_kinesisanalytics/__init__.py +364 -0
  436. aws_cdk/interfaces/aws_kinesisanalyticsv2/__init__.py +479 -0
  437. aws_cdk/interfaces/aws_kinesisfirehose/__init__.py +168 -0
  438. aws_cdk/interfaces/aws_kinesisvideo/__init__.py +283 -0
  439. aws_cdk/interfaces/aws_kms/__init__.py +376 -0
  440. aws_cdk/interfaces/aws_lakeformation/__init__.py +860 -0
  441. aws_cdk/interfaces/aws_lambda/__init__.py +1141 -0
  442. aws_cdk/interfaces/aws_launchwizard/__init__.py +146 -0
  443. aws_cdk/interfaces/aws_lex/__init__.py +513 -0
  444. aws_cdk/interfaces/aws_licensemanager/__init__.py +249 -0
  445. aws_cdk/interfaces/aws_lightsail/__init__.py +1744 -0
  446. aws_cdk/interfaces/aws_location/__init__.py +879 -0
  447. aws_cdk/interfaces/aws_logs/__init__.py +1667 -0
  448. aws_cdk/interfaces/aws_lookoutequipment/__init__.py +168 -0
  449. aws_cdk/interfaces/aws_lookoutmetrics/__init__.py +251 -0
  450. aws_cdk/interfaces/aws_lookoutvision/__init__.py +163 -0
  451. aws_cdk/interfaces/aws_m2/__init__.py +352 -0
  452. aws_cdk/interfaces/aws_macie/__init__.py +512 -0
  453. aws_cdk/interfaces/aws_managedblockchain/__init__.py +381 -0
  454. aws_cdk/interfaces/aws_mediaconnect/__init__.py +1028 -0
  455. aws_cdk/interfaces/aws_mediaconvert/__init__.py +396 -0
  456. aws_cdk/interfaces/aws_medialive/__init__.py +1755 -0
  457. aws_cdk/interfaces/aws_mediapackage/__init__.py +644 -0
  458. aws_cdk/interfaces/aws_mediapackagev2/__init__.py +618 -0
  459. aws_cdk/interfaces/aws_mediastore/__init__.py +146 -0
  460. aws_cdk/interfaces/aws_mediatailor/__init__.py +788 -0
  461. aws_cdk/interfaces/aws_memorydb/__init__.py +685 -0
  462. aws_cdk/interfaces/aws_mpa/__init__.py +249 -0
  463. aws_cdk/interfaces/aws_msk/__init__.py +764 -0
  464. aws_cdk/interfaces/aws_mwaa/__init__.py +166 -0
  465. aws_cdk/interfaces/aws_neptune/__init__.py +663 -0
  466. aws_cdk/interfaces/aws_neptunegraph/__init__.py +265 -0
  467. aws_cdk/interfaces/aws_networkfirewall/__init__.py +669 -0
  468. aws_cdk/interfaces/aws_networkmanager/__init__.py +1832 -0
  469. aws_cdk/interfaces/aws_nimblestudio/__init__.py +388 -0
  470. aws_cdk/interfaces/aws_notifications/__init__.py +868 -0
  471. aws_cdk/interfaces/aws_notificationscontacts/__init__.py +148 -0
  472. aws_cdk/interfaces/aws_oam/__init__.py +249 -0
  473. aws_cdk/interfaces/aws_observabilityadmin/__init__.py +362 -0
  474. aws_cdk/interfaces/aws_odb/__init__.py +562 -0
  475. aws_cdk/interfaces/aws_omics/__init__.py +838 -0
  476. aws_cdk/interfaces/aws_opensearchserverless/__init__.py +859 -0
  477. aws_cdk/interfaces/aws_opensearchservice/__init__.py +283 -0
  478. aws_cdk/interfaces/aws_opsworks/__init__.py +772 -0
  479. aws_cdk/interfaces/aws_opsworkscm/__init__.py +146 -0
  480. aws_cdk/interfaces/aws_organizations/__init__.py +646 -0
  481. aws_cdk/interfaces/aws_osis/__init__.py +146 -0
  482. aws_cdk/interfaces/aws_panorama/__init__.py +420 -0
  483. aws_cdk/interfaces/aws_paymentcryptography/__init__.py +249 -0
  484. aws_cdk/interfaces/aws_pcaconnectorad/__init__.py +608 -0
  485. aws_cdk/interfaces/aws_pcaconnectorscep/__init__.py +249 -0
  486. aws_cdk/interfaces/aws_pcs/__init__.py +352 -0
  487. aws_cdk/interfaces/aws_personalize/__init__.py +455 -0
  488. aws_cdk/interfaces/aws_pinpoint/__init__.py +2125 -0
  489. aws_cdk/interfaces/aws_pinpointemail/__init__.py +467 -0
  490. aws_cdk/interfaces/aws_pipes/__init__.py +158 -0
  491. aws_cdk/interfaces/aws_proton/__init__.py +360 -0
  492. aws_cdk/interfaces/aws_qbusiness/__init__.py +1122 -0
  493. aws_cdk/interfaces/aws_qldb/__init__.py +283 -0
  494. aws_cdk/interfaces/aws_quicksight/__init__.py +1566 -0
  495. aws_cdk/interfaces/aws_ram/__init__.py +249 -0
  496. aws_cdk/interfaces/aws_rbin/__init__.py +146 -0
  497. aws_cdk/interfaces/aws_rds/__init__.py +1780 -0
  498. aws_cdk/interfaces/aws_redshift/__init__.py +1104 -0
  499. aws_cdk/interfaces/aws_redshiftserverless/__init__.py +356 -0
  500. aws_cdk/interfaces/aws_refactorspaces/__init__.py +605 -0
  501. aws_cdk/interfaces/aws_rekognition/__init__.py +406 -0
  502. aws_cdk/interfaces/aws_resiliencehub/__init__.py +251 -0
  503. aws_cdk/interfaces/aws_resourceexplorer2/__init__.py +354 -0
  504. aws_cdk/interfaces/aws_resourcegroups/__init__.py +261 -0
  505. aws_cdk/interfaces/aws_robomaker/__init__.py +673 -0
  506. aws_cdk/interfaces/aws_rolesanywhere/__init__.py +384 -0
  507. aws_cdk/interfaces/aws_route53/__init__.py +804 -0
  508. aws_cdk/interfaces/aws_route53profiles/__init__.py +368 -0
  509. aws_cdk/interfaces/aws_route53recoverycontrol/__init__.py +463 -0
  510. aws_cdk/interfaces/aws_route53recoveryreadiness/__init__.py +535 -0
  511. aws_cdk/interfaces/aws_route53resolver/__init__.py +1356 -0
  512. aws_cdk/interfaces/aws_rtbfabric/__init__.py +352 -0
  513. aws_cdk/interfaces/aws_rum/__init__.py +146 -0
  514. aws_cdk/interfaces/aws_s3/__init__.py +1171 -0
  515. aws_cdk/interfaces/aws_s3express/__init__.py +392 -0
  516. aws_cdk/interfaces/aws_s3objectlambda/__init__.py +271 -0
  517. aws_cdk/interfaces/aws_s3outposts/__init__.py +455 -0
  518. aws_cdk/interfaces/aws_s3tables/__init__.py +575 -0
  519. aws_cdk/interfaces/aws_s3vectors/__init__.py +354 -0
  520. aws_cdk/interfaces/aws_sagemaker/__init__.py +3797 -0
  521. aws_cdk/interfaces/aws_sam/__init__.py +603 -0
  522. aws_cdk/interfaces/aws_scheduler/__init__.py +286 -0
  523. aws_cdk/interfaces/aws_sdb/__init__.py +146 -0
  524. aws_cdk/interfaces/aws_secretsmanager/__init__.py +461 -0
  525. aws_cdk/interfaces/aws_securityhub/__init__.py +1499 -0
  526. aws_cdk/interfaces/aws_securitylake/__init__.py +474 -0
  527. aws_cdk/interfaces/aws_servicecatalog/__init__.py +1829 -0
  528. aws_cdk/interfaces/aws_servicecatalogappregistry/__init__.py +557 -0
  529. aws_cdk/interfaces/aws_servicediscovery/__init__.py +636 -0
  530. aws_cdk/interfaces/aws_ses/__init__.py +2018 -0
  531. aws_cdk/interfaces/aws_shield/__init__.py +455 -0
  532. aws_cdk/interfaces/aws_signer/__init__.py +266 -0
  533. aws_cdk/interfaces/aws_simspaceweaver/__init__.py +146 -0
  534. aws_cdk/interfaces/aws_smsvoice/__init__.py +892 -0
  535. aws_cdk/interfaces/aws_sns/__init__.py +455 -0
  536. aws_cdk/interfaces/aws_sqs/__init__.py +364 -0
  537. aws_cdk/interfaces/aws_ssm/__init__.py +982 -0
  538. aws_cdk/interfaces/aws_ssmcontacts/__init__.py +455 -0
  539. aws_cdk/interfaces/aws_ssmguiconnect/__init__.py +146 -0
  540. aws_cdk/interfaces/aws_ssmincidents/__init__.py +249 -0
  541. aws_cdk/interfaces/aws_ssmquicksetup/__init__.py +253 -0
  542. aws_cdk/interfaces/aws_sso/__init__.py +797 -0
  543. aws_cdk/interfaces/aws_stepfunctions/__init__.py +459 -0
  544. aws_cdk/interfaces/aws_supportapp/__init__.py +372 -0
  545. aws_cdk/interfaces/aws_synthetics/__init__.py +249 -0
  546. aws_cdk/interfaces/aws_systemsmanagersap/__init__.py +148 -0
  547. aws_cdk/interfaces/aws_timestream/__init__.py +526 -0
  548. aws_cdk/interfaces/aws_transfer/__init__.py +967 -0
  549. aws_cdk/interfaces/aws_verifiedpermissions/__init__.py +538 -0
  550. aws_cdk/interfaces/aws_voiceid/__init__.py +146 -0
  551. aws_cdk/interfaces/aws_vpclattice/__init__.py +1418 -0
  552. aws_cdk/interfaces/aws_waf/__init__.py +764 -0
  553. aws_cdk/interfaces/aws_wafregional/__init__.py +1182 -0
  554. aws_cdk/interfaces/aws_wafv2/__init__.py +870 -0
  555. aws_cdk/interfaces/aws_wisdom/__init__.py +1556 -0
  556. aws_cdk/interfaces/aws_workspaces/__init__.py +352 -0
  557. aws_cdk/interfaces/aws_workspacesinstances/__init__.py +390 -0
  558. aws_cdk/interfaces/aws_workspacesthinclient/__init__.py +168 -0
  559. aws_cdk/interfaces/aws_workspacesweb/__init__.py +1085 -0
  560. aws_cdk/interfaces/aws_xray/__init__.py +457 -0
  561. aws_cdk/lambda_layer_awscli/__init__.py +6 -0
  562. aws_cdk/lambda_layer_node_proxy_agent/__init__.py +6 -0
  563. aws_cdk/pipelines/__init__.py +202 -52
  564. aws_cdk/region_info/__init__.py +3 -0
  565. aws_cdk/triggers/__init__.py +66 -18
  566. {aws_cdk_lib-2.195.0.dist-info → aws_cdk_lib-2.224.0.dist-info}/METADATA +418 -18
  567. aws_cdk_lib-2.224.0.dist-info/RECORD +584 -0
  568. aws_cdk_lib-2.195.0.dist-info/RECORD +0 -304
  569. {aws_cdk_lib-2.195.0.dist-info → aws_cdk_lib-2.224.0.dist-info}/LICENSE +0 -0
  570. {aws_cdk_lib-2.195.0.dist-info → aws_cdk_lib-2.224.0.dist-info}/NOTICE +0 -0
  571. {aws_cdk_lib-2.195.0.dist-info → aws_cdk_lib-2.224.0.dist-info}/WHEEL +0 -0
  572. {aws_cdk_lib-2.195.0.dist-info → aws_cdk_lib-2.224.0.dist-info}/top_level.txt +0 -0
@@ -152,6 +152,22 @@ bucket.grant_read_write(my_lambda)
152
152
  Will give the Lambda's execution role permissions to read and write
153
153
  from the bucket.
154
154
 
155
+ ### Understanding "grant" Methods
156
+
157
+ The S3 construct library provides several grant methods for the `Bucket` resource, but two of them have a special behavior. This two accept an `objectsKeyPattern` parameter to restrict granted permissions to specific resources:
158
+
159
+ * `grantRead`
160
+ * `grantReadWrite`
161
+
162
+ When examining the synthesized policy, you'll notice it includes both your specified object key patterns and the bucket itself.
163
+ This is by design. Some permissions (like `s3:ListBucket`) apply at the bucket level, while others (like `s3:GetObject`) apply to specific objects.
164
+
165
+ Specifically, the [`s3:ListBucket` action operates on bucket resources](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazons3.html#amazons3-bucket)
166
+ and requires the bucket ARN to work properly. This might be seen as a bug, giving the impression that more permissions were granted than the ones you intended, but the reality is that the policy does not ignore your `objectsKeyPattern` - object-specific actions like `s3:GetObject`
167
+ will still be limited to the resources defined in your pattern.
168
+
169
+ If you need to restrict the `s3:ListBucket` action to specific paths, you can add a `Condition` to your policy that limits the `objectsKeyPattern` to specific folders. For more details and examples, see the [AWS documentation on bucket policies](https://docs.aws.amazon.com/AmazonS3/latest/userguide/example-bucket-policies.html#example-bucket-policies-folders).
170
+
155
171
  ## AWS Foundational Security Best Practices
156
172
 
157
173
  ### Enforcing SSL
@@ -183,8 +199,8 @@ To use a bucket in a different stack in the same CDK application, pass the objec
183
199
  #
184
200
  class Producer(Stack):
185
201
 
186
- def __init__(self, scope, id, *, description=None, env=None, stackName=None, tags=None, notificationArns=None, synthesizer=None, terminationProtection=None, analyticsReporting=None, crossRegionReferences=None, permissionsBoundary=None, suppressTemplateIndentation=None):
187
- super().__init__(scope, id, description=description, env=env, stackName=stackName, tags=tags, notificationArns=notificationArns, synthesizer=synthesizer, terminationProtection=terminationProtection, analyticsReporting=analyticsReporting, crossRegionReferences=crossRegionReferences, permissionsBoundary=permissionsBoundary, suppressTemplateIndentation=suppressTemplateIndentation)
202
+ def __init__(self, scope, id, *, description=None, env=None, stackName=None, tags=None, notificationArns=None, synthesizer=None, terminationProtection=None, analyticsReporting=None, crossRegionReferences=None, permissionsBoundary=None, suppressTemplateIndentation=None, propertyInjectors=None):
203
+ super().__init__(scope, id, description=description, env=env, stackName=stackName, tags=tags, notificationArns=notificationArns, synthesizer=synthesizer, terminationProtection=terminationProtection, analyticsReporting=analyticsReporting, crossRegionReferences=crossRegionReferences, permissionsBoundary=permissionsBoundary, suppressTemplateIndentation=suppressTemplateIndentation, propertyInjectors=propertyInjectors)
188
204
 
189
205
  bucket = s3.Bucket(self, "MyBucket",
190
206
  removal_policy=cdk.RemovalPolicy.DESTROY
@@ -195,8 +211,8 @@ class Producer(Stack):
195
211
  # Stack that consumes the bucket
196
212
  #
197
213
  class Consumer(Stack):
198
- def __init__(self, scope, id, *, userBucket, description=None, env=None, stackName=None, tags=None, notificationArns=None, synthesizer=None, terminationProtection=None, analyticsReporting=None, crossRegionReferences=None, permissionsBoundary=None, suppressTemplateIndentation=None):
199
- super().__init__(scope, id, userBucket=userBucket, description=description, env=env, stackName=stackName, tags=tags, notificationArns=notificationArns, synthesizer=synthesizer, terminationProtection=terminationProtection, analyticsReporting=analyticsReporting, crossRegionReferences=crossRegionReferences, permissionsBoundary=permissionsBoundary, suppressTemplateIndentation=suppressTemplateIndentation)
214
+ def __init__(self, scope, id, *, userBucket, description=None, env=None, stackName=None, tags=None, notificationArns=None, synthesizer=None, terminationProtection=None, analyticsReporting=None, crossRegionReferences=None, permissionsBoundary=None, suppressTemplateIndentation=None, propertyInjectors=None):
215
+ super().__init__(scope, id, userBucket=userBucket, description=description, env=env, stackName=stackName, tags=tags, notificationArns=notificationArns, synthesizer=synthesizer, terminationProtection=terminationProtection, analyticsReporting=analyticsReporting, crossRegionReferences=crossRegionReferences, permissionsBoundary=permissionsBoundary, suppressTemplateIndentation=suppressTemplateIndentation, propertyInjectors=propertyInjectors)
200
216
 
201
217
  user = iam.User(self, "MyUser")
202
218
  user_bucket.grant_read_write(user)
@@ -360,19 +376,19 @@ bucket = s3.Bucket(self, "MyBlockedBucket",
360
376
  )
361
377
  ```
362
378
 
363
- Block and ignore public ACLs:
379
+ Block and ignore public ACLs (other options remain unblocked):
364
380
 
365
381
  ```python
366
382
  bucket = s3.Bucket(self, "MyBlockedBucket",
367
- block_public_access=s3.BlockPublicAccess.BLOCK_ACLS
383
+ block_public_access=s3.BlockPublicAccess.BLOCK_ACLS_ONLY
368
384
  )
369
385
  ```
370
386
 
371
- Alternatively, specify the settings manually:
387
+ Alternatively, specify the settings manually (unspecified options will remain blocked):
372
388
 
373
389
  ```python
374
390
  bucket = s3.Bucket(self, "MyBlockedBucket",
375
- block_public_access=s3.BlockPublicAccess(block_public_policy=True)
391
+ block_public_access=s3.BlockPublicAccess(block_public_policy=False)
376
392
  )
377
393
  ```
378
394
 
@@ -904,12 +920,15 @@ To replicate objects to a destination bucket, you can specify the `replicationRu
904
920
  # destination_bucket1: s3.IBucket
905
921
  # destination_bucket2: s3.IBucket
906
922
  # replication_role: iam.IRole
907
- # kms_key: kms.IKey
923
+ # encryption_key: kms.IKey
924
+ # destination_encryption_key: kms.IKey
908
925
 
909
926
 
910
927
  source_bucket = s3.Bucket(self, "SourceBucket",
911
928
  # Versioning must be enabled on both the source and destination bucket
912
929
  versioned=True,
930
+ # Optional. Specify the KMS key to use for encrypts objects in the source bucket.
931
+ encryption_key=encryption_key,
913
932
  # Optional. If not specified, a new role will be created.
914
933
  replication_role=replication_role,
915
934
  replication_rules=[s3.ReplicationRule(
@@ -932,7 +951,7 @@ source_bucket = s3.Bucket(self, "SourceBucket",
932
951
  # If set, metrics will be output to indicate whether replication by S3 RTC took longer than the configured time.
933
952
  metrics=s3.ReplicationTimeValue.FIFTEEN_MINUTES,
934
953
  # The kms key to use for the destination bucket.
935
- kms_key=kms_key,
954
+ kms_key=destination_encryption_key,
936
955
  # The storage class to use for the destination bucket.
937
956
  storage_class=s3.StorageClass.INFREQUENT_ACCESS,
938
957
  # Whether to replicate objects with SSE-KMS encryption.
@@ -958,6 +977,15 @@ source_bucket = s3.Bucket(self, "SourceBucket",
958
977
  )
959
978
  ]
960
979
  )
980
+
981
+ # Grant permissions to the replication role.
982
+ # This method is not required if you choose to use an auto-generated replication role or manually grant permissions.
983
+ source_bucket.grant_replication_permission(replication_role,
984
+ # Optional. Specify the KMS key to use for decrypting objects in the source bucket.
985
+ source_decryption_key=encryption_key,
986
+ destinations=[s3.GrantReplicationPermissionDestinationProps(bucket=destination_bucket1), s3.GrantReplicationPermissionDestinationProps(bucket=destination_bucket2, encryption_key=destination_encryption_key)
987
+ ]
988
+ )
961
989
  ```
962
990
 
963
991
  ### Cross Account Replication
@@ -1063,6 +1091,28 @@ from ..aws_iam import (
1063
1091
  PolicyStatement as _PolicyStatement_0fe33853,
1064
1092
  )
1065
1093
  from ..aws_kms import IKey as _IKey_5f11635f
1094
+ from ..interfaces.aws_s3 import (
1095
+ AccessGrantReference as _AccessGrantReference_4b0925c1,
1096
+ AccessGrantsInstanceReference as _AccessGrantsInstanceReference_18c061b7,
1097
+ AccessGrantsLocationReference as _AccessGrantsLocationReference_6163b002,
1098
+ AccessPointReference as _AccessPointReference_b9bf9d61,
1099
+ BucketPolicyReference as _BucketPolicyReference_3414f1e3,
1100
+ BucketReference as _BucketReference_502fb39f,
1101
+ IAccessGrantRef as _IAccessGrantRef_0e7c5209,
1102
+ IAccessGrantsInstanceRef as _IAccessGrantsInstanceRef_94e5b823,
1103
+ IAccessGrantsLocationRef as _IAccessGrantsLocationRef_5ae01054,
1104
+ IAccessPointRef as _IAccessPointRef_02282fed,
1105
+ IBucketPolicyRef as _IBucketPolicyRef_8ee2499d,
1106
+ IBucketRef as _IBucketRef_3debe44e,
1107
+ IMultiRegionAccessPointPolicyRef as _IMultiRegionAccessPointPolicyRef_2e4f5aa6,
1108
+ IMultiRegionAccessPointRef as _IMultiRegionAccessPointRef_b814832f,
1109
+ IStorageLensGroupRef as _IStorageLensGroupRef_aa787427,
1110
+ IStorageLensRef as _IStorageLensRef_a99bd868,
1111
+ MultiRegionAccessPointPolicyReference as _MultiRegionAccessPointPolicyReference_f5654e86,
1112
+ MultiRegionAccessPointReference as _MultiRegionAccessPointReference_590848b5,
1113
+ StorageLensGroupReference as _StorageLensGroupReference_c117a5a4,
1114
+ StorageLensReference as _StorageLensReference_cc81afb5,
1115
+ )
1066
1116
 
1067
1117
 
1068
1118
  class BlockPublicAccess(
@@ -1074,8 +1124,15 @@ class BlockPublicAccess(
1074
1124
 
1075
1125
  Example::
1076
1126
 
1077
- bucket = s3.Bucket(self, "MyBlockedBucket",
1078
- block_public_access=s3.BlockPublicAccess.BLOCK_ALL
1127
+ from aws_cdk import RemovalPolicy
1128
+
1129
+
1130
+ s3.Bucket(scope, "Bucket",
1131
+ block_public_access=s3.BlockPublicAccess.BLOCK_ALL,
1132
+ encryption=s3.BucketEncryption.S3_MANAGED,
1133
+ enforce_sSL=True,
1134
+ versioned=True,
1135
+ removal_policy=RemovalPolicy.RETAIN
1079
1136
  )
1080
1137
  '''
1081
1138
 
@@ -1105,11 +1162,26 @@ class BlockPublicAccess(
1105
1162
  @jsii.python.classproperty
1106
1163
  @jsii.member(jsii_name="BLOCK_ACLS")
1107
1164
  def BLOCK_ACLS(cls) -> "BlockPublicAccess":
1165
+ '''
1166
+ :deprecated: Use ``BLOCK_ACLS_ONLY`` instead.
1167
+
1168
+ :stability: deprecated
1169
+ '''
1108
1170
  return typing.cast("BlockPublicAccess", jsii.sget(cls, "BLOCK_ACLS"))
1109
1171
 
1172
+ @jsii.python.classproperty
1173
+ @jsii.member(jsii_name="BLOCK_ACLS_ONLY")
1174
+ def BLOCK_ACLS_ONLY(cls) -> "BlockPublicAccess":
1175
+ '''Use this option if you want to only block the ACLs, using this will set blockPublicPolicy and restrictPublicBuckets to false.'''
1176
+ return typing.cast("BlockPublicAccess", jsii.sget(cls, "BLOCK_ACLS_ONLY"))
1177
+
1110
1178
  @jsii.python.classproperty
1111
1179
  @jsii.member(jsii_name="BLOCK_ALL")
1112
1180
  def BLOCK_ALL(cls) -> "BlockPublicAccess":
1181
+ '''Use this option if you want to ensure every public access method is blocked.
1182
+
1183
+ However keep in mind that this is the default state of an S3 bucket, and leaving blockPublicAccess undefined would also work.
1184
+ '''
1113
1185
  return typing.cast("BlockPublicAccess", jsii.sget(cls, "BLOCK_ALL"))
1114
1186
 
1115
1187
  @builtins.property
@@ -1191,7 +1263,7 @@ class BlockPublicAccessOptions:
1191
1263
  Example::
1192
1264
 
1193
1265
  bucket = s3.Bucket(self, "MyBlockedBucket",
1194
- block_public_access=s3.BlockPublicAccess(block_public_policy=True)
1266
+ block_public_access=s3.BlockPublicAccess(block_public_policy=False)
1195
1267
  )
1196
1268
  '''
1197
1269
  if __debug__:
@@ -1580,16 +1652,17 @@ class BucketEncryption(enum.Enum):
1580
1652
 
1581
1653
  Example::
1582
1654
 
1583
- from aws_cdk.aws_s3 import BucketEncryption
1655
+ # application: appconfig.Application
1584
1656
 
1585
1657
 
1586
- app = App(
1587
- default_stack_synthesizer=AppStagingSynthesizer.default_resources(
1588
- app_id="my-app-id",
1589
- staging_bucket_encryption=BucketEncryption.S3_MANAGED,
1590
- file_asset_publishing_role=BootstrapRole.from_role_arn("arn:aws:iam::123456789012:role/S3Access"),
1591
- image_asset_publishing_role=BootstrapRole.from_role_arn("arn:aws:iam::123456789012:role/ECRAccess")
1592
- )
1658
+ bucket = s3.Bucket(self, "MyBucket",
1659
+ versioned=True,
1660
+ encryption=s3.BucketEncryption.KMS
1661
+ )
1662
+
1663
+ appconfig.SourcedConfiguration(self, "MySourcedConfiguration",
1664
+ application=application,
1665
+ location=appconfig.ConfigurationSource.from_bucket(bucket, "path/to/file.json")
1593
1666
  )
1594
1667
  '''
1595
1668
 
@@ -1803,6 +1876,7 @@ class BucketNotificationDestinationType(enum.Enum):
1803
1876
  TOPIC = "TOPIC"
1804
1877
 
1805
1878
 
1879
+ @jsii.implements(_IBucketPolicyRef_8ee2499d)
1806
1880
  class BucketPolicy(
1807
1881
  _Resource_45bc6135,
1808
1882
  metaclass=jsii.JSIIMeta,
@@ -1877,19 +1951,23 @@ class BucketPolicy(
1877
1951
  id: builtins.str,
1878
1952
  *,
1879
1953
  bucket: "IBucket",
1954
+ document: typing.Optional[_PolicyDocument_3ac34393] = None,
1880
1955
  removal_policy: typing.Optional[_RemovalPolicy_9f93c814] = None,
1881
1956
  ) -> None:
1882
1957
  '''
1883
1958
  :param scope: -
1884
1959
  :param id: -
1885
1960
  :param bucket: The Amazon S3 bucket that the policy applies to.
1961
+ :param document: Policy document to apply to the bucket. Default: - A new empty PolicyDocument will be created.
1886
1962
  :param removal_policy: Policy to apply when the policy is removed from this stack. Default: - RemovalPolicy.DESTROY.
1887
1963
  '''
1888
1964
  if __debug__:
1889
1965
  type_hints = typing.get_type_hints(_typecheckingstub__910b3df1208e67cb52dad0b0b8c5feb43c7bddb0ced50eaf6c953477298a840e)
1890
1966
  check_type(argname="argument scope", value=scope, expected_type=type_hints["scope"])
1891
1967
  check_type(argname="argument id", value=id, expected_type=type_hints["id"])
1892
- props = BucketPolicyProps(bucket=bucket, removal_policy=removal_policy)
1968
+ props = BucketPolicyProps(
1969
+ bucket=bucket, document=document, removal_policy=removal_policy
1970
+ )
1893
1971
 
1894
1972
  jsii.create(self.__class__, self, [scope, id, props])
1895
1973
 
@@ -1919,12 +1997,24 @@ class BucketPolicy(
1919
1997
  check_type(argname="argument removal_policy", value=removal_policy, expected_type=type_hints["removal_policy"])
1920
1998
  return typing.cast(None, jsii.invoke(self, "applyRemovalPolicy", [removal_policy]))
1921
1999
 
2000
+ @jsii.python.classproperty
2001
+ @jsii.member(jsii_name="PROPERTY_INJECTION_ID")
2002
+ def PROPERTY_INJECTION_ID(cls) -> builtins.str:
2003
+ '''Uniquely identifies this class.'''
2004
+ return typing.cast(builtins.str, jsii.sget(cls, "PROPERTY_INJECTION_ID"))
2005
+
1922
2006
  @builtins.property
1923
2007
  @jsii.member(jsii_name="bucket")
1924
2008
  def bucket(self) -> "IBucket":
1925
2009
  '''The Bucket this Policy applies to.'''
1926
2010
  return typing.cast("IBucket", jsii.get(self, "bucket"))
1927
2011
 
2012
+ @builtins.property
2013
+ @jsii.member(jsii_name="bucketPolicyRef")
2014
+ def bucket_policy_ref(self) -> _BucketPolicyReference_3414f1e3:
2015
+ '''A reference to a BucketPolicy resource.'''
2016
+ return typing.cast(_BucketPolicyReference_3414f1e3, jsii.get(self, "bucketPolicyRef"))
2017
+
1928
2018
  @builtins.property
1929
2019
  @jsii.member(jsii_name="document")
1930
2020
  def document(self) -> _PolicyDocument_3ac34393:
@@ -1939,17 +2029,23 @@ class BucketPolicy(
1939
2029
  @jsii.data_type(
1940
2030
  jsii_type="aws-cdk-lib.aws_s3.BucketPolicyProps",
1941
2031
  jsii_struct_bases=[],
1942
- name_mapping={"bucket": "bucket", "removal_policy": "removalPolicy"},
2032
+ name_mapping={
2033
+ "bucket": "bucket",
2034
+ "document": "document",
2035
+ "removal_policy": "removalPolicy",
2036
+ },
1943
2037
  )
1944
2038
  class BucketPolicyProps:
1945
2039
  def __init__(
1946
2040
  self,
1947
2041
  *,
1948
2042
  bucket: "IBucket",
2043
+ document: typing.Optional[_PolicyDocument_3ac34393] = None,
1949
2044
  removal_policy: typing.Optional[_RemovalPolicy_9f93c814] = None,
1950
2045
  ) -> None:
1951
2046
  '''
1952
2047
  :param bucket: The Amazon S3 bucket that the policy applies to.
2048
+ :param document: Policy document to apply to the bucket. Default: - A new empty PolicyDocument will be created.
1953
2049
  :param removal_policy: Policy to apply when the policy is removed from this stack. Default: - RemovalPolicy.DESTROY.
1954
2050
 
1955
2051
  :exampleMetadata: fixture=_generated
@@ -1959,24 +2055,30 @@ class BucketPolicyProps:
1959
2055
  # The code below shows an example of how to instantiate this type.
1960
2056
  # The values are placeholders you should change.
1961
2057
  import aws_cdk as cdk
2058
+ from aws_cdk import aws_iam as iam
1962
2059
  from aws_cdk import aws_s3 as s3
1963
2060
 
1964
2061
  # bucket: s3.Bucket
2062
+ # policy_document: iam.PolicyDocument
1965
2063
 
1966
2064
  bucket_policy_props = s3.BucketPolicyProps(
1967
2065
  bucket=bucket,
1968
2066
 
1969
2067
  # the properties below are optional
2068
+ document=policy_document,
1970
2069
  removal_policy=cdk.RemovalPolicy.DESTROY
1971
2070
  )
1972
2071
  '''
1973
2072
  if __debug__:
1974
2073
  type_hints = typing.get_type_hints(_typecheckingstub__4d7b9233434273933326211f004f27c2982fedd89ad904dc86d84c54f0f50ac6)
1975
2074
  check_type(argname="argument bucket", value=bucket, expected_type=type_hints["bucket"])
2075
+ check_type(argname="argument document", value=document, expected_type=type_hints["document"])
1976
2076
  check_type(argname="argument removal_policy", value=removal_policy, expected_type=type_hints["removal_policy"])
1977
2077
  self._values: typing.Dict[builtins.str, typing.Any] = {
1978
2078
  "bucket": bucket,
1979
2079
  }
2080
+ if document is not None:
2081
+ self._values["document"] = document
1980
2082
  if removal_policy is not None:
1981
2083
  self._values["removal_policy"] = removal_policy
1982
2084
 
@@ -1987,6 +2089,15 @@ class BucketPolicyProps:
1987
2089
  assert result is not None, "Required property 'bucket' is missing"
1988
2090
  return typing.cast("IBucket", result)
1989
2091
 
2092
+ @builtins.property
2093
+ def document(self) -> typing.Optional[_PolicyDocument_3ac34393]:
2094
+ '''Policy document to apply to the bucket.
2095
+
2096
+ :default: - A new empty PolicyDocument will be created.
2097
+ '''
2098
+ result = self._values.get("document")
2099
+ return typing.cast(typing.Optional[_PolicyDocument_3ac34393], result)
2100
+
1990
2101
  @builtins.property
1991
2102
  def removal_policy(self) -> typing.Optional[_RemovalPolicy_9f93c814]:
1992
2103
  '''Policy to apply when the policy is removed from this stack.
@@ -2652,7 +2763,7 @@ class BucketProps:
2652
2763
  )
2653
2764
 
2654
2765
 
2655
- @jsii.implements(_IInspectable_c2943556, _ITaggableV2_4e6798f8)
2766
+ @jsii.implements(_IInspectable_c2943556, _IAccessGrantRef_0e7c5209, _ITaggableV2_4e6798f8)
2656
2767
  class CfnAccessGrant(
2657
2768
  _CfnResource_9df397a6,
2658
2769
  metaclass=jsii.JSIIMeta,
@@ -2713,7 +2824,8 @@ class CfnAccessGrant(
2713
2824
  s3_prefix_type: typing.Optional[builtins.str] = None,
2714
2825
  tags: typing.Optional[typing.Sequence[typing.Union[_CfnTag_f6864754, typing.Dict[builtins.str, typing.Any]]]] = None,
2715
2826
  ) -> None:
2716
- '''
2827
+ '''Create a new ``AWS::S3::AccessGrant``.
2828
+
2717
2829
  :param scope: Scope in which this resource is defined.
2718
2830
  :param id: Construct identifier for this resource (unique in its scope).
2719
2831
  :param access_grants_location_id: The ID of the registered location to which you are granting access. S3 Access Grants assigns this ID when you register the location. S3 Access Grants assigns the ID ``default`` to the default location ``s3://`` and assigns an auto-generated ID to other locations that you register.
@@ -2770,6 +2882,12 @@ class CfnAccessGrant(
2770
2882
  '''The CloudFormation resource type name for this resource class.'''
2771
2883
  return typing.cast(builtins.str, jsii.sget(cls, "CFN_RESOURCE_TYPE_NAME"))
2772
2884
 
2885
+ @builtins.property
2886
+ @jsii.member(jsii_name="accessGrantRef")
2887
+ def access_grant_ref(self) -> _AccessGrantReference_4b0925c1:
2888
+ '''A reference to a AccessGrant resource.'''
2889
+ return typing.cast(_AccessGrantReference_4b0925c1, jsii.get(self, "accessGrantRef"))
2890
+
2773
2891
  @builtins.property
2774
2892
  @jsii.member(jsii_name="attrAccessGrantArn")
2775
2893
  def attr_access_grant_arn(self) -> builtins.str:
@@ -3238,7 +3356,7 @@ class CfnAccessGrantProps:
3238
3356
  )
3239
3357
 
3240
3358
 
3241
- @jsii.implements(_IInspectable_c2943556, _ITaggableV2_4e6798f8)
3359
+ @jsii.implements(_IInspectable_c2943556, _IAccessGrantsInstanceRef_94e5b823, _ITaggableV2_4e6798f8)
3242
3360
  class CfnAccessGrantsInstance(
3243
3361
  _CfnResource_9df397a6,
3244
3362
  metaclass=jsii.JSIIMeta,
@@ -3278,7 +3396,8 @@ class CfnAccessGrantsInstance(
3278
3396
  identity_center_arn: typing.Optional[builtins.str] = None,
3279
3397
  tags: typing.Optional[typing.Sequence[typing.Union[_CfnTag_f6864754, typing.Dict[builtins.str, typing.Any]]]] = None,
3280
3398
  ) -> None:
3281
- '''
3399
+ '''Create a new ``AWS::S3::AccessGrantsInstance``.
3400
+
3282
3401
  :param scope: Scope in which this resource is defined.
3283
3402
  :param id: Construct identifier for this resource (unique in its scope).
3284
3403
  :param identity_center_arn: If you would like to associate your S3 Access Grants instance with an AWS IAM Identity Center instance, use this field to pass the Amazon Resource Name (ARN) of the AWS IAM Identity Center instance that you are associating with your S3 Access Grants instance. An IAM Identity Center instance is your corporate identity directory that you added to the IAM Identity Center.
@@ -3324,6 +3443,12 @@ class CfnAccessGrantsInstance(
3324
3443
  '''The CloudFormation resource type name for this resource class.'''
3325
3444
  return typing.cast(builtins.str, jsii.sget(cls, "CFN_RESOURCE_TYPE_NAME"))
3326
3445
 
3446
+ @builtins.property
3447
+ @jsii.member(jsii_name="accessGrantsInstanceRef")
3448
+ def access_grants_instance_ref(self) -> _AccessGrantsInstanceReference_18c061b7:
3449
+ '''A reference to a AccessGrantsInstance resource.'''
3450
+ return typing.cast(_AccessGrantsInstanceReference_18c061b7, jsii.get(self, "accessGrantsInstanceRef"))
3451
+
3327
3452
  @builtins.property
3328
3453
  @jsii.member(jsii_name="attrAccessGrantsInstanceArn")
3329
3454
  def attr_access_grants_instance_arn(self) -> builtins.str:
@@ -3460,7 +3585,7 @@ class CfnAccessGrantsInstanceProps:
3460
3585
  )
3461
3586
 
3462
3587
 
3463
- @jsii.implements(_IInspectable_c2943556, _ITaggableV2_4e6798f8)
3588
+ @jsii.implements(_IInspectable_c2943556, _IAccessGrantsLocationRef_5ae01054, _ITaggableV2_4e6798f8)
3464
3589
  class CfnAccessGrantsLocation(
3465
3590
  _CfnResource_9df397a6,
3466
3591
  metaclass=jsii.JSIIMeta,
@@ -3492,6 +3617,8 @@ class CfnAccessGrantsLocation(
3492
3617
  cfn_access_grants_location = s3.CfnAccessGrantsLocation(self, "MyCfnAccessGrantsLocation",
3493
3618
  iam_role_arn="iamRoleArn",
3494
3619
  location_scope="locationScope",
3620
+
3621
+ # the properties below are optional
3495
3622
  tags=[CfnTag(
3496
3623
  key="key",
3497
3624
  value="value"
@@ -3504,11 +3631,12 @@ class CfnAccessGrantsLocation(
3504
3631
  scope: _constructs_77d1e7e8.Construct,
3505
3632
  id: builtins.str,
3506
3633
  *,
3507
- iam_role_arn: typing.Optional[builtins.str] = None,
3508
- location_scope: typing.Optional[builtins.str] = None,
3634
+ iam_role_arn: builtins.str,
3635
+ location_scope: builtins.str,
3509
3636
  tags: typing.Optional[typing.Sequence[typing.Union[_CfnTag_f6864754, typing.Dict[builtins.str, typing.Any]]]] = None,
3510
3637
  ) -> None:
3511
- '''
3638
+ '''Create a new ``AWS::S3::AccessGrantsLocation``.
3639
+
3512
3640
  :param scope: Scope in which this resource is defined.
3513
3641
  :param id: Construct identifier for this resource (unique in its scope).
3514
3642
  :param iam_role_arn: The Amazon Resource Name (ARN) of the IAM role for the registered location. S3 Access Grants assumes this role to manage access to the registered location.
@@ -3555,6 +3683,12 @@ class CfnAccessGrantsLocation(
3555
3683
  '''The CloudFormation resource type name for this resource class.'''
3556
3684
  return typing.cast(builtins.str, jsii.sget(cls, "CFN_RESOURCE_TYPE_NAME"))
3557
3685
 
3686
+ @builtins.property
3687
+ @jsii.member(jsii_name="accessGrantsLocationRef")
3688
+ def access_grants_location_ref(self) -> _AccessGrantsLocationReference_6163b002:
3689
+ '''A reference to a AccessGrantsLocation resource.'''
3690
+ return typing.cast(_AccessGrantsLocationReference_6163b002, jsii.get(self, "accessGrantsLocationRef"))
3691
+
3558
3692
  @builtins.property
3559
3693
  @jsii.member(jsii_name="attrAccessGrantsLocationArn")
3560
3694
  def attr_access_grants_location_arn(self) -> builtins.str:
@@ -3588,12 +3722,12 @@ class CfnAccessGrantsLocation(
3588
3722
 
3589
3723
  @builtins.property
3590
3724
  @jsii.member(jsii_name="iamRoleArn")
3591
- def iam_role_arn(self) -> typing.Optional[builtins.str]:
3725
+ def iam_role_arn(self) -> builtins.str:
3592
3726
  '''The Amazon Resource Name (ARN) of the IAM role for the registered location.'''
3593
- return typing.cast(typing.Optional[builtins.str], jsii.get(self, "iamRoleArn"))
3727
+ return typing.cast(builtins.str, jsii.get(self, "iamRoleArn"))
3594
3728
 
3595
3729
  @iam_role_arn.setter
3596
- def iam_role_arn(self, value: typing.Optional[builtins.str]) -> None:
3730
+ def iam_role_arn(self, value: builtins.str) -> None:
3597
3731
  if __debug__:
3598
3732
  type_hints = typing.get_type_hints(_typecheckingstub__c6ad3ea630d95d457364fa227ccc4159df9b2fe48cab3fd14afc7301612ddce6)
3599
3733
  check_type(argname="argument value", value=value, expected_type=type_hints["value"])
@@ -3601,12 +3735,12 @@ class CfnAccessGrantsLocation(
3601
3735
 
3602
3736
  @builtins.property
3603
3737
  @jsii.member(jsii_name="locationScope")
3604
- def location_scope(self) -> typing.Optional[builtins.str]:
3738
+ def location_scope(self) -> builtins.str:
3605
3739
  '''The S3 URI path to the location that you are registering.'''
3606
- return typing.cast(typing.Optional[builtins.str], jsii.get(self, "locationScope"))
3740
+ return typing.cast(builtins.str, jsii.get(self, "locationScope"))
3607
3741
 
3608
3742
  @location_scope.setter
3609
- def location_scope(self, value: typing.Optional[builtins.str]) -> None:
3743
+ def location_scope(self, value: builtins.str) -> None:
3610
3744
  if __debug__:
3611
3745
  type_hints = typing.get_type_hints(_typecheckingstub__80f4ecc1c277ca36e62d80157ee09c7e5856bf9bc1e1542588d3449f958c3302)
3612
3746
  check_type(argname="argument value", value=value, expected_type=type_hints["value"])
@@ -3639,8 +3773,8 @@ class CfnAccessGrantsLocationProps:
3639
3773
  def __init__(
3640
3774
  self,
3641
3775
  *,
3642
- iam_role_arn: typing.Optional[builtins.str] = None,
3643
- location_scope: typing.Optional[builtins.str] = None,
3776
+ iam_role_arn: builtins.str,
3777
+ location_scope: builtins.str,
3644
3778
  tags: typing.Optional[typing.Sequence[typing.Union[_CfnTag_f6864754, typing.Dict[builtins.str, typing.Any]]]] = None,
3645
3779
  ) -> None:
3646
3780
  '''Properties for defining a ``CfnAccessGrantsLocation``.
@@ -3661,6 +3795,8 @@ class CfnAccessGrantsLocationProps:
3661
3795
  cfn_access_grants_location_props = s3.CfnAccessGrantsLocationProps(
3662
3796
  iam_role_arn="iamRoleArn",
3663
3797
  location_scope="locationScope",
3798
+
3799
+ # the properties below are optional
3664
3800
  tags=[CfnTag(
3665
3801
  key="key",
3666
3802
  value="value"
@@ -3672,16 +3808,15 @@ class CfnAccessGrantsLocationProps:
3672
3808
  check_type(argname="argument iam_role_arn", value=iam_role_arn, expected_type=type_hints["iam_role_arn"])
3673
3809
  check_type(argname="argument location_scope", value=location_scope, expected_type=type_hints["location_scope"])
3674
3810
  check_type(argname="argument tags", value=tags, expected_type=type_hints["tags"])
3675
- self._values: typing.Dict[builtins.str, typing.Any] = {}
3676
- if iam_role_arn is not None:
3677
- self._values["iam_role_arn"] = iam_role_arn
3678
- if location_scope is not None:
3679
- self._values["location_scope"] = location_scope
3811
+ self._values: typing.Dict[builtins.str, typing.Any] = {
3812
+ "iam_role_arn": iam_role_arn,
3813
+ "location_scope": location_scope,
3814
+ }
3680
3815
  if tags is not None:
3681
3816
  self._values["tags"] = tags
3682
3817
 
3683
3818
  @builtins.property
3684
- def iam_role_arn(self) -> typing.Optional[builtins.str]:
3819
+ def iam_role_arn(self) -> builtins.str:
3685
3820
  '''The Amazon Resource Name (ARN) of the IAM role for the registered location.
3686
3821
 
3687
3822
  S3 Access Grants assumes this role to manage access to the registered location.
@@ -3689,10 +3824,11 @@ class CfnAccessGrantsLocationProps:
3689
3824
  :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-s3-accessgrantslocation.html#cfn-s3-accessgrantslocation-iamrolearn
3690
3825
  '''
3691
3826
  result = self._values.get("iam_role_arn")
3692
- return typing.cast(typing.Optional[builtins.str], result)
3827
+ assert result is not None, "Required property 'iam_role_arn' is missing"
3828
+ return typing.cast(builtins.str, result)
3693
3829
 
3694
3830
  @builtins.property
3695
- def location_scope(self) -> typing.Optional[builtins.str]:
3831
+ def location_scope(self) -> builtins.str:
3696
3832
  '''The S3 URI path to the location that you are registering.
3697
3833
 
3698
3834
  The location scope can be the default S3 location ``s3://`` , the S3 path to a bucket, or the S3 path to a bucket and prefix. A prefix in S3 is a string of characters at the beginning of an object key name used to organize the objects that you store in your S3 buckets. For example, object key names that start with the ``engineering/`` prefix or object key names that start with the ``marketing/campaigns/`` prefix.
@@ -3700,7 +3836,8 @@ class CfnAccessGrantsLocationProps:
3700
3836
  :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-s3-accessgrantslocation.html#cfn-s3-accessgrantslocation-locationscope
3701
3837
  '''
3702
3838
  result = self._values.get("location_scope")
3703
- return typing.cast(typing.Optional[builtins.str], result)
3839
+ assert result is not None, "Required property 'location_scope' is missing"
3840
+ return typing.cast(builtins.str, result)
3704
3841
 
3705
3842
  @builtins.property
3706
3843
  def tags(self) -> typing.Optional[typing.List[_CfnTag_f6864754]]:
@@ -3725,7 +3862,7 @@ class CfnAccessGrantsLocationProps:
3725
3862
  )
3726
3863
 
3727
3864
 
3728
- @jsii.implements(_IInspectable_c2943556)
3865
+ @jsii.implements(_IInspectable_c2943556, _IAccessPointRef_02282fed, _ITaggableV2_4e6798f8)
3729
3866
  class CfnAccessPoint(
3730
3867
  _CfnResource_9df397a6,
3731
3868
  metaclass=jsii.JSIIMeta,
@@ -3758,6 +3895,10 @@ class CfnAccessPoint(
3758
3895
  ignore_public_acls=False,
3759
3896
  restrict_public_buckets=False
3760
3897
  ),
3898
+ tags=[CfnTag(
3899
+ key="key",
3900
+ value="value"
3901
+ )],
3761
3902
  vpc_configuration=s3.CfnAccessPoint.VpcConfigurationProperty(
3762
3903
  vpc_id="vpcId"
3763
3904
  )
@@ -3774,9 +3915,11 @@ class CfnAccessPoint(
3774
3915
  name: typing.Optional[builtins.str] = None,
3775
3916
  policy: typing.Any = None,
3776
3917
  public_access_block_configuration: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union["CfnAccessPoint.PublicAccessBlockConfigurationProperty", typing.Dict[builtins.str, typing.Any]]]] = None,
3918
+ tags: typing.Optional[typing.Sequence[typing.Union[_CfnTag_f6864754, typing.Dict[builtins.str, typing.Any]]]] = None,
3777
3919
  vpc_configuration: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union["CfnAccessPoint.VpcConfigurationProperty", typing.Dict[builtins.str, typing.Any]]]] = None,
3778
3920
  ) -> None:
3779
- '''
3921
+ '''Create a new ``AWS::S3::AccessPoint``.
3922
+
3780
3923
  :param scope: Scope in which this resource is defined.
3781
3924
  :param id: Construct identifier for this resource (unique in its scope).
3782
3925
  :param bucket: The name of the bucket associated with this access point.
@@ -3784,6 +3927,7 @@ class CfnAccessPoint(
3784
3927
  :param name: The name of this access point. If you don't specify a name, AWS CloudFormation generates a unique ID and uses that ID for the access point name.
3785
3928
  :param policy: The access point policy associated with this access point.
3786
3929
  :param public_access_block_configuration: The PublicAccessBlock configuration that you want to apply to this Amazon S3 bucket. You can enable the configuration options in any combination. For more information about when Amazon S3 considers a bucket or object public, see `The Meaning of "Public" <https://docs.aws.amazon.com/AmazonS3/latest/dev/access-control-block-public-access.html#access-control-block-public-access-policy-status>`_ in the *Amazon S3 User Guide* .
3930
+ :param tags: An array of tags that you can apply to access points. Tags are key-value pairs of metadata used to categorize your access points and control access. For more information, see `Using tags for attribute-based access control (ABAC) <https://docs.aws.amazon.com/AmazonS3/latest/userguide/tagging.html#using-tags-for-abac>`_ .
3787
3931
  :param vpc_configuration: The Virtual Private Cloud (VPC) configuration for this access point, if one exists.
3788
3932
  '''
3789
3933
  if __debug__:
@@ -3796,11 +3940,54 @@ class CfnAccessPoint(
3796
3940
  name=name,
3797
3941
  policy=policy,
3798
3942
  public_access_block_configuration=public_access_block_configuration,
3943
+ tags=tags,
3799
3944
  vpc_configuration=vpc_configuration,
3800
3945
  )
3801
3946
 
3802
3947
  jsii.create(self.__class__, self, [scope, id, props])
3803
3948
 
3949
+ @jsii.member(jsii_name="fromAccessPointArn")
3950
+ @builtins.classmethod
3951
+ def from_access_point_arn(
3952
+ cls,
3953
+ scope: _constructs_77d1e7e8.Construct,
3954
+ id: builtins.str,
3955
+ arn: builtins.str,
3956
+ ) -> _IAccessPointRef_02282fed:
3957
+ '''Creates a new IAccessPointRef from an ARN.
3958
+
3959
+ :param scope: -
3960
+ :param id: -
3961
+ :param arn: -
3962
+ '''
3963
+ if __debug__:
3964
+ type_hints = typing.get_type_hints(_typecheckingstub__27c1fdb406b539ade70eea36bce09782bba11b354442fee5c5d43c938bfd0aee)
3965
+ check_type(argname="argument scope", value=scope, expected_type=type_hints["scope"])
3966
+ check_type(argname="argument id", value=id, expected_type=type_hints["id"])
3967
+ check_type(argname="argument arn", value=arn, expected_type=type_hints["arn"])
3968
+ return typing.cast(_IAccessPointRef_02282fed, jsii.sinvoke(cls, "fromAccessPointArn", [scope, id, arn]))
3969
+
3970
+ @jsii.member(jsii_name="fromAccessPointName")
3971
+ @builtins.classmethod
3972
+ def from_access_point_name(
3973
+ cls,
3974
+ scope: _constructs_77d1e7e8.Construct,
3975
+ id: builtins.str,
3976
+ access_point_name: builtins.str,
3977
+ ) -> _IAccessPointRef_02282fed:
3978
+ '''Creates a new IAccessPointRef from a accessPointName.
3979
+
3980
+ :param scope: -
3981
+ :param id: -
3982
+ :param access_point_name: -
3983
+ '''
3984
+ if __debug__:
3985
+ type_hints = typing.get_type_hints(_typecheckingstub__9af2790fec8caeab2621c276234587e70ab62b4d6d6f7a82947b3b7326f42deb)
3986
+ check_type(argname="argument scope", value=scope, expected_type=type_hints["scope"])
3987
+ check_type(argname="argument id", value=id, expected_type=type_hints["id"])
3988
+ check_type(argname="argument access_point_name", value=access_point_name, expected_type=type_hints["access_point_name"])
3989
+ return typing.cast(_IAccessPointRef_02282fed, jsii.sinvoke(cls, "fromAccessPointName", [scope, id, access_point_name]))
3990
+
3804
3991
  @jsii.member(jsii_name="inspect")
3805
3992
  def inspect(self, inspector: _TreeInspector_488e0dd5) -> None:
3806
3993
  '''Examines the CloudFormation resource and discloses attributes.
@@ -3831,6 +4018,12 @@ class CfnAccessPoint(
3831
4018
  '''The CloudFormation resource type name for this resource class.'''
3832
4019
  return typing.cast(builtins.str, jsii.sget(cls, "CFN_RESOURCE_TYPE_NAME"))
3833
4020
 
4021
+ @builtins.property
4022
+ @jsii.member(jsii_name="accessPointRef")
4023
+ def access_point_ref(self) -> _AccessPointReference_b9bf9d61:
4024
+ '''A reference to a AccessPoint resource.'''
4025
+ return typing.cast(_AccessPointReference_b9bf9d61, jsii.get(self, "accessPointRef"))
4026
+
3834
4027
  @builtins.property
3835
4028
  @jsii.member(jsii_name="attrAlias")
3836
4029
  def attr_alias(self) -> builtins.str:
@@ -3871,6 +4064,12 @@ class CfnAccessPoint(
3871
4064
  '''
3872
4065
  return typing.cast(builtins.str, jsii.get(self, "attrNetworkOrigin"))
3873
4066
 
4067
+ @builtins.property
4068
+ @jsii.member(jsii_name="cdkTagManager")
4069
+ def cdk_tag_manager(self) -> _TagManager_0a598cb3:
4070
+ '''Tag Manager which manages the tags for this resource.'''
4071
+ return typing.cast(_TagManager_0a598cb3, jsii.get(self, "cdkTagManager"))
4072
+
3874
4073
  @builtins.property
3875
4074
  @jsii.member(jsii_name="cfnProperties")
3876
4075
  def _cfn_properties(self) -> typing.Mapping[builtins.str, typing.Any]:
@@ -3946,6 +4145,19 @@ class CfnAccessPoint(
3946
4145
  check_type(argname="argument value", value=value, expected_type=type_hints["value"])
3947
4146
  jsii.set(self, "publicAccessBlockConfiguration", value) # pyright: ignore[reportArgumentType]
3948
4147
 
4148
+ @builtins.property
4149
+ @jsii.member(jsii_name="tags")
4150
+ def tags(self) -> typing.Optional[typing.List[_CfnTag_f6864754]]:
4151
+ '''An array of tags that you can apply to access points.'''
4152
+ return typing.cast(typing.Optional[typing.List[_CfnTag_f6864754]], jsii.get(self, "tags"))
4153
+
4154
+ @tags.setter
4155
+ def tags(self, value: typing.Optional[typing.List[_CfnTag_f6864754]]) -> None:
4156
+ if __debug__:
4157
+ type_hints = typing.get_type_hints(_typecheckingstub__d6c41b842366f80d771c24147e6f4bdb868bf8899c3f03b128339e380a158e19)
4158
+ check_type(argname="argument value", value=value, expected_type=type_hints["value"])
4159
+ jsii.set(self, "tags", value) # pyright: ignore[reportArgumentType]
4160
+
3949
4161
  @builtins.property
3950
4162
  @jsii.member(jsii_name="vpcConfiguration")
3951
4163
  def vpc_configuration(
@@ -4160,6 +4372,7 @@ class CfnAccessPoint(
4160
4372
  "name": "name",
4161
4373
  "policy": "policy",
4162
4374
  "public_access_block_configuration": "publicAccessBlockConfiguration",
4375
+ "tags": "tags",
4163
4376
  "vpc_configuration": "vpcConfiguration",
4164
4377
  },
4165
4378
  )
@@ -4172,6 +4385,7 @@ class CfnAccessPointProps:
4172
4385
  name: typing.Optional[builtins.str] = None,
4173
4386
  policy: typing.Any = None,
4174
4387
  public_access_block_configuration: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnAccessPoint.PublicAccessBlockConfigurationProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
4388
+ tags: typing.Optional[typing.Sequence[typing.Union[_CfnTag_f6864754, typing.Dict[builtins.str, typing.Any]]]] = None,
4175
4389
  vpc_configuration: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnAccessPoint.VpcConfigurationProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
4176
4390
  ) -> None:
4177
4391
  '''Properties for defining a ``CfnAccessPoint``.
@@ -4181,6 +4395,7 @@ class CfnAccessPointProps:
4181
4395
  :param name: The name of this access point. If you don't specify a name, AWS CloudFormation generates a unique ID and uses that ID for the access point name.
4182
4396
  :param policy: The access point policy associated with this access point.
4183
4397
  :param public_access_block_configuration: The PublicAccessBlock configuration that you want to apply to this Amazon S3 bucket. You can enable the configuration options in any combination. For more information about when Amazon S3 considers a bucket or object public, see `The Meaning of "Public" <https://docs.aws.amazon.com/AmazonS3/latest/dev/access-control-block-public-access.html#access-control-block-public-access-policy-status>`_ in the *Amazon S3 User Guide* .
4398
+ :param tags: An array of tags that you can apply to access points. Tags are key-value pairs of metadata used to categorize your access points and control access. For more information, see `Using tags for attribute-based access control (ABAC) <https://docs.aws.amazon.com/AmazonS3/latest/userguide/tagging.html#using-tags-for-abac>`_ .
4184
4399
  :param vpc_configuration: The Virtual Private Cloud (VPC) configuration for this access point, if one exists.
4185
4400
 
4186
4401
  :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-s3-accesspoint.html
@@ -4207,6 +4422,10 @@ class CfnAccessPointProps:
4207
4422
  ignore_public_acls=False,
4208
4423
  restrict_public_buckets=False
4209
4424
  ),
4425
+ tags=[CfnTag(
4426
+ key="key",
4427
+ value="value"
4428
+ )],
4210
4429
  vpc_configuration=s3.CfnAccessPoint.VpcConfigurationProperty(
4211
4430
  vpc_id="vpcId"
4212
4431
  )
@@ -4219,6 +4438,7 @@ class CfnAccessPointProps:
4219
4438
  check_type(argname="argument name", value=name, expected_type=type_hints["name"])
4220
4439
  check_type(argname="argument policy", value=policy, expected_type=type_hints["policy"])
4221
4440
  check_type(argname="argument public_access_block_configuration", value=public_access_block_configuration, expected_type=type_hints["public_access_block_configuration"])
4441
+ check_type(argname="argument tags", value=tags, expected_type=type_hints["tags"])
4222
4442
  check_type(argname="argument vpc_configuration", value=vpc_configuration, expected_type=type_hints["vpc_configuration"])
4223
4443
  self._values: typing.Dict[builtins.str, typing.Any] = {
4224
4444
  "bucket": bucket,
@@ -4231,6 +4451,8 @@ class CfnAccessPointProps:
4231
4451
  self._values["policy"] = policy
4232
4452
  if public_access_block_configuration is not None:
4233
4453
  self._values["public_access_block_configuration"] = public_access_block_configuration
4454
+ if tags is not None:
4455
+ self._values["tags"] = tags
4234
4456
  if vpc_configuration is not None:
4235
4457
  self._values["vpc_configuration"] = vpc_configuration
4236
4458
 
@@ -4286,6 +4508,17 @@ class CfnAccessPointProps:
4286
4508
  result = self._values.get("public_access_block_configuration")
4287
4509
  return typing.cast(typing.Optional[typing.Union[_IResolvable_da3f097b, CfnAccessPoint.PublicAccessBlockConfigurationProperty]], result)
4288
4510
 
4511
+ @builtins.property
4512
+ def tags(self) -> typing.Optional[typing.List[_CfnTag_f6864754]]:
4513
+ '''An array of tags that you can apply to access points.
4514
+
4515
+ Tags are key-value pairs of metadata used to categorize your access points and control access. For more information, see `Using tags for attribute-based access control (ABAC) <https://docs.aws.amazon.com/AmazonS3/latest/userguide/tagging.html#using-tags-for-abac>`_ .
4516
+
4517
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-s3-accesspoint.html#cfn-s3-accesspoint-tags
4518
+ '''
4519
+ result = self._values.get("tags")
4520
+ return typing.cast(typing.Optional[typing.List[_CfnTag_f6864754]], result)
4521
+
4289
4522
  @builtins.property
4290
4523
  def vpc_configuration(
4291
4524
  self,
@@ -4309,7 +4542,7 @@ class CfnAccessPointProps:
4309
4542
  )
4310
4543
 
4311
4544
 
4312
- @jsii.implements(_IInspectable_c2943556, _ITaggable_36806126)
4545
+ @jsii.implements(_IInspectable_c2943556, _IBucketRef_3debe44e, _ITaggable_36806126)
4313
4546
  class CfnBucket(
4314
4547
  _CfnResource_9df397a6,
4315
4548
  metaclass=jsii.JSIIMeta,
@@ -4356,6 +4589,7 @@ class CfnBucket(
4356
4589
  inventory_configurations: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Sequence[typing.Union[_IResolvable_da3f097b, typing.Union["CfnBucket.InventoryConfigurationProperty", typing.Dict[builtins.str, typing.Any]]]]]] = None,
4357
4590
  lifecycle_configuration: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union["CfnBucket.LifecycleConfigurationProperty", typing.Dict[builtins.str, typing.Any]]]] = None,
4358
4591
  logging_configuration: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union["CfnBucket.LoggingConfigurationProperty", typing.Dict[builtins.str, typing.Any]]]] = None,
4592
+ metadata_configuration: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union["CfnBucket.MetadataConfigurationProperty", typing.Dict[builtins.str, typing.Any]]]] = None,
4359
4593
  metadata_table_configuration: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union["CfnBucket.MetadataTableConfigurationProperty", typing.Dict[builtins.str, typing.Any]]]] = None,
4360
4594
  metrics_configurations: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Sequence[typing.Union[_IResolvable_da3f097b, typing.Union["CfnBucket.MetricsConfigurationProperty", typing.Dict[builtins.str, typing.Any]]]]]] = None,
4361
4595
  notification_configuration: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union["CfnBucket.NotificationConfigurationProperty", typing.Dict[builtins.str, typing.Any]]]] = None,
@@ -4368,7 +4602,8 @@ class CfnBucket(
4368
4602
  versioning_configuration: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union["CfnBucket.VersioningConfigurationProperty", typing.Dict[builtins.str, typing.Any]]]] = None,
4369
4603
  website_configuration: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union["CfnBucket.WebsiteConfigurationProperty", typing.Dict[builtins.str, typing.Any]]]] = None,
4370
4604
  ) -> None:
4371
- '''
4605
+ '''Create a new ``AWS::S3::Bucket``.
4606
+
4372
4607
  :param scope: Scope in which this resource is defined.
4373
4608
  :param id: Construct identifier for this resource (unique in its scope).
4374
4609
  :param accelerate_configuration: Configures the transfer acceleration state for an Amazon S3 bucket. For more information, see `Amazon S3 Transfer Acceleration <https://docs.aws.amazon.com/AmazonS3/latest/dev/transfer-acceleration.html>`_ in the *Amazon S3 User Guide* .
@@ -4378,13 +4613,14 @@ class CfnBucket(
4378
4613
  :param bucket_name: A name for the bucket. If you don't specify a name, AWS CloudFormation generates a unique ID and uses that ID for the bucket name. The bucket name must contain only lowercase letters, numbers, periods (.), and dashes (-) and must follow `Amazon S3 bucket restrictions and limitations <https://docs.aws.amazon.com/AmazonS3/latest/dev/BucketRestrictions.html>`_ . For more information, see `Rules for naming Amazon S3 buckets <https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucketnamingrules.html>`_ in the *Amazon S3 User Guide* . .. epigraph:: If you specify a name, you can't perform updates that require replacement of this resource. You can perform updates that require no or some interruption. If you need to replace the resource, specify a new name.
4379
4614
  :param cors_configuration: Describes the cross-origin access configuration for objects in an Amazon S3 bucket. For more information, see `Enabling Cross-Origin Resource Sharing <https://docs.aws.amazon.com/AmazonS3/latest/dev/cors.html>`_ in the *Amazon S3 User Guide* .
4380
4615
  :param intelligent_tiering_configurations: Defines how Amazon S3 handles Intelligent-Tiering storage.
4381
- :param inventory_configurations: Specifies the inventory configuration for an Amazon S3 bucket. For more information, see `GET Bucket inventory <https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketGETInventoryConfig.html>`_ in the *Amazon S3 API Reference* .
4616
+ :param inventory_configurations: Specifies the S3 Inventory configuration for an Amazon S3 bucket. For more information, see `GET Bucket inventory <https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketGETInventoryConfig.html>`_ in the *Amazon S3 API Reference* .
4382
4617
  :param lifecycle_configuration: Specifies the lifecycle configuration for objects in an Amazon S3 bucket. For more information, see `Object Lifecycle Management <https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lifecycle-mgmt.html>`_ in the *Amazon S3 User Guide* .
4383
4618
  :param logging_configuration: Settings that define where logs are stored.
4619
+ :param metadata_configuration: The S3 Metadata configuration for a general purpose bucket.
4384
4620
  :param metadata_table_configuration: The metadata table configuration of an Amazon S3 general purpose bucket.
4385
4621
  :param metrics_configurations: Specifies a metrics configuration for the CloudWatch request metrics (specified by the metrics configuration ID) from an Amazon S3 bucket. If you're updating an existing metrics configuration, note that this is a full replacement of the existing metrics configuration. If you don't include the elements you want to keep, they are erased. For more information, see `PutBucketMetricsConfiguration <https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTMetricConfiguration.html>`_ .
4386
4622
  :param notification_configuration: Configuration that defines how Amazon S3 handles bucket notifications.
4387
- :param object_lock_configuration: .. epigraph:: This operation is not supported for directory buckets. Places an Object Lock configuration on the specified bucket. The rule specified in the Object Lock configuration will be applied by default to every new object placed in the specified bucket. For more information, see `Locking Objects <https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock.html>`_ . .. epigraph:: - The ``DefaultRetention`` settings require both a mode and a period. - The ``DefaultRetention`` period can be either ``Days`` or ``Years`` but you must select one. You cannot specify ``Days`` and ``Years`` at the same time. - You can enable Object Lock for new or existing buckets. For more information, see `Configuring Object Lock <https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lock-configure.html>`_ .
4623
+ :param object_lock_configuration: .. epigraph:: This operation is not supported for directory buckets. Places an Object Lock configuration on the specified bucket. The rule specified in the Object Lock configuration will be applied by default to every new object placed in the specified bucket. For more information, see `Locking Objects <https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock.html>`_ . .. epigraph:: - The ``DefaultRetention`` settings require both a mode and a period. - The ``DefaultRetention`` period can be either ``Days`` or ``Years`` but you must select one. You cannot specify ``Days`` and ``Years`` at the same time. - You can enable Object Lock for new or existing buckets. For more information, see `Configuring Object Lock <https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lock-configure.html>`_ . > You must URL encode any signed header values that contain spaces. For example, if your header value is ``my file.txt`` , containing two spaces after ``my`` , you must URL encode this value to ``my%20%20file.txt`` .
4388
4624
  :param object_lock_enabled: Indicates whether this bucket has an Object Lock configuration enabled. Enable ``ObjectLockEnabled`` when you apply ``ObjectLockConfiguration`` to a bucket.
4389
4625
  :param ownership_controls: Configuration that defines how Amazon S3 handles Object Ownership rules.
4390
4626
  :param public_access_block_configuration: Configuration that defines how Amazon S3 handles public access.
@@ -4408,6 +4644,7 @@ class CfnBucket(
4408
4644
  inventory_configurations=inventory_configurations,
4409
4645
  lifecycle_configuration=lifecycle_configuration,
4410
4646
  logging_configuration=logging_configuration,
4647
+ metadata_configuration=metadata_configuration,
4411
4648
  metadata_table_configuration=metadata_table_configuration,
4412
4649
  metrics_configurations=metrics_configurations,
4413
4650
  notification_configuration=notification_configuration,
@@ -4423,6 +4660,48 @@ class CfnBucket(
4423
4660
 
4424
4661
  jsii.create(self.__class__, self, [scope, id, props])
4425
4662
 
4663
+ @jsii.member(jsii_name="fromBucketArn")
4664
+ @builtins.classmethod
4665
+ def from_bucket_arn(
4666
+ cls,
4667
+ scope: _constructs_77d1e7e8.Construct,
4668
+ id: builtins.str,
4669
+ arn: builtins.str,
4670
+ ) -> _IBucketRef_3debe44e:
4671
+ '''Creates a new IBucketRef from an ARN.
4672
+
4673
+ :param scope: -
4674
+ :param id: -
4675
+ :param arn: -
4676
+ '''
4677
+ if __debug__:
4678
+ type_hints = typing.get_type_hints(_typecheckingstub__f218931ccffe0d6407edcfc452f39d64609d0cceec6ea04313fa364cf5a4f3df)
4679
+ check_type(argname="argument scope", value=scope, expected_type=type_hints["scope"])
4680
+ check_type(argname="argument id", value=id, expected_type=type_hints["id"])
4681
+ check_type(argname="argument arn", value=arn, expected_type=type_hints["arn"])
4682
+ return typing.cast(_IBucketRef_3debe44e, jsii.sinvoke(cls, "fromBucketArn", [scope, id, arn]))
4683
+
4684
+ @jsii.member(jsii_name="fromBucketName")
4685
+ @builtins.classmethod
4686
+ def from_bucket_name(
4687
+ cls,
4688
+ scope: _constructs_77d1e7e8.Construct,
4689
+ id: builtins.str,
4690
+ bucket_name: builtins.str,
4691
+ ) -> _IBucketRef_3debe44e:
4692
+ '''Creates a new IBucketRef from a bucketName.
4693
+
4694
+ :param scope: -
4695
+ :param id: -
4696
+ :param bucket_name: -
4697
+ '''
4698
+ if __debug__:
4699
+ type_hints = typing.get_type_hints(_typecheckingstub__08ccc75711c8ec0fedd9747e674f732b2653120a392c01413875cc0df08e91fa)
4700
+ check_type(argname="argument scope", value=scope, expected_type=type_hints["scope"])
4701
+ check_type(argname="argument id", value=id, expected_type=type_hints["id"])
4702
+ check_type(argname="argument bucket_name", value=bucket_name, expected_type=type_hints["bucket_name"])
4703
+ return typing.cast(_IBucketRef_3debe44e, jsii.sinvoke(cls, "fromBucketName", [scope, id, bucket_name]))
4704
+
4426
4705
  @jsii.member(jsii_name="inspect")
4427
4706
  def inspect(self, inspector: _TreeInspector_488e0dd5) -> None:
4428
4707
  '''Examines the CloudFormation resource and discloses attributes.
@@ -4488,6 +4767,59 @@ class CfnBucket(
4488
4767
  '''
4489
4768
  return typing.cast(builtins.str, jsii.get(self, "attrDualStackDomainName"))
4490
4769
 
4770
+ @builtins.property
4771
+ @jsii.member(jsii_name="attrMetadataConfigurationDestination")
4772
+ def attr_metadata_configuration_destination(self) -> _IResolvable_da3f097b:
4773
+ '''The destination information for the S3 Metadata configuration.
4774
+
4775
+ :cloudformationAttribute: MetadataConfiguration.Destination
4776
+ '''
4777
+ return typing.cast(_IResolvable_da3f097b, jsii.get(self, "attrMetadataConfigurationDestination"))
4778
+
4779
+ @builtins.property
4780
+ @jsii.member(jsii_name="attrMetadataConfigurationInventoryTableConfigurationTableArn")
4781
+ def attr_metadata_configuration_inventory_table_configuration_table_arn(
4782
+ self,
4783
+ ) -> builtins.str:
4784
+ '''The Amazon Resource Name (ARN) for the inventory table.
4785
+
4786
+ :cloudformationAttribute: MetadataConfiguration.InventoryTableConfiguration.TableArn
4787
+ '''
4788
+ return typing.cast(builtins.str, jsii.get(self, "attrMetadataConfigurationInventoryTableConfigurationTableArn"))
4789
+
4790
+ @builtins.property
4791
+ @jsii.member(jsii_name="attrMetadataConfigurationInventoryTableConfigurationTableName")
4792
+ def attr_metadata_configuration_inventory_table_configuration_table_name(
4793
+ self,
4794
+ ) -> builtins.str:
4795
+ '''The name of the inventory table.
4796
+
4797
+ :cloudformationAttribute: MetadataConfiguration.InventoryTableConfiguration.TableName
4798
+ '''
4799
+ return typing.cast(builtins.str, jsii.get(self, "attrMetadataConfigurationInventoryTableConfigurationTableName"))
4800
+
4801
+ @builtins.property
4802
+ @jsii.member(jsii_name="attrMetadataConfigurationJournalTableConfigurationTableArn")
4803
+ def attr_metadata_configuration_journal_table_configuration_table_arn(
4804
+ self,
4805
+ ) -> builtins.str:
4806
+ '''The Amazon Resource Name (ARN) for the journal table.
4807
+
4808
+ :cloudformationAttribute: MetadataConfiguration.JournalTableConfiguration.TableArn
4809
+ '''
4810
+ return typing.cast(builtins.str, jsii.get(self, "attrMetadataConfigurationJournalTableConfigurationTableArn"))
4811
+
4812
+ @builtins.property
4813
+ @jsii.member(jsii_name="attrMetadataConfigurationJournalTableConfigurationTableName")
4814
+ def attr_metadata_configuration_journal_table_configuration_table_name(
4815
+ self,
4816
+ ) -> builtins.str:
4817
+ '''The name of the journal table.
4818
+
4819
+ :cloudformationAttribute: MetadataConfiguration.JournalTableConfiguration.TableName
4820
+ '''
4821
+ return typing.cast(builtins.str, jsii.get(self, "attrMetadataConfigurationJournalTableConfigurationTableName"))
4822
+
4491
4823
  @builtins.property
4492
4824
  @jsii.member(jsii_name="attrMetadataTableConfigurationS3TablesDestinationTableArn")
4493
4825
  def attr_metadata_table_configuration_s3_tables_destination_table_arn(
@@ -4538,6 +4870,12 @@ class CfnBucket(
4538
4870
  '''
4539
4871
  return typing.cast(builtins.str, jsii.get(self, "attrWebsiteUrl"))
4540
4872
 
4873
+ @builtins.property
4874
+ @jsii.member(jsii_name="bucketRef")
4875
+ def bucket_ref(self) -> _BucketReference_502fb39f:
4876
+ '''A reference to a Bucket resource.'''
4877
+ return typing.cast(_BucketReference_502fb39f, jsii.get(self, "bucketRef"))
4878
+
4541
4879
  @builtins.property
4542
4880
  @jsii.member(jsii_name="cfnProperties")
4543
4881
  def _cfn_properties(self) -> typing.Mapping[builtins.str, typing.Any]:
@@ -4672,7 +5010,7 @@ class CfnBucket(
4672
5010
  def inventory_configurations(
4673
5011
  self,
4674
5012
  ) -> typing.Optional[typing.Union[_IResolvable_da3f097b, typing.List[typing.Union[_IResolvable_da3f097b, "CfnBucket.InventoryConfigurationProperty"]]]]:
4675
- '''Specifies the inventory configuration for an Amazon S3 bucket.'''
5013
+ '''Specifies the S3 Inventory configuration for an Amazon S3 bucket.'''
4676
5014
  return typing.cast(typing.Optional[typing.Union[_IResolvable_da3f097b, typing.List[typing.Union[_IResolvable_da3f097b, "CfnBucket.InventoryConfigurationProperty"]]]], jsii.get(self, "inventoryConfigurations"))
4677
5015
 
4678
5016
  @inventory_configurations.setter
@@ -4721,6 +5059,24 @@ class CfnBucket(
4721
5059
  check_type(argname="argument value", value=value, expected_type=type_hints["value"])
4722
5060
  jsii.set(self, "loggingConfiguration", value) # pyright: ignore[reportArgumentType]
4723
5061
 
5062
+ @builtins.property
5063
+ @jsii.member(jsii_name="metadataConfiguration")
5064
+ def metadata_configuration(
5065
+ self,
5066
+ ) -> typing.Optional[typing.Union[_IResolvable_da3f097b, "CfnBucket.MetadataConfigurationProperty"]]:
5067
+ '''The S3 Metadata configuration for a general purpose bucket.'''
5068
+ return typing.cast(typing.Optional[typing.Union[_IResolvable_da3f097b, "CfnBucket.MetadataConfigurationProperty"]], jsii.get(self, "metadataConfiguration"))
5069
+
5070
+ @metadata_configuration.setter
5071
+ def metadata_configuration(
5072
+ self,
5073
+ value: typing.Optional[typing.Union[_IResolvable_da3f097b, "CfnBucket.MetadataConfigurationProperty"]],
5074
+ ) -> None:
5075
+ if __debug__:
5076
+ type_hints = typing.get_type_hints(_typecheckingstub__13b4697762f20bd91e57f93bf2922758e68d9cbc3f74472e7da7f9ce2f7dcdca)
5077
+ check_type(argname="argument value", value=value, expected_type=type_hints["value"])
5078
+ jsii.set(self, "metadataConfiguration", value) # pyright: ignore[reportArgumentType]
5079
+
4724
5080
  @builtins.property
4725
5081
  @jsii.member(jsii_name="metadataTableConfiguration")
4726
5082
  def metadata_table_configuration(
@@ -5693,7 +6049,7 @@ class CfnBucket(
5693
6049
 
5694
6050
  If you are using an earlier version of the replication configuration, Amazon S3 handles replication of delete markers differently. For more information, see `Backward Compatibility <https://docs.aws.amazon.com/AmazonS3/latest/dev/replication-add-config.html#replication-backward-compat-considerations>`_ .
5695
6051
 
5696
- :param status: Indicates whether to replicate delete markers. Disabled by default.
6052
+ :param status: Indicates whether to replicate delete markers.
5697
6053
 
5698
6054
  :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-deletemarkerreplication.html
5699
6055
  :exampleMetadata: fixture=_generated
@@ -5719,8 +6075,6 @@ class CfnBucket(
5719
6075
  def status(self) -> typing.Optional[builtins.str]:
5720
6076
  '''Indicates whether to replicate delete markers.
5721
6077
 
5722
- Disabled by default.
5723
-
5724
6078
  :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-deletemarkerreplication.html#cfn-s3-bucket-deletemarkerreplication-status
5725
6079
  '''
5726
6080
  result = self._values.get("status")
@@ -6208,7 +6562,7 @@ class CfnBucket(
6208
6562
  optional_fields: typing.Optional[typing.Sequence[builtins.str]] = None,
6209
6563
  prefix: typing.Optional[builtins.str] = None,
6210
6564
  ) -> None:
6211
- '''Specifies the inventory configuration for an Amazon S3 bucket.
6565
+ '''Specifies the S3 Inventory configuration for an Amazon S3 bucket.
6212
6566
 
6213
6567
  For more information, see `GET Bucket inventory <https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketGETInventoryConfig.html>`_ in the *Amazon S3 API Reference* .
6214
6568
 
@@ -6355,25 +6709,32 @@ class CfnBucket(
6355
6709
  )
6356
6710
 
6357
6711
  @jsii.data_type(
6358
- jsii_type="aws-cdk-lib.aws_s3.CfnBucket.LambdaConfigurationProperty",
6712
+ jsii_type="aws-cdk-lib.aws_s3.CfnBucket.InventoryTableConfigurationProperty",
6359
6713
  jsii_struct_bases=[],
6360
- name_mapping={"event": "event", "function": "function", "filter": "filter"},
6714
+ name_mapping={
6715
+ "configuration_state": "configurationState",
6716
+ "encryption_configuration": "encryptionConfiguration",
6717
+ "table_arn": "tableArn",
6718
+ "table_name": "tableName",
6719
+ },
6361
6720
  )
6362
- class LambdaConfigurationProperty:
6721
+ class InventoryTableConfigurationProperty:
6363
6722
  def __init__(
6364
6723
  self,
6365
6724
  *,
6366
- event: builtins.str,
6367
- function: builtins.str,
6368
- filter: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union["CfnBucket.NotificationFilterProperty", typing.Dict[builtins.str, typing.Any]]]] = None,
6725
+ configuration_state: builtins.str,
6726
+ encryption_configuration: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union["CfnBucket.MetadataTableEncryptionConfigurationProperty", typing.Dict[builtins.str, typing.Any]]]] = None,
6727
+ table_arn: typing.Optional[builtins.str] = None,
6728
+ table_name: typing.Optional[builtins.str] = None,
6369
6729
  ) -> None:
6370
- '''Describes the AWS Lambda functions to invoke and the events for which to invoke them.
6730
+ '''The inventory table configuration for an S3 Metadata configuration.
6371
6731
 
6372
- :param event: The Amazon S3 bucket event for which to invoke the AWS Lambda function. For more information, see `Supported Event Types <https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html>`_ in the *Amazon S3 User Guide* .
6373
- :param function: The Amazon Resource Name (ARN) of the AWS Lambda function that Amazon S3 invokes when the specified event type occurs.
6374
- :param filter: The filtering rules that determine which objects invoke the AWS Lambda function. For example, you can create a filter so that only image files with a ``.jpg`` extension invoke the function when they are added to the Amazon S3 bucket.
6732
+ :param configuration_state: The configuration state of the inventory table, indicating whether the inventory table is enabled or disabled.
6733
+ :param encryption_configuration: The encryption configuration for the inventory table.
6734
+ :param table_arn: The Amazon Resource Name (ARN) for the inventory table.
6735
+ :param table_name: The name of the inventory table.
6375
6736
 
6376
- :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-lambdaconfiguration.html
6737
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-inventorytableconfiguration.html
6377
6738
  :exampleMetadata: fixture=_generated
6378
6739
 
6379
6740
  Example::
@@ -6382,32 +6743,262 @@ class CfnBucket(
6382
6743
  # The values are placeholders you should change.
6383
6744
  from aws_cdk import aws_s3 as s3
6384
6745
 
6385
- lambda_configuration_property = s3.CfnBucket.LambdaConfigurationProperty(
6386
- event="event",
6387
- function="function",
6746
+ inventory_table_configuration_property = s3.CfnBucket.InventoryTableConfigurationProperty(
6747
+ configuration_state="configurationState",
6388
6748
 
6389
6749
  # the properties below are optional
6390
- filter=s3.CfnBucket.NotificationFilterProperty(
6391
- s3_key=s3.CfnBucket.S3KeyFilterProperty(
6392
- rules=[s3.CfnBucket.FilterRuleProperty(
6393
- name="name",
6394
- value="value"
6395
- )]
6396
- )
6397
- )
6750
+ encryption_configuration=s3.CfnBucket.MetadataTableEncryptionConfigurationProperty(
6751
+ sse_algorithm="sseAlgorithm",
6752
+
6753
+ # the properties below are optional
6754
+ kms_key_arn="kmsKeyArn"
6755
+ ),
6756
+ table_arn="tableArn",
6757
+ table_name="tableName"
6398
6758
  )
6399
6759
  '''
6400
6760
  if __debug__:
6401
- type_hints = typing.get_type_hints(_typecheckingstub__599ef02853407bceb720424e9874eda7b5e2324f3be8a787939e9d5f9a7d5765)
6402
- check_type(argname="argument event", value=event, expected_type=type_hints["event"])
6403
- check_type(argname="argument function", value=function, expected_type=type_hints["function"])
6404
- check_type(argname="argument filter", value=filter, expected_type=type_hints["filter"])
6761
+ type_hints = typing.get_type_hints(_typecheckingstub__e3f0960f8776684cd6b2c423b1320b1ffcb2a6165dba0f275451667884000458)
6762
+ check_type(argname="argument configuration_state", value=configuration_state, expected_type=type_hints["configuration_state"])
6763
+ check_type(argname="argument encryption_configuration", value=encryption_configuration, expected_type=type_hints["encryption_configuration"])
6764
+ check_type(argname="argument table_arn", value=table_arn, expected_type=type_hints["table_arn"])
6765
+ check_type(argname="argument table_name", value=table_name, expected_type=type_hints["table_name"])
6405
6766
  self._values: typing.Dict[builtins.str, typing.Any] = {
6406
- "event": event,
6407
- "function": function,
6767
+ "configuration_state": configuration_state,
6408
6768
  }
6409
- if filter is not None:
6410
- self._values["filter"] = filter
6769
+ if encryption_configuration is not None:
6770
+ self._values["encryption_configuration"] = encryption_configuration
6771
+ if table_arn is not None:
6772
+ self._values["table_arn"] = table_arn
6773
+ if table_name is not None:
6774
+ self._values["table_name"] = table_name
6775
+
6776
+ @builtins.property
6777
+ def configuration_state(self) -> builtins.str:
6778
+ '''The configuration state of the inventory table, indicating whether the inventory table is enabled or disabled.
6779
+
6780
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-inventorytableconfiguration.html#cfn-s3-bucket-inventorytableconfiguration-configurationstate
6781
+ '''
6782
+ result = self._values.get("configuration_state")
6783
+ assert result is not None, "Required property 'configuration_state' is missing"
6784
+ return typing.cast(builtins.str, result)
6785
+
6786
+ @builtins.property
6787
+ def encryption_configuration(
6788
+ self,
6789
+ ) -> typing.Optional[typing.Union[_IResolvable_da3f097b, "CfnBucket.MetadataTableEncryptionConfigurationProperty"]]:
6790
+ '''The encryption configuration for the inventory table.
6791
+
6792
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-inventorytableconfiguration.html#cfn-s3-bucket-inventorytableconfiguration-encryptionconfiguration
6793
+ '''
6794
+ result = self._values.get("encryption_configuration")
6795
+ return typing.cast(typing.Optional[typing.Union[_IResolvable_da3f097b, "CfnBucket.MetadataTableEncryptionConfigurationProperty"]], result)
6796
+
6797
+ @builtins.property
6798
+ def table_arn(self) -> typing.Optional[builtins.str]:
6799
+ '''The Amazon Resource Name (ARN) for the inventory table.
6800
+
6801
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-inventorytableconfiguration.html#cfn-s3-bucket-inventorytableconfiguration-tablearn
6802
+ '''
6803
+ result = self._values.get("table_arn")
6804
+ return typing.cast(typing.Optional[builtins.str], result)
6805
+
6806
+ @builtins.property
6807
+ def table_name(self) -> typing.Optional[builtins.str]:
6808
+ '''The name of the inventory table.
6809
+
6810
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-inventorytableconfiguration.html#cfn-s3-bucket-inventorytableconfiguration-tablename
6811
+ '''
6812
+ result = self._values.get("table_name")
6813
+ return typing.cast(typing.Optional[builtins.str], result)
6814
+
6815
+ def __eq__(self, rhs: typing.Any) -> builtins.bool:
6816
+ return isinstance(rhs, self.__class__) and rhs._values == self._values
6817
+
6818
+ def __ne__(self, rhs: typing.Any) -> builtins.bool:
6819
+ return not (rhs == self)
6820
+
6821
+ def __repr__(self) -> str:
6822
+ return "InventoryTableConfigurationProperty(%s)" % ", ".join(
6823
+ k + "=" + repr(v) for k, v in self._values.items()
6824
+ )
6825
+
6826
+ @jsii.data_type(
6827
+ jsii_type="aws-cdk-lib.aws_s3.CfnBucket.JournalTableConfigurationProperty",
6828
+ jsii_struct_bases=[],
6829
+ name_mapping={
6830
+ "record_expiration": "recordExpiration",
6831
+ "encryption_configuration": "encryptionConfiguration",
6832
+ "table_arn": "tableArn",
6833
+ "table_name": "tableName",
6834
+ },
6835
+ )
6836
+ class JournalTableConfigurationProperty:
6837
+ def __init__(
6838
+ self,
6839
+ *,
6840
+ record_expiration: typing.Union[_IResolvable_da3f097b, typing.Union["CfnBucket.RecordExpirationProperty", typing.Dict[builtins.str, typing.Any]]],
6841
+ encryption_configuration: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union["CfnBucket.MetadataTableEncryptionConfigurationProperty", typing.Dict[builtins.str, typing.Any]]]] = None,
6842
+ table_arn: typing.Optional[builtins.str] = None,
6843
+ table_name: typing.Optional[builtins.str] = None,
6844
+ ) -> None:
6845
+ '''The journal table configuration for an S3 Metadata configuration.
6846
+
6847
+ :param record_expiration: The journal table record expiration settings for the journal table.
6848
+ :param encryption_configuration: The encryption configuration for the journal table.
6849
+ :param table_arn: The Amazon Resource Name (ARN) for the journal table.
6850
+ :param table_name: The name of the journal table.
6851
+
6852
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-journaltableconfiguration.html
6853
+ :exampleMetadata: fixture=_generated
6854
+
6855
+ Example::
6856
+
6857
+ # The code below shows an example of how to instantiate this type.
6858
+ # The values are placeholders you should change.
6859
+ from aws_cdk import aws_s3 as s3
6860
+
6861
+ journal_table_configuration_property = s3.CfnBucket.JournalTableConfigurationProperty(
6862
+ record_expiration=s3.CfnBucket.RecordExpirationProperty(
6863
+ expiration="expiration",
6864
+
6865
+ # the properties below are optional
6866
+ days=123
6867
+ ),
6868
+
6869
+ # the properties below are optional
6870
+ encryption_configuration=s3.CfnBucket.MetadataTableEncryptionConfigurationProperty(
6871
+ sse_algorithm="sseAlgorithm",
6872
+
6873
+ # the properties below are optional
6874
+ kms_key_arn="kmsKeyArn"
6875
+ ),
6876
+ table_arn="tableArn",
6877
+ table_name="tableName"
6878
+ )
6879
+ '''
6880
+ if __debug__:
6881
+ type_hints = typing.get_type_hints(_typecheckingstub__4831e8bf78dc983eaf9b010780417c4e6b808ef19beac1729f89ba7bab53d4d9)
6882
+ check_type(argname="argument record_expiration", value=record_expiration, expected_type=type_hints["record_expiration"])
6883
+ check_type(argname="argument encryption_configuration", value=encryption_configuration, expected_type=type_hints["encryption_configuration"])
6884
+ check_type(argname="argument table_arn", value=table_arn, expected_type=type_hints["table_arn"])
6885
+ check_type(argname="argument table_name", value=table_name, expected_type=type_hints["table_name"])
6886
+ self._values: typing.Dict[builtins.str, typing.Any] = {
6887
+ "record_expiration": record_expiration,
6888
+ }
6889
+ if encryption_configuration is not None:
6890
+ self._values["encryption_configuration"] = encryption_configuration
6891
+ if table_arn is not None:
6892
+ self._values["table_arn"] = table_arn
6893
+ if table_name is not None:
6894
+ self._values["table_name"] = table_name
6895
+
6896
+ @builtins.property
6897
+ def record_expiration(
6898
+ self,
6899
+ ) -> typing.Union[_IResolvable_da3f097b, "CfnBucket.RecordExpirationProperty"]:
6900
+ '''The journal table record expiration settings for the journal table.
6901
+
6902
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-journaltableconfiguration.html#cfn-s3-bucket-journaltableconfiguration-recordexpiration
6903
+ '''
6904
+ result = self._values.get("record_expiration")
6905
+ assert result is not None, "Required property 'record_expiration' is missing"
6906
+ return typing.cast(typing.Union[_IResolvable_da3f097b, "CfnBucket.RecordExpirationProperty"], result)
6907
+
6908
+ @builtins.property
6909
+ def encryption_configuration(
6910
+ self,
6911
+ ) -> typing.Optional[typing.Union[_IResolvable_da3f097b, "CfnBucket.MetadataTableEncryptionConfigurationProperty"]]:
6912
+ '''The encryption configuration for the journal table.
6913
+
6914
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-journaltableconfiguration.html#cfn-s3-bucket-journaltableconfiguration-encryptionconfiguration
6915
+ '''
6916
+ result = self._values.get("encryption_configuration")
6917
+ return typing.cast(typing.Optional[typing.Union[_IResolvable_da3f097b, "CfnBucket.MetadataTableEncryptionConfigurationProperty"]], result)
6918
+
6919
+ @builtins.property
6920
+ def table_arn(self) -> typing.Optional[builtins.str]:
6921
+ '''The Amazon Resource Name (ARN) for the journal table.
6922
+
6923
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-journaltableconfiguration.html#cfn-s3-bucket-journaltableconfiguration-tablearn
6924
+ '''
6925
+ result = self._values.get("table_arn")
6926
+ return typing.cast(typing.Optional[builtins.str], result)
6927
+
6928
+ @builtins.property
6929
+ def table_name(self) -> typing.Optional[builtins.str]:
6930
+ '''The name of the journal table.
6931
+
6932
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-journaltableconfiguration.html#cfn-s3-bucket-journaltableconfiguration-tablename
6933
+ '''
6934
+ result = self._values.get("table_name")
6935
+ return typing.cast(typing.Optional[builtins.str], result)
6936
+
6937
+ def __eq__(self, rhs: typing.Any) -> builtins.bool:
6938
+ return isinstance(rhs, self.__class__) and rhs._values == self._values
6939
+
6940
+ def __ne__(self, rhs: typing.Any) -> builtins.bool:
6941
+ return not (rhs == self)
6942
+
6943
+ def __repr__(self) -> str:
6944
+ return "JournalTableConfigurationProperty(%s)" % ", ".join(
6945
+ k + "=" + repr(v) for k, v in self._values.items()
6946
+ )
6947
+
6948
+ @jsii.data_type(
6949
+ jsii_type="aws-cdk-lib.aws_s3.CfnBucket.LambdaConfigurationProperty",
6950
+ jsii_struct_bases=[],
6951
+ name_mapping={"event": "event", "function": "function", "filter": "filter"},
6952
+ )
6953
+ class LambdaConfigurationProperty:
6954
+ def __init__(
6955
+ self,
6956
+ *,
6957
+ event: builtins.str,
6958
+ function: builtins.str,
6959
+ filter: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union["CfnBucket.NotificationFilterProperty", typing.Dict[builtins.str, typing.Any]]]] = None,
6960
+ ) -> None:
6961
+ '''Describes the AWS Lambda functions to invoke and the events for which to invoke them.
6962
+
6963
+ :param event: The Amazon S3 bucket event for which to invoke the AWS Lambda function. For more information, see `Supported Event Types <https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html>`_ in the *Amazon S3 User Guide* .
6964
+ :param function: The Amazon Resource Name (ARN) of the AWS Lambda function that Amazon S3 invokes when the specified event type occurs.
6965
+ :param filter: The filtering rules that determine which objects invoke the AWS Lambda function. For example, you can create a filter so that only image files with a ``.jpg`` extension invoke the function when they are added to the Amazon S3 bucket.
6966
+
6967
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-lambdaconfiguration.html
6968
+ :exampleMetadata: fixture=_generated
6969
+
6970
+ Example::
6971
+
6972
+ # The code below shows an example of how to instantiate this type.
6973
+ # The values are placeholders you should change.
6974
+ from aws_cdk import aws_s3 as s3
6975
+
6976
+ lambda_configuration_property = s3.CfnBucket.LambdaConfigurationProperty(
6977
+ event="event",
6978
+ function="function",
6979
+
6980
+ # the properties below are optional
6981
+ filter=s3.CfnBucket.NotificationFilterProperty(
6982
+ s3_key=s3.CfnBucket.S3KeyFilterProperty(
6983
+ rules=[s3.CfnBucket.FilterRuleProperty(
6984
+ name="name",
6985
+ value="value"
6986
+ )]
6987
+ )
6988
+ )
6989
+ )
6990
+ '''
6991
+ if __debug__:
6992
+ type_hints = typing.get_type_hints(_typecheckingstub__599ef02853407bceb720424e9874eda7b5e2324f3be8a787939e9d5f9a7d5765)
6993
+ check_type(argname="argument event", value=event, expected_type=type_hints["event"])
6994
+ check_type(argname="argument function", value=function, expected_type=type_hints["function"])
6995
+ check_type(argname="argument filter", value=filter, expected_type=type_hints["filter"])
6996
+ self._values: typing.Dict[builtins.str, typing.Any] = {
6997
+ "event": event,
6998
+ "function": function,
6999
+ }
7000
+ if filter is not None:
7001
+ self._values["filter"] = filter
6411
7002
 
6412
7003
  @builtins.property
6413
7004
  def event(self) -> builtins.str:
@@ -6708,6 +7299,235 @@ class CfnBucket(
6708
7299
  k + "=" + repr(v) for k, v in self._values.items()
6709
7300
  )
6710
7301
 
7302
+ @jsii.data_type(
7303
+ jsii_type="aws-cdk-lib.aws_s3.CfnBucket.MetadataConfigurationProperty",
7304
+ jsii_struct_bases=[],
7305
+ name_mapping={
7306
+ "journal_table_configuration": "journalTableConfiguration",
7307
+ "destination": "destination",
7308
+ "inventory_table_configuration": "inventoryTableConfiguration",
7309
+ },
7310
+ )
7311
+ class MetadataConfigurationProperty:
7312
+ def __init__(
7313
+ self,
7314
+ *,
7315
+ journal_table_configuration: typing.Union[_IResolvable_da3f097b, typing.Union["CfnBucket.JournalTableConfigurationProperty", typing.Dict[builtins.str, typing.Any]]],
7316
+ destination: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union["CfnBucket.MetadataDestinationProperty", typing.Dict[builtins.str, typing.Any]]]] = None,
7317
+ inventory_table_configuration: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union["CfnBucket.InventoryTableConfigurationProperty", typing.Dict[builtins.str, typing.Any]]]] = None,
7318
+ ) -> None:
7319
+ '''Creates a V2 Amazon S3 Metadata configuration of a general purpose bucket.
7320
+
7321
+ For more information, see `Accelerating data discovery with S3 Metadata <https://docs.aws.amazon.com/AmazonS3/latest/userguide/metadata-tables-overview.html>`_ in the *Amazon S3 User Guide* .
7322
+
7323
+ :param journal_table_configuration: The journal table configuration for a metadata configuration.
7324
+ :param destination: The destination information for the S3 Metadata configuration.
7325
+ :param inventory_table_configuration: The inventory table configuration for a metadata configuration.
7326
+
7327
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-metadataconfiguration.html
7328
+ :exampleMetadata: fixture=_generated
7329
+
7330
+ Example::
7331
+
7332
+ # The code below shows an example of how to instantiate this type.
7333
+ # The values are placeholders you should change.
7334
+ from aws_cdk import aws_s3 as s3
7335
+
7336
+ metadata_configuration_property = s3.CfnBucket.MetadataConfigurationProperty(
7337
+ journal_table_configuration=s3.CfnBucket.JournalTableConfigurationProperty(
7338
+ record_expiration=s3.CfnBucket.RecordExpirationProperty(
7339
+ expiration="expiration",
7340
+
7341
+ # the properties below are optional
7342
+ days=123
7343
+ ),
7344
+
7345
+ # the properties below are optional
7346
+ encryption_configuration=s3.CfnBucket.MetadataTableEncryptionConfigurationProperty(
7347
+ sse_algorithm="sseAlgorithm",
7348
+
7349
+ # the properties below are optional
7350
+ kms_key_arn="kmsKeyArn"
7351
+ ),
7352
+ table_arn="tableArn",
7353
+ table_name="tableName"
7354
+ ),
7355
+
7356
+ # the properties below are optional
7357
+ destination=s3.CfnBucket.MetadataDestinationProperty(
7358
+ table_bucket_type="tableBucketType",
7359
+
7360
+ # the properties below are optional
7361
+ table_bucket_arn="tableBucketArn",
7362
+ table_namespace="tableNamespace"
7363
+ ),
7364
+ inventory_table_configuration=s3.CfnBucket.InventoryTableConfigurationProperty(
7365
+ configuration_state="configurationState",
7366
+
7367
+ # the properties below are optional
7368
+ encryption_configuration=s3.CfnBucket.MetadataTableEncryptionConfigurationProperty(
7369
+ sse_algorithm="sseAlgorithm",
7370
+
7371
+ # the properties below are optional
7372
+ kms_key_arn="kmsKeyArn"
7373
+ ),
7374
+ table_arn="tableArn",
7375
+ table_name="tableName"
7376
+ )
7377
+ )
7378
+ '''
7379
+ if __debug__:
7380
+ type_hints = typing.get_type_hints(_typecheckingstub__5ba4e02b348fb368852d2eaf89da64d6c5432c39d5f771482cd73c5e29aea1d2)
7381
+ check_type(argname="argument journal_table_configuration", value=journal_table_configuration, expected_type=type_hints["journal_table_configuration"])
7382
+ check_type(argname="argument destination", value=destination, expected_type=type_hints["destination"])
7383
+ check_type(argname="argument inventory_table_configuration", value=inventory_table_configuration, expected_type=type_hints["inventory_table_configuration"])
7384
+ self._values: typing.Dict[builtins.str, typing.Any] = {
7385
+ "journal_table_configuration": journal_table_configuration,
7386
+ }
7387
+ if destination is not None:
7388
+ self._values["destination"] = destination
7389
+ if inventory_table_configuration is not None:
7390
+ self._values["inventory_table_configuration"] = inventory_table_configuration
7391
+
7392
+ @builtins.property
7393
+ def journal_table_configuration(
7394
+ self,
7395
+ ) -> typing.Union[_IResolvable_da3f097b, "CfnBucket.JournalTableConfigurationProperty"]:
7396
+ '''The journal table configuration for a metadata configuration.
7397
+
7398
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-metadataconfiguration.html#cfn-s3-bucket-metadataconfiguration-journaltableconfiguration
7399
+ '''
7400
+ result = self._values.get("journal_table_configuration")
7401
+ assert result is not None, "Required property 'journal_table_configuration' is missing"
7402
+ return typing.cast(typing.Union[_IResolvable_da3f097b, "CfnBucket.JournalTableConfigurationProperty"], result)
7403
+
7404
+ @builtins.property
7405
+ def destination(
7406
+ self,
7407
+ ) -> typing.Optional[typing.Union[_IResolvable_da3f097b, "CfnBucket.MetadataDestinationProperty"]]:
7408
+ '''The destination information for the S3 Metadata configuration.
7409
+
7410
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-metadataconfiguration.html#cfn-s3-bucket-metadataconfiguration-destination
7411
+ '''
7412
+ result = self._values.get("destination")
7413
+ return typing.cast(typing.Optional[typing.Union[_IResolvable_da3f097b, "CfnBucket.MetadataDestinationProperty"]], result)
7414
+
7415
+ @builtins.property
7416
+ def inventory_table_configuration(
7417
+ self,
7418
+ ) -> typing.Optional[typing.Union[_IResolvable_da3f097b, "CfnBucket.InventoryTableConfigurationProperty"]]:
7419
+ '''The inventory table configuration for a metadata configuration.
7420
+
7421
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-metadataconfiguration.html#cfn-s3-bucket-metadataconfiguration-inventorytableconfiguration
7422
+ '''
7423
+ result = self._values.get("inventory_table_configuration")
7424
+ return typing.cast(typing.Optional[typing.Union[_IResolvable_da3f097b, "CfnBucket.InventoryTableConfigurationProperty"]], result)
7425
+
7426
+ def __eq__(self, rhs: typing.Any) -> builtins.bool:
7427
+ return isinstance(rhs, self.__class__) and rhs._values == self._values
7428
+
7429
+ def __ne__(self, rhs: typing.Any) -> builtins.bool:
7430
+ return not (rhs == self)
7431
+
7432
+ def __repr__(self) -> str:
7433
+ return "MetadataConfigurationProperty(%s)" % ", ".join(
7434
+ k + "=" + repr(v) for k, v in self._values.items()
7435
+ )
7436
+
7437
+ @jsii.data_type(
7438
+ jsii_type="aws-cdk-lib.aws_s3.CfnBucket.MetadataDestinationProperty",
7439
+ jsii_struct_bases=[],
7440
+ name_mapping={
7441
+ "table_bucket_type": "tableBucketType",
7442
+ "table_bucket_arn": "tableBucketArn",
7443
+ "table_namespace": "tableNamespace",
7444
+ },
7445
+ )
7446
+ class MetadataDestinationProperty:
7447
+ def __init__(
7448
+ self,
7449
+ *,
7450
+ table_bucket_type: builtins.str,
7451
+ table_bucket_arn: typing.Optional[builtins.str] = None,
7452
+ table_namespace: typing.Optional[builtins.str] = None,
7453
+ ) -> None:
7454
+ '''The destination information for the S3 Metadata configuration.
7455
+
7456
+ :param table_bucket_type: The type of the table bucket where the metadata configuration is stored. The ``aws`` value indicates an AWS managed table bucket, and the ``customer`` value indicates a customer-managed table bucket. V2 metadata configurations are stored in AWS managed table buckets, and V1 metadata configurations are stored in customer-managed table buckets.
7457
+ :param table_bucket_arn: The Amazon Resource Name (ARN) of the table bucket where the metadata configuration is stored.
7458
+ :param table_namespace: The namespace in the table bucket where the metadata tables for a metadata configuration are stored.
7459
+
7460
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-metadatadestination.html
7461
+ :exampleMetadata: fixture=_generated
7462
+
7463
+ Example::
7464
+
7465
+ # The code below shows an example of how to instantiate this type.
7466
+ # The values are placeholders you should change.
7467
+ from aws_cdk import aws_s3 as s3
7468
+
7469
+ metadata_destination_property = s3.CfnBucket.MetadataDestinationProperty(
7470
+ table_bucket_type="tableBucketType",
7471
+
7472
+ # the properties below are optional
7473
+ table_bucket_arn="tableBucketArn",
7474
+ table_namespace="tableNamespace"
7475
+ )
7476
+ '''
7477
+ if __debug__:
7478
+ type_hints = typing.get_type_hints(_typecheckingstub__22a357b76c39088e89c9805c6e3fd369bf83472fbcec37ad505b7803d1960e7e)
7479
+ check_type(argname="argument table_bucket_type", value=table_bucket_type, expected_type=type_hints["table_bucket_type"])
7480
+ check_type(argname="argument table_bucket_arn", value=table_bucket_arn, expected_type=type_hints["table_bucket_arn"])
7481
+ check_type(argname="argument table_namespace", value=table_namespace, expected_type=type_hints["table_namespace"])
7482
+ self._values: typing.Dict[builtins.str, typing.Any] = {
7483
+ "table_bucket_type": table_bucket_type,
7484
+ }
7485
+ if table_bucket_arn is not None:
7486
+ self._values["table_bucket_arn"] = table_bucket_arn
7487
+ if table_namespace is not None:
7488
+ self._values["table_namespace"] = table_namespace
7489
+
7490
+ @builtins.property
7491
+ def table_bucket_type(self) -> builtins.str:
7492
+ '''The type of the table bucket where the metadata configuration is stored.
7493
+
7494
+ The ``aws`` value indicates an AWS managed table bucket, and the ``customer`` value indicates a customer-managed table bucket. V2 metadata configurations are stored in AWS managed table buckets, and V1 metadata configurations are stored in customer-managed table buckets.
7495
+
7496
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-metadatadestination.html#cfn-s3-bucket-metadatadestination-tablebuckettype
7497
+ '''
7498
+ result = self._values.get("table_bucket_type")
7499
+ assert result is not None, "Required property 'table_bucket_type' is missing"
7500
+ return typing.cast(builtins.str, result)
7501
+
7502
+ @builtins.property
7503
+ def table_bucket_arn(self) -> typing.Optional[builtins.str]:
7504
+ '''The Amazon Resource Name (ARN) of the table bucket where the metadata configuration is stored.
7505
+
7506
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-metadatadestination.html#cfn-s3-bucket-metadatadestination-tablebucketarn
7507
+ '''
7508
+ result = self._values.get("table_bucket_arn")
7509
+ return typing.cast(typing.Optional[builtins.str], result)
7510
+
7511
+ @builtins.property
7512
+ def table_namespace(self) -> typing.Optional[builtins.str]:
7513
+ '''The namespace in the table bucket where the metadata tables for a metadata configuration are stored.
7514
+
7515
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-metadatadestination.html#cfn-s3-bucket-metadatadestination-tablenamespace
7516
+ '''
7517
+ result = self._values.get("table_namespace")
7518
+ return typing.cast(typing.Optional[builtins.str], result)
7519
+
7520
+ def __eq__(self, rhs: typing.Any) -> builtins.bool:
7521
+ return isinstance(rhs, self.__class__) and rhs._values == self._values
7522
+
7523
+ def __ne__(self, rhs: typing.Any) -> builtins.bool:
7524
+ return not (rhs == self)
7525
+
7526
+ def __repr__(self) -> str:
7527
+ return "MetadataDestinationProperty(%s)" % ", ".join(
7528
+ k + "=" + repr(v) for k, v in self._values.items()
7529
+ )
7530
+
6711
7531
  @jsii.data_type(
6712
7532
  jsii_type="aws-cdk-lib.aws_s3.CfnBucket.MetadataTableConfigurationProperty",
6713
7533
  jsii_struct_bases=[],
@@ -6719,9 +7539,11 @@ class CfnBucket(
6719
7539
  *,
6720
7540
  s3_tables_destination: typing.Union[_IResolvable_da3f097b, typing.Union["CfnBucket.S3TablesDestinationProperty", typing.Dict[builtins.str, typing.Any]]],
6721
7541
  ) -> None:
6722
- '''The metadata table configuration of an Amazon S3 general purpose bucket.
7542
+ '''.. epigraph::
7543
+
7544
+ We recommend that you create your S3 Metadata configurations by using the V2 `MetadataConfiguration <https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-properties-s3-bucket-metadataconfiguration.html>`_ resource type. We no longer recommend using the V1 ``MetadataTableConfiguration`` resource type. > > If you created your S3 Metadata configuration before July 15, 2025, we recommend that you delete and re-create your configuration by using the `MetadataConfiguration <https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-properties-s3-bucket-metadataconfiguration.html>`_ resource type so that you can expire journal table records and create a live inventory table.
6723
7545
 
6724
- For more information, see `Accelerating data discovery with S3 Metadata <https://docs.aws.amazon.com/AmazonS3/latest/userguide/metadata-tables-overview.html>`_ and `Setting up permissions for configuring metadata tables <https://docs.aws.amazon.com/AmazonS3/latest/userguide/metadata-tables-permissions.html>`_ .
7546
+ Creates a V1 S3 Metadata configuration for a general purpose bucket. For more information, see `Accelerating data discovery with S3 Metadata <https://docs.aws.amazon.com/AmazonS3/latest/userguide/metadata-tables-overview.html>`_ in the *Amazon S3 User Guide* .
6725
7547
 
6726
7548
  :param s3_tables_destination: The destination information for the metadata table configuration. The destination table bucket must be in the same Region and AWS account as the general purpose bucket. The specified metadata table name must be unique within the ``aws_s3_metadata`` namespace in the destination table bucket.
6727
7549
 
@@ -6777,6 +7599,83 @@ class CfnBucket(
6777
7599
  k + "=" + repr(v) for k, v in self._values.items()
6778
7600
  )
6779
7601
 
7602
+ @jsii.data_type(
7603
+ jsii_type="aws-cdk-lib.aws_s3.CfnBucket.MetadataTableEncryptionConfigurationProperty",
7604
+ jsii_struct_bases=[],
7605
+ name_mapping={"sse_algorithm": "sseAlgorithm", "kms_key_arn": "kmsKeyArn"},
7606
+ )
7607
+ class MetadataTableEncryptionConfigurationProperty:
7608
+ def __init__(
7609
+ self,
7610
+ *,
7611
+ sse_algorithm: builtins.str,
7612
+ kms_key_arn: typing.Optional[builtins.str] = None,
7613
+ ) -> None:
7614
+ '''The encryption settings for an S3 Metadata journal table or inventory table configuration.
7615
+
7616
+ :param sse_algorithm: The encryption type specified for a metadata table. To specify server-side encryption with AWS Key Management Service ( AWS KMS ) keys (SSE-KMS), use the ``aws:kms`` value. To specify server-side encryption with Amazon S3 managed keys (SSE-S3), use the ``AES256`` value.
7617
+ :param kms_key_arn: If server-side encryption with AWS Key Management Service ( AWS KMS ) keys (SSE-KMS) is specified, you must also specify the KMS key Amazon Resource Name (ARN). You must specify a customer-managed KMS key that's located in the same Region as the general purpose bucket that corresponds to the metadata table configuration.
7618
+
7619
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-metadatatableencryptionconfiguration.html
7620
+ :exampleMetadata: fixture=_generated
7621
+
7622
+ Example::
7623
+
7624
+ # The code below shows an example of how to instantiate this type.
7625
+ # The values are placeholders you should change.
7626
+ from aws_cdk import aws_s3 as s3
7627
+
7628
+ metadata_table_encryption_configuration_property = s3.CfnBucket.MetadataTableEncryptionConfigurationProperty(
7629
+ sse_algorithm="sseAlgorithm",
7630
+
7631
+ # the properties below are optional
7632
+ kms_key_arn="kmsKeyArn"
7633
+ )
7634
+ '''
7635
+ if __debug__:
7636
+ type_hints = typing.get_type_hints(_typecheckingstub__638725ba5e16c7545010085fee3839279059f8036e3a36e81a6da12f68c3c96d)
7637
+ check_type(argname="argument sse_algorithm", value=sse_algorithm, expected_type=type_hints["sse_algorithm"])
7638
+ check_type(argname="argument kms_key_arn", value=kms_key_arn, expected_type=type_hints["kms_key_arn"])
7639
+ self._values: typing.Dict[builtins.str, typing.Any] = {
7640
+ "sse_algorithm": sse_algorithm,
7641
+ }
7642
+ if kms_key_arn is not None:
7643
+ self._values["kms_key_arn"] = kms_key_arn
7644
+
7645
+ @builtins.property
7646
+ def sse_algorithm(self) -> builtins.str:
7647
+ '''The encryption type specified for a metadata table.
7648
+
7649
+ To specify server-side encryption with AWS Key Management Service ( AWS KMS ) keys (SSE-KMS), use the ``aws:kms`` value. To specify server-side encryption with Amazon S3 managed keys (SSE-S3), use the ``AES256`` value.
7650
+
7651
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-metadatatableencryptionconfiguration.html#cfn-s3-bucket-metadatatableencryptionconfiguration-ssealgorithm
7652
+ '''
7653
+ result = self._values.get("sse_algorithm")
7654
+ assert result is not None, "Required property 'sse_algorithm' is missing"
7655
+ return typing.cast(builtins.str, result)
7656
+
7657
+ @builtins.property
7658
+ def kms_key_arn(self) -> typing.Optional[builtins.str]:
7659
+ '''If server-side encryption with AWS Key Management Service ( AWS KMS ) keys (SSE-KMS) is specified, you must also specify the KMS key Amazon Resource Name (ARN).
7660
+
7661
+ You must specify a customer-managed KMS key that's located in the same Region as the general purpose bucket that corresponds to the metadata table configuration.
7662
+
7663
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-metadatatableencryptionconfiguration.html#cfn-s3-bucket-metadatatableencryptionconfiguration-kmskeyarn
7664
+ '''
7665
+ result = self._values.get("kms_key_arn")
7666
+ return typing.cast(typing.Optional[builtins.str], result)
7667
+
7668
+ def __eq__(self, rhs: typing.Any) -> builtins.bool:
7669
+ return isinstance(rhs, self.__class__) and rhs._values == self._values
7670
+
7671
+ def __ne__(self, rhs: typing.Any) -> builtins.bool:
7672
+ return not (rhs == self)
7673
+
7674
+ def __repr__(self) -> str:
7675
+ return "MetadataTableEncryptionConfigurationProperty(%s)" % ", ".join(
7676
+ k + "=" + repr(v) for k, v in self._values.items()
7677
+ )
7678
+
6780
7679
  @jsii.data_type(
6781
7680
  jsii_type="aws-cdk-lib.aws_s3.CfnBucket.MetricsConfigurationProperty",
6782
7681
  jsii_struct_bases=[],
@@ -7935,12 +8834,87 @@ class CfnBucket(
7935
8834
  ) -> typing.Optional[typing.Union[_IResolvable_da3f097b, "CfnBucket.NotificationFilterProperty"]]:
7936
8835
  '''The filtering rules that determine which objects trigger notifications.
7937
8836
 
7938
- For example, you can create a filter so that Amazon S3 sends notifications only when image files with a ``.jpg`` extension are added to the bucket. For more information, see `Configuring event notifications using object key name filtering <https://docs.aws.amazon.com/AmazonS3/latest/user-guide/notification-how-to-filtering.html>`_ in the *Amazon S3 User Guide* .
8837
+ For example, you can create a filter so that Amazon S3 sends notifications only when image files with a ``.jpg`` extension are added to the bucket. For more information, see `Configuring event notifications using object key name filtering <https://docs.aws.amazon.com/AmazonS3/latest/user-guide/notification-how-to-filtering.html>`_ in the *Amazon S3 User Guide* .
8838
+
8839
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-queueconfiguration.html#cfn-s3-bucket-queueconfiguration-filter
8840
+ '''
8841
+ result = self._values.get("filter")
8842
+ return typing.cast(typing.Optional[typing.Union[_IResolvable_da3f097b, "CfnBucket.NotificationFilterProperty"]], result)
8843
+
8844
+ def __eq__(self, rhs: typing.Any) -> builtins.bool:
8845
+ return isinstance(rhs, self.__class__) and rhs._values == self._values
8846
+
8847
+ def __ne__(self, rhs: typing.Any) -> builtins.bool:
8848
+ return not (rhs == self)
8849
+
8850
+ def __repr__(self) -> str:
8851
+ return "QueueConfigurationProperty(%s)" % ", ".join(
8852
+ k + "=" + repr(v) for k, v in self._values.items()
8853
+ )
8854
+
8855
+ @jsii.data_type(
8856
+ jsii_type="aws-cdk-lib.aws_s3.CfnBucket.RecordExpirationProperty",
8857
+ jsii_struct_bases=[],
8858
+ name_mapping={"expiration": "expiration", "days": "days"},
8859
+ )
8860
+ class RecordExpirationProperty:
8861
+ def __init__(
8862
+ self,
8863
+ *,
8864
+ expiration: builtins.str,
8865
+ days: typing.Optional[jsii.Number] = None,
8866
+ ) -> None:
8867
+ '''The journal table record expiration settings for a journal table in an S3 Metadata configuration.
8868
+
8869
+ :param expiration: Specifies whether journal table record expiration is enabled or disabled.
8870
+ :param days: If you enable journal table record expiration, you can set the number of days to retain your journal table records. Journal table records must be retained for a minimum of 7 days. To set this value, specify any whole number from ``7`` to ``2147483647`` . For example, to retain your journal table records for one year, set this value to ``365`` .
8871
+
8872
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-recordexpiration.html
8873
+ :exampleMetadata: fixture=_generated
8874
+
8875
+ Example::
8876
+
8877
+ # The code below shows an example of how to instantiate this type.
8878
+ # The values are placeholders you should change.
8879
+ from aws_cdk import aws_s3 as s3
8880
+
8881
+ record_expiration_property = s3.CfnBucket.RecordExpirationProperty(
8882
+ expiration="expiration",
8883
+
8884
+ # the properties below are optional
8885
+ days=123
8886
+ )
8887
+ '''
8888
+ if __debug__:
8889
+ type_hints = typing.get_type_hints(_typecheckingstub__ced4e05e0d07a000e813825522beab4af447ff67164c61600ff7eb3b0afab28c)
8890
+ check_type(argname="argument expiration", value=expiration, expected_type=type_hints["expiration"])
8891
+ check_type(argname="argument days", value=days, expected_type=type_hints["days"])
8892
+ self._values: typing.Dict[builtins.str, typing.Any] = {
8893
+ "expiration": expiration,
8894
+ }
8895
+ if days is not None:
8896
+ self._values["days"] = days
8897
+
8898
+ @builtins.property
8899
+ def expiration(self) -> builtins.str:
8900
+ '''Specifies whether journal table record expiration is enabled or disabled.
8901
+
8902
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-recordexpiration.html#cfn-s3-bucket-recordexpiration-expiration
8903
+ '''
8904
+ result = self._values.get("expiration")
8905
+ assert result is not None, "Required property 'expiration' is missing"
8906
+ return typing.cast(builtins.str, result)
8907
+
8908
+ @builtins.property
8909
+ def days(self) -> typing.Optional[jsii.Number]:
8910
+ '''If you enable journal table record expiration, you can set the number of days to retain your journal table records.
7939
8911
 
7940
- :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-queueconfiguration.html#cfn-s3-bucket-queueconfiguration-filter
8912
+ Journal table records must be retained for a minimum of 7 days. To set this value, specify any whole number from ``7`` to ``2147483647`` . For example, to retain your journal table records for one year, set this value to ``365`` .
8913
+
8914
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-recordexpiration.html#cfn-s3-bucket-recordexpiration-days
7941
8915
  '''
7942
- result = self._values.get("filter")
7943
- return typing.cast(typing.Optional[typing.Union[_IResolvable_da3f097b, "CfnBucket.NotificationFilterProperty"]], result)
8916
+ result = self._values.get("days")
8917
+ return typing.cast(typing.Optional[jsii.Number], result)
7944
8918
 
7945
8919
  def __eq__(self, rhs: typing.Any) -> builtins.bool:
7946
8920
  return isinstance(rhs, self.__class__) and rhs._values == self._values
@@ -7949,7 +8923,7 @@ class CfnBucket(
7949
8923
  return not (rhs == self)
7950
8924
 
7951
8925
  def __repr__(self) -> str:
7952
- return "QueueConfigurationProperty(%s)" % ", ".join(
8926
+ return "RecordExpirationProperty(%s)" % ", ".join(
7953
8927
  k + "=" + repr(v) for k, v in self._values.items()
7954
8928
  )
7955
8929
 
@@ -8390,7 +9364,7 @@ class CfnBucket(
8390
9364
  :param encryption_configuration: Specifies encryption-related information.
8391
9365
  :param metrics: A container specifying replication metrics-related settings enabling replication metrics and events.
8392
9366
  :param replication_time: A container 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. Must be specified together with a ``Metrics`` block.
8393
- :param storage_class: The storage class to use when replicating objects, such as S3 Standard or reduced redundancy. By default, Amazon S3 uses the storage class of the source object to create the object replica. For valid values, see the ``StorageClass`` element of the `PUT Bucket replication <https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTreplication.html>`_ action in the *Amazon S3 API Reference* .
9367
+ :param storage_class: The storage class to use when replicating objects, such as S3 Standard or reduced redundancy. By default, Amazon S3 uses the storage class of the source object to create the object replica. For valid values, see the ``StorageClass`` element of the `PUT Bucket replication <https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTreplication.html>`_ action in the *Amazon S3 API Reference* . ``FSX_OPENZFS`` is not an accepted value when replicating objects.
8394
9368
 
8395
9369
  :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-replicationdestination.html
8396
9370
  :exampleMetadata: fixture=_generated
@@ -8533,6 +9507,8 @@ class CfnBucket(
8533
9507
 
8534
9508
  For valid values, see the ``StorageClass`` element of the `PUT Bucket replication <https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTreplication.html>`_ action in the *Amazon S3 API Reference* .
8535
9509
 
9510
+ ``FSX_OPENZFS`` is not an accepted value when replicating objects.
9511
+
8536
9512
  :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-replicationdestination.html#cfn-s3-bucket-replicationdestination-storageclass
8537
9513
  '''
8538
9514
  result = self._values.get("storage_class")
@@ -9146,7 +10122,7 @@ class CfnBucket(
9146
10122
  For example, 1. If request is for pages in the ``/docs`` folder, redirect to the ``/documents`` folder. 2. If request results in HTTP error 4xx, redirect request to another host where you might process the error.
9147
10123
 
9148
10124
  :param http_error_code_returned_equals: The HTTP error code when the redirect is applied. In the event of an error, if the error code equals this value, then the specified redirect is applied. Required when parent element ``Condition`` is specified and sibling ``KeyPrefixEquals`` is not specified. If both are specified, then both must be true for the redirect to be applied.
9149
- :param key_prefix_equals: The object key name prefix when the redirect is applied. For example, to redirect requests for ``ExamplePage.html`` , the key prefix will be ``ExamplePage.html`` . To redirect request for all pages with the prefix ``docs/`` , the key prefix will be ``/docs`` , which identifies all objects in the docs/ folder. Required when the parent element ``Condition`` is specified and sibling ``HttpErrorCodeReturnedEquals`` is not specified. If both conditions are specified, both must be true for the redirect to be applied.
10125
+ :param key_prefix_equals: The object key name prefix when the redirect is applied. For example, to redirect requests for ``ExamplePage.html`` , the key prefix will be ``ExamplePage.html`` . To redirect request for all pages with the prefix ``docs/`` , the key prefix will be ``docs/`` , which identifies all objects in the docs/ folder. Required when the parent element ``Condition`` is specified and sibling ``HttpErrorCodeReturnedEquals`` is not specified. If both conditions are specified, both must be true for the redirect to be applied.
9150
10126
 
9151
10127
  :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-routingrulecondition.html
9152
10128
  :exampleMetadata: fixture=_generated
@@ -9189,7 +10165,7 @@ class CfnBucket(
9189
10165
  def key_prefix_equals(self) -> typing.Optional[builtins.str]:
9190
10166
  '''The object key name prefix when the redirect is applied.
9191
10167
 
9192
- For example, to redirect requests for ``ExamplePage.html`` , the key prefix will be ``ExamplePage.html`` . To redirect request for all pages with the prefix ``docs/`` , the key prefix will be ``/docs`` , which identifies all objects in the docs/ folder.
10168
+ For example, to redirect requests for ``ExamplePage.html`` , the key prefix will be ``ExamplePage.html`` . To redirect request for all pages with the prefix ``docs/`` , the key prefix will be ``docs/`` , which identifies all objects in the docs/ folder.
9193
10169
 
9194
10170
  Required when the parent element ``Condition`` is specified and sibling ``HttpErrorCodeReturnedEquals`` is not specified. If both conditions are specified, both must be true for the redirect to be applied.
9195
10171
 
@@ -9769,7 +10745,7 @@ class CfnBucket(
9769
10745
  table_arn: typing.Optional[builtins.str] = None,
9770
10746
  table_namespace: typing.Optional[builtins.str] = None,
9771
10747
  ) -> None:
9772
- '''The destination information for the metadata table configuration.
10748
+ '''The destination information for a V1 S3 Metadata configuration.
9773
10749
 
9774
10750
  The destination table bucket must be in the same Region and AWS account as the general purpose bucket. The specified metadata table name must be unique within the ``aws_s3_metadata`` namespace in the destination table bucket.
9775
10751
 
@@ -10699,9 +11675,12 @@ class CfnBucket(
10699
11675
  '''Describes the versioning state of an Amazon S3 bucket.
10700
11676
 
10701
11677
  For more information, see `PUT Bucket versioning <https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTVersioningStatus.html>`_ in the *Amazon S3 API Reference* .
10702
- .. epigraph::
10703
11678
 
10704
- When you enable versioning on a bucket for the first time, it might take a short amount of time for the change to be fully propagated. We recommend that you wait for 15 minutes after enabling versioning before issuing write operations ( ``PUT`` or ``DELETE`` ) on objects in the bucket.
11679
+ Keep the following timing in mind when enabling, suspending, or transitioning between versioning states:
11680
+
11681
+ - *Enabling versioning* - Changes may take up to 15 minutes to propagate across all AWS regions for full consistency.
11682
+ - *Suspending versioning* - Takes effect immediately with no propagation delay.
11683
+ - *Transitioning between states* - Any change from Suspended to Enabled has a 15-minute delay.
10705
11684
 
10706
11685
  :param status: The versioning state of the bucket. Default: - "Suspended"
10707
11686
 
@@ -10881,7 +11860,7 @@ class CfnBucket(
10881
11860
  )
10882
11861
 
10883
11862
 
10884
- @jsii.implements(_IInspectable_c2943556)
11863
+ @jsii.implements(_IInspectable_c2943556, _IBucketPolicyRef_8ee2499d)
10885
11864
  class CfnBucketPolicy(
10886
11865
  _CfnResource_9df397a6,
10887
11866
  metaclass=jsii.JSIIMeta,
@@ -10896,7 +11875,7 @@ class CfnBucketPolicy(
10896
11875
 
10897
11876
  As a security precaution, the root user of the AWS account that owns a bucket can always use this operation, even if the policy explicitly denies the root user the ability to perform this action.
10898
11877
 
10899
- When using the ``AWS::S3::BucketPolicy`` resource, you can create, update, and delete bucket policies for S3 buckets located in regions different from the stack's region. This cross-region bucket policy modification functionality is supported for backward compatibility with existing workflows.
11878
+ When using the ``AWS::S3::BucketPolicy`` resource, you can create, update, and delete bucket policies for S3 buckets located in Regions that are different from the stack's Region. However, the CloudFormation stacks should be deployed in the US East (N. Virginia) or ``us-east-1`` Region. This cross-region bucket policy modification functionality is supported for backward compatibility with existing workflows.
10900
11879
  .. epigraph::
10901
11880
 
10902
11881
  If the `DeletionPolicy attribute <https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-deletionpolicy.html>`_ is not specified or set to ``Delete`` , the bucket policy will be removed when the stack is deleted. If set to ``Retain`` , the bucket policy will be preserved even after the stack is deleted.
@@ -10956,7 +11935,8 @@ class CfnBucketPolicy(
10956
11935
  bucket: builtins.str,
10957
11936
  policy_document: typing.Any,
10958
11937
  ) -> None:
10959
- '''
11938
+ '''Create a new ``AWS::S3::BucketPolicy``.
11939
+
10960
11940
  :param scope: Scope in which this resource is defined.
10961
11941
  :param id: Construct identifier for this resource (unique in its scope).
10962
11942
  :param bucket: The name of the Amazon S3 bucket to which the policy applies.
@@ -11000,6 +11980,12 @@ class CfnBucketPolicy(
11000
11980
  '''The CloudFormation resource type name for this resource class.'''
11001
11981
  return typing.cast(builtins.str, jsii.sget(cls, "CFN_RESOURCE_TYPE_NAME"))
11002
11982
 
11983
+ @builtins.property
11984
+ @jsii.member(jsii_name="bucketPolicyRef")
11985
+ def bucket_policy_ref(self) -> _BucketPolicyReference_3414f1e3:
11986
+ '''A reference to a BucketPolicy resource.'''
11987
+ return typing.cast(_BucketPolicyReference_3414f1e3, jsii.get(self, "bucketPolicyRef"))
11988
+
11003
11989
  @builtins.property
11004
11990
  @jsii.member(jsii_name="cfnProperties")
11005
11991
  def _cfn_properties(self) -> typing.Mapping[builtins.str, typing.Any]:
@@ -11137,6 +12123,7 @@ class CfnBucketPolicyProps:
11137
12123
  "inventory_configurations": "inventoryConfigurations",
11138
12124
  "lifecycle_configuration": "lifecycleConfiguration",
11139
12125
  "logging_configuration": "loggingConfiguration",
12126
+ "metadata_configuration": "metadataConfiguration",
11140
12127
  "metadata_table_configuration": "metadataTableConfiguration",
11141
12128
  "metrics_configurations": "metricsConfigurations",
11142
12129
  "notification_configuration": "notificationConfiguration",
@@ -11164,6 +12151,7 @@ class CfnBucketProps:
11164
12151
  inventory_configurations: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Sequence[typing.Union[_IResolvable_da3f097b, typing.Union[CfnBucket.InventoryConfigurationProperty, typing.Dict[builtins.str, typing.Any]]]]]] = None,
11165
12152
  lifecycle_configuration: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnBucket.LifecycleConfigurationProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
11166
12153
  logging_configuration: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnBucket.LoggingConfigurationProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
12154
+ metadata_configuration: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnBucket.MetadataConfigurationProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
11167
12155
  metadata_table_configuration: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnBucket.MetadataTableConfigurationProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
11168
12156
  metrics_configurations: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Sequence[typing.Union[_IResolvable_da3f097b, typing.Union[CfnBucket.MetricsConfigurationProperty, typing.Dict[builtins.str, typing.Any]]]]]] = None,
11169
12157
  notification_configuration: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnBucket.NotificationConfigurationProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
@@ -11185,13 +12173,14 @@ class CfnBucketProps:
11185
12173
  :param bucket_name: A name for the bucket. If you don't specify a name, AWS CloudFormation generates a unique ID and uses that ID for the bucket name. The bucket name must contain only lowercase letters, numbers, periods (.), and dashes (-) and must follow `Amazon S3 bucket restrictions and limitations <https://docs.aws.amazon.com/AmazonS3/latest/dev/BucketRestrictions.html>`_ . For more information, see `Rules for naming Amazon S3 buckets <https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucketnamingrules.html>`_ in the *Amazon S3 User Guide* . .. epigraph:: If you specify a name, you can't perform updates that require replacement of this resource. You can perform updates that require no or some interruption. If you need to replace the resource, specify a new name.
11186
12174
  :param cors_configuration: Describes the cross-origin access configuration for objects in an Amazon S3 bucket. For more information, see `Enabling Cross-Origin Resource Sharing <https://docs.aws.amazon.com/AmazonS3/latest/dev/cors.html>`_ in the *Amazon S3 User Guide* .
11187
12175
  :param intelligent_tiering_configurations: Defines how Amazon S3 handles Intelligent-Tiering storage.
11188
- :param inventory_configurations: Specifies the inventory configuration for an Amazon S3 bucket. For more information, see `GET Bucket inventory <https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketGETInventoryConfig.html>`_ in the *Amazon S3 API Reference* .
12176
+ :param inventory_configurations: Specifies the S3 Inventory configuration for an Amazon S3 bucket. For more information, see `GET Bucket inventory <https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketGETInventoryConfig.html>`_ in the *Amazon S3 API Reference* .
11189
12177
  :param lifecycle_configuration: Specifies the lifecycle configuration for objects in an Amazon S3 bucket. For more information, see `Object Lifecycle Management <https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lifecycle-mgmt.html>`_ in the *Amazon S3 User Guide* .
11190
12178
  :param logging_configuration: Settings that define where logs are stored.
12179
+ :param metadata_configuration: The S3 Metadata configuration for a general purpose bucket.
11191
12180
  :param metadata_table_configuration: The metadata table configuration of an Amazon S3 general purpose bucket.
11192
12181
  :param metrics_configurations: Specifies a metrics configuration for the CloudWatch request metrics (specified by the metrics configuration ID) from an Amazon S3 bucket. If you're updating an existing metrics configuration, note that this is a full replacement of the existing metrics configuration. If you don't include the elements you want to keep, they are erased. For more information, see `PutBucketMetricsConfiguration <https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTMetricConfiguration.html>`_ .
11193
12182
  :param notification_configuration: Configuration that defines how Amazon S3 handles bucket notifications.
11194
- :param object_lock_configuration: .. epigraph:: This operation is not supported for directory buckets. Places an Object Lock configuration on the specified bucket. The rule specified in the Object Lock configuration will be applied by default to every new object placed in the specified bucket. For more information, see `Locking Objects <https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock.html>`_ . .. epigraph:: - The ``DefaultRetention`` settings require both a mode and a period. - The ``DefaultRetention`` period can be either ``Days`` or ``Years`` but you must select one. You cannot specify ``Days`` and ``Years`` at the same time. - You can enable Object Lock for new or existing buckets. For more information, see `Configuring Object Lock <https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lock-configure.html>`_ .
12183
+ :param object_lock_configuration: .. epigraph:: This operation is not supported for directory buckets. Places an Object Lock configuration on the specified bucket. The rule specified in the Object Lock configuration will be applied by default to every new object placed in the specified bucket. For more information, see `Locking Objects <https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock.html>`_ . .. epigraph:: - The ``DefaultRetention`` settings require both a mode and a period. - The ``DefaultRetention`` period can be either ``Days`` or ``Years`` but you must select one. You cannot specify ``Days`` and ``Years`` at the same time. - You can enable Object Lock for new or existing buckets. For more information, see `Configuring Object Lock <https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lock-configure.html>`_ . > You must URL encode any signed header values that contain spaces. For example, if your header value is ``my file.txt`` , containing two spaces after ``my`` , you must URL encode this value to ``my%20%20file.txt`` .
11195
12184
  :param object_lock_enabled: Indicates whether this bucket has an Object Lock configuration enabled. Enable ``ObjectLockEnabled`` when you apply ``ObjectLockConfiguration`` to a bucket.
11196
12185
  :param ownership_controls: Configuration that defines how Amazon S3 handles Object Ownership rules.
11197
12186
  :param public_access_block_configuration: Configuration that defines how Amazon S3 handles public access.
@@ -11227,6 +12216,7 @@ class CfnBucketProps:
11227
12216
  check_type(argname="argument inventory_configurations", value=inventory_configurations, expected_type=type_hints["inventory_configurations"])
11228
12217
  check_type(argname="argument lifecycle_configuration", value=lifecycle_configuration, expected_type=type_hints["lifecycle_configuration"])
11229
12218
  check_type(argname="argument logging_configuration", value=logging_configuration, expected_type=type_hints["logging_configuration"])
12219
+ check_type(argname="argument metadata_configuration", value=metadata_configuration, expected_type=type_hints["metadata_configuration"])
11230
12220
  check_type(argname="argument metadata_table_configuration", value=metadata_table_configuration, expected_type=type_hints["metadata_table_configuration"])
11231
12221
  check_type(argname="argument metrics_configurations", value=metrics_configurations, expected_type=type_hints["metrics_configurations"])
11232
12222
  check_type(argname="argument notification_configuration", value=notification_configuration, expected_type=type_hints["notification_configuration"])
@@ -11259,6 +12249,8 @@ class CfnBucketProps:
11259
12249
  self._values["lifecycle_configuration"] = lifecycle_configuration
11260
12250
  if logging_configuration is not None:
11261
12251
  self._values["logging_configuration"] = logging_configuration
12252
+ if metadata_configuration is not None:
12253
+ self._values["metadata_configuration"] = metadata_configuration
11262
12254
  if metadata_table_configuration is not None:
11263
12255
  self._values["metadata_table_configuration"] = metadata_table_configuration
11264
12256
  if metrics_configurations is not None:
@@ -11380,7 +12372,7 @@ class CfnBucketProps:
11380
12372
  def inventory_configurations(
11381
12373
  self,
11382
12374
  ) -> typing.Optional[typing.Union[_IResolvable_da3f097b, typing.List[typing.Union[_IResolvable_da3f097b, CfnBucket.InventoryConfigurationProperty]]]]:
11383
- '''Specifies the inventory configuration for an Amazon S3 bucket.
12375
+ '''Specifies the S3 Inventory configuration for an Amazon S3 bucket.
11384
12376
 
11385
12377
  For more information, see `GET Bucket inventory <https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketGETInventoryConfig.html>`_ in the *Amazon S3 API Reference* .
11386
12378
 
@@ -11413,6 +12405,17 @@ class CfnBucketProps:
11413
12405
  result = self._values.get("logging_configuration")
11414
12406
  return typing.cast(typing.Optional[typing.Union[_IResolvable_da3f097b, CfnBucket.LoggingConfigurationProperty]], result)
11415
12407
 
12408
+ @builtins.property
12409
+ def metadata_configuration(
12410
+ self,
12411
+ ) -> typing.Optional[typing.Union[_IResolvable_da3f097b, CfnBucket.MetadataConfigurationProperty]]:
12412
+ '''The S3 Metadata configuration for a general purpose bucket.
12413
+
12414
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-s3-bucket.html#cfn-s3-bucket-metadataconfiguration
12415
+ '''
12416
+ result = self._values.get("metadata_configuration")
12417
+ return typing.cast(typing.Optional[typing.Union[_IResolvable_da3f097b, CfnBucket.MetadataConfigurationProperty]], result)
12418
+
11416
12419
  @builtins.property
11417
12420
  def metadata_table_configuration(
11418
12421
  self,
@@ -11461,7 +12464,7 @@ class CfnBucketProps:
11461
12464
 
11462
12465
  - The ``DefaultRetention`` settings require both a mode and a period.
11463
12466
  - The ``DefaultRetention`` period can be either ``Days`` or ``Years`` but you must select one. You cannot specify ``Days`` and ``Years`` at the same time.
11464
- - You can enable Object Lock for new or existing buckets. For more information, see `Configuring Object Lock <https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lock-configure.html>`_ .
12467
+ - You can enable Object Lock for new or existing buckets. For more information, see `Configuring Object Lock <https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lock-configure.html>`_ . > You must URL encode any signed header values that contain spaces. For example, if your header value is ``my file.txt`` , containing two spaces after ``my`` , you must URL encode this value to ``my%20%20file.txt`` .
11465
12468
 
11466
12469
  :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-s3-bucket.html#cfn-s3-bucket-objectlockconfiguration
11467
12470
  '''
@@ -11568,7 +12571,7 @@ class CfnBucketProps:
11568
12571
  )
11569
12572
 
11570
12573
 
11571
- @jsii.implements(_IInspectable_c2943556)
12574
+ @jsii.implements(_IInspectable_c2943556, _IMultiRegionAccessPointRef_b814832f)
11572
12575
  class CfnMultiRegionAccessPoint(
11573
12576
  _CfnResource_9df397a6,
11574
12577
  metaclass=jsii.JSIIMeta,
@@ -11616,7 +12619,8 @@ class CfnMultiRegionAccessPoint(
11616
12619
  name: typing.Optional[builtins.str] = None,
11617
12620
  public_access_block_configuration: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union["CfnMultiRegionAccessPoint.PublicAccessBlockConfigurationProperty", typing.Dict[builtins.str, typing.Any]]]] = None,
11618
12621
  ) -> None:
11619
- '''
12622
+ '''Create a new ``AWS::S3::MultiRegionAccessPoint``.
12623
+
11620
12624
  :param scope: Scope in which this resource is defined.
11621
12625
  :param id: Construct identifier for this resource (unique in its scope).
11622
12626
  :param regions: A collection of the Regions and buckets associated with the Multi-Region Access Point.
@@ -11690,6 +12694,14 @@ class CfnMultiRegionAccessPoint(
11690
12694
  def _cfn_properties(self) -> typing.Mapping[builtins.str, typing.Any]:
11691
12695
  return typing.cast(typing.Mapping[builtins.str, typing.Any], jsii.get(self, "cfnProperties"))
11692
12696
 
12697
+ @builtins.property
12698
+ @jsii.member(jsii_name="multiRegionAccessPointRef")
12699
+ def multi_region_access_point_ref(
12700
+ self,
12701
+ ) -> _MultiRegionAccessPointReference_590848b5:
12702
+ '''A reference to a MultiRegionAccessPoint resource.'''
12703
+ return typing.cast(_MultiRegionAccessPointReference_590848b5, jsii.get(self, "multiRegionAccessPointRef"))
12704
+
11693
12705
  @builtins.property
11694
12706
  @jsii.member(jsii_name="regions")
11695
12707
  def regions(
@@ -11948,7 +12960,7 @@ class CfnMultiRegionAccessPoint(
11948
12960
  )
11949
12961
 
11950
12962
 
11951
- @jsii.implements(_IInspectable_c2943556)
12963
+ @jsii.implements(_IInspectable_c2943556, _IMultiRegionAccessPointPolicyRef_2e4f5aa6)
11952
12964
  class CfnMultiRegionAccessPointPolicy(
11953
12965
  _CfnResource_9df397a6,
11954
12966
  metaclass=jsii.JSIIMeta,
@@ -11984,7 +12996,8 @@ class CfnMultiRegionAccessPointPolicy(
11984
12996
  mrap_name: builtins.str,
11985
12997
  policy: typing.Any,
11986
12998
  ) -> None:
11987
- '''
12999
+ '''Create a new ``AWS::S3::MultiRegionAccessPointPolicy``.
13000
+
11988
13001
  :param scope: Scope in which this resource is defined.
11989
13002
  :param id: Construct identifier for this resource (unique in its scope).
11990
13003
  :param mrap_name: The name of the Multi-Region Access Point.
@@ -12053,6 +13066,14 @@ class CfnMultiRegionAccessPointPolicy(
12053
13066
  def _cfn_properties(self) -> typing.Mapping[builtins.str, typing.Any]:
12054
13067
  return typing.cast(typing.Mapping[builtins.str, typing.Any], jsii.get(self, "cfnProperties"))
12055
13068
 
13069
+ @builtins.property
13070
+ @jsii.member(jsii_name="multiRegionAccessPointPolicyRef")
13071
+ def multi_region_access_point_policy_ref(
13072
+ self,
13073
+ ) -> _MultiRegionAccessPointPolicyReference_f5654e86:
13074
+ '''A reference to a MultiRegionAccessPointPolicy resource.'''
13075
+ return typing.cast(_MultiRegionAccessPointPolicyReference_f5654e86, jsii.get(self, "multiRegionAccessPointPolicyRef"))
13076
+
12056
13077
  @builtins.property
12057
13078
  @jsii.member(jsii_name="mrapName")
12058
13079
  def mrap_name(self) -> builtins.str:
@@ -12312,7 +13333,7 @@ class CfnMultiRegionAccessPointProps:
12312
13333
  )
12313
13334
 
12314
13335
 
12315
- @jsii.implements(_IInspectable_c2943556, _ITaggable_36806126)
13336
+ @jsii.implements(_IInspectable_c2943556, _IStorageLensRef_a99bd868, _ITaggable_36806126)
12316
13337
  class CfnStorageLens(
12317
13338
  _CfnResource_9df397a6,
12318
13339
  metaclass=jsii.JSIIMeta,
@@ -12434,7 +13455,8 @@ class CfnStorageLens(
12434
13455
  storage_lens_configuration: typing.Union[_IResolvable_da3f097b, typing.Union["CfnStorageLens.StorageLensConfigurationProperty", typing.Dict[builtins.str, typing.Any]]],
12435
13456
  tags: typing.Optional[typing.Sequence[typing.Union[_CfnTag_f6864754, typing.Dict[builtins.str, typing.Any]]]] = None,
12436
13457
  ) -> None:
12437
- '''
13458
+ '''Create a new ``AWS::S3::StorageLens``.
13459
+
12438
13460
  :param scope: Scope in which this resource is defined.
12439
13461
  :param id: Construct identifier for this resource (unique in its scope).
12440
13462
  :param storage_lens_configuration: This resource contains the details Amazon S3 Storage Lens configuration.
@@ -12496,6 +13518,12 @@ class CfnStorageLens(
12496
13518
  def _cfn_properties(self) -> typing.Mapping[builtins.str, typing.Any]:
12497
13519
  return typing.cast(typing.Mapping[builtins.str, typing.Any], jsii.get(self, "cfnProperties"))
12498
13520
 
13521
+ @builtins.property
13522
+ @jsii.member(jsii_name="storageLensRef")
13523
+ def storage_lens_ref(self) -> _StorageLensReference_cc81afb5:
13524
+ '''A reference to a StorageLens resource.'''
13525
+ return typing.cast(_StorageLensReference_cc81afb5, jsii.get(self, "storageLensRef"))
13526
+
12499
13527
  @builtins.property
12500
13528
  @jsii.member(jsii_name="tags")
12501
13529
  def tags(self) -> _TagManager_0a598cb3:
@@ -14303,7 +15331,7 @@ class CfnStorageLens(
14303
15331
  )
14304
15332
 
14305
15333
 
14306
- @jsii.implements(_IInspectable_c2943556, _ITaggableV2_4e6798f8)
15334
+ @jsii.implements(_IInspectable_c2943556, _IStorageLensGroupRef_aa787427, _ITaggableV2_4e6798f8)
14307
15335
  class CfnStorageLensGroup(
14308
15336
  _CfnResource_9df397a6,
14309
15337
  metaclass=jsii.JSIIMeta,
@@ -14391,7 +15419,8 @@ class CfnStorageLensGroup(
14391
15419
  name: builtins.str,
14392
15420
  tags: typing.Optional[typing.Sequence[typing.Union[_CfnTag_f6864754, typing.Dict[builtins.str, typing.Any]]]] = None,
14393
15421
  ) -> None:
14394
- '''
15422
+ '''Create a new ``AWS::S3::StorageLensGroup``.
15423
+
14395
15424
  :param scope: Scope in which this resource is defined.
14396
15425
  :param id: Construct identifier for this resource (unique in its scope).
14397
15426
  :param filter: This property contains the criteria for the Storage Lens group data that is displayed.
@@ -14456,6 +15485,12 @@ class CfnStorageLensGroup(
14456
15485
  def _cfn_properties(self) -> typing.Mapping[builtins.str, typing.Any]:
14457
15486
  return typing.cast(typing.Mapping[builtins.str, typing.Any], jsii.get(self, "cfnProperties"))
14458
15487
 
15488
+ @builtins.property
15489
+ @jsii.member(jsii_name="storageLensGroupRef")
15490
+ def storage_lens_group_ref(self) -> _StorageLensGroupReference_c117a5a4:
15491
+ '''A reference to a StorageLensGroup resource.'''
15492
+ return typing.cast(_StorageLensGroupReference_c117a5a4, jsii.get(self, "storageLensGroupRef"))
15493
+
14459
15494
  @builtins.property
14460
15495
  @jsii.member(jsii_name="filter")
14461
15496
  def filter(
@@ -15717,71 +16752,281 @@ class EventType(enum.Enum):
15717
16752
  OBJECT_RESTORE_DELETE = "OBJECT_RESTORE_DELETE"
15718
16753
  '''Using restore object event types you can receive notifications for initiation and completion when restoring objects from the S3 Glacier storage class.
15719
16754
 
15720
- You use s3:ObjectRestore:Delete to request notification of
15721
- restoration completion.
15722
- '''
15723
- REDUCED_REDUNDANCY_LOST_OBJECT = "REDUCED_REDUNDANCY_LOST_OBJECT"
15724
- '''You can use this event type to request Amazon S3 to send a notification message when Amazon S3 detects that an object of the RRS storage class is lost.'''
15725
- REPLICATION_OPERATION_FAILED_REPLICATION = "REPLICATION_OPERATION_FAILED_REPLICATION"
15726
- '''You receive this notification event when an object that was eligible for replication using Amazon S3 Replication Time Control failed to replicate.'''
15727
- REPLICATION_OPERATION_MISSED_THRESHOLD = "REPLICATION_OPERATION_MISSED_THRESHOLD"
15728
- '''You receive this notification event when an object that was eligible for replication using Amazon S3 Replication Time Control exceeded the 15-minute threshold for replication.'''
15729
- REPLICATION_OPERATION_REPLICATED_AFTER_THRESHOLD = "REPLICATION_OPERATION_REPLICATED_AFTER_THRESHOLD"
15730
- '''You receive this notification event for an object that was eligible for replication using the Amazon S3 Replication Time Control feature replicated after the 15-minute threshold.'''
15731
- REPLICATION_OPERATION_NOT_TRACKED = "REPLICATION_OPERATION_NOT_TRACKED"
15732
- '''You receive this notification event for an object that was eligible for replication using Amazon S3 Replication Time Control but is no longer tracked by replication metrics.'''
15733
- LIFECYCLE_EXPIRATION = "LIFECYCLE_EXPIRATION"
15734
- '''By using the LifecycleExpiration event types, you can receive a notification when Amazon S3 deletes an object based on your S3 Lifecycle configuration.'''
15735
- LIFECYCLE_EXPIRATION_DELETE = "LIFECYCLE_EXPIRATION_DELETE"
15736
- '''The s3:LifecycleExpiration:Delete event type notifies you when an object in an unversioned bucket is deleted.
16755
+ You use s3:ObjectRestore:Delete to request notification of
16756
+ restoration completion.
16757
+ '''
16758
+ REDUCED_REDUNDANCY_LOST_OBJECT = "REDUCED_REDUNDANCY_LOST_OBJECT"
16759
+ '''You can use this event type to request Amazon S3 to send a notification message when Amazon S3 detects that an object of the RRS storage class is lost.'''
16760
+ REPLICATION_OPERATION_FAILED_REPLICATION = "REPLICATION_OPERATION_FAILED_REPLICATION"
16761
+ '''You receive this notification event when an object that was eligible for replication using Amazon S3 Replication Time Control failed to replicate.'''
16762
+ REPLICATION_OPERATION_MISSED_THRESHOLD = "REPLICATION_OPERATION_MISSED_THRESHOLD"
16763
+ '''You receive this notification event when an object that was eligible for replication using Amazon S3 Replication Time Control exceeded the 15-minute threshold for replication.'''
16764
+ REPLICATION_OPERATION_REPLICATED_AFTER_THRESHOLD = "REPLICATION_OPERATION_REPLICATED_AFTER_THRESHOLD"
16765
+ '''You receive this notification event for an object that was eligible for replication using the Amazon S3 Replication Time Control feature replicated after the 15-minute threshold.'''
16766
+ REPLICATION_OPERATION_NOT_TRACKED = "REPLICATION_OPERATION_NOT_TRACKED"
16767
+ '''You receive this notification event for an object that was eligible for replication using Amazon S3 Replication Time Control but is no longer tracked by replication metrics.'''
16768
+ LIFECYCLE_EXPIRATION = "LIFECYCLE_EXPIRATION"
16769
+ '''By using the LifecycleExpiration event types, you can receive a notification when Amazon S3 deletes an object based on your S3 Lifecycle configuration.'''
16770
+ LIFECYCLE_EXPIRATION_DELETE = "LIFECYCLE_EXPIRATION_DELETE"
16771
+ '''The s3:LifecycleExpiration:Delete event type notifies you when an object in an unversioned bucket is deleted.
16772
+
16773
+ It also notifies you when an object version is permanently deleted by an
16774
+ S3 Lifecycle configuration.
16775
+ '''
16776
+ LIFECYCLE_EXPIRATION_DELETE_MARKER_CREATED = "LIFECYCLE_EXPIRATION_DELETE_MARKER_CREATED"
16777
+ '''The s3:LifecycleExpiration:DeleteMarkerCreated event type notifies you when S3 Lifecycle creates a delete marker when a current version of an object in versioned bucket is deleted.'''
16778
+ LIFECYCLE_TRANSITION = "LIFECYCLE_TRANSITION"
16779
+ '''You receive this notification event when an object is transitioned to another Amazon S3 storage class by an S3 Lifecycle configuration.'''
16780
+ INTELLIGENT_TIERING = "INTELLIGENT_TIERING"
16781
+ '''You receive this notification event when an object within the S3 Intelligent-Tiering storage class moved to the Archive Access tier or Deep Archive Access tier.'''
16782
+ OBJECT_TAGGING = "OBJECT_TAGGING"
16783
+ '''By using the ObjectTagging event types, you can enable notification when an object tag is added or deleted from an object.'''
16784
+ OBJECT_TAGGING_PUT = "OBJECT_TAGGING_PUT"
16785
+ '''The s3:ObjectTagging:Put event type notifies you when a tag is PUT on an object or an existing tag is updated.'''
16786
+ OBJECT_TAGGING_DELETE = "OBJECT_TAGGING_DELETE"
16787
+ '''The s3:ObjectTagging:Delete event type notifies you when a tag is removed from an object.'''
16788
+ OBJECT_ACL_PUT = "OBJECT_ACL_PUT"
16789
+ '''You receive this notification event when an ACL is PUT on an object or when an existing ACL is changed.
16790
+
16791
+ An event is not generated when a request results in no change to an
16792
+ object’s ACL.
16793
+ '''
16794
+ OBJECT_RESTORE = "OBJECT_RESTORE"
16795
+ '''Using restore object event types you can receive notifications for initiation and completion when restoring objects from the S3 Glacier storage class.
16796
+
16797
+ You use s3:ObjectRestore:* to request notification of
16798
+ any restoration event.
16799
+ '''
16800
+ REPLICATION = "REPLICATION"
16801
+ '''You receive this notification event for any object replication event.'''
16802
+
16803
+
16804
+ @jsii.data_type(
16805
+ jsii_type="aws-cdk-lib.aws_s3.Filter",
16806
+ jsii_struct_bases=[],
16807
+ name_mapping={"prefix": "prefix", "tags": "tags"},
16808
+ )
16809
+ class Filter:
16810
+ def __init__(
16811
+ self,
16812
+ *,
16813
+ prefix: typing.Optional[builtins.str] = None,
16814
+ tags: typing.Optional[typing.Sequence[typing.Union["Tag", typing.Dict[builtins.str, typing.Any]]]] = None,
16815
+ ) -> None:
16816
+ '''A filter that identifies the subset of objects to which the replication rule applies.
16817
+
16818
+ :param prefix: An object key name prefix that identifies the object or objects to which the rule applies. Default: - applies to all objects
16819
+ :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
16820
+
16821
+ :exampleMetadata: infused
16822
+
16823
+ Example::
16824
+
16825
+ # destination_bucket1: s3.IBucket
16826
+ # destination_bucket2: s3.IBucket
16827
+ # replication_role: iam.IRole
16828
+ # encryption_key: kms.IKey
16829
+ # destination_encryption_key: kms.IKey
16830
+
16831
+
16832
+ source_bucket = s3.Bucket(self, "SourceBucket",
16833
+ # Versioning must be enabled on both the source and destination bucket
16834
+ versioned=True,
16835
+ # Optional. Specify the KMS key to use for encrypts objects in the source bucket.
16836
+ encryption_key=encryption_key,
16837
+ # Optional. If not specified, a new role will be created.
16838
+ replication_role=replication_role,
16839
+ replication_rules=[s3.ReplicationRule(
16840
+ # The destination bucket for the replication rule.
16841
+ destination=destination_bucket1,
16842
+ # The priority of the rule.
16843
+ # Amazon S3 will attempt to replicate objects according to all replication rules.
16844
+ # 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.
16845
+ # The higher the number, the higher the priority.
16846
+ # It is essential to specify priority explicitly when the replication configuration has multiple rules.
16847
+ priority=1
16848
+ ), s3.ReplicationRule(
16849
+ destination=destination_bucket2,
16850
+ priority=2,
16851
+ # Whether to specify S3 Replication Time Control (S3 RTC).
16852
+ # S3 RTC replicates most objects that you upload to Amazon S3 in seconds,
16853
+ # and 99.99 percent of those objects within specified time.
16854
+ replication_time_control=s3.ReplicationTimeValue.FIFTEEN_MINUTES,
16855
+ # Whether to enable replication metrics about S3 RTC.
16856
+ # If set, metrics will be output to indicate whether replication by S3 RTC took longer than the configured time.
16857
+ metrics=s3.ReplicationTimeValue.FIFTEEN_MINUTES,
16858
+ # The kms key to use for the destination bucket.
16859
+ kms_key=destination_encryption_key,
16860
+ # The storage class to use for the destination bucket.
16861
+ storage_class=s3.StorageClass.INFREQUENT_ACCESS,
16862
+ # Whether to replicate objects with SSE-KMS encryption.
16863
+ sse_kms_encrypted_objects=False,
16864
+ # Whether to replicate modifications on replicas.
16865
+ replica_modifications=True,
16866
+ # Whether to replicate delete markers.
16867
+ # This property cannot be enabled if the replication rule has a tag filter.
16868
+ delete_marker_replication=False,
16869
+ # The ID of the rule.
16870
+ id="full-settings-rule",
16871
+ # The object filter for the rule.
16872
+ filter=s3.Filter(
16873
+ # The prefix filter for the rule.
16874
+ prefix="prefix",
16875
+ # The tag filter for the rule.
16876
+ tags=[s3.Tag(
16877
+ key="tagKey",
16878
+ value="tagValue"
16879
+ )
16880
+ ]
16881
+ )
16882
+ )
16883
+ ]
16884
+ )
16885
+
16886
+ # Grant permissions to the replication role.
16887
+ # This method is not required if you choose to use an auto-generated replication role or manually grant permissions.
16888
+ source_bucket.grant_replication_permission(replication_role,
16889
+ # Optional. Specify the KMS key to use for decrypting objects in the source bucket.
16890
+ source_decryption_key=encryption_key,
16891
+ destinations=[s3.GrantReplicationPermissionDestinationProps(bucket=destination_bucket1), s3.GrantReplicationPermissionDestinationProps(bucket=destination_bucket2, encryption_key=destination_encryption_key)
16892
+ ]
16893
+ )
16894
+ '''
16895
+ if __debug__:
16896
+ type_hints = typing.get_type_hints(_typecheckingstub__ff4b8a813f6812ab1464fced92fa61b97e151767705973ce994c0970fde139df)
16897
+ check_type(argname="argument prefix", value=prefix, expected_type=type_hints["prefix"])
16898
+ check_type(argname="argument tags", value=tags, expected_type=type_hints["tags"])
16899
+ self._values: typing.Dict[builtins.str, typing.Any] = {}
16900
+ if prefix is not None:
16901
+ self._values["prefix"] = prefix
16902
+ if tags is not None:
16903
+ self._values["tags"] = tags
16904
+
16905
+ @builtins.property
16906
+ def prefix(self) -> typing.Optional[builtins.str]:
16907
+ '''An object key name prefix that identifies the object or objects to which the rule applies.
16908
+
16909
+ :default: - applies to all objects
16910
+ '''
16911
+ result = self._values.get("prefix")
16912
+ return typing.cast(typing.Optional[builtins.str], result)
16913
+
16914
+ @builtins.property
16915
+ def tags(self) -> typing.Optional[typing.List["Tag"]]:
16916
+ '''The tag array used for tag filters.
16917
+
16918
+ The rule applies only to objects that have the tag in this set.
16919
+
16920
+ :default: - applies to all objects
16921
+ '''
16922
+ result = self._values.get("tags")
16923
+ return typing.cast(typing.Optional[typing.List["Tag"]], result)
16924
+
16925
+ def __eq__(self, rhs: typing.Any) -> builtins.bool:
16926
+ return isinstance(rhs, self.__class__) and rhs._values == self._values
16927
+
16928
+ def __ne__(self, rhs: typing.Any) -> builtins.bool:
16929
+ return not (rhs == self)
16930
+
16931
+ def __repr__(self) -> str:
16932
+ return "Filter(%s)" % ", ".join(
16933
+ k + "=" + repr(v) for k, v in self._values.items()
16934
+ )
16935
+
16936
+
16937
+ @jsii.data_type(
16938
+ jsii_type="aws-cdk-lib.aws_s3.GrantReplicationPermissionDestinationProps",
16939
+ jsii_struct_bases=[],
16940
+ name_mapping={"bucket": "bucket", "encryption_key": "encryptionKey"},
16941
+ )
16942
+ class GrantReplicationPermissionDestinationProps:
16943
+ def __init__(
16944
+ self,
16945
+ *,
16946
+ bucket: "IBucket",
16947
+ encryption_key: typing.Optional[_IKey_5f11635f] = None,
16948
+ ) -> None:
16949
+ '''The properties for the destination bucket for granting replication permission.
16950
+
16951
+ :param bucket: The destination bucket.
16952
+ :param encryption_key: The KMS key to use for encryption if a destination bucket needs to be encrypted with a customer-managed KMS key. Default: - no KMS key is used for replication.
16953
+
16954
+ :exampleMetadata: fixture=_generated
16955
+
16956
+ Example::
16957
+
16958
+ # The code below shows an example of how to instantiate this type.
16959
+ # The values are placeholders you should change.
16960
+ from aws_cdk import aws_kms as kms
16961
+ from aws_cdk import aws_s3 as s3
16962
+
16963
+ # bucket: s3.Bucket
16964
+ # key: kms.Key
16965
+
16966
+ grant_replication_permission_destination_props = s3.GrantReplicationPermissionDestinationProps(
16967
+ bucket=bucket,
16968
+
16969
+ # the properties below are optional
16970
+ encryption_key=key
16971
+ )
16972
+ '''
16973
+ if __debug__:
16974
+ type_hints = typing.get_type_hints(_typecheckingstub__c28989eb119121ac7809e78ba2038558e14755021078bf7d97f894b34bc3311a)
16975
+ check_type(argname="argument bucket", value=bucket, expected_type=type_hints["bucket"])
16976
+ check_type(argname="argument encryption_key", value=encryption_key, expected_type=type_hints["encryption_key"])
16977
+ self._values: typing.Dict[builtins.str, typing.Any] = {
16978
+ "bucket": bucket,
16979
+ }
16980
+ if encryption_key is not None:
16981
+ self._values["encryption_key"] = encryption_key
16982
+
16983
+ @builtins.property
16984
+ def bucket(self) -> "IBucket":
16985
+ '''The destination bucket.'''
16986
+ result = self._values.get("bucket")
16987
+ assert result is not None, "Required property 'bucket' is missing"
16988
+ return typing.cast("IBucket", result)
16989
+
16990
+ @builtins.property
16991
+ def encryption_key(self) -> typing.Optional[_IKey_5f11635f]:
16992
+ '''The KMS key to use for encryption if a destination bucket needs to be encrypted with a customer-managed KMS key.
16993
+
16994
+ :default: - no KMS key is used for replication.
16995
+ '''
16996
+ result = self._values.get("encryption_key")
16997
+ return typing.cast(typing.Optional[_IKey_5f11635f], result)
15737
16998
 
15738
- It also notifies you when an object version is permanently deleted by an
15739
- S3 Lifecycle configuration.
15740
- '''
15741
- LIFECYCLE_EXPIRATION_DELETE_MARKER_CREATED = "LIFECYCLE_EXPIRATION_DELETE_MARKER_CREATED"
15742
- '''The s3:LifecycleExpiration:DeleteMarkerCreated event type notifies you when S3 Lifecycle creates a delete marker when a current version of an object in versioned bucket is deleted.'''
15743
- LIFECYCLE_TRANSITION = "LIFECYCLE_TRANSITION"
15744
- '''You receive this notification event when an object is transitioned to another Amazon S3 storage class by an S3 Lifecycle configuration.'''
15745
- INTELLIGENT_TIERING = "INTELLIGENT_TIERING"
15746
- '''You receive this notification event when an object within the S3 Intelligent-Tiering storage class moved to the Archive Access tier or Deep Archive Access tier.'''
15747
- OBJECT_TAGGING = "OBJECT_TAGGING"
15748
- '''By using the ObjectTagging event types, you can enable notification when an object tag is added or deleted from an object.'''
15749
- OBJECT_TAGGING_PUT = "OBJECT_TAGGING_PUT"
15750
- '''The s3:ObjectTagging:Put event type notifies you when a tag is PUT on an object or an existing tag is updated.'''
15751
- OBJECT_TAGGING_DELETE = "OBJECT_TAGGING_DELETE"
15752
- '''The s3:ObjectTagging:Delete event type notifies you when a tag is removed from an object.'''
15753
- OBJECT_ACL_PUT = "OBJECT_ACL_PUT"
15754
- '''You receive this notification event when an ACL is PUT on an object or when an existing ACL is changed.
16999
+ def __eq__(self, rhs: typing.Any) -> builtins.bool:
17000
+ return isinstance(rhs, self.__class__) and rhs._values == self._values
15755
17001
 
15756
- An event is not generated when a request results in no change to an
15757
- object’s ACL.
15758
- '''
15759
- OBJECT_RESTORE = "OBJECT_RESTORE"
15760
- '''Using restore object event types you can receive notifications for initiation and completion when restoring objects from the S3 Glacier storage class.
17002
+ def __ne__(self, rhs: typing.Any) -> builtins.bool:
17003
+ return not (rhs == self)
15761
17004
 
15762
- You use s3:ObjectRestore:* to request notification of
15763
- any restoration event.
15764
- '''
15765
- REPLICATION = "REPLICATION"
15766
- '''You receive this notification event for any object replication event.'''
17005
+ def __repr__(self) -> str:
17006
+ return "GrantReplicationPermissionDestinationProps(%s)" % ", ".join(
17007
+ k + "=" + repr(v) for k, v in self._values.items()
17008
+ )
15767
17009
 
15768
17010
 
15769
17011
  @jsii.data_type(
15770
- jsii_type="aws-cdk-lib.aws_s3.Filter",
17012
+ jsii_type="aws-cdk-lib.aws_s3.GrantReplicationPermissionProps",
15771
17013
  jsii_struct_bases=[],
15772
- name_mapping={"prefix": "prefix", "tags": "tags"},
17014
+ name_mapping={
17015
+ "destinations": "destinations",
17016
+ "source_decryption_key": "sourceDecryptionKey",
17017
+ },
15773
17018
  )
15774
- class Filter:
17019
+ class GrantReplicationPermissionProps:
15775
17020
  def __init__(
15776
17021
  self,
15777
17022
  *,
15778
- prefix: typing.Optional[builtins.str] = None,
15779
- tags: typing.Optional[typing.Sequence[typing.Union["Tag", typing.Dict[builtins.str, typing.Any]]]] = None,
17023
+ destinations: typing.Sequence[typing.Union[GrantReplicationPermissionDestinationProps, typing.Dict[builtins.str, typing.Any]]],
17024
+ source_decryption_key: typing.Optional[_IKey_5f11635f] = None,
15780
17025
  ) -> None:
15781
- '''A filter that identifies the subset of objects to which the replication rule applies.
17026
+ '''The properties for the destination bucket for granting replication permission.
15782
17027
 
15783
- :param prefix: An object key name prefix that identifies the object or objects to which the rule applies. Default: - applies to all objects
15784
- :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
17028
+ :param destinations: The destination buckets for replication. Specify the KMS key to use for encryption if a destination bucket needs to be encrypted with a customer-managed KMS key. One or more destination buckets are required if replication configuration is enabled (i.e., ``replicationRole`` is specified). Default: - empty array (valid only if the ``replicationRole`` property is NOT specified)
17029
+ :param source_decryption_key: The KMS key used to decrypt objects in the source bucket for replication. **Required if** the source bucket is encrypted with a customer-managed KMS key. Default: - it's assumed the source bucket is not encrypted with a customer-managed KMS key.
15785
17030
 
15786
17031
  :exampleMetadata: infused
15787
17032
 
@@ -15790,12 +17035,15 @@ class Filter:
15790
17035
  # destination_bucket1: s3.IBucket
15791
17036
  # destination_bucket2: s3.IBucket
15792
17037
  # replication_role: iam.IRole
15793
- # kms_key: kms.IKey
17038
+ # encryption_key: kms.IKey
17039
+ # destination_encryption_key: kms.IKey
15794
17040
 
15795
17041
 
15796
17042
  source_bucket = s3.Bucket(self, "SourceBucket",
15797
17043
  # Versioning must be enabled on both the source and destination bucket
15798
17044
  versioned=True,
17045
+ # Optional. Specify the KMS key to use for encrypts objects in the source bucket.
17046
+ encryption_key=encryption_key,
15799
17047
  # Optional. If not specified, a new role will be created.
15800
17048
  replication_role=replication_role,
15801
17049
  replication_rules=[s3.ReplicationRule(
@@ -15818,7 +17066,7 @@ class Filter:
15818
17066
  # If set, metrics will be output to indicate whether replication by S3 RTC took longer than the configured time.
15819
17067
  metrics=s3.ReplicationTimeValue.FIFTEEN_MINUTES,
15820
17068
  # The kms key to use for the destination bucket.
15821
- kms_key=kms_key,
17069
+ kms_key=destination_encryption_key,
15822
17070
  # The storage class to use for the destination bucket.
15823
17071
  storage_class=s3.StorageClass.INFREQUENT_ACCESS,
15824
17072
  # Whether to replicate objects with SSE-KMS encryption.
@@ -15844,36 +17092,49 @@ class Filter:
15844
17092
  )
15845
17093
  ]
15846
17094
  )
17095
+
17096
+ # Grant permissions to the replication role.
17097
+ # This method is not required if you choose to use an auto-generated replication role or manually grant permissions.
17098
+ source_bucket.grant_replication_permission(replication_role,
17099
+ # Optional. Specify the KMS key to use for decrypting objects in the source bucket.
17100
+ source_decryption_key=encryption_key,
17101
+ destinations=[s3.GrantReplicationPermissionDestinationProps(bucket=destination_bucket1), s3.GrantReplicationPermissionDestinationProps(bucket=destination_bucket2, encryption_key=destination_encryption_key)
17102
+ ]
17103
+ )
15847
17104
  '''
15848
17105
  if __debug__:
15849
- type_hints = typing.get_type_hints(_typecheckingstub__ff4b8a813f6812ab1464fced92fa61b97e151767705973ce994c0970fde139df)
15850
- check_type(argname="argument prefix", value=prefix, expected_type=type_hints["prefix"])
15851
- check_type(argname="argument tags", value=tags, expected_type=type_hints["tags"])
15852
- self._values: typing.Dict[builtins.str, typing.Any] = {}
15853
- if prefix is not None:
15854
- self._values["prefix"] = prefix
15855
- if tags is not None:
15856
- self._values["tags"] = tags
17106
+ type_hints = typing.get_type_hints(_typecheckingstub__892523669f29c26ab296b743291f04387d44edf1630a2288ab68d906f972d8ff)
17107
+ check_type(argname="argument destinations", value=destinations, expected_type=type_hints["destinations"])
17108
+ check_type(argname="argument source_decryption_key", value=source_decryption_key, expected_type=type_hints["source_decryption_key"])
17109
+ self._values: typing.Dict[builtins.str, typing.Any] = {
17110
+ "destinations": destinations,
17111
+ }
17112
+ if source_decryption_key is not None:
17113
+ self._values["source_decryption_key"] = source_decryption_key
15857
17114
 
15858
17115
  @builtins.property
15859
- def prefix(self) -> typing.Optional[builtins.str]:
15860
- '''An object key name prefix that identifies the object or objects to which the rule applies.
17116
+ def destinations(self) -> typing.List[GrantReplicationPermissionDestinationProps]:
17117
+ '''The destination buckets for replication.
15861
17118
 
15862
- :default: - applies to all objects
17119
+ Specify the KMS key to use for encryption if a destination bucket needs to be encrypted with a customer-managed KMS key.
17120
+ One or more destination buckets are required if replication configuration is enabled (i.e., ``replicationRole`` is specified).
17121
+
17122
+ :default: - empty array (valid only if the ``replicationRole`` property is NOT specified)
15863
17123
  '''
15864
- result = self._values.get("prefix")
15865
- return typing.cast(typing.Optional[builtins.str], result)
17124
+ result = self._values.get("destinations")
17125
+ assert result is not None, "Required property 'destinations' is missing"
17126
+ return typing.cast(typing.List[GrantReplicationPermissionDestinationProps], result)
15866
17127
 
15867
17128
  @builtins.property
15868
- def tags(self) -> typing.Optional[typing.List["Tag"]]:
15869
- '''The tag array used for tag filters.
17129
+ def source_decryption_key(self) -> typing.Optional[_IKey_5f11635f]:
17130
+ '''The KMS key used to decrypt objects in the source bucket for replication.
15870
17131
 
15871
- The rule applies only to objects that have the tag in this set.
17132
+ **Required if** the source bucket is encrypted with a customer-managed KMS key.
15872
17133
 
15873
- :default: - applies to all objects
17134
+ :default: - it's assumed the source bucket is not encrypted with a customer-managed KMS key.
15874
17135
  '''
15875
- result = self._values.get("tags")
15876
- return typing.cast(typing.Optional[typing.List["Tag"]], result)
17136
+ result = self._values.get("source_decryption_key")
17137
+ return typing.cast(typing.Optional[_IKey_5f11635f], result)
15877
17138
 
15878
17139
  def __eq__(self, rhs: typing.Any) -> builtins.bool:
15879
17140
  return isinstance(rhs, self.__class__) and rhs._values == self._values
@@ -15882,7 +17143,7 @@ class Filter:
15882
17143
  return not (rhs == self)
15883
17144
 
15884
17145
  def __repr__(self) -> str:
15885
- return "Filter(%s)" % ", ".join(
17146
+ return "GrantReplicationPermissionProps(%s)" % ", ".join(
15886
17147
  k + "=" + repr(v) for k, v in self._values.items()
15887
17148
  )
15888
17149
 
@@ -15904,7 +17165,7 @@ class HttpMethods(enum.Enum):
15904
17165
 
15905
17166
 
15906
17167
  @jsii.interface(jsii_type="aws-cdk-lib.aws_s3.IBucket")
15907
- class IBucket(_IResource_c80c4260, typing_extensions.Protocol):
17168
+ class IBucket(_IResource_c80c4260, _IBucketRef_3debe44e, typing_extensions.Protocol):
15908
17169
  @builtins.property
15909
17170
  @jsii.member(jsii_name="bucketArn")
15910
17171
  def bucket_arn(self) -> builtins.str:
@@ -16247,6 +17508,27 @@ class IBucket(_IResource_c80c4260, typing_extensions.Protocol):
16247
17508
  '''
16248
17509
  ...
16249
17510
 
17511
+ @jsii.member(jsii_name="grantReplicationPermission")
17512
+ def grant_replication_permission(
17513
+ self,
17514
+ identity: _IGrantable_71c4f5de,
17515
+ *,
17516
+ destinations: typing.Sequence[typing.Union[GrantReplicationPermissionDestinationProps, typing.Dict[builtins.str, typing.Any]]],
17517
+ source_decryption_key: typing.Optional[_IKey_5f11635f] = None,
17518
+ ) -> _Grant_a7ae64f8:
17519
+ '''Allows permissions for replication operation to bucket replication role.
17520
+
17521
+ If an encryption key is used, permission to use the key for
17522
+ encrypt/decrypt will also be granted.
17523
+
17524
+ :param identity: The principal.
17525
+ :param destinations: The destination buckets for replication. Specify the KMS key to use for encryption if a destination bucket needs to be encrypted with a customer-managed KMS key. One or more destination buckets are required if replication configuration is enabled (i.e., ``replicationRole`` is specified). Default: - empty array (valid only if the ``replicationRole`` property is NOT specified)
17526
+ :param source_decryption_key: The KMS key used to decrypt objects in the source bucket for replication. **Required if** the source bucket is encrypted with a customer-managed KMS key. Default: - it's assumed the source bucket is not encrypted with a customer-managed KMS key.
17527
+
17528
+ :return: The ``iam.Grant`` object, which represents the grant of permissions.
17529
+ '''
17530
+ ...
17531
+
16250
17532
  @jsii.member(jsii_name="grantWrite")
16251
17533
  def grant_write(
16252
17534
  self,
@@ -16443,6 +17725,7 @@ class IBucket(_IResource_c80c4260, typing_extensions.Protocol):
16443
17725
 
16444
17726
  class _IBucketProxy(
16445
17727
  jsii.proxy_for(_IResource_c80c4260), # type: ignore[misc]
17728
+ jsii.proxy_for(_IBucketRef_3debe44e), # type: ignore[misc]
16446
17729
  ):
16447
17730
  __jsii_type__: typing.ClassVar[str] = "aws-cdk-lib.aws_s3.IBucket"
16448
17731
 
@@ -16842,6 +18125,34 @@ class _IBucketProxy(
16842
18125
  check_type(argname="argument objects_key_pattern", value=objects_key_pattern, expected_type=type_hints["objects_key_pattern"])
16843
18126
  return typing.cast(_Grant_a7ae64f8, jsii.invoke(self, "grantReadWrite", [identity, objects_key_pattern]))
16844
18127
 
18128
+ @jsii.member(jsii_name="grantReplicationPermission")
18129
+ def grant_replication_permission(
18130
+ self,
18131
+ identity: _IGrantable_71c4f5de,
18132
+ *,
18133
+ destinations: typing.Sequence[typing.Union[GrantReplicationPermissionDestinationProps, typing.Dict[builtins.str, typing.Any]]],
18134
+ source_decryption_key: typing.Optional[_IKey_5f11635f] = None,
18135
+ ) -> _Grant_a7ae64f8:
18136
+ '''Allows permissions for replication operation to bucket replication role.
18137
+
18138
+ If an encryption key is used, permission to use the key for
18139
+ encrypt/decrypt will also be granted.
18140
+
18141
+ :param identity: The principal.
18142
+ :param destinations: The destination buckets for replication. Specify the KMS key to use for encryption if a destination bucket needs to be encrypted with a customer-managed KMS key. One or more destination buckets are required if replication configuration is enabled (i.e., ``replicationRole`` is specified). Default: - empty array (valid only if the ``replicationRole`` property is NOT specified)
18143
+ :param source_decryption_key: The KMS key used to decrypt objects in the source bucket for replication. **Required if** the source bucket is encrypted with a customer-managed KMS key. Default: - it's assumed the source bucket is not encrypted with a customer-managed KMS key.
18144
+
18145
+ :return: The ``iam.Grant`` object, which represents the grant of permissions.
18146
+ '''
18147
+ if __debug__:
18148
+ type_hints = typing.get_type_hints(_typecheckingstub__b2772da13be98dbf89b1d2aec491a21f6a48f84e8d96dacef9ad681c2a3c690a)
18149
+ check_type(argname="argument identity", value=identity, expected_type=type_hints["identity"])
18150
+ props = GrantReplicationPermissionProps(
18151
+ destinations=destinations, source_decryption_key=source_decryption_key
18152
+ )
18153
+
18154
+ return typing.cast(_Grant_a7ae64f8, jsii.invoke(self, "grantReplicationPermission", [identity, props]))
18155
+
16845
18156
  @jsii.member(jsii_name="grantWrite")
16846
18157
  def grant_write(
16847
18158
  self,
@@ -17104,7 +18415,7 @@ class IBucketNotificationDestination(typing_extensions.Protocol):
17104
18415
  def bind(
17105
18416
  self,
17106
18417
  scope: _constructs_77d1e7e8.Construct,
17107
- bucket: IBucket,
18418
+ bucket: _IBucketRef_3debe44e,
17108
18419
  ) -> BucketNotificationDestinationConfig:
17109
18420
  '''Registers this resource to receive notifications for the specified bucket.
17110
18421
 
@@ -17127,7 +18438,7 @@ class _IBucketNotificationDestinationProxy:
17127
18438
  def bind(
17128
18439
  self,
17129
18440
  scope: _constructs_77d1e7e8.Construct,
17130
- bucket: IBucket,
18441
+ bucket: _IBucketRef_3debe44e,
17131
18442
  ) -> BucketNotificationDestinationConfig:
17132
18443
  '''Registers this resource to receive notifications for the specified bucket.
17133
18444
 
@@ -17686,7 +18997,7 @@ class LifecycleRule:
17686
18997
  :param id: A unique identifier for this rule. The value cannot be more than 255 characters.
17687
18998
  :param noncurrent_version_expiration: Time between when a new version of the object is uploaded to the bucket and when old versions of the object expire. For buckets with versioning enabled (or suspended), specifies the time, in days, between when a new version of the object is uploaded to the bucket and when old versions of the object expire. When object versions expire, Amazon S3 permanently deletes them. If you specify a transition and expiration time, the expiration time must be later than the transition time. The underlying configuration is expressed in whole numbers of days. Providing a Duration that does not represent a whole number of days will result in a runtime or deployment error. Default: - No noncurrent version expiration
17688
18999
  :param noncurrent_versions_to_retain: Indicates a maximum number of noncurrent versions to retain. If there are this many more noncurrent versions, Amazon S3 permanently deletes them. Default: - No noncurrent versions to retain
17689
- :param noncurrent_version_transitions: One or more transition rules that specify when non-current objects transition to a specified storage class. Only for for buckets with versioning enabled (or suspended). If you specify a transition and expiration time, the expiration time must be later than the transition time.
19000
+ :param noncurrent_version_transitions: One or more transition rules that specify when non-current objects transition to a specified storage class. Only for buckets with versioning enabled (or suspended). If you specify a transition and expiration time, the expiration time must be later than the transition time.
17690
19001
  :param object_size_greater_than: Specifies the minimum object size in bytes for this rule to apply to. Objects must be larger than this value in bytes. Default: - No rule
17691
19002
  :param object_size_less_than: Specifies the maximum object size in bytes for this rule to apply to. Objects must be smaller than this value in bytes. Default: - No rule
17692
19003
  :param prefix: Object key prefix that identifies one or more objects to which this rule applies. Default: - Rule applies to all objects
@@ -17898,7 +19209,7 @@ class LifecycleRule:
17898
19209
  ) -> typing.Optional[typing.List["NoncurrentVersionTransition"]]:
17899
19210
  '''One or more transition rules that specify when non-current objects transition to a specified storage class.
17900
19211
 
17901
- Only for for buckets with versioning enabled (or suspended).
19212
+ Only for buckets with versioning enabled (or suspended).
17902
19213
 
17903
19214
  If you specify a transition and expiration time, the expiration time
17904
19215
  must be later than the transition time.
@@ -17994,26 +19305,43 @@ class Location:
17994
19305
  :param object_key: The path inside the Bucket where the object is located at.
17995
19306
  :param object_version: The S3 object version.
17996
19307
 
17997
- :exampleMetadata: infused
19308
+ :exampleMetadata: fixture=default infused
17998
19309
 
17999
19310
  Example::
18000
19311
 
18001
- start_query_execution_job = tasks.AthenaStartQueryExecution(self, "Start Athena Query",
18002
- query_string=sfn.JsonPath.string_at("$.queryString"),
18003
- query_execution_context=tasks.QueryExecutionContext(
18004
- database_name="mydatabase"
18005
- ),
18006
- result_configuration=tasks.ResultConfiguration(
18007
- encryption_configuration=tasks.EncryptionConfiguration(
18008
- encryption_option=tasks.EncryptionOption.S3_MANAGED
18009
- ),
18010
- output_location=s3.Location(
18011
- bucket_name="query-results-bucket",
18012
- object_key="folder"
19312
+ bucket = s3.Bucket(self, "memoryBucket",
19313
+ bucket_name="test-memory",
19314
+ removal_policy=cdk.RemovalPolicy.DESTROY,
19315
+ auto_delete_objects=True
19316
+ )
19317
+
19318
+ topic = sns.Topic(self, "topic")
19319
+
19320
+ # Create a custom semantic memory strategy
19321
+ self_managed_strategy = agentcore.MemoryStrategy.using_self_managed(
19322
+ name="selfManagedStrategy",
19323
+ description="self managed memory strategy",
19324
+ historical_context_window_size=5,
19325
+ invocation_configuration=agentcore.InvocationConfiguration(
19326
+ topic=topic,
19327
+ s3_location=s3.Location(
19328
+ bucket_name=bucket.bucket_name,
19329
+ object_key="memory/"
18013
19330
  )
18014
19331
  ),
18015
- execution_parameters=["param1", "param2"],
18016
- result_reuse_configuration_max_age=Duration.minutes(100)
19332
+ trigger_conditions=agentcore.TriggerConditions(
19333
+ message_based_trigger=1,
19334
+ time_based_trigger=cdk.Duration.seconds(10),
19335
+ token_based_trigger=100
19336
+ )
19337
+ )
19338
+
19339
+ # Create memory with custom strategy
19340
+ memory = agentcore.Memory(self, "MyMemory",
19341
+ memory_name="my-custom-memory",
19342
+ description="Memory with custom strategy",
19343
+ expiration_duration=cdk.Duration.days(90),
19344
+ memory_strategies=[self_managed_strategy]
18017
19345
  )
18018
19346
  '''
18019
19347
  if __debug__:
@@ -18981,12 +20309,15 @@ class ReplicationTimeValue(
18981
20309
  # destination_bucket1: s3.IBucket
18982
20310
  # destination_bucket2: s3.IBucket
18983
20311
  # replication_role: iam.IRole
18984
- # kms_key: kms.IKey
20312
+ # encryption_key: kms.IKey
20313
+ # destination_encryption_key: kms.IKey
18985
20314
 
18986
20315
 
18987
20316
  source_bucket = s3.Bucket(self, "SourceBucket",
18988
20317
  # Versioning must be enabled on both the source and destination bucket
18989
20318
  versioned=True,
20319
+ # Optional. Specify the KMS key to use for encrypts objects in the source bucket.
20320
+ encryption_key=encryption_key,
18990
20321
  # Optional. If not specified, a new role will be created.
18991
20322
  replication_role=replication_role,
18992
20323
  replication_rules=[s3.ReplicationRule(
@@ -19009,7 +20340,7 @@ class ReplicationTimeValue(
19009
20340
  # If set, metrics will be output to indicate whether replication by S3 RTC took longer than the configured time.
19010
20341
  metrics=s3.ReplicationTimeValue.FIFTEEN_MINUTES,
19011
20342
  # The kms key to use for the destination bucket.
19012
- kms_key=kms_key,
20343
+ kms_key=destination_encryption_key,
19013
20344
  # The storage class to use for the destination bucket.
19014
20345
  storage_class=s3.StorageClass.INFREQUENT_ACCESS,
19015
20346
  # Whether to replicate objects with SSE-KMS encryption.
@@ -19035,6 +20366,15 @@ class ReplicationTimeValue(
19035
20366
  )
19036
20367
  ]
19037
20368
  )
20369
+
20370
+ # Grant permissions to the replication role.
20371
+ # This method is not required if you choose to use an auto-generated replication role or manually grant permissions.
20372
+ source_bucket.grant_replication_permission(replication_role,
20373
+ # Optional. Specify the KMS key to use for decrypting objects in the source bucket.
20374
+ source_decryption_key=encryption_key,
20375
+ destinations=[s3.GrantReplicationPermissionDestinationProps(bucket=destination_bucket1), s3.GrantReplicationPermissionDestinationProps(bucket=destination_bucket2, encryption_key=destination_encryption_key)
20376
+ ]
20377
+ )
19038
20378
  '''
19039
20379
 
19040
20380
  @jsii.python.classproperty
@@ -20095,6 +21435,32 @@ class BucketBase(
20095
21435
  check_type(argname="argument objects_key_pattern", value=objects_key_pattern, expected_type=type_hints["objects_key_pattern"])
20096
21436
  return typing.cast(_Grant_a7ae64f8, jsii.invoke(self, "grantReadWrite", [identity, objects_key_pattern]))
20097
21437
 
21438
+ @jsii.member(jsii_name="grantReplicationPermission")
21439
+ def grant_replication_permission(
21440
+ self,
21441
+ identity: _IGrantable_71c4f5de,
21442
+ *,
21443
+ destinations: typing.Sequence[typing.Union[GrantReplicationPermissionDestinationProps, typing.Dict[builtins.str, typing.Any]]],
21444
+ source_decryption_key: typing.Optional[_IKey_5f11635f] = None,
21445
+ ) -> _Grant_a7ae64f8:
21446
+ '''Grant replication permission to a principal. This method allows the principal to perform replication operations on this bucket.
21447
+
21448
+ Note that when calling this function for source or destination buckets that support KMS encryption,
21449
+ you need to specify the KMS key for encryption and the KMS key for decryption, respectively.
21450
+
21451
+ :param identity: The principal to grant replication permission to.
21452
+ :param destinations: The destination buckets for replication. Specify the KMS key to use for encryption if a destination bucket needs to be encrypted with a customer-managed KMS key. One or more destination buckets are required if replication configuration is enabled (i.e., ``replicationRole`` is specified). Default: - empty array (valid only if the ``replicationRole`` property is NOT specified)
21453
+ :param source_decryption_key: The KMS key used to decrypt objects in the source bucket for replication. **Required if** the source bucket is encrypted with a customer-managed KMS key. Default: - it's assumed the source bucket is not encrypted with a customer-managed KMS key.
21454
+ '''
21455
+ if __debug__:
21456
+ type_hints = typing.get_type_hints(_typecheckingstub__ae08375448013fd67c288fc732b4e3bd7135520a849542f49221c12f286f9554)
21457
+ check_type(argname="argument identity", value=identity, expected_type=type_hints["identity"])
21458
+ props = GrantReplicationPermissionProps(
21459
+ destinations=destinations, source_decryption_key=source_decryption_key
21460
+ )
21461
+
21462
+ return typing.cast(_Grant_a7ae64f8, jsii.invoke(self, "grantReplicationPermission", [identity, props]))
21463
+
20098
21464
  @jsii.member(jsii_name="grantWrite")
20099
21465
  def grant_write(
20100
21466
  self,
@@ -20371,6 +21737,12 @@ class BucketBase(
20371
21737
  '''The name of the bucket.'''
20372
21738
  ...
20373
21739
 
21740
+ @builtins.property
21741
+ @jsii.member(jsii_name="bucketRef")
21742
+ def bucket_ref(self) -> _BucketReference_502fb39f:
21743
+ '''A reference to a Bucket resource.'''
21744
+ return typing.cast(_BucketReference_502fb39f, jsii.get(self, "bucketRef"))
21745
+
20374
21746
  @builtins.property
20375
21747
  @jsii.member(jsii_name="bucketRegionalDomainName")
20376
21748
  @abc.abstractmethod
@@ -20991,7 +22363,7 @@ class Bucket(
20991
22363
  :param id: A unique identifier for this rule. The value cannot be more than 255 characters.
20992
22364
  :param noncurrent_version_expiration: Time between when a new version of the object is uploaded to the bucket and when old versions of the object expire. For buckets with versioning enabled (or suspended), specifies the time, in days, between when a new version of the object is uploaded to the bucket and when old versions of the object expire. When object versions expire, Amazon S3 permanently deletes them. If you specify a transition and expiration time, the expiration time must be later than the transition time. The underlying configuration is expressed in whole numbers of days. Providing a Duration that does not represent a whole number of days will result in a runtime or deployment error. Default: - No noncurrent version expiration
20993
22365
  :param noncurrent_versions_to_retain: Indicates a maximum number of noncurrent versions to retain. If there are this many more noncurrent versions, Amazon S3 permanently deletes them. Default: - No noncurrent versions to retain
20994
- :param noncurrent_version_transitions: One or more transition rules that specify when non-current objects transition to a specified storage class. Only for for buckets with versioning enabled (or suspended). If you specify a transition and expiration time, the expiration time must be later than the transition time.
22366
+ :param noncurrent_version_transitions: One or more transition rules that specify when non-current objects transition to a specified storage class. Only for buckets with versioning enabled (or suspended). If you specify a transition and expiration time, the expiration time must be later than the transition time.
20995
22367
  :param object_size_greater_than: Specifies the minimum object size in bytes for this rule to apply to. Objects must be larger than this value in bytes. Default: - No rule
20996
22368
  :param object_size_less_than: Specifies the maximum object size in bytes for this rule to apply to. Objects must be smaller than this value in bytes. Default: - No rule
20997
22369
  :param prefix: Object key prefix that identifies one or more objects to which this rule applies. Default: - Rule applies to all objects
@@ -21035,6 +22407,12 @@ class Bucket(
21035
22407
 
21036
22408
  return typing.cast(None, jsii.invoke(self, "addMetric", [metric]))
21037
22409
 
22410
+ @jsii.python.classproperty
22411
+ @jsii.member(jsii_name="PROPERTY_INJECTION_ID")
22412
+ def PROPERTY_INJECTION_ID(cls) -> builtins.str:
22413
+ '''Uniquely identifies this class.'''
22414
+ return typing.cast(builtins.str, jsii.sget(cls, "PROPERTY_INJECTION_ID"))
22415
+
21038
22416
  @builtins.property
21039
22417
  @jsii.member(jsii_name="bucketArn")
21040
22418
  def bucket_arn(self) -> builtins.str:
@@ -21183,6 +22561,8 @@ __all__ = [
21183
22561
  "CorsRule",
21184
22562
  "EventType",
21185
22563
  "Filter",
22564
+ "GrantReplicationPermissionDestinationProps",
22565
+ "GrantReplicationPermissionProps",
21186
22566
  "HttpMethods",
21187
22567
  "IBucket",
21188
22568
  "IBucketNotificationDestination",
@@ -21294,6 +22674,7 @@ def _typecheckingstub__910b3df1208e67cb52dad0b0b8c5feb43c7bddb0ced50eaf6c9534772
21294
22674
  id: builtins.str,
21295
22675
  *,
21296
22676
  bucket: IBucket,
22677
+ document: typing.Optional[_PolicyDocument_3ac34393] = None,
21297
22678
  removal_policy: typing.Optional[_RemovalPolicy_9f93c814] = None,
21298
22679
  ) -> None:
21299
22680
  """Type checking stubs"""
@@ -21314,6 +22695,7 @@ def _typecheckingstub__70ab6602f43f75a64ae8e8349b5d140cdfefe9af2e4d2352ec6279ed1
21314
22695
  def _typecheckingstub__4d7b9233434273933326211f004f27c2982fedd89ad904dc86d84c54f0f50ac6(
21315
22696
  *,
21316
22697
  bucket: IBucket,
22698
+ document: typing.Optional[_PolicyDocument_3ac34393] = None,
21317
22699
  removal_policy: typing.Optional[_RemovalPolicy_9f93c814] = None,
21318
22700
  ) -> None:
21319
22701
  """Type checking stubs"""
@@ -21502,8 +22884,8 @@ def _typecheckingstub__f63f8766c3f622205e3ea04592d9dbd1cdfdf34d2e6b1aca405f1b211
21502
22884
  scope: _constructs_77d1e7e8.Construct,
21503
22885
  id: builtins.str,
21504
22886
  *,
21505
- iam_role_arn: typing.Optional[builtins.str] = None,
21506
- location_scope: typing.Optional[builtins.str] = None,
22887
+ iam_role_arn: builtins.str,
22888
+ location_scope: builtins.str,
21507
22889
  tags: typing.Optional[typing.Sequence[typing.Union[_CfnTag_f6864754, typing.Dict[builtins.str, typing.Any]]]] = None,
21508
22890
  ) -> None:
21509
22891
  """Type checking stubs"""
@@ -21522,13 +22904,13 @@ def _typecheckingstub__41246c53313d09c72689110109c1c02c98b558c613dd50d35f19becfa
21522
22904
  pass
21523
22905
 
21524
22906
  def _typecheckingstub__c6ad3ea630d95d457364fa227ccc4159df9b2fe48cab3fd14afc7301612ddce6(
21525
- value: typing.Optional[builtins.str],
22907
+ value: builtins.str,
21526
22908
  ) -> None:
21527
22909
  """Type checking stubs"""
21528
22910
  pass
21529
22911
 
21530
22912
  def _typecheckingstub__80f4ecc1c277ca36e62d80157ee09c7e5856bf9bc1e1542588d3449f958c3302(
21531
- value: typing.Optional[builtins.str],
22913
+ value: builtins.str,
21532
22914
  ) -> None:
21533
22915
  """Type checking stubs"""
21534
22916
  pass
@@ -21541,8 +22923,8 @@ def _typecheckingstub__34ec64e9e3a170eac86359c24d865c728a0273caa8c470380483ea14c
21541
22923
 
21542
22924
  def _typecheckingstub__5f891152429263f2b2cdf0641e18212de422d1b020ebb0f7ffbac1e255090f5d(
21543
22925
  *,
21544
- iam_role_arn: typing.Optional[builtins.str] = None,
21545
- location_scope: typing.Optional[builtins.str] = None,
22926
+ iam_role_arn: builtins.str,
22927
+ location_scope: builtins.str,
21546
22928
  tags: typing.Optional[typing.Sequence[typing.Union[_CfnTag_f6864754, typing.Dict[builtins.str, typing.Any]]]] = None,
21547
22929
  ) -> None:
21548
22930
  """Type checking stubs"""
@@ -21557,11 +22939,28 @@ def _typecheckingstub__effa13924691e4b61b906bb0dc0bd5da8dfc4d4cbd167af0fe9491358
21557
22939
  name: typing.Optional[builtins.str] = None,
21558
22940
  policy: typing.Any = None,
21559
22941
  public_access_block_configuration: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnAccessPoint.PublicAccessBlockConfigurationProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
22942
+ tags: typing.Optional[typing.Sequence[typing.Union[_CfnTag_f6864754, typing.Dict[builtins.str, typing.Any]]]] = None,
21560
22943
  vpc_configuration: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnAccessPoint.VpcConfigurationProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
21561
22944
  ) -> None:
21562
22945
  """Type checking stubs"""
21563
22946
  pass
21564
22947
 
22948
+ def _typecheckingstub__27c1fdb406b539ade70eea36bce09782bba11b354442fee5c5d43c938bfd0aee(
22949
+ scope: _constructs_77d1e7e8.Construct,
22950
+ id: builtins.str,
22951
+ arn: builtins.str,
22952
+ ) -> None:
22953
+ """Type checking stubs"""
22954
+ pass
22955
+
22956
+ def _typecheckingstub__9af2790fec8caeab2621c276234587e70ab62b4d6d6f7a82947b3b7326f42deb(
22957
+ scope: _constructs_77d1e7e8.Construct,
22958
+ id: builtins.str,
22959
+ access_point_name: builtins.str,
22960
+ ) -> None:
22961
+ """Type checking stubs"""
22962
+ pass
22963
+
21565
22964
  def _typecheckingstub__71b3c7d208bf045aac83ee95ce52f903885375649aecea79c502164e94dcdf8a(
21566
22965
  inspector: _TreeInspector_488e0dd5,
21567
22966
  ) -> None:
@@ -21604,6 +23003,12 @@ def _typecheckingstub__f1674ffbc32679c9e6b98201180481c7cd25fa6b6b1611ce89faf76ad
21604
23003
  """Type checking stubs"""
21605
23004
  pass
21606
23005
 
23006
+ def _typecheckingstub__d6c41b842366f80d771c24147e6f4bdb868bf8899c3f03b128339e380a158e19(
23007
+ value: typing.Optional[typing.List[_CfnTag_f6864754]],
23008
+ ) -> None:
23009
+ """Type checking stubs"""
23010
+ pass
23011
+
21607
23012
  def _typecheckingstub__a49ee3ddcfdce1bcd8c198e3823a2490c2f4ac82647902a91b701dbc61ab86b8(
21608
23013
  value: typing.Optional[typing.Union[_IResolvable_da3f097b, CfnAccessPoint.VpcConfigurationProperty]],
21609
23014
  ) -> None:
@@ -21634,6 +23039,7 @@ def _typecheckingstub__78747b8f8c95f80def774b788cce8b1ff46ec71c89a1b755270401066
21634
23039
  name: typing.Optional[builtins.str] = None,
21635
23040
  policy: typing.Any = None,
21636
23041
  public_access_block_configuration: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnAccessPoint.PublicAccessBlockConfigurationProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
23042
+ tags: typing.Optional[typing.Sequence[typing.Union[_CfnTag_f6864754, typing.Dict[builtins.str, typing.Any]]]] = None,
21637
23043
  vpc_configuration: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnAccessPoint.VpcConfigurationProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
21638
23044
  ) -> None:
21639
23045
  """Type checking stubs"""
@@ -21653,6 +23059,7 @@ def _typecheckingstub__0cfa39e37f5fa17b8234ce2f712ef5cf3bf2c262914967924c19a67f6
21653
23059
  inventory_configurations: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Sequence[typing.Union[_IResolvable_da3f097b, typing.Union[CfnBucket.InventoryConfigurationProperty, typing.Dict[builtins.str, typing.Any]]]]]] = None,
21654
23060
  lifecycle_configuration: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnBucket.LifecycleConfigurationProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
21655
23061
  logging_configuration: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnBucket.LoggingConfigurationProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
23062
+ metadata_configuration: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnBucket.MetadataConfigurationProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
21656
23063
  metadata_table_configuration: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnBucket.MetadataTableConfigurationProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
21657
23064
  metrics_configurations: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Sequence[typing.Union[_IResolvable_da3f097b, typing.Union[CfnBucket.MetricsConfigurationProperty, typing.Dict[builtins.str, typing.Any]]]]]] = None,
21658
23065
  notification_configuration: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnBucket.NotificationConfigurationProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
@@ -21668,6 +23075,22 @@ def _typecheckingstub__0cfa39e37f5fa17b8234ce2f712ef5cf3bf2c262914967924c19a67f6
21668
23075
  """Type checking stubs"""
21669
23076
  pass
21670
23077
 
23078
+ def _typecheckingstub__f218931ccffe0d6407edcfc452f39d64609d0cceec6ea04313fa364cf5a4f3df(
23079
+ scope: _constructs_77d1e7e8.Construct,
23080
+ id: builtins.str,
23081
+ arn: builtins.str,
23082
+ ) -> None:
23083
+ """Type checking stubs"""
23084
+ pass
23085
+
23086
+ def _typecheckingstub__08ccc75711c8ec0fedd9747e674f732b2653120a392c01413875cc0df08e91fa(
23087
+ scope: _constructs_77d1e7e8.Construct,
23088
+ id: builtins.str,
23089
+ bucket_name: builtins.str,
23090
+ ) -> None:
23091
+ """Type checking stubs"""
23092
+ pass
23093
+
21671
23094
  def _typecheckingstub__176de3038f1db142ab99b5462bff80dea14e125a51ef31e58c268c52bbbc103e(
21672
23095
  inspector: _TreeInspector_488e0dd5,
21673
23096
  ) -> None:
@@ -21740,6 +23163,12 @@ def _typecheckingstub__4b77f03fd3b3677eb1438ce6b2a3991e386c73bd8744df53f5e4ba5ea
21740
23163
  """Type checking stubs"""
21741
23164
  pass
21742
23165
 
23166
+ def _typecheckingstub__13b4697762f20bd91e57f93bf2922758e68d9cbc3f74472e7da7f9ce2f7dcdca(
23167
+ value: typing.Optional[typing.Union[_IResolvable_da3f097b, CfnBucket.MetadataConfigurationProperty]],
23168
+ ) -> None:
23169
+ """Type checking stubs"""
23170
+ pass
23171
+
21743
23172
  def _typecheckingstub__fd29cd03877c191999cfea4d853581d72ddc33cf57cc7d4cba47336d1b9943ec(
21744
23173
  value: typing.Optional[typing.Union[_IResolvable_da3f097b, CfnBucket.MetadataTableConfigurationProperty]],
21745
23174
  ) -> None:
@@ -21943,6 +23372,26 @@ def _typecheckingstub__cdee89cd1b92609a0e10908dd9212db336cab5c5d1cccdb91cf76efe8
21943
23372
  """Type checking stubs"""
21944
23373
  pass
21945
23374
 
23375
+ def _typecheckingstub__e3f0960f8776684cd6b2c423b1320b1ffcb2a6165dba0f275451667884000458(
23376
+ *,
23377
+ configuration_state: builtins.str,
23378
+ encryption_configuration: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnBucket.MetadataTableEncryptionConfigurationProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
23379
+ table_arn: typing.Optional[builtins.str] = None,
23380
+ table_name: typing.Optional[builtins.str] = None,
23381
+ ) -> None:
23382
+ """Type checking stubs"""
23383
+ pass
23384
+
23385
+ def _typecheckingstub__4831e8bf78dc983eaf9b010780417c4e6b808ef19beac1729f89ba7bab53d4d9(
23386
+ *,
23387
+ record_expiration: typing.Union[_IResolvable_da3f097b, typing.Union[CfnBucket.RecordExpirationProperty, typing.Dict[builtins.str, typing.Any]]],
23388
+ encryption_configuration: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnBucket.MetadataTableEncryptionConfigurationProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
23389
+ table_arn: typing.Optional[builtins.str] = None,
23390
+ table_name: typing.Optional[builtins.str] = None,
23391
+ ) -> None:
23392
+ """Type checking stubs"""
23393
+ pass
23394
+
21946
23395
  def _typecheckingstub__599ef02853407bceb720424e9874eda7b5e2324f3be8a787939e9d5f9a7d5765(
21947
23396
  *,
21948
23397
  event: builtins.str,
@@ -21969,6 +23418,24 @@ def _typecheckingstub__01491815d16a808a2dce4d193703181c42183e3e002a73f20f0f129d4
21969
23418
  """Type checking stubs"""
21970
23419
  pass
21971
23420
 
23421
+ def _typecheckingstub__5ba4e02b348fb368852d2eaf89da64d6c5432c39d5f771482cd73c5e29aea1d2(
23422
+ *,
23423
+ journal_table_configuration: typing.Union[_IResolvable_da3f097b, typing.Union[CfnBucket.JournalTableConfigurationProperty, typing.Dict[builtins.str, typing.Any]]],
23424
+ destination: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnBucket.MetadataDestinationProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
23425
+ inventory_table_configuration: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnBucket.InventoryTableConfigurationProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
23426
+ ) -> None:
23427
+ """Type checking stubs"""
23428
+ pass
23429
+
23430
+ def _typecheckingstub__22a357b76c39088e89c9805c6e3fd369bf83472fbcec37ad505b7803d1960e7e(
23431
+ *,
23432
+ table_bucket_type: builtins.str,
23433
+ table_bucket_arn: typing.Optional[builtins.str] = None,
23434
+ table_namespace: typing.Optional[builtins.str] = None,
23435
+ ) -> None:
23436
+ """Type checking stubs"""
23437
+ pass
23438
+
21972
23439
  def _typecheckingstub__5ca454da0b88593246b2d389c687410262b1687eb76eddb67e9375ebad28093f(
21973
23440
  *,
21974
23441
  s3_tables_destination: typing.Union[_IResolvable_da3f097b, typing.Union[CfnBucket.S3TablesDestinationProperty, typing.Dict[builtins.str, typing.Any]]],
@@ -21976,6 +23443,14 @@ def _typecheckingstub__5ca454da0b88593246b2d389c687410262b1687eb76eddb67e9375eba
21976
23443
  """Type checking stubs"""
21977
23444
  pass
21978
23445
 
23446
+ def _typecheckingstub__638725ba5e16c7545010085fee3839279059f8036e3a36e81a6da12f68c3c96d(
23447
+ *,
23448
+ sse_algorithm: builtins.str,
23449
+ kms_key_arn: typing.Optional[builtins.str] = None,
23450
+ ) -> None:
23451
+ """Type checking stubs"""
23452
+ pass
23453
+
21979
23454
  def _typecheckingstub__ad42f7d497f9da61528b895926b56b4a48de1121e97039ba589509b4f56b32f7(
21980
23455
  *,
21981
23456
  id: builtins.str,
@@ -22083,6 +23558,14 @@ def _typecheckingstub__fa7475a01d5eb0e88eb78519cde0c5de6ace577577dd1b48ec5816cca
22083
23558
  """Type checking stubs"""
22084
23559
  pass
22085
23560
 
23561
+ def _typecheckingstub__ced4e05e0d07a000e813825522beab4af447ff67164c61600ff7eb3b0afab28c(
23562
+ *,
23563
+ expiration: builtins.str,
23564
+ days: typing.Optional[jsii.Number] = None,
23565
+ ) -> None:
23566
+ """Type checking stubs"""
23567
+ pass
23568
+
22086
23569
  def _typecheckingstub__8aaa5db61b5a90e427f3a57c45b3bd725fb80aeca08f50b45728a5d954ee837f(
22087
23570
  *,
22088
23571
  host_name: builtins.str,
@@ -22382,6 +23865,7 @@ def _typecheckingstub__658a4165ec8804b9770871bbb27764713f55dc53e9c9e990dca120e77
22382
23865
  inventory_configurations: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Sequence[typing.Union[_IResolvable_da3f097b, typing.Union[CfnBucket.InventoryConfigurationProperty, typing.Dict[builtins.str, typing.Any]]]]]] = None,
22383
23866
  lifecycle_configuration: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnBucket.LifecycleConfigurationProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
22384
23867
  logging_configuration: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnBucket.LoggingConfigurationProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
23868
+ metadata_configuration: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnBucket.MetadataConfigurationProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
22385
23869
  metadata_table_configuration: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnBucket.MetadataTableConfigurationProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
22386
23870
  metrics_configurations: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Sequence[typing.Union[_IResolvable_da3f097b, typing.Union[CfnBucket.MetricsConfigurationProperty, typing.Dict[builtins.str, typing.Any]]]]]] = None,
22387
23871
  notification_configuration: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnBucket.NotificationConfigurationProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
@@ -22838,6 +24322,22 @@ def _typecheckingstub__ff4b8a813f6812ab1464fced92fa61b97e151767705973ce994c0970f
22838
24322
  """Type checking stubs"""
22839
24323
  pass
22840
24324
 
24325
+ def _typecheckingstub__c28989eb119121ac7809e78ba2038558e14755021078bf7d97f894b34bc3311a(
24326
+ *,
24327
+ bucket: IBucket,
24328
+ encryption_key: typing.Optional[_IKey_5f11635f] = None,
24329
+ ) -> None:
24330
+ """Type checking stubs"""
24331
+ pass
24332
+
24333
+ def _typecheckingstub__892523669f29c26ab296b743291f04387d44edf1630a2288ab68d906f972d8ff(
24334
+ *,
24335
+ destinations: typing.Sequence[typing.Union[GrantReplicationPermissionDestinationProps, typing.Dict[builtins.str, typing.Any]]],
24336
+ source_decryption_key: typing.Optional[_IKey_5f11635f] = None,
24337
+ ) -> None:
24338
+ """Type checking stubs"""
24339
+ pass
24340
+
22841
24341
  def _typecheckingstub__eee382ff86c17d46379012dcccee86976ea92e15cb6d63c3e3f4e853c058ac53(
22842
24342
  value: typing.Optional[BucketPolicy],
22843
24343
  ) -> None:
@@ -22934,6 +24434,15 @@ def _typecheckingstub__96c877c118f5e8a1b2d7e8d8a3a593f12688f174eaf15ecd7c8198344
22934
24434
  """Type checking stubs"""
22935
24435
  pass
22936
24436
 
24437
+ def _typecheckingstub__b2772da13be98dbf89b1d2aec491a21f6a48f84e8d96dacef9ad681c2a3c690a(
24438
+ identity: _IGrantable_71c4f5de,
24439
+ *,
24440
+ destinations: typing.Sequence[typing.Union[GrantReplicationPermissionDestinationProps, typing.Dict[builtins.str, typing.Any]]],
24441
+ source_decryption_key: typing.Optional[_IKey_5f11635f] = None,
24442
+ ) -> None:
24443
+ """Type checking stubs"""
24444
+ pass
24445
+
22937
24446
  def _typecheckingstub__d80dff4704f5345b5514fd2dfceb4cf2e1b6f5dbd368505a740522685f4b2404(
22938
24447
  identity: _IGrantable_71c4f5de,
22939
24448
  objects_key_pattern: typing.Any = None,
@@ -23011,7 +24520,7 @@ def _typecheckingstub__993ef29805b7b5223d6327faefc00c505108a1497efd501af949abb29
23011
24520
 
23012
24521
  def _typecheckingstub__c383a5262868f93c81da67f9058929f12151009bdb49b69a87ed6e62b4fe28a9(
23013
24522
  scope: _constructs_77d1e7e8.Construct,
23014
- bucket: IBucket,
24523
+ bucket: _IBucketRef_3debe44e,
23015
24524
  ) -> None:
23016
24525
  """Type checking stubs"""
23017
24526
  pass
@@ -23316,6 +24825,15 @@ def _typecheckingstub__b4fefa6383b8da3c85e674cc7aa9017f54bbafd94b3f086c041a65129
23316
24825
  """Type checking stubs"""
23317
24826
  pass
23318
24827
 
24828
+ def _typecheckingstub__ae08375448013fd67c288fc732b4e3bd7135520a849542f49221c12f286f9554(
24829
+ identity: _IGrantable_71c4f5de,
24830
+ *,
24831
+ destinations: typing.Sequence[typing.Union[GrantReplicationPermissionDestinationProps, typing.Dict[builtins.str, typing.Any]]],
24832
+ source_decryption_key: typing.Optional[_IKey_5f11635f] = None,
24833
+ ) -> None:
24834
+ """Type checking stubs"""
24835
+ pass
24836
+
23319
24837
  def _typecheckingstub__857aef69f081fcbca7e312228a28a24530a67adbfdf13e38eca13f14153683be(
23320
24838
  identity: _IGrantable_71c4f5de,
23321
24839
  objects_key_pattern: typing.Any = None,
@@ -23547,3 +25065,6 @@ def _typecheckingstub__3cb691a849de33681a4f0021424f266609c2785cf8cbf5306c98726a6
23547
25065
  ) -> None:
23548
25066
  """Type checking stubs"""
23549
25067
  pass
25068
+
25069
+ for cls in [IBucket, IBucketNotificationDestination]:
25070
+ typing.cast(typing.Any, cls).__protocol_attrs__ = typing.cast(typing.Any, cls).__protocol_attrs__ - set(['__jsii_proxy_class__', '__jsii_type__'])