aws-cdk-lib 2.200.2__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 (569) hide show
  1. aws_cdk/__init__.py +1349 -373
  2. aws_cdk/_jsii/__init__.py +1 -1
  3. aws_cdk/_jsii/{aws-cdk-lib@2.200.2.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 +1017 -155
  12. aws_cdk/aws_apigatewayv2/__init__.py +2796 -379
  13. aws_cdk/aws_apigatewayv2_integrations/__init__.py +94 -16
  14. aws_cdk/aws_appconfig/__init__.py +298 -43
  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 +29 -6
  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 +94 -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 +227 -53
  24. aws_cdk/aws_apptest/__init__.py +71 -2
  25. aws_cdk/aws_aps/__init__.py +1875 -132
  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 +135 -55
  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 +317 -28
  35. aws_cdk/aws_backupgateway/__init__.py +13 -2
  36. aws_cdk/aws_batch/__init__.py +1405 -178
  37. aws_cdk/aws_bcmdataexports/__init__.py +21 -2
  38. aws_cdk/aws_bedrock/__init__.py +6747 -627
  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 +42 -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 +237 -32
  45. aws_cdk/aws_chatbot/__init__.py +70 -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 +345 -166
  50. aws_cdk/aws_cloudfront/__init__.py +2101 -680
  51. aws_cdk/aws_cloudfront/experimental/__init__.py +108 -16
  52. aws_cdk/aws_cloudfront_origins/__init__.py +614 -73
  53. aws_cdk/aws_cloudtrail/__init__.py +301 -17
  54. aws_cdk/aws_cloudwatch/__init__.py +1414 -153
  55. aws_cdk/aws_codeartifact/__init__.py +35 -6
  56. aws_cdk/aws_codebuild/__init__.py +1103 -118
  57. aws_cdk/aws_codecommit/__init__.py +23 -9
  58. aws_cdk/aws_codeconnections/__init__.py +13 -2
  59. aws_cdk/aws_codedeploy/__init__.py +67 -6
  60. aws_cdk/aws_codeguruprofiler/__init__.py +74 -2
  61. aws_cdk/aws_codegurureviewer/__init__.py +13 -2
  62. aws_cdk/aws_codepipeline/__init__.py +127 -64
  63. aws_cdk/aws_codepipeline_actions/__init__.py +749 -0
  64. aws_cdk/aws_codestar/__init__.py +13 -2
  65. aws_cdk/aws_codestarconnections/__init__.py +35 -6
  66. aws_cdk/aws_codestarnotifications/__init__.py +16 -2
  67. aws_cdk/aws_cognito/__init__.py +814 -80
  68. aws_cdk/aws_cognito_identitypool/__init__.py +17 -12
  69. aws_cdk/aws_comprehend/__init__.py +24 -4
  70. aws_cdk/aws_config/__init__.py +191 -30
  71. aws_cdk/aws_connect/__init__.py +2736 -191
  72. aws_cdk/aws_connectcampaigns/__init__.py +13 -2
  73. aws_cdk/aws_connectcampaignsv2/__init__.py +268 -6
  74. aws_cdk/aws_controltower/__init__.py +35 -6
  75. aws_cdk/aws_cur/__init__.py +100 -4
  76. aws_cdk/aws_customerprofiles/__init__.py +617 -27
  77. aws_cdk/aws_databrew/__init__.py +68 -12
  78. aws_cdk/aws_datapipeline/__init__.py +42 -2
  79. aws_cdk/aws_datasync/__init__.py +723 -203
  80. aws_cdk/aws_datazone/__init__.py +4425 -608
  81. aws_cdk/aws_dax/__init__.py +83 -6
  82. aws_cdk/aws_deadline/__init__.py +321 -32
  83. aws_cdk/aws_detective/__init__.py +35 -6
  84. aws_cdk/aws_devicefarm/__init__.py +68 -12
  85. aws_cdk/aws_devopsguru/__init__.py +37 -6
  86. aws_cdk/aws_directoryservice/__init__.py +53 -4
  87. aws_cdk/aws_dlm/__init__.py +13 -2
  88. aws_cdk/aws_dms/__init__.py +184 -27
  89. aws_cdk/aws_docdb/__init__.py +323 -46
  90. aws_cdk/aws_docdbelastic/__init__.py +13 -2
  91. aws_cdk/aws_dsql/__init__.py +340 -12
  92. aws_cdk/aws_dynamodb/__init__.py +1463 -166
  93. aws_cdk/aws_ec2/__init__.py +9636 -1120
  94. aws_cdk/aws_ecr/__init__.py +631 -43
  95. aws_cdk/aws_ecr_assets/__init__.py +4 -0
  96. aws_cdk/aws_ecs/__init__.py +6524 -497
  97. aws_cdk/aws_ecs_patterns/__init__.py +2 -0
  98. aws_cdk/aws_efs/__init__.py +264 -24
  99. aws_cdk/aws_eks/__init__.py +1050 -218
  100. aws_cdk/aws_elasticache/__init__.py +373 -20
  101. aws_cdk/aws_elasticbeanstalk/__init__.py +75 -8
  102. aws_cdk/aws_elasticloadbalancing/__init__.py +16 -2
  103. aws_cdk/aws_elasticloadbalancingv2/__init__.py +1670 -106
  104. aws_cdk/aws_elasticsearch/__init__.py +282 -9
  105. aws_cdk/aws_emr/__init__.py +187 -20
  106. aws_cdk/aws_emrcontainers/__init__.py +71 -2
  107. aws_cdk/aws_emrserverless/__init__.py +188 -3
  108. aws_cdk/aws_entityresolution/__init__.py +585 -58
  109. aws_cdk/aws_events/__init__.py +969 -124
  110. aws_cdk/aws_events_targets/__init__.py +310 -54
  111. aws_cdk/aws_eventschemas/__init__.py +46 -8
  112. aws_cdk/aws_evidently/__init__.py +57 -10
  113. aws_cdk/aws_evs/__init__.py +2244 -0
  114. aws_cdk/aws_finspace/__init__.py +71 -2
  115. aws_cdk/aws_fis/__init__.py +26 -4
  116. aws_cdk/aws_fms/__init__.py +35 -6
  117. aws_cdk/aws_forecast/__init__.py +24 -4
  118. aws_cdk/aws_frauddetector/__init__.py +79 -14
  119. aws_cdk/aws_fsx/__init__.py +1236 -142
  120. aws_cdk/aws_gamelift/__init__.py +653 -78
  121. aws_cdk/aws_gameliftstreams/__init__.py +38 -16
  122. aws_cdk/aws_globalaccelerator/__init__.py +55 -14
  123. aws_cdk/aws_glue/__init__.py +1368 -320
  124. aws_cdk/aws_grafana/__init__.py +13 -2
  125. aws_cdk/aws_greengrass/__init__.py +654 -32
  126. aws_cdk/aws_greengrassv2/__init__.py +53 -4
  127. aws_cdk/aws_groundstation/__init__.py +122 -6
  128. aws_cdk/aws_guardduty/__init__.py +1613 -123
  129. aws_cdk/aws_healthimaging/__init__.py +71 -2
  130. aws_cdk/aws_healthlake/__init__.py +42 -2
  131. aws_cdk/aws_iam/__init__.py +480 -140
  132. aws_cdk/aws_identitystore/__init__.py +24 -4
  133. aws_cdk/aws_imagebuilder/__init__.py +1433 -183
  134. aws_cdk/aws_inspector/__init__.py +38 -6
  135. aws_cdk/aws_inspectorv2/__init__.py +2285 -243
  136. aws_cdk/aws_internetmonitor/__init__.py +71 -2
  137. aws_cdk/aws_invoicing/__init__.py +13 -2
  138. aws_cdk/aws_iot/__init__.py +1730 -86
  139. aws_cdk/aws_iotanalytics/__init__.py +162 -8
  140. aws_cdk/aws_iotcoredeviceadvisor/__init__.py +106 -40
  141. aws_cdk/aws_iotevents/__init__.py +122 -6
  142. aws_cdk/aws_iotfleethub/__init__.py +71 -2
  143. aws_cdk/aws_iotfleetwise/__init__.py +195 -14
  144. aws_cdk/aws_iotsitewise/__init__.py +1837 -89
  145. aws_cdk/aws_iotthingsgraph/__init__.py +13 -2
  146. aws_cdk/aws_iottwinmaker/__init__.py +115 -10
  147. aws_cdk/aws_iotwireless/__init__.py +649 -22
  148. aws_cdk/aws_ivs/__init__.py +561 -57
  149. aws_cdk/aws_ivschat/__init__.py +24 -4
  150. aws_cdk/aws_kafkaconnect/__init__.py +35 -6
  151. aws_cdk/aws_kendra/__init__.py +120 -28
  152. aws_cdk/aws_kendraranking/__init__.py +13 -2
  153. aws_cdk/aws_kinesis/__init__.py +622 -22
  154. aws_cdk/aws_kinesisanalytics/__init__.py +467 -94
  155. aws_cdk/aws_kinesisanalyticsv2/__init__.py +201 -11
  156. aws_cdk/aws_kinesisfirehose/__init__.py +3077 -295
  157. aws_cdk/aws_kinesisvideo/__init__.py +24 -4
  158. aws_cdk/aws_kms/__init__.py +188 -41
  159. aws_cdk/aws_lakeformation/__init__.py +80 -15
  160. aws_cdk/aws_lambda/__init__.py +2101 -252
  161. aws_cdk/aws_lambda_event_sources/__init__.py +638 -1
  162. aws_cdk/aws_lambda_nodejs/__init__.py +63 -24
  163. aws_cdk/aws_launchwizard/__init__.py +13 -2
  164. aws_cdk/aws_lex/__init__.py +871 -8
  165. aws_cdk/aws_licensemanager/__init__.py +24 -4
  166. aws_cdk/aws_lightsail/__init__.py +2159 -975
  167. aws_cdk/aws_location/__init__.py +618 -14
  168. aws_cdk/aws_logs/__init__.py +5904 -956
  169. aws_cdk/aws_lookoutequipment/__init__.py +13 -2
  170. aws_cdk/aws_lookoutmetrics/__init__.py +38 -6
  171. aws_cdk/aws_lookoutvision/__init__.py +71 -2
  172. aws_cdk/aws_m2/__init__.py +94 -19
  173. aws_cdk/aws_macie/__init__.py +49 -11
  174. aws_cdk/aws_managedblockchain/__init__.py +180 -6
  175. aws_cdk/aws_mediaconnect/__init__.py +101 -18
  176. aws_cdk/aws_mediaconvert/__init__.py +35 -6
  177. aws_cdk/aws_medialive/__init__.py +1239 -35
  178. aws_cdk/aws_mediapackage/__init__.py +59 -12
  179. aws_cdk/aws_mediapackagev2/__init__.py +1607 -225
  180. aws_cdk/aws_mediastore/__init__.py +13 -2
  181. aws_cdk/aws_mediatailor/__init__.py +583 -12
  182. aws_cdk/aws_memorydb/__init__.py +271 -12
  183. aws_cdk/aws_mpa/__init__.py +1495 -0
  184. aws_cdk/aws_msk/__init__.py +104 -18
  185. aws_cdk/aws_mwaa/__init__.py +121 -9
  186. aws_cdk/aws_neptune/__init__.py +290 -78
  187. aws_cdk/aws_neptunegraph/__init__.py +24 -4
  188. aws_cdk/aws_networkfirewall/__init__.py +1289 -273
  189. aws_cdk/aws_networkmanager/__init__.py +349 -33
  190. aws_cdk/aws_nimblestudio/__init__.py +75 -8
  191. aws_cdk/aws_notifications/__init__.py +317 -12
  192. aws_cdk/aws_notificationscontacts/__init__.py +13 -2
  193. aws_cdk/aws_oam/__init__.py +24 -4
  194. aws_cdk/aws_observabilityadmin/__init__.py +2561 -0
  195. aws_cdk/aws_odb/__init__.py +5872 -0
  196. aws_cdk/aws_omics/__init__.py +2495 -529
  197. aws_cdk/aws_opensearchserverless/__init__.py +312 -37
  198. aws_cdk/aws_opensearchservice/__init__.py +495 -19
  199. aws_cdk/aws_opsworks/__init__.py +235 -139
  200. aws_cdk/aws_opsworkscm/__init__.py +16 -52
  201. aws_cdk/aws_organizations/__init__.py +70 -10
  202. aws_cdk/aws_osis/__init__.py +167 -2
  203. aws_cdk/aws_panorama/__init__.py +151 -6
  204. aws_cdk/aws_paymentcryptography/__init__.py +24 -4
  205. aws_cdk/aws_pcaconnectorad/__init__.py +59 -10
  206. aws_cdk/aws_pcaconnectorscep/__init__.py +24 -4
  207. aws_cdk/aws_pcs/__init__.py +387 -68
  208. aws_cdk/aws_personalize/__init__.py +46 -8
  209. aws_cdk/aws_pinpoint/__init__.py +329 -38
  210. aws_cdk/aws_pinpointemail/__init__.py +48 -8
  211. aws_cdk/aws_pipes/__init__.py +12 -2
  212. aws_cdk/aws_proton/__init__.py +37 -6
  213. aws_cdk/aws_qbusiness/__init__.py +635 -34
  214. aws_cdk/aws_qldb/__init__.py +24 -4
  215. aws_cdk/aws_quicksight/__init__.py +7900 -1160
  216. aws_cdk/aws_ram/__init__.py +24 -4
  217. aws_cdk/aws_rbin/__init__.py +12 -2
  218. aws_cdk/aws_rds/__init__.py +3345 -512
  219. aws_cdk/aws_redshift/__init__.py +143 -20
  220. aws_cdk/aws_redshiftserverless/__init__.py +692 -4
  221. aws_cdk/aws_refactorspaces/__init__.py +64 -14
  222. aws_cdk/aws_rekognition/__init__.py +93 -6
  223. aws_cdk/aws_resiliencehub/__init__.py +24 -4
  224. aws_cdk/aws_resourceexplorer2/__init__.py +35 -6
  225. aws_cdk/aws_resourcegroups/__init__.py +82 -4
  226. aws_cdk/aws_robomaker/__init__.py +72 -12
  227. aws_cdk/aws_rolesanywhere/__init__.py +180 -6
  228. aws_cdk/aws_route53/__init__.py +3273 -1442
  229. aws_cdk/aws_route53_targets/__init__.py +3 -0
  230. aws_cdk/aws_route53profiles/__init__.py +37 -6
  231. aws_cdk/aws_route53recoverycontrol/__init__.py +46 -8
  232. aws_cdk/aws_route53recoveryreadiness/__init__.py +104 -8
  233. aws_cdk/aws_route53resolver/__init__.py +226 -36
  234. aws_cdk/aws_rtbfabric/__init__.py +3498 -0
  235. aws_cdk/aws_rum/__init__.py +13 -2
  236. aws_cdk/aws_s3/__init__.py +1291 -158
  237. aws_cdk/aws_s3_assets/__init__.py +11 -11
  238. aws_cdk/aws_s3_deployment/__init__.py +147 -11
  239. aws_cdk/aws_s3_notifications/__init__.py +7 -7
  240. aws_cdk/aws_s3express/__init__.py +266 -8
  241. aws_cdk/aws_s3objectlambda/__init__.py +68 -16
  242. aws_cdk/aws_s3outposts/__init__.py +46 -8
  243. aws_cdk/aws_s3tables/__init__.py +2000 -323
  244. aws_cdk/aws_s3vectors/__init__.py +1378 -0
  245. aws_cdk/aws_sagemaker/__init__.py +6617 -363
  246. aws_cdk/aws_sam/__init__.py +79 -14
  247. aws_cdk/aws_scheduler/__init__.py +237 -4
  248. aws_cdk/aws_sdb/__init__.py +12 -2
  249. aws_cdk/aws_secretsmanager/__init__.py +170 -14
  250. aws_cdk/aws_securityhub/__init__.py +3121 -176
  251. aws_cdk/aws_securitylake/__init__.py +46 -8
  252. aws_cdk/aws_servicecatalog/__init__.py +405 -246
  253. aws_cdk/aws_servicecatalogappregistry/__init__.py +164 -8
  254. aws_cdk/aws_servicediscovery/__init__.py +140 -47
  255. aws_cdk/aws_ses/__init__.py +1231 -140
  256. aws_cdk/aws_shield/__init__.py +46 -8
  257. aws_cdk/aws_signer/__init__.py +27 -4
  258. aws_cdk/aws_simspaceweaver/__init__.py +42 -2
  259. aws_cdk/aws_smsvoice/__init__.py +4716 -0
  260. aws_cdk/aws_sns/__init__.py +245 -29
  261. aws_cdk/aws_sns_subscriptions/__init__.py +3 -1
  262. aws_cdk/aws_sqs/__init__.py +211 -14
  263. aws_cdk/aws_ssm/__init__.py +401 -58
  264. aws_cdk/aws_ssmcontacts/__init__.py +46 -8
  265. aws_cdk/aws_ssmguiconnect/__init__.py +13 -2
  266. aws_cdk/aws_ssmincidents/__init__.py +24 -4
  267. aws_cdk/aws_ssmquicksetup/__init__.py +383 -6
  268. aws_cdk/aws_sso/__init__.py +70 -12
  269. aws_cdk/aws_stepfunctions/__init__.py +615 -70
  270. aws_cdk/aws_stepfunctions_tasks/__init__.py +781 -144
  271. aws_cdk/aws_supportapp/__init__.py +39 -6
  272. aws_cdk/aws_synthetics/__init__.py +861 -75
  273. aws_cdk/aws_systemsmanagersap/__init__.py +13 -2
  274. aws_cdk/aws_timestream/__init__.py +104 -8
  275. aws_cdk/aws_transfer/__init__.py +784 -87
  276. aws_cdk/aws_verifiedpermissions/__init__.py +145 -17
  277. aws_cdk/aws_voiceid/__init__.py +41 -2
  278. aws_cdk/aws_vpclattice/__init__.py +376 -30
  279. aws_cdk/aws_waf/__init__.py +79 -14
  280. aws_cdk/aws_wafregional/__init__.py +123 -22
  281. aws_cdk/aws_wafv2/__init__.py +1179 -60
  282. aws_cdk/aws_wisdom/__init__.py +1401 -90
  283. aws_cdk/aws_workspaces/__init__.py +93 -6
  284. aws_cdk/aws_workspacesinstances/__init__.py +3940 -0
  285. aws_cdk/aws_workspacesthinclient/__init__.py +79 -10
  286. aws_cdk/aws_workspacesweb/__init__.py +1057 -141
  287. aws_cdk/aws_xray/__init__.py +48 -8
  288. aws_cdk/cloud_assembly_schema/__init__.py +231 -6
  289. aws_cdk/custom_resources/__init__.py +40 -12
  290. aws_cdk/cx_api/__init__.py +85 -14
  291. aws_cdk/interfaces/__init__.py +739 -0
  292. aws_cdk/interfaces/alexa_ask/__init__.py +146 -0
  293. aws_cdk/interfaces/aws_accessanalyzer/__init__.py +146 -0
  294. aws_cdk/interfaces/aws_acmpca/__init__.py +501 -0
  295. aws_cdk/interfaces/aws_aiops/__init__.py +146 -0
  296. aws_cdk/interfaces/aws_amazonmq/__init__.py +386 -0
  297. aws_cdk/interfaces/aws_amplify/__init__.py +352 -0
  298. aws_cdk/interfaces/aws_amplifyuibuilder/__init__.py +454 -0
  299. aws_cdk/interfaces/aws_apigateway/__init__.py +2486 -0
  300. aws_cdk/interfaces/aws_apigatewayv2/__init__.py +1651 -0
  301. aws_cdk/interfaces/aws_appconfig/__init__.py +1020 -0
  302. aws_cdk/interfaces/aws_appflow/__init__.py +404 -0
  303. aws_cdk/interfaces/aws_appintegrations/__init__.py +396 -0
  304. aws_cdk/interfaces/aws_applicationautoscaling/__init__.py +307 -0
  305. aws_cdk/interfaces/aws_applicationinsights/__init__.py +148 -0
  306. aws_cdk/interfaces/aws_applicationsignals/__init__.py +358 -0
  307. aws_cdk/interfaces/aws_appmesh/__init__.py +888 -0
  308. aws_cdk/interfaces/aws_apprunner/__init__.py +564 -0
  309. aws_cdk/interfaces/aws_appstream/__init__.py +1482 -0
  310. aws_cdk/interfaces/aws_appsync/__init__.py +1326 -0
  311. aws_cdk/interfaces/aws_apptest/__init__.py +163 -0
  312. aws_cdk/interfaces/aws_aps/__init__.py +558 -0
  313. aws_cdk/interfaces/aws_arcregionswitch/__init__.py +146 -0
  314. aws_cdk/interfaces/aws_arczonalshift/__init__.py +273 -0
  315. aws_cdk/interfaces/aws_athena/__init__.py +575 -0
  316. aws_cdk/interfaces/aws_auditmanager/__init__.py +163 -0
  317. aws_cdk/interfaces/aws_autoscaling/__init__.py +705 -0
  318. aws_cdk/interfaces/aws_autoscalingplans/__init__.py +148 -0
  319. aws_cdk/interfaces/aws_b2bi/__init__.py +524 -0
  320. aws_cdk/interfaces/aws_backup/__init__.py +955 -0
  321. aws_cdk/interfaces/aws_backupgateway/__init__.py +146 -0
  322. aws_cdk/interfaces/aws_batch/__init__.py +681 -0
  323. aws_cdk/interfaces/aws_bcmdataexports/__init__.py +146 -0
  324. aws_cdk/interfaces/aws_bedrock/__init__.py +1942 -0
  325. aws_cdk/interfaces/aws_bedrockagentcore/__init__.py +934 -0
  326. aws_cdk/interfaces/aws_billing/__init__.py +146 -0
  327. aws_cdk/interfaces/aws_billingconductor/__init__.py +463 -0
  328. aws_cdk/interfaces/aws_budgets/__init__.py +261 -0
  329. aws_cdk/interfaces/aws_cassandra/__init__.py +381 -0
  330. aws_cdk/interfaces/aws_ce/__init__.py +352 -0
  331. aws_cdk/interfaces/aws_certificatemanager/__init__.py +251 -0
  332. aws_cdk/interfaces/aws_chatbot/__init__.py +366 -0
  333. aws_cdk/interfaces/aws_cleanrooms/__init__.py +1103 -0
  334. aws_cdk/interfaces/aws_cleanroomsml/__init__.py +148 -0
  335. aws_cdk/interfaces/aws_cloud9/__init__.py +166 -0
  336. aws_cdk/interfaces/aws_cloudformation/__init__.py +1919 -0
  337. aws_cdk/interfaces/aws_cloudfront/__init__.py +1998 -0
  338. aws_cdk/interfaces/aws_cloudtrail/__init__.py +570 -0
  339. aws_cdk/interfaces/aws_cloudwatch/__init__.py +733 -0
  340. aws_cdk/interfaces/aws_codeartifact/__init__.py +352 -0
  341. aws_cdk/interfaces/aws_codebuild/__init__.py +487 -0
  342. aws_cdk/interfaces/aws_codecommit/__init__.py +163 -0
  343. aws_cdk/interfaces/aws_codeconnections/__init__.py +146 -0
  344. aws_cdk/interfaces/aws_codedeploy/__init__.py +352 -0
  345. aws_cdk/interfaces/aws_codeguruprofiler/__init__.py +168 -0
  346. aws_cdk/interfaces/aws_codegurureviewer/__init__.py +148 -0
  347. aws_cdk/interfaces/aws_codepipeline/__init__.py +388 -0
  348. aws_cdk/interfaces/aws_codestar/__init__.py +146 -0
  349. aws_cdk/interfaces/aws_codestarconnections/__init__.py +370 -0
  350. aws_cdk/interfaces/aws_codestarnotifications/__init__.py +148 -0
  351. aws_cdk/interfaces/aws_cognito/__init__.py +1929 -0
  352. aws_cdk/interfaces/aws_comprehend/__init__.py +251 -0
  353. aws_cdk/interfaces/aws_config/__init__.py +1165 -0
  354. aws_cdk/interfaces/aws_connect/__init__.py +2949 -0
  355. aws_cdk/interfaces/aws_connectcampaigns/__init__.py +146 -0
  356. aws_cdk/interfaces/aws_connectcampaignsv2/__init__.py +146 -0
  357. aws_cdk/interfaces/aws_controltower/__init__.py +394 -0
  358. aws_cdk/interfaces/aws_cur/__init__.py +146 -0
  359. aws_cdk/interfaces/aws_customerprofiles/__init__.py +915 -0
  360. aws_cdk/interfaces/aws_databrew/__init__.py +661 -0
  361. aws_cdk/interfaces/aws_datapipeline/__init__.py +146 -0
  362. aws_cdk/interfaces/aws_datasync/__init__.py +1384 -0
  363. aws_cdk/interfaces/aws_datazone/__init__.py +2238 -0
  364. aws_cdk/interfaces/aws_dax/__init__.py +364 -0
  365. aws_cdk/interfaces/aws_deadline/__init__.py +1303 -0
  366. aws_cdk/interfaces/aws_detective/__init__.py +364 -0
  367. aws_cdk/interfaces/aws_devicefarm/__init__.py +663 -0
  368. aws_cdk/interfaces/aws_devopsguru/__init__.py +362 -0
  369. aws_cdk/interfaces/aws_directoryservice/__init__.py +251 -0
  370. aws_cdk/interfaces/aws_dlm/__init__.py +166 -0
  371. aws_cdk/interfaces/aws_dms/__init__.py +1176 -0
  372. aws_cdk/interfaces/aws_docdb/__init__.py +560 -0
  373. aws_cdk/interfaces/aws_docdbelastic/__init__.py +146 -0
  374. aws_cdk/interfaces/aws_dsql/__init__.py +146 -0
  375. aws_cdk/interfaces/aws_dynamodb/__init__.py +278 -0
  376. aws_cdk/interfaces/aws_ec2/__init__.py +11963 -0
  377. aws_cdk/interfaces/aws_ecr/__init__.py +814 -0
  378. aws_cdk/interfaces/aws_ecs/__init__.py +845 -0
  379. aws_cdk/interfaces/aws_efs/__init__.py +392 -0
  380. aws_cdk/interfaces/aws_eks/__init__.py +948 -0
  381. aws_cdk/interfaces/aws_elasticache/__init__.py +1108 -0
  382. aws_cdk/interfaces/aws_elasticbeanstalk/__init__.py +503 -0
  383. aws_cdk/interfaces/aws_elasticloadbalancing/__init__.py +148 -0
  384. aws_cdk/interfaces/aws_elasticloadbalancingv2/__init__.py +795 -0
  385. aws_cdk/interfaces/aws_elasticsearch/__init__.py +158 -0
  386. aws_cdk/interfaces/aws_emr/__init__.py +913 -0
  387. aws_cdk/interfaces/aws_emrcontainers/__init__.py +168 -0
  388. aws_cdk/interfaces/aws_emrserverless/__init__.py +166 -0
  389. aws_cdk/interfaces/aws_entityresolution/__init__.py +608 -0
  390. aws_cdk/interfaces/aws_events/__init__.py +872 -0
  391. aws_cdk/interfaces/aws_eventschemas/__init__.py +455 -0
  392. aws_cdk/interfaces/aws_evidently/__init__.py +558 -0
  393. aws_cdk/interfaces/aws_evs/__init__.py +166 -0
  394. aws_cdk/interfaces/aws_finspace/__init__.py +166 -0
  395. aws_cdk/interfaces/aws_fis/__init__.py +271 -0
  396. aws_cdk/interfaces/aws_fms/__init__.py +364 -0
  397. aws_cdk/interfaces/aws_forecast/__init__.py +249 -0
  398. aws_cdk/interfaces/aws_frauddetector/__init__.py +764 -0
  399. aws_cdk/interfaces/aws_fsx/__init__.py +663 -0
  400. aws_cdk/interfaces/aws_gamelift/__init__.py +1325 -0
  401. aws_cdk/interfaces/aws_gameliftstreams/__init__.py +249 -0
  402. aws_cdk/interfaces/aws_globalaccelerator/__init__.py +461 -0
  403. aws_cdk/interfaces/aws_glue/__init__.py +2377 -0
  404. aws_cdk/interfaces/aws_grafana/__init__.py +146 -0
  405. aws_cdk/interfaces/aws_greengrass/__init__.py +1871 -0
  406. aws_cdk/interfaces/aws_greengrassv2/__init__.py +251 -0
  407. aws_cdk/interfaces/aws_groundstation/__init__.py +396 -0
  408. aws_cdk/interfaces/aws_guardduty/__init__.py +1225 -0
  409. aws_cdk/interfaces/aws_healthimaging/__init__.py +163 -0
  410. aws_cdk/interfaces/aws_healthlake/__init__.py +146 -0
  411. aws_cdk/interfaces/aws_iam/__init__.py +1803 -0
  412. aws_cdk/interfaces/aws_identitystore/__init__.py +288 -0
  413. aws_cdk/interfaces/aws_imagebuilder/__init__.py +984 -0
  414. aws_cdk/interfaces/aws_inspector/__init__.py +354 -0
  415. aws_cdk/interfaces/aws_inspectorv2/__init__.py +467 -0
  416. aws_cdk/interfaces/aws_internetmonitor/__init__.py +163 -0
  417. aws_cdk/interfaces/aws_invoicing/__init__.py +146 -0
  418. aws_cdk/interfaces/aws_iot/__init__.py +3483 -0
  419. aws_cdk/interfaces/aws_iotanalytics/__init__.py +455 -0
  420. aws_cdk/interfaces/aws_iotcoredeviceadvisor/__init__.py +168 -0
  421. aws_cdk/interfaces/aws_iotevents/__init__.py +352 -0
  422. aws_cdk/interfaces/aws_iotfleethub/__init__.py +166 -0
  423. aws_cdk/interfaces/aws_iotfleetwise/__init__.py +892 -0
  424. aws_cdk/interfaces/aws_iotsitewise/__init__.py +1097 -0
  425. aws_cdk/interfaces/aws_iotthingsgraph/__init__.py +146 -0
  426. aws_cdk/interfaces/aws_iottwinmaker/__init__.py +711 -0
  427. aws_cdk/interfaces/aws_iotwireless/__init__.py +1401 -0
  428. aws_cdk/interfaces/aws_ivs/__init__.py +1075 -0
  429. aws_cdk/interfaces/aws_ivschat/__init__.py +251 -0
  430. aws_cdk/interfaces/aws_kafkaconnect/__init__.py +354 -0
  431. aws_cdk/interfaces/aws_kendra/__init__.py +428 -0
  432. aws_cdk/interfaces/aws_kendraranking/__init__.py +166 -0
  433. aws_cdk/interfaces/aws_kinesis/__init__.py +364 -0
  434. aws_cdk/interfaces/aws_kinesisanalytics/__init__.py +364 -0
  435. aws_cdk/interfaces/aws_kinesisanalyticsv2/__init__.py +479 -0
  436. aws_cdk/interfaces/aws_kinesisfirehose/__init__.py +168 -0
  437. aws_cdk/interfaces/aws_kinesisvideo/__init__.py +283 -0
  438. aws_cdk/interfaces/aws_kms/__init__.py +376 -0
  439. aws_cdk/interfaces/aws_lakeformation/__init__.py +860 -0
  440. aws_cdk/interfaces/aws_lambda/__init__.py +1141 -0
  441. aws_cdk/interfaces/aws_launchwizard/__init__.py +146 -0
  442. aws_cdk/interfaces/aws_lex/__init__.py +513 -0
  443. aws_cdk/interfaces/aws_licensemanager/__init__.py +249 -0
  444. aws_cdk/interfaces/aws_lightsail/__init__.py +1744 -0
  445. aws_cdk/interfaces/aws_location/__init__.py +879 -0
  446. aws_cdk/interfaces/aws_logs/__init__.py +1667 -0
  447. aws_cdk/interfaces/aws_lookoutequipment/__init__.py +168 -0
  448. aws_cdk/interfaces/aws_lookoutmetrics/__init__.py +251 -0
  449. aws_cdk/interfaces/aws_lookoutvision/__init__.py +163 -0
  450. aws_cdk/interfaces/aws_m2/__init__.py +352 -0
  451. aws_cdk/interfaces/aws_macie/__init__.py +512 -0
  452. aws_cdk/interfaces/aws_managedblockchain/__init__.py +381 -0
  453. aws_cdk/interfaces/aws_mediaconnect/__init__.py +1028 -0
  454. aws_cdk/interfaces/aws_mediaconvert/__init__.py +396 -0
  455. aws_cdk/interfaces/aws_medialive/__init__.py +1755 -0
  456. aws_cdk/interfaces/aws_mediapackage/__init__.py +644 -0
  457. aws_cdk/interfaces/aws_mediapackagev2/__init__.py +618 -0
  458. aws_cdk/interfaces/aws_mediastore/__init__.py +146 -0
  459. aws_cdk/interfaces/aws_mediatailor/__init__.py +788 -0
  460. aws_cdk/interfaces/aws_memorydb/__init__.py +685 -0
  461. aws_cdk/interfaces/aws_mpa/__init__.py +249 -0
  462. aws_cdk/interfaces/aws_msk/__init__.py +764 -0
  463. aws_cdk/interfaces/aws_mwaa/__init__.py +166 -0
  464. aws_cdk/interfaces/aws_neptune/__init__.py +663 -0
  465. aws_cdk/interfaces/aws_neptunegraph/__init__.py +265 -0
  466. aws_cdk/interfaces/aws_networkfirewall/__init__.py +669 -0
  467. aws_cdk/interfaces/aws_networkmanager/__init__.py +1832 -0
  468. aws_cdk/interfaces/aws_nimblestudio/__init__.py +388 -0
  469. aws_cdk/interfaces/aws_notifications/__init__.py +868 -0
  470. aws_cdk/interfaces/aws_notificationscontacts/__init__.py +148 -0
  471. aws_cdk/interfaces/aws_oam/__init__.py +249 -0
  472. aws_cdk/interfaces/aws_observabilityadmin/__init__.py +362 -0
  473. aws_cdk/interfaces/aws_odb/__init__.py +562 -0
  474. aws_cdk/interfaces/aws_omics/__init__.py +838 -0
  475. aws_cdk/interfaces/aws_opensearchserverless/__init__.py +859 -0
  476. aws_cdk/interfaces/aws_opensearchservice/__init__.py +283 -0
  477. aws_cdk/interfaces/aws_opsworks/__init__.py +772 -0
  478. aws_cdk/interfaces/aws_opsworkscm/__init__.py +146 -0
  479. aws_cdk/interfaces/aws_organizations/__init__.py +646 -0
  480. aws_cdk/interfaces/aws_osis/__init__.py +146 -0
  481. aws_cdk/interfaces/aws_panorama/__init__.py +420 -0
  482. aws_cdk/interfaces/aws_paymentcryptography/__init__.py +249 -0
  483. aws_cdk/interfaces/aws_pcaconnectorad/__init__.py +608 -0
  484. aws_cdk/interfaces/aws_pcaconnectorscep/__init__.py +249 -0
  485. aws_cdk/interfaces/aws_pcs/__init__.py +352 -0
  486. aws_cdk/interfaces/aws_personalize/__init__.py +455 -0
  487. aws_cdk/interfaces/aws_pinpoint/__init__.py +2125 -0
  488. aws_cdk/interfaces/aws_pinpointemail/__init__.py +467 -0
  489. aws_cdk/interfaces/aws_pipes/__init__.py +158 -0
  490. aws_cdk/interfaces/aws_proton/__init__.py +360 -0
  491. aws_cdk/interfaces/aws_qbusiness/__init__.py +1122 -0
  492. aws_cdk/interfaces/aws_qldb/__init__.py +283 -0
  493. aws_cdk/interfaces/aws_quicksight/__init__.py +1566 -0
  494. aws_cdk/interfaces/aws_ram/__init__.py +249 -0
  495. aws_cdk/interfaces/aws_rbin/__init__.py +146 -0
  496. aws_cdk/interfaces/aws_rds/__init__.py +1780 -0
  497. aws_cdk/interfaces/aws_redshift/__init__.py +1104 -0
  498. aws_cdk/interfaces/aws_redshiftserverless/__init__.py +356 -0
  499. aws_cdk/interfaces/aws_refactorspaces/__init__.py +605 -0
  500. aws_cdk/interfaces/aws_rekognition/__init__.py +406 -0
  501. aws_cdk/interfaces/aws_resiliencehub/__init__.py +251 -0
  502. aws_cdk/interfaces/aws_resourceexplorer2/__init__.py +354 -0
  503. aws_cdk/interfaces/aws_resourcegroups/__init__.py +261 -0
  504. aws_cdk/interfaces/aws_robomaker/__init__.py +673 -0
  505. aws_cdk/interfaces/aws_rolesanywhere/__init__.py +384 -0
  506. aws_cdk/interfaces/aws_route53/__init__.py +804 -0
  507. aws_cdk/interfaces/aws_route53profiles/__init__.py +368 -0
  508. aws_cdk/interfaces/aws_route53recoverycontrol/__init__.py +463 -0
  509. aws_cdk/interfaces/aws_route53recoveryreadiness/__init__.py +535 -0
  510. aws_cdk/interfaces/aws_route53resolver/__init__.py +1356 -0
  511. aws_cdk/interfaces/aws_rtbfabric/__init__.py +352 -0
  512. aws_cdk/interfaces/aws_rum/__init__.py +146 -0
  513. aws_cdk/interfaces/aws_s3/__init__.py +1171 -0
  514. aws_cdk/interfaces/aws_s3express/__init__.py +392 -0
  515. aws_cdk/interfaces/aws_s3objectlambda/__init__.py +271 -0
  516. aws_cdk/interfaces/aws_s3outposts/__init__.py +455 -0
  517. aws_cdk/interfaces/aws_s3tables/__init__.py +575 -0
  518. aws_cdk/interfaces/aws_s3vectors/__init__.py +354 -0
  519. aws_cdk/interfaces/aws_sagemaker/__init__.py +3797 -0
  520. aws_cdk/interfaces/aws_sam/__init__.py +603 -0
  521. aws_cdk/interfaces/aws_scheduler/__init__.py +286 -0
  522. aws_cdk/interfaces/aws_sdb/__init__.py +146 -0
  523. aws_cdk/interfaces/aws_secretsmanager/__init__.py +461 -0
  524. aws_cdk/interfaces/aws_securityhub/__init__.py +1499 -0
  525. aws_cdk/interfaces/aws_securitylake/__init__.py +474 -0
  526. aws_cdk/interfaces/aws_servicecatalog/__init__.py +1829 -0
  527. aws_cdk/interfaces/aws_servicecatalogappregistry/__init__.py +557 -0
  528. aws_cdk/interfaces/aws_servicediscovery/__init__.py +636 -0
  529. aws_cdk/interfaces/aws_ses/__init__.py +2018 -0
  530. aws_cdk/interfaces/aws_shield/__init__.py +455 -0
  531. aws_cdk/interfaces/aws_signer/__init__.py +266 -0
  532. aws_cdk/interfaces/aws_simspaceweaver/__init__.py +146 -0
  533. aws_cdk/interfaces/aws_smsvoice/__init__.py +892 -0
  534. aws_cdk/interfaces/aws_sns/__init__.py +455 -0
  535. aws_cdk/interfaces/aws_sqs/__init__.py +364 -0
  536. aws_cdk/interfaces/aws_ssm/__init__.py +982 -0
  537. aws_cdk/interfaces/aws_ssmcontacts/__init__.py +455 -0
  538. aws_cdk/interfaces/aws_ssmguiconnect/__init__.py +146 -0
  539. aws_cdk/interfaces/aws_ssmincidents/__init__.py +249 -0
  540. aws_cdk/interfaces/aws_ssmquicksetup/__init__.py +253 -0
  541. aws_cdk/interfaces/aws_sso/__init__.py +797 -0
  542. aws_cdk/interfaces/aws_stepfunctions/__init__.py +459 -0
  543. aws_cdk/interfaces/aws_supportapp/__init__.py +372 -0
  544. aws_cdk/interfaces/aws_synthetics/__init__.py +249 -0
  545. aws_cdk/interfaces/aws_systemsmanagersap/__init__.py +148 -0
  546. aws_cdk/interfaces/aws_timestream/__init__.py +526 -0
  547. aws_cdk/interfaces/aws_transfer/__init__.py +967 -0
  548. aws_cdk/interfaces/aws_verifiedpermissions/__init__.py +538 -0
  549. aws_cdk/interfaces/aws_voiceid/__init__.py +146 -0
  550. aws_cdk/interfaces/aws_vpclattice/__init__.py +1418 -0
  551. aws_cdk/interfaces/aws_waf/__init__.py +764 -0
  552. aws_cdk/interfaces/aws_wafregional/__init__.py +1182 -0
  553. aws_cdk/interfaces/aws_wafv2/__init__.py +870 -0
  554. aws_cdk/interfaces/aws_wisdom/__init__.py +1556 -0
  555. aws_cdk/interfaces/aws_workspaces/__init__.py +352 -0
  556. aws_cdk/interfaces/aws_workspacesinstances/__init__.py +390 -0
  557. aws_cdk/interfaces/aws_workspacesthinclient/__init__.py +168 -0
  558. aws_cdk/interfaces/aws_workspacesweb/__init__.py +1085 -0
  559. aws_cdk/interfaces/aws_xray/__init__.py +457 -0
  560. aws_cdk/pipelines/__init__.py +192 -42
  561. aws_cdk/region_info/__init__.py +3 -0
  562. aws_cdk/triggers/__init__.py +60 -18
  563. {aws_cdk_lib-2.200.2.dist-info → aws_cdk_lib-2.224.0.dist-info}/METADATA +338 -16
  564. aws_cdk_lib-2.224.0.dist-info/RECORD +584 -0
  565. aws_cdk_lib-2.200.2.dist-info/RECORD +0 -304
  566. {aws_cdk_lib-2.200.2.dist-info → aws_cdk_lib-2.224.0.dist-info}/LICENSE +0 -0
  567. {aws_cdk_lib-2.200.2.dist-info → aws_cdk_lib-2.224.0.dist-info}/NOTICE +0 -0
  568. {aws_cdk_lib-2.200.2.dist-info → aws_cdk_lib-2.224.0.dist-info}/WHEEL +0 -0
  569. {aws_cdk_lib-2.200.2.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
@@ -1075,6 +1091,28 @@ from ..aws_iam import (
1075
1091
  PolicyStatement as _PolicyStatement_0fe33853,
1076
1092
  )
1077
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
+ )
1078
1116
 
1079
1117
 
1080
1118
  class BlockPublicAccess(
@@ -1086,8 +1124,15 @@ class BlockPublicAccess(
1086
1124
 
1087
1125
  Example::
1088
1126
 
1089
- bucket = s3.Bucket(self, "MyBlockedBucket",
1090
- block_public_access=s3.BlockPublicAccess(block_public_policy=False)
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
1091
1136
  )
1092
1137
  '''
1093
1138
 
@@ -1607,16 +1652,17 @@ class BucketEncryption(enum.Enum):
1607
1652
 
1608
1653
  Example::
1609
1654
 
1610
- from aws_cdk.aws_s3 import BucketEncryption
1655
+ # application: appconfig.Application
1611
1656
 
1612
1657
 
1613
- app = App(
1614
- default_stack_synthesizer=AppStagingSynthesizer.default_resources(
1615
- app_id="my-app-id",
1616
- staging_bucket_encryption=BucketEncryption.S3_MANAGED,
1617
- file_asset_publishing_role=BootstrapRole.from_role_arn("arn:aws:iam::123456789012:role/S3Access"),
1618
- image_asset_publishing_role=BootstrapRole.from_role_arn("arn:aws:iam::123456789012:role/ECRAccess")
1619
- )
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")
1620
1666
  )
1621
1667
  '''
1622
1668
 
@@ -1830,6 +1876,7 @@ class BucketNotificationDestinationType(enum.Enum):
1830
1876
  TOPIC = "TOPIC"
1831
1877
 
1832
1878
 
1879
+ @jsii.implements(_IBucketPolicyRef_8ee2499d)
1833
1880
  class BucketPolicy(
1834
1881
  _Resource_45bc6135,
1835
1882
  metaclass=jsii.JSIIMeta,
@@ -1904,19 +1951,23 @@ class BucketPolicy(
1904
1951
  id: builtins.str,
1905
1952
  *,
1906
1953
  bucket: "IBucket",
1954
+ document: typing.Optional[_PolicyDocument_3ac34393] = None,
1907
1955
  removal_policy: typing.Optional[_RemovalPolicy_9f93c814] = None,
1908
1956
  ) -> None:
1909
1957
  '''
1910
1958
  :param scope: -
1911
1959
  :param id: -
1912
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.
1913
1962
  :param removal_policy: Policy to apply when the policy is removed from this stack. Default: - RemovalPolicy.DESTROY.
1914
1963
  '''
1915
1964
  if __debug__:
1916
1965
  type_hints = typing.get_type_hints(_typecheckingstub__910b3df1208e67cb52dad0b0b8c5feb43c7bddb0ced50eaf6c953477298a840e)
1917
1966
  check_type(argname="argument scope", value=scope, expected_type=type_hints["scope"])
1918
1967
  check_type(argname="argument id", value=id, expected_type=type_hints["id"])
1919
- props = BucketPolicyProps(bucket=bucket, removal_policy=removal_policy)
1968
+ props = BucketPolicyProps(
1969
+ bucket=bucket, document=document, removal_policy=removal_policy
1970
+ )
1920
1971
 
1921
1972
  jsii.create(self.__class__, self, [scope, id, props])
1922
1973
 
@@ -1958,6 +2009,12 @@ class BucketPolicy(
1958
2009
  '''The Bucket this Policy applies to.'''
1959
2010
  return typing.cast("IBucket", jsii.get(self, "bucket"))
1960
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
+
1961
2018
  @builtins.property
1962
2019
  @jsii.member(jsii_name="document")
1963
2020
  def document(self) -> _PolicyDocument_3ac34393:
@@ -1972,17 +2029,23 @@ class BucketPolicy(
1972
2029
  @jsii.data_type(
1973
2030
  jsii_type="aws-cdk-lib.aws_s3.BucketPolicyProps",
1974
2031
  jsii_struct_bases=[],
1975
- name_mapping={"bucket": "bucket", "removal_policy": "removalPolicy"},
2032
+ name_mapping={
2033
+ "bucket": "bucket",
2034
+ "document": "document",
2035
+ "removal_policy": "removalPolicy",
2036
+ },
1976
2037
  )
1977
2038
  class BucketPolicyProps:
1978
2039
  def __init__(
1979
2040
  self,
1980
2041
  *,
1981
2042
  bucket: "IBucket",
2043
+ document: typing.Optional[_PolicyDocument_3ac34393] = None,
1982
2044
  removal_policy: typing.Optional[_RemovalPolicy_9f93c814] = None,
1983
2045
  ) -> None:
1984
2046
  '''
1985
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.
1986
2049
  :param removal_policy: Policy to apply when the policy is removed from this stack. Default: - RemovalPolicy.DESTROY.
1987
2050
 
1988
2051
  :exampleMetadata: fixture=_generated
@@ -1992,24 +2055,30 @@ class BucketPolicyProps:
1992
2055
  # The code below shows an example of how to instantiate this type.
1993
2056
  # The values are placeholders you should change.
1994
2057
  import aws_cdk as cdk
2058
+ from aws_cdk import aws_iam as iam
1995
2059
  from aws_cdk import aws_s3 as s3
1996
2060
 
1997
2061
  # bucket: s3.Bucket
2062
+ # policy_document: iam.PolicyDocument
1998
2063
 
1999
2064
  bucket_policy_props = s3.BucketPolicyProps(
2000
2065
  bucket=bucket,
2001
2066
 
2002
2067
  # the properties below are optional
2068
+ document=policy_document,
2003
2069
  removal_policy=cdk.RemovalPolicy.DESTROY
2004
2070
  )
2005
2071
  '''
2006
2072
  if __debug__:
2007
2073
  type_hints = typing.get_type_hints(_typecheckingstub__4d7b9233434273933326211f004f27c2982fedd89ad904dc86d84c54f0f50ac6)
2008
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"])
2009
2076
  check_type(argname="argument removal_policy", value=removal_policy, expected_type=type_hints["removal_policy"])
2010
2077
  self._values: typing.Dict[builtins.str, typing.Any] = {
2011
2078
  "bucket": bucket,
2012
2079
  }
2080
+ if document is not None:
2081
+ self._values["document"] = document
2013
2082
  if removal_policy is not None:
2014
2083
  self._values["removal_policy"] = removal_policy
2015
2084
 
@@ -2020,6 +2089,15 @@ class BucketPolicyProps:
2020
2089
  assert result is not None, "Required property 'bucket' is missing"
2021
2090
  return typing.cast("IBucket", result)
2022
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
+
2023
2101
  @builtins.property
2024
2102
  def removal_policy(self) -> typing.Optional[_RemovalPolicy_9f93c814]:
2025
2103
  '''Policy to apply when the policy is removed from this stack.
@@ -2685,7 +2763,7 @@ class BucketProps:
2685
2763
  )
2686
2764
 
2687
2765
 
2688
- @jsii.implements(_IInspectable_c2943556, _ITaggableV2_4e6798f8)
2766
+ @jsii.implements(_IInspectable_c2943556, _IAccessGrantRef_0e7c5209, _ITaggableV2_4e6798f8)
2689
2767
  class CfnAccessGrant(
2690
2768
  _CfnResource_9df397a6,
2691
2769
  metaclass=jsii.JSIIMeta,
@@ -2746,7 +2824,8 @@ class CfnAccessGrant(
2746
2824
  s3_prefix_type: typing.Optional[builtins.str] = None,
2747
2825
  tags: typing.Optional[typing.Sequence[typing.Union[_CfnTag_f6864754, typing.Dict[builtins.str, typing.Any]]]] = None,
2748
2826
  ) -> None:
2749
- '''
2827
+ '''Create a new ``AWS::S3::AccessGrant``.
2828
+
2750
2829
  :param scope: Scope in which this resource is defined.
2751
2830
  :param id: Construct identifier for this resource (unique in its scope).
2752
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.
@@ -2803,6 +2882,12 @@ class CfnAccessGrant(
2803
2882
  '''The CloudFormation resource type name for this resource class.'''
2804
2883
  return typing.cast(builtins.str, jsii.sget(cls, "CFN_RESOURCE_TYPE_NAME"))
2805
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
+
2806
2891
  @builtins.property
2807
2892
  @jsii.member(jsii_name="attrAccessGrantArn")
2808
2893
  def attr_access_grant_arn(self) -> builtins.str:
@@ -3271,7 +3356,7 @@ class CfnAccessGrantProps:
3271
3356
  )
3272
3357
 
3273
3358
 
3274
- @jsii.implements(_IInspectable_c2943556, _ITaggableV2_4e6798f8)
3359
+ @jsii.implements(_IInspectable_c2943556, _IAccessGrantsInstanceRef_94e5b823, _ITaggableV2_4e6798f8)
3275
3360
  class CfnAccessGrantsInstance(
3276
3361
  _CfnResource_9df397a6,
3277
3362
  metaclass=jsii.JSIIMeta,
@@ -3311,7 +3396,8 @@ class CfnAccessGrantsInstance(
3311
3396
  identity_center_arn: typing.Optional[builtins.str] = None,
3312
3397
  tags: typing.Optional[typing.Sequence[typing.Union[_CfnTag_f6864754, typing.Dict[builtins.str, typing.Any]]]] = None,
3313
3398
  ) -> None:
3314
- '''
3399
+ '''Create a new ``AWS::S3::AccessGrantsInstance``.
3400
+
3315
3401
  :param scope: Scope in which this resource is defined.
3316
3402
  :param id: Construct identifier for this resource (unique in its scope).
3317
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.
@@ -3357,6 +3443,12 @@ class CfnAccessGrantsInstance(
3357
3443
  '''The CloudFormation resource type name for this resource class.'''
3358
3444
  return typing.cast(builtins.str, jsii.sget(cls, "CFN_RESOURCE_TYPE_NAME"))
3359
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
+
3360
3452
  @builtins.property
3361
3453
  @jsii.member(jsii_name="attrAccessGrantsInstanceArn")
3362
3454
  def attr_access_grants_instance_arn(self) -> builtins.str:
@@ -3493,7 +3585,7 @@ class CfnAccessGrantsInstanceProps:
3493
3585
  )
3494
3586
 
3495
3587
 
3496
- @jsii.implements(_IInspectable_c2943556, _ITaggableV2_4e6798f8)
3588
+ @jsii.implements(_IInspectable_c2943556, _IAccessGrantsLocationRef_5ae01054, _ITaggableV2_4e6798f8)
3497
3589
  class CfnAccessGrantsLocation(
3498
3590
  _CfnResource_9df397a6,
3499
3591
  metaclass=jsii.JSIIMeta,
@@ -3525,6 +3617,8 @@ class CfnAccessGrantsLocation(
3525
3617
  cfn_access_grants_location = s3.CfnAccessGrantsLocation(self, "MyCfnAccessGrantsLocation",
3526
3618
  iam_role_arn="iamRoleArn",
3527
3619
  location_scope="locationScope",
3620
+
3621
+ # the properties below are optional
3528
3622
  tags=[CfnTag(
3529
3623
  key="key",
3530
3624
  value="value"
@@ -3537,11 +3631,12 @@ class CfnAccessGrantsLocation(
3537
3631
  scope: _constructs_77d1e7e8.Construct,
3538
3632
  id: builtins.str,
3539
3633
  *,
3540
- iam_role_arn: typing.Optional[builtins.str] = None,
3541
- location_scope: typing.Optional[builtins.str] = None,
3634
+ iam_role_arn: builtins.str,
3635
+ location_scope: builtins.str,
3542
3636
  tags: typing.Optional[typing.Sequence[typing.Union[_CfnTag_f6864754, typing.Dict[builtins.str, typing.Any]]]] = None,
3543
3637
  ) -> None:
3544
- '''
3638
+ '''Create a new ``AWS::S3::AccessGrantsLocation``.
3639
+
3545
3640
  :param scope: Scope in which this resource is defined.
3546
3641
  :param id: Construct identifier for this resource (unique in its scope).
3547
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.
@@ -3588,6 +3683,12 @@ class CfnAccessGrantsLocation(
3588
3683
  '''The CloudFormation resource type name for this resource class.'''
3589
3684
  return typing.cast(builtins.str, jsii.sget(cls, "CFN_RESOURCE_TYPE_NAME"))
3590
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
+
3591
3692
  @builtins.property
3592
3693
  @jsii.member(jsii_name="attrAccessGrantsLocationArn")
3593
3694
  def attr_access_grants_location_arn(self) -> builtins.str:
@@ -3621,12 +3722,12 @@ class CfnAccessGrantsLocation(
3621
3722
 
3622
3723
  @builtins.property
3623
3724
  @jsii.member(jsii_name="iamRoleArn")
3624
- def iam_role_arn(self) -> typing.Optional[builtins.str]:
3725
+ def iam_role_arn(self) -> builtins.str:
3625
3726
  '''The Amazon Resource Name (ARN) of the IAM role for the registered location.'''
3626
- return typing.cast(typing.Optional[builtins.str], jsii.get(self, "iamRoleArn"))
3727
+ return typing.cast(builtins.str, jsii.get(self, "iamRoleArn"))
3627
3728
 
3628
3729
  @iam_role_arn.setter
3629
- def iam_role_arn(self, value: typing.Optional[builtins.str]) -> None:
3730
+ def iam_role_arn(self, value: builtins.str) -> None:
3630
3731
  if __debug__:
3631
3732
  type_hints = typing.get_type_hints(_typecheckingstub__c6ad3ea630d95d457364fa227ccc4159df9b2fe48cab3fd14afc7301612ddce6)
3632
3733
  check_type(argname="argument value", value=value, expected_type=type_hints["value"])
@@ -3634,12 +3735,12 @@ class CfnAccessGrantsLocation(
3634
3735
 
3635
3736
  @builtins.property
3636
3737
  @jsii.member(jsii_name="locationScope")
3637
- def location_scope(self) -> typing.Optional[builtins.str]:
3738
+ def location_scope(self) -> builtins.str:
3638
3739
  '''The S3 URI path to the location that you are registering.'''
3639
- return typing.cast(typing.Optional[builtins.str], jsii.get(self, "locationScope"))
3740
+ return typing.cast(builtins.str, jsii.get(self, "locationScope"))
3640
3741
 
3641
3742
  @location_scope.setter
3642
- def location_scope(self, value: typing.Optional[builtins.str]) -> None:
3743
+ def location_scope(self, value: builtins.str) -> None:
3643
3744
  if __debug__:
3644
3745
  type_hints = typing.get_type_hints(_typecheckingstub__80f4ecc1c277ca36e62d80157ee09c7e5856bf9bc1e1542588d3449f958c3302)
3645
3746
  check_type(argname="argument value", value=value, expected_type=type_hints["value"])
@@ -3672,8 +3773,8 @@ class CfnAccessGrantsLocationProps:
3672
3773
  def __init__(
3673
3774
  self,
3674
3775
  *,
3675
- iam_role_arn: typing.Optional[builtins.str] = None,
3676
- location_scope: typing.Optional[builtins.str] = None,
3776
+ iam_role_arn: builtins.str,
3777
+ location_scope: builtins.str,
3677
3778
  tags: typing.Optional[typing.Sequence[typing.Union[_CfnTag_f6864754, typing.Dict[builtins.str, typing.Any]]]] = None,
3678
3779
  ) -> None:
3679
3780
  '''Properties for defining a ``CfnAccessGrantsLocation``.
@@ -3694,6 +3795,8 @@ class CfnAccessGrantsLocationProps:
3694
3795
  cfn_access_grants_location_props = s3.CfnAccessGrantsLocationProps(
3695
3796
  iam_role_arn="iamRoleArn",
3696
3797
  location_scope="locationScope",
3798
+
3799
+ # the properties below are optional
3697
3800
  tags=[CfnTag(
3698
3801
  key="key",
3699
3802
  value="value"
@@ -3705,16 +3808,15 @@ class CfnAccessGrantsLocationProps:
3705
3808
  check_type(argname="argument iam_role_arn", value=iam_role_arn, expected_type=type_hints["iam_role_arn"])
3706
3809
  check_type(argname="argument location_scope", value=location_scope, expected_type=type_hints["location_scope"])
3707
3810
  check_type(argname="argument tags", value=tags, expected_type=type_hints["tags"])
3708
- self._values: typing.Dict[builtins.str, typing.Any] = {}
3709
- if iam_role_arn is not None:
3710
- self._values["iam_role_arn"] = iam_role_arn
3711
- if location_scope is not None:
3712
- 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
+ }
3713
3815
  if tags is not None:
3714
3816
  self._values["tags"] = tags
3715
3817
 
3716
3818
  @builtins.property
3717
- def iam_role_arn(self) -> typing.Optional[builtins.str]:
3819
+ def iam_role_arn(self) -> builtins.str:
3718
3820
  '''The Amazon Resource Name (ARN) of the IAM role for the registered location.
3719
3821
 
3720
3822
  S3 Access Grants assumes this role to manage access to the registered location.
@@ -3722,10 +3824,11 @@ class CfnAccessGrantsLocationProps:
3722
3824
  :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-s3-accessgrantslocation.html#cfn-s3-accessgrantslocation-iamrolearn
3723
3825
  '''
3724
3826
  result = self._values.get("iam_role_arn")
3725
- 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)
3726
3829
 
3727
3830
  @builtins.property
3728
- def location_scope(self) -> typing.Optional[builtins.str]:
3831
+ def location_scope(self) -> builtins.str:
3729
3832
  '''The S3 URI path to the location that you are registering.
3730
3833
 
3731
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.
@@ -3733,7 +3836,8 @@ class CfnAccessGrantsLocationProps:
3733
3836
  :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-s3-accessgrantslocation.html#cfn-s3-accessgrantslocation-locationscope
3734
3837
  '''
3735
3838
  result = self._values.get("location_scope")
3736
- 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)
3737
3841
 
3738
3842
  @builtins.property
3739
3843
  def tags(self) -> typing.Optional[typing.List[_CfnTag_f6864754]]:
@@ -3758,7 +3862,7 @@ class CfnAccessGrantsLocationProps:
3758
3862
  )
3759
3863
 
3760
3864
 
3761
- @jsii.implements(_IInspectable_c2943556)
3865
+ @jsii.implements(_IInspectable_c2943556, _IAccessPointRef_02282fed, _ITaggableV2_4e6798f8)
3762
3866
  class CfnAccessPoint(
3763
3867
  _CfnResource_9df397a6,
3764
3868
  metaclass=jsii.JSIIMeta,
@@ -3791,6 +3895,10 @@ class CfnAccessPoint(
3791
3895
  ignore_public_acls=False,
3792
3896
  restrict_public_buckets=False
3793
3897
  ),
3898
+ tags=[CfnTag(
3899
+ key="key",
3900
+ value="value"
3901
+ )],
3794
3902
  vpc_configuration=s3.CfnAccessPoint.VpcConfigurationProperty(
3795
3903
  vpc_id="vpcId"
3796
3904
  )
@@ -3807,9 +3915,11 @@ class CfnAccessPoint(
3807
3915
  name: typing.Optional[builtins.str] = None,
3808
3916
  policy: typing.Any = None,
3809
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,
3810
3919
  vpc_configuration: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union["CfnAccessPoint.VpcConfigurationProperty", typing.Dict[builtins.str, typing.Any]]]] = None,
3811
3920
  ) -> None:
3812
- '''
3921
+ '''Create a new ``AWS::S3::AccessPoint``.
3922
+
3813
3923
  :param scope: Scope in which this resource is defined.
3814
3924
  :param id: Construct identifier for this resource (unique in its scope).
3815
3925
  :param bucket: The name of the bucket associated with this access point.
@@ -3817,6 +3927,7 @@ class CfnAccessPoint(
3817
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.
3818
3928
  :param policy: The access point policy associated with this access point.
3819
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>`_ .
3820
3931
  :param vpc_configuration: The Virtual Private Cloud (VPC) configuration for this access point, if one exists.
3821
3932
  '''
3822
3933
  if __debug__:
@@ -3829,11 +3940,54 @@ class CfnAccessPoint(
3829
3940
  name=name,
3830
3941
  policy=policy,
3831
3942
  public_access_block_configuration=public_access_block_configuration,
3943
+ tags=tags,
3832
3944
  vpc_configuration=vpc_configuration,
3833
3945
  )
3834
3946
 
3835
3947
  jsii.create(self.__class__, self, [scope, id, props])
3836
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
+
3837
3991
  @jsii.member(jsii_name="inspect")
3838
3992
  def inspect(self, inspector: _TreeInspector_488e0dd5) -> None:
3839
3993
  '''Examines the CloudFormation resource and discloses attributes.
@@ -3864,6 +4018,12 @@ class CfnAccessPoint(
3864
4018
  '''The CloudFormation resource type name for this resource class.'''
3865
4019
  return typing.cast(builtins.str, jsii.sget(cls, "CFN_RESOURCE_TYPE_NAME"))
3866
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
+
3867
4027
  @builtins.property
3868
4028
  @jsii.member(jsii_name="attrAlias")
3869
4029
  def attr_alias(self) -> builtins.str:
@@ -3904,6 +4064,12 @@ class CfnAccessPoint(
3904
4064
  '''
3905
4065
  return typing.cast(builtins.str, jsii.get(self, "attrNetworkOrigin"))
3906
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
+
3907
4073
  @builtins.property
3908
4074
  @jsii.member(jsii_name="cfnProperties")
3909
4075
  def _cfn_properties(self) -> typing.Mapping[builtins.str, typing.Any]:
@@ -3979,6 +4145,19 @@ class CfnAccessPoint(
3979
4145
  check_type(argname="argument value", value=value, expected_type=type_hints["value"])
3980
4146
  jsii.set(self, "publicAccessBlockConfiguration", value) # pyright: ignore[reportArgumentType]
3981
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
+
3982
4161
  @builtins.property
3983
4162
  @jsii.member(jsii_name="vpcConfiguration")
3984
4163
  def vpc_configuration(
@@ -4193,6 +4372,7 @@ class CfnAccessPoint(
4193
4372
  "name": "name",
4194
4373
  "policy": "policy",
4195
4374
  "public_access_block_configuration": "publicAccessBlockConfiguration",
4375
+ "tags": "tags",
4196
4376
  "vpc_configuration": "vpcConfiguration",
4197
4377
  },
4198
4378
  )
@@ -4205,6 +4385,7 @@ class CfnAccessPointProps:
4205
4385
  name: typing.Optional[builtins.str] = None,
4206
4386
  policy: typing.Any = None,
4207
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,
4208
4389
  vpc_configuration: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnAccessPoint.VpcConfigurationProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
4209
4390
  ) -> None:
4210
4391
  '''Properties for defining a ``CfnAccessPoint``.
@@ -4214,6 +4395,7 @@ class CfnAccessPointProps:
4214
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.
4215
4396
  :param policy: The access point policy associated with this access point.
4216
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>`_ .
4217
4399
  :param vpc_configuration: The Virtual Private Cloud (VPC) configuration for this access point, if one exists.
4218
4400
 
4219
4401
  :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-s3-accesspoint.html
@@ -4240,6 +4422,10 @@ class CfnAccessPointProps:
4240
4422
  ignore_public_acls=False,
4241
4423
  restrict_public_buckets=False
4242
4424
  ),
4425
+ tags=[CfnTag(
4426
+ key="key",
4427
+ value="value"
4428
+ )],
4243
4429
  vpc_configuration=s3.CfnAccessPoint.VpcConfigurationProperty(
4244
4430
  vpc_id="vpcId"
4245
4431
  )
@@ -4252,6 +4438,7 @@ class CfnAccessPointProps:
4252
4438
  check_type(argname="argument name", value=name, expected_type=type_hints["name"])
4253
4439
  check_type(argname="argument policy", value=policy, expected_type=type_hints["policy"])
4254
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"])
4255
4442
  check_type(argname="argument vpc_configuration", value=vpc_configuration, expected_type=type_hints["vpc_configuration"])
4256
4443
  self._values: typing.Dict[builtins.str, typing.Any] = {
4257
4444
  "bucket": bucket,
@@ -4264,6 +4451,8 @@ class CfnAccessPointProps:
4264
4451
  self._values["policy"] = policy
4265
4452
  if public_access_block_configuration is not None:
4266
4453
  self._values["public_access_block_configuration"] = public_access_block_configuration
4454
+ if tags is not None:
4455
+ self._values["tags"] = tags
4267
4456
  if vpc_configuration is not None:
4268
4457
  self._values["vpc_configuration"] = vpc_configuration
4269
4458
 
@@ -4319,6 +4508,17 @@ class CfnAccessPointProps:
4319
4508
  result = self._values.get("public_access_block_configuration")
4320
4509
  return typing.cast(typing.Optional[typing.Union[_IResolvable_da3f097b, CfnAccessPoint.PublicAccessBlockConfigurationProperty]], result)
4321
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
+
4322
4522
  @builtins.property
4323
4523
  def vpc_configuration(
4324
4524
  self,
@@ -4342,7 +4542,7 @@ class CfnAccessPointProps:
4342
4542
  )
4343
4543
 
4344
4544
 
4345
- @jsii.implements(_IInspectable_c2943556, _ITaggable_36806126)
4545
+ @jsii.implements(_IInspectable_c2943556, _IBucketRef_3debe44e, _ITaggable_36806126)
4346
4546
  class CfnBucket(
4347
4547
  _CfnResource_9df397a6,
4348
4548
  metaclass=jsii.JSIIMeta,
@@ -4389,6 +4589,7 @@ class CfnBucket(
4389
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,
4390
4590
  lifecycle_configuration: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union["CfnBucket.LifecycleConfigurationProperty", typing.Dict[builtins.str, typing.Any]]]] = None,
4391
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,
4392
4593
  metadata_table_configuration: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union["CfnBucket.MetadataTableConfigurationProperty", typing.Dict[builtins.str, typing.Any]]]] = None,
4393
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,
4394
4595
  notification_configuration: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union["CfnBucket.NotificationConfigurationProperty", typing.Dict[builtins.str, typing.Any]]]] = None,
@@ -4401,7 +4602,8 @@ class CfnBucket(
4401
4602
  versioning_configuration: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union["CfnBucket.VersioningConfigurationProperty", typing.Dict[builtins.str, typing.Any]]]] = None,
4402
4603
  website_configuration: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union["CfnBucket.WebsiteConfigurationProperty", typing.Dict[builtins.str, typing.Any]]]] = None,
4403
4604
  ) -> None:
4404
- '''
4605
+ '''Create a new ``AWS::S3::Bucket``.
4606
+
4405
4607
  :param scope: Scope in which this resource is defined.
4406
4608
  :param id: Construct identifier for this resource (unique in its scope).
4407
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* .
@@ -4411,13 +4613,14 @@ class CfnBucket(
4411
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.
4412
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* .
4413
4615
  :param intelligent_tiering_configurations: Defines how Amazon S3 handles Intelligent-Tiering storage.
4414
- :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* .
4415
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* .
4416
4618
  :param logging_configuration: Settings that define where logs are stored.
4619
+ :param metadata_configuration: The S3 Metadata configuration for a general purpose bucket.
4417
4620
  :param metadata_table_configuration: The metadata table configuration of an Amazon S3 general purpose bucket.
4418
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>`_ .
4419
4622
  :param notification_configuration: Configuration that defines how Amazon S3 handles bucket notifications.
4420
- :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`` .
4421
4624
  :param object_lock_enabled: Indicates whether this bucket has an Object Lock configuration enabled. Enable ``ObjectLockEnabled`` when you apply ``ObjectLockConfiguration`` to a bucket.
4422
4625
  :param ownership_controls: Configuration that defines how Amazon S3 handles Object Ownership rules.
4423
4626
  :param public_access_block_configuration: Configuration that defines how Amazon S3 handles public access.
@@ -4441,6 +4644,7 @@ class CfnBucket(
4441
4644
  inventory_configurations=inventory_configurations,
4442
4645
  lifecycle_configuration=lifecycle_configuration,
4443
4646
  logging_configuration=logging_configuration,
4647
+ metadata_configuration=metadata_configuration,
4444
4648
  metadata_table_configuration=metadata_table_configuration,
4445
4649
  metrics_configurations=metrics_configurations,
4446
4650
  notification_configuration=notification_configuration,
@@ -4456,6 +4660,48 @@ class CfnBucket(
4456
4660
 
4457
4661
  jsii.create(self.__class__, self, [scope, id, props])
4458
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
+
4459
4705
  @jsii.member(jsii_name="inspect")
4460
4706
  def inspect(self, inspector: _TreeInspector_488e0dd5) -> None:
4461
4707
  '''Examines the CloudFormation resource and discloses attributes.
@@ -4521,6 +4767,59 @@ class CfnBucket(
4521
4767
  '''
4522
4768
  return typing.cast(builtins.str, jsii.get(self, "attrDualStackDomainName"))
4523
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
+
4524
4823
  @builtins.property
4525
4824
  @jsii.member(jsii_name="attrMetadataTableConfigurationS3TablesDestinationTableArn")
4526
4825
  def attr_metadata_table_configuration_s3_tables_destination_table_arn(
@@ -4571,6 +4870,12 @@ class CfnBucket(
4571
4870
  '''
4572
4871
  return typing.cast(builtins.str, jsii.get(self, "attrWebsiteUrl"))
4573
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
+
4574
4879
  @builtins.property
4575
4880
  @jsii.member(jsii_name="cfnProperties")
4576
4881
  def _cfn_properties(self) -> typing.Mapping[builtins.str, typing.Any]:
@@ -4705,7 +5010,7 @@ class CfnBucket(
4705
5010
  def inventory_configurations(
4706
5011
  self,
4707
5012
  ) -> typing.Optional[typing.Union[_IResolvable_da3f097b, typing.List[typing.Union[_IResolvable_da3f097b, "CfnBucket.InventoryConfigurationProperty"]]]]:
4708
- '''Specifies the inventory configuration for an Amazon S3 bucket.'''
5013
+ '''Specifies the S3 Inventory configuration for an Amazon S3 bucket.'''
4709
5014
  return typing.cast(typing.Optional[typing.Union[_IResolvable_da3f097b, typing.List[typing.Union[_IResolvable_da3f097b, "CfnBucket.InventoryConfigurationProperty"]]]], jsii.get(self, "inventoryConfigurations"))
4710
5015
 
4711
5016
  @inventory_configurations.setter
@@ -4754,6 +5059,24 @@ class CfnBucket(
4754
5059
  check_type(argname="argument value", value=value, expected_type=type_hints["value"])
4755
5060
  jsii.set(self, "loggingConfiguration", value) # pyright: ignore[reportArgumentType]
4756
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
+
4757
5080
  @builtins.property
4758
5081
  @jsii.member(jsii_name="metadataTableConfiguration")
4759
5082
  def metadata_table_configuration(
@@ -5726,7 +6049,7 @@ class CfnBucket(
5726
6049
 
5727
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>`_ .
5728
6051
 
5729
- :param status: Indicates whether to replicate delete markers. Disabled by default.
6052
+ :param status: Indicates whether to replicate delete markers.
5730
6053
 
5731
6054
  :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-deletemarkerreplication.html
5732
6055
  :exampleMetadata: fixture=_generated
@@ -5752,8 +6075,6 @@ class CfnBucket(
5752
6075
  def status(self) -> typing.Optional[builtins.str]:
5753
6076
  '''Indicates whether to replicate delete markers.
5754
6077
 
5755
- Disabled by default.
5756
-
5757
6078
  :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-deletemarkerreplication.html#cfn-s3-bucket-deletemarkerreplication-status
5758
6079
  '''
5759
6080
  result = self._values.get("status")
@@ -6241,7 +6562,7 @@ class CfnBucket(
6241
6562
  optional_fields: typing.Optional[typing.Sequence[builtins.str]] = None,
6242
6563
  prefix: typing.Optional[builtins.str] = None,
6243
6564
  ) -> None:
6244
- '''Specifies the inventory configuration for an Amazon S3 bucket.
6565
+ '''Specifies the S3 Inventory configuration for an Amazon S3 bucket.
6245
6566
 
6246
6567
  For more information, see `GET Bucket inventory <https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketGETInventoryConfig.html>`_ in the *Amazon S3 API Reference* .
6247
6568
 
@@ -6388,25 +6709,32 @@ class CfnBucket(
6388
6709
  )
6389
6710
 
6390
6711
  @jsii.data_type(
6391
- jsii_type="aws-cdk-lib.aws_s3.CfnBucket.LambdaConfigurationProperty",
6712
+ jsii_type="aws-cdk-lib.aws_s3.CfnBucket.InventoryTableConfigurationProperty",
6392
6713
  jsii_struct_bases=[],
6393
- 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
+ },
6394
6720
  )
6395
- class LambdaConfigurationProperty:
6721
+ class InventoryTableConfigurationProperty:
6396
6722
  def __init__(
6397
6723
  self,
6398
6724
  *,
6399
- event: builtins.str,
6400
- function: builtins.str,
6401
- 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,
6402
6729
  ) -> None:
6403
- '''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.
6404
6731
 
6405
- :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* .
6406
- :param function: The Amazon Resource Name (ARN) of the AWS Lambda function that Amazon S3 invokes when the specified event type occurs.
6407
- :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.
6408
6736
 
6409
- :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
6410
6738
  :exampleMetadata: fixture=_generated
6411
6739
 
6412
6740
  Example::
@@ -6415,48 +6743,278 @@ class CfnBucket(
6415
6743
  # The values are placeholders you should change.
6416
6744
  from aws_cdk import aws_s3 as s3
6417
6745
 
6418
- lambda_configuration_property = s3.CfnBucket.LambdaConfigurationProperty(
6419
- event="event",
6420
- function="function",
6746
+ inventory_table_configuration_property = s3.CfnBucket.InventoryTableConfigurationProperty(
6747
+ configuration_state="configurationState",
6421
6748
 
6422
6749
  # the properties below are optional
6423
- filter=s3.CfnBucket.NotificationFilterProperty(
6424
- s3_key=s3.CfnBucket.S3KeyFilterProperty(
6425
- rules=[s3.CfnBucket.FilterRuleProperty(
6426
- name="name",
6427
- value="value"
6428
- )]
6429
- )
6430
- )
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"
6431
6758
  )
6432
6759
  '''
6433
6760
  if __debug__:
6434
- type_hints = typing.get_type_hints(_typecheckingstub__599ef02853407bceb720424e9874eda7b5e2324f3be8a787939e9d5f9a7d5765)
6435
- check_type(argname="argument event", value=event, expected_type=type_hints["event"])
6436
- check_type(argname="argument function", value=function, expected_type=type_hints["function"])
6437
- 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"])
6438
6766
  self._values: typing.Dict[builtins.str, typing.Any] = {
6439
- "event": event,
6440
- "function": function,
6767
+ "configuration_state": configuration_state,
6441
6768
  }
6442
- if filter is not None:
6443
- 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
6444
6775
 
6445
6776
  @builtins.property
6446
- def event(self) -> builtins.str:
6447
- '''The Amazon S3 bucket event for which to invoke the AWS Lambda function.
6448
-
6449
- For more information, see `Supported Event Types <https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html>`_ in the *Amazon S3 User Guide* .
6777
+ def configuration_state(self) -> builtins.str:
6778
+ '''The configuration state of the inventory table, indicating whether the inventory table is enabled or disabled.
6450
6779
 
6451
- :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-lambdaconfiguration.html#cfn-s3-bucket-lambdaconfiguration-event
6780
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-inventorytableconfiguration.html#cfn-s3-bucket-inventorytableconfiguration-configurationstate
6452
6781
  '''
6453
- result = self._values.get("event")
6454
- assert result is not None, "Required property 'event' is missing"
6782
+ result = self._values.get("configuration_state")
6783
+ assert result is not None, "Required property 'configuration_state' is missing"
6455
6784
  return typing.cast(builtins.str, result)
6456
6785
 
6457
6786
  @builtins.property
6458
- def function(self) -> builtins.str:
6459
- '''The Amazon Resource Name (ARN) of the AWS Lambda function that Amazon S3 invokes when the specified event type occurs.
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
7002
+
7003
+ @builtins.property
7004
+ def event(self) -> builtins.str:
7005
+ '''The Amazon S3 bucket event for which to invoke the AWS Lambda function.
7006
+
7007
+ For more information, see `Supported Event Types <https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html>`_ in the *Amazon S3 User Guide* .
7008
+
7009
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-lambdaconfiguration.html#cfn-s3-bucket-lambdaconfiguration-event
7010
+ '''
7011
+ result = self._values.get("event")
7012
+ assert result is not None, "Required property 'event' is missing"
7013
+ return typing.cast(builtins.str, result)
7014
+
7015
+ @builtins.property
7016
+ def function(self) -> builtins.str:
7017
+ '''The Amazon Resource Name (ARN) of the AWS Lambda function that Amazon S3 invokes when the specified event type occurs.
6460
7018
 
6461
7019
  :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-lambdaconfiguration.html#cfn-s3-bucket-lambdaconfiguration-function
6462
7020
  '''
@@ -6699,36 +7257,265 @@ class CfnBucket(
6699
7257
  def destination_bucket_name(self) -> typing.Optional[builtins.str]:
6700
7258
  '''The name of the bucket where Amazon S3 should store server access log files.
6701
7259
 
6702
- You can store log files in any bucket that you own. By default, logs are stored in the bucket where the ``LoggingConfiguration`` property is defined.
7260
+ You can store log files in any bucket that you own. By default, logs are stored in the bucket where the ``LoggingConfiguration`` property is defined.
7261
+
7262
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-loggingconfiguration.html#cfn-s3-bucket-loggingconfiguration-destinationbucketname
7263
+ '''
7264
+ result = self._values.get("destination_bucket_name")
7265
+ return typing.cast(typing.Optional[builtins.str], result)
7266
+
7267
+ @builtins.property
7268
+ def log_file_prefix(self) -> typing.Optional[builtins.str]:
7269
+ '''A prefix for all log object keys.
7270
+
7271
+ If you store log files from multiple Amazon S3 buckets in a single bucket, you can use a prefix to distinguish which log files came from which bucket.
7272
+
7273
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-loggingconfiguration.html#cfn-s3-bucket-loggingconfiguration-logfileprefix
7274
+ '''
7275
+ result = self._values.get("log_file_prefix")
7276
+ return typing.cast(typing.Optional[builtins.str], result)
7277
+
7278
+ @builtins.property
7279
+ def target_object_key_format(
7280
+ self,
7281
+ ) -> typing.Optional[typing.Union[_IResolvable_da3f097b, "CfnBucket.TargetObjectKeyFormatProperty"]]:
7282
+ '''Amazon S3 key format for log objects.
7283
+
7284
+ Only one format, either PartitionedPrefix or SimplePrefix, is allowed.
7285
+
7286
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-loggingconfiguration.html#cfn-s3-bucket-loggingconfiguration-targetobjectkeyformat
7287
+ '''
7288
+ result = self._values.get("target_object_key_format")
7289
+ return typing.cast(typing.Optional[typing.Union[_IResolvable_da3f097b, "CfnBucket.TargetObjectKeyFormatProperty"]], result)
7290
+
7291
+ def __eq__(self, rhs: typing.Any) -> builtins.bool:
7292
+ return isinstance(rhs, self.__class__) and rhs._values == self._values
7293
+
7294
+ def __ne__(self, rhs: typing.Any) -> builtins.bool:
7295
+ return not (rhs == self)
7296
+
7297
+ def __repr__(self) -> str:
7298
+ return "LoggingConfigurationProperty(%s)" % ", ".join(
7299
+ k + "=" + repr(v) for k, v in self._values.items()
7300
+ )
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.
6703
7495
 
6704
- :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-loggingconfiguration.html#cfn-s3-bucket-loggingconfiguration-destinationbucketname
7496
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-metadatadestination.html#cfn-s3-bucket-metadatadestination-tablebuckettype
6705
7497
  '''
6706
- result = self._values.get("destination_bucket_name")
6707
- return typing.cast(typing.Optional[builtins.str], result)
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)
6708
7501
 
6709
7502
  @builtins.property
6710
- def log_file_prefix(self) -> typing.Optional[builtins.str]:
6711
- '''A prefix for all log object keys.
6712
-
6713
- If you store log files from multiple Amazon S3 buckets in a single bucket, you can use a prefix to distinguish which log files came from which bucket.
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.
6714
7505
 
6715
- :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-loggingconfiguration.html#cfn-s3-bucket-loggingconfiguration-logfileprefix
7506
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-metadatadestination.html#cfn-s3-bucket-metadatadestination-tablebucketarn
6716
7507
  '''
6717
- result = self._values.get("log_file_prefix")
7508
+ result = self._values.get("table_bucket_arn")
6718
7509
  return typing.cast(typing.Optional[builtins.str], result)
6719
7510
 
6720
7511
  @builtins.property
6721
- def target_object_key_format(
6722
- self,
6723
- ) -> typing.Optional[typing.Union[_IResolvable_da3f097b, "CfnBucket.TargetObjectKeyFormatProperty"]]:
6724
- '''Amazon S3 key format for log objects.
6725
-
6726
- Only one format, either PartitionedPrefix or SimplePrefix, is allowed.
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.
6727
7514
 
6728
- :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-loggingconfiguration.html#cfn-s3-bucket-loggingconfiguration-targetobjectkeyformat
7515
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-metadatadestination.html#cfn-s3-bucket-metadatadestination-tablenamespace
6729
7516
  '''
6730
- result = self._values.get("target_object_key_format")
6731
- return typing.cast(typing.Optional[typing.Union[_IResolvable_da3f097b, "CfnBucket.TargetObjectKeyFormatProperty"]], result)
7517
+ result = self._values.get("table_namespace")
7518
+ return typing.cast(typing.Optional[builtins.str], result)
6732
7519
 
6733
7520
  def __eq__(self, rhs: typing.Any) -> builtins.bool:
6734
7521
  return isinstance(rhs, self.__class__) and rhs._values == self._values
@@ -6737,7 +7524,7 @@ class CfnBucket(
6737
7524
  return not (rhs == self)
6738
7525
 
6739
7526
  def __repr__(self) -> str:
6740
- return "LoggingConfigurationProperty(%s)" % ", ".join(
7527
+ return "MetadataDestinationProperty(%s)" % ", ".join(
6741
7528
  k + "=" + repr(v) for k, v in self._values.items()
6742
7529
  )
6743
7530
 
@@ -6752,9 +7539,11 @@ class CfnBucket(
6752
7539
  *,
6753
7540
  s3_tables_destination: typing.Union[_IResolvable_da3f097b, typing.Union["CfnBucket.S3TablesDestinationProperty", typing.Dict[builtins.str, typing.Any]]],
6754
7541
  ) -> None:
6755
- '''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.
6756
7545
 
6757
- 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* .
6758
7547
 
6759
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.
6760
7549
 
@@ -6810,6 +7599,83 @@ class CfnBucket(
6810
7599
  k + "=" + repr(v) for k, v in self._values.items()
6811
7600
  )
6812
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
+
6813
7679
  @jsii.data_type(
6814
7680
  jsii_type="aws-cdk-lib.aws_s3.CfnBucket.MetricsConfigurationProperty",
6815
7681
  jsii_struct_bases=[],
@@ -7986,6 +8852,81 @@ class CfnBucket(
7986
8852
  k + "=" + repr(v) for k, v in self._values.items()
7987
8853
  )
7988
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.
8911
+
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
8915
+ '''
8916
+ result = self._values.get("days")
8917
+ return typing.cast(typing.Optional[jsii.Number], result)
8918
+
8919
+ def __eq__(self, rhs: typing.Any) -> builtins.bool:
8920
+ return isinstance(rhs, self.__class__) and rhs._values == self._values
8921
+
8922
+ def __ne__(self, rhs: typing.Any) -> builtins.bool:
8923
+ return not (rhs == self)
8924
+
8925
+ def __repr__(self) -> str:
8926
+ return "RecordExpirationProperty(%s)" % ", ".join(
8927
+ k + "=" + repr(v) for k, v in self._values.items()
8928
+ )
8929
+
7989
8930
  @jsii.data_type(
7990
8931
  jsii_type="aws-cdk-lib.aws_s3.CfnBucket.RedirectAllRequestsToProperty",
7991
8932
  jsii_struct_bases=[],
@@ -8423,7 +9364,7 @@ class CfnBucket(
8423
9364
  :param encryption_configuration: Specifies encryption-related information.
8424
9365
  :param metrics: A container specifying replication metrics-related settings enabling replication metrics and events.
8425
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.
8426
- :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.
8427
9368
 
8428
9369
  :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-replicationdestination.html
8429
9370
  :exampleMetadata: fixture=_generated
@@ -8566,6 +9507,8 @@ class CfnBucket(
8566
9507
 
8567
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* .
8568
9509
 
9510
+ ``FSX_OPENZFS`` is not an accepted value when replicating objects.
9511
+
8569
9512
  :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-replicationdestination.html#cfn-s3-bucket-replicationdestination-storageclass
8570
9513
  '''
8571
9514
  result = self._values.get("storage_class")
@@ -9179,7 +10122,7 @@ class CfnBucket(
9179
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.
9180
10123
 
9181
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.
9182
- :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.
9183
10126
 
9184
10127
  :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-routingrulecondition.html
9185
10128
  :exampleMetadata: fixture=_generated
@@ -9222,7 +10165,7 @@ class CfnBucket(
9222
10165
  def key_prefix_equals(self) -> typing.Optional[builtins.str]:
9223
10166
  '''The object key name prefix when the redirect is applied.
9224
10167
 
9225
- 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.
9226
10169
 
9227
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.
9228
10171
 
@@ -9802,7 +10745,7 @@ class CfnBucket(
9802
10745
  table_arn: typing.Optional[builtins.str] = None,
9803
10746
  table_namespace: typing.Optional[builtins.str] = None,
9804
10747
  ) -> None:
9805
- '''The destination information for the metadata table configuration.
10748
+ '''The destination information for a V1 S3 Metadata configuration.
9806
10749
 
9807
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.
9808
10751
 
@@ -10732,9 +11675,12 @@ class CfnBucket(
10732
11675
  '''Describes the versioning state of an Amazon S3 bucket.
10733
11676
 
10734
11677
  For more information, see `PUT Bucket versioning <https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTVersioningStatus.html>`_ in the *Amazon S3 API Reference* .
10735
- .. epigraph::
10736
11678
 
10737
- 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.
10738
11684
 
10739
11685
  :param status: The versioning state of the bucket. Default: - "Suspended"
10740
11686
 
@@ -10914,7 +11860,7 @@ class CfnBucket(
10914
11860
  )
10915
11861
 
10916
11862
 
10917
- @jsii.implements(_IInspectable_c2943556)
11863
+ @jsii.implements(_IInspectable_c2943556, _IBucketPolicyRef_8ee2499d)
10918
11864
  class CfnBucketPolicy(
10919
11865
  _CfnResource_9df397a6,
10920
11866
  metaclass=jsii.JSIIMeta,
@@ -10929,7 +11875,7 @@ class CfnBucketPolicy(
10929
11875
 
10930
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.
10931
11877
 
10932
- 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.
10933
11879
  .. epigraph::
10934
11880
 
10935
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.
@@ -10989,7 +11935,8 @@ class CfnBucketPolicy(
10989
11935
  bucket: builtins.str,
10990
11936
  policy_document: typing.Any,
10991
11937
  ) -> None:
10992
- '''
11938
+ '''Create a new ``AWS::S3::BucketPolicy``.
11939
+
10993
11940
  :param scope: Scope in which this resource is defined.
10994
11941
  :param id: Construct identifier for this resource (unique in its scope).
10995
11942
  :param bucket: The name of the Amazon S3 bucket to which the policy applies.
@@ -11033,6 +11980,12 @@ class CfnBucketPolicy(
11033
11980
  '''The CloudFormation resource type name for this resource class.'''
11034
11981
  return typing.cast(builtins.str, jsii.sget(cls, "CFN_RESOURCE_TYPE_NAME"))
11035
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
+
11036
11989
  @builtins.property
11037
11990
  @jsii.member(jsii_name="cfnProperties")
11038
11991
  def _cfn_properties(self) -> typing.Mapping[builtins.str, typing.Any]:
@@ -11170,6 +12123,7 @@ class CfnBucketPolicyProps:
11170
12123
  "inventory_configurations": "inventoryConfigurations",
11171
12124
  "lifecycle_configuration": "lifecycleConfiguration",
11172
12125
  "logging_configuration": "loggingConfiguration",
12126
+ "metadata_configuration": "metadataConfiguration",
11173
12127
  "metadata_table_configuration": "metadataTableConfiguration",
11174
12128
  "metrics_configurations": "metricsConfigurations",
11175
12129
  "notification_configuration": "notificationConfiguration",
@@ -11197,6 +12151,7 @@ class CfnBucketProps:
11197
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,
11198
12152
  lifecycle_configuration: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnBucket.LifecycleConfigurationProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
11199
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,
11200
12155
  metadata_table_configuration: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnBucket.MetadataTableConfigurationProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
11201
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,
11202
12157
  notification_configuration: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnBucket.NotificationConfigurationProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
@@ -11218,13 +12173,14 @@ class CfnBucketProps:
11218
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.
11219
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* .
11220
12175
  :param intelligent_tiering_configurations: Defines how Amazon S3 handles Intelligent-Tiering storage.
11221
- :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* .
11222
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* .
11223
12178
  :param logging_configuration: Settings that define where logs are stored.
12179
+ :param metadata_configuration: The S3 Metadata configuration for a general purpose bucket.
11224
12180
  :param metadata_table_configuration: The metadata table configuration of an Amazon S3 general purpose bucket.
11225
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>`_ .
11226
12182
  :param notification_configuration: Configuration that defines how Amazon S3 handles bucket notifications.
11227
- :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`` .
11228
12184
  :param object_lock_enabled: Indicates whether this bucket has an Object Lock configuration enabled. Enable ``ObjectLockEnabled`` when you apply ``ObjectLockConfiguration`` to a bucket.
11229
12185
  :param ownership_controls: Configuration that defines how Amazon S3 handles Object Ownership rules.
11230
12186
  :param public_access_block_configuration: Configuration that defines how Amazon S3 handles public access.
@@ -11260,6 +12216,7 @@ class CfnBucketProps:
11260
12216
  check_type(argname="argument inventory_configurations", value=inventory_configurations, expected_type=type_hints["inventory_configurations"])
11261
12217
  check_type(argname="argument lifecycle_configuration", value=lifecycle_configuration, expected_type=type_hints["lifecycle_configuration"])
11262
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"])
11263
12220
  check_type(argname="argument metadata_table_configuration", value=metadata_table_configuration, expected_type=type_hints["metadata_table_configuration"])
11264
12221
  check_type(argname="argument metrics_configurations", value=metrics_configurations, expected_type=type_hints["metrics_configurations"])
11265
12222
  check_type(argname="argument notification_configuration", value=notification_configuration, expected_type=type_hints["notification_configuration"])
@@ -11292,6 +12249,8 @@ class CfnBucketProps:
11292
12249
  self._values["lifecycle_configuration"] = lifecycle_configuration
11293
12250
  if logging_configuration is not None:
11294
12251
  self._values["logging_configuration"] = logging_configuration
12252
+ if metadata_configuration is not None:
12253
+ self._values["metadata_configuration"] = metadata_configuration
11295
12254
  if metadata_table_configuration is not None:
11296
12255
  self._values["metadata_table_configuration"] = metadata_table_configuration
11297
12256
  if metrics_configurations is not None:
@@ -11413,7 +12372,7 @@ class CfnBucketProps:
11413
12372
  def inventory_configurations(
11414
12373
  self,
11415
12374
  ) -> typing.Optional[typing.Union[_IResolvable_da3f097b, typing.List[typing.Union[_IResolvable_da3f097b, CfnBucket.InventoryConfigurationProperty]]]]:
11416
- '''Specifies the inventory configuration for an Amazon S3 bucket.
12375
+ '''Specifies the S3 Inventory configuration for an Amazon S3 bucket.
11417
12376
 
11418
12377
  For more information, see `GET Bucket inventory <https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketGETInventoryConfig.html>`_ in the *Amazon S3 API Reference* .
11419
12378
 
@@ -11446,6 +12405,17 @@ class CfnBucketProps:
11446
12405
  result = self._values.get("logging_configuration")
11447
12406
  return typing.cast(typing.Optional[typing.Union[_IResolvable_da3f097b, CfnBucket.LoggingConfigurationProperty]], result)
11448
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
+
11449
12419
  @builtins.property
11450
12420
  def metadata_table_configuration(
11451
12421
  self,
@@ -11494,7 +12464,7 @@ class CfnBucketProps:
11494
12464
 
11495
12465
  - The ``DefaultRetention`` settings require both a mode and a period.
11496
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.
11497
- - 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`` .
11498
12468
 
11499
12469
  :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-s3-bucket.html#cfn-s3-bucket-objectlockconfiguration
11500
12470
  '''
@@ -11601,7 +12571,7 @@ class CfnBucketProps:
11601
12571
  )
11602
12572
 
11603
12573
 
11604
- @jsii.implements(_IInspectable_c2943556)
12574
+ @jsii.implements(_IInspectable_c2943556, _IMultiRegionAccessPointRef_b814832f)
11605
12575
  class CfnMultiRegionAccessPoint(
11606
12576
  _CfnResource_9df397a6,
11607
12577
  metaclass=jsii.JSIIMeta,
@@ -11649,7 +12619,8 @@ class CfnMultiRegionAccessPoint(
11649
12619
  name: typing.Optional[builtins.str] = None,
11650
12620
  public_access_block_configuration: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union["CfnMultiRegionAccessPoint.PublicAccessBlockConfigurationProperty", typing.Dict[builtins.str, typing.Any]]]] = None,
11651
12621
  ) -> None:
11652
- '''
12622
+ '''Create a new ``AWS::S3::MultiRegionAccessPoint``.
12623
+
11653
12624
  :param scope: Scope in which this resource is defined.
11654
12625
  :param id: Construct identifier for this resource (unique in its scope).
11655
12626
  :param regions: A collection of the Regions and buckets associated with the Multi-Region Access Point.
@@ -11723,6 +12694,14 @@ class CfnMultiRegionAccessPoint(
11723
12694
  def _cfn_properties(self) -> typing.Mapping[builtins.str, typing.Any]:
11724
12695
  return typing.cast(typing.Mapping[builtins.str, typing.Any], jsii.get(self, "cfnProperties"))
11725
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
+
11726
12705
  @builtins.property
11727
12706
  @jsii.member(jsii_name="regions")
11728
12707
  def regions(
@@ -11981,7 +12960,7 @@ class CfnMultiRegionAccessPoint(
11981
12960
  )
11982
12961
 
11983
12962
 
11984
- @jsii.implements(_IInspectable_c2943556)
12963
+ @jsii.implements(_IInspectable_c2943556, _IMultiRegionAccessPointPolicyRef_2e4f5aa6)
11985
12964
  class CfnMultiRegionAccessPointPolicy(
11986
12965
  _CfnResource_9df397a6,
11987
12966
  metaclass=jsii.JSIIMeta,
@@ -12017,7 +12996,8 @@ class CfnMultiRegionAccessPointPolicy(
12017
12996
  mrap_name: builtins.str,
12018
12997
  policy: typing.Any,
12019
12998
  ) -> None:
12020
- '''
12999
+ '''Create a new ``AWS::S3::MultiRegionAccessPointPolicy``.
13000
+
12021
13001
  :param scope: Scope in which this resource is defined.
12022
13002
  :param id: Construct identifier for this resource (unique in its scope).
12023
13003
  :param mrap_name: The name of the Multi-Region Access Point.
@@ -12086,6 +13066,14 @@ class CfnMultiRegionAccessPointPolicy(
12086
13066
  def _cfn_properties(self) -> typing.Mapping[builtins.str, typing.Any]:
12087
13067
  return typing.cast(typing.Mapping[builtins.str, typing.Any], jsii.get(self, "cfnProperties"))
12088
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
+
12089
13077
  @builtins.property
12090
13078
  @jsii.member(jsii_name="mrapName")
12091
13079
  def mrap_name(self) -> builtins.str:
@@ -12345,7 +13333,7 @@ class CfnMultiRegionAccessPointProps:
12345
13333
  )
12346
13334
 
12347
13335
 
12348
- @jsii.implements(_IInspectable_c2943556, _ITaggable_36806126)
13336
+ @jsii.implements(_IInspectable_c2943556, _IStorageLensRef_a99bd868, _ITaggable_36806126)
12349
13337
  class CfnStorageLens(
12350
13338
  _CfnResource_9df397a6,
12351
13339
  metaclass=jsii.JSIIMeta,
@@ -12467,7 +13455,8 @@ class CfnStorageLens(
12467
13455
  storage_lens_configuration: typing.Union[_IResolvable_da3f097b, typing.Union["CfnStorageLens.StorageLensConfigurationProperty", typing.Dict[builtins.str, typing.Any]]],
12468
13456
  tags: typing.Optional[typing.Sequence[typing.Union[_CfnTag_f6864754, typing.Dict[builtins.str, typing.Any]]]] = None,
12469
13457
  ) -> None:
12470
- '''
13458
+ '''Create a new ``AWS::S3::StorageLens``.
13459
+
12471
13460
  :param scope: Scope in which this resource is defined.
12472
13461
  :param id: Construct identifier for this resource (unique in its scope).
12473
13462
  :param storage_lens_configuration: This resource contains the details Amazon S3 Storage Lens configuration.
@@ -12529,6 +13518,12 @@ class CfnStorageLens(
12529
13518
  def _cfn_properties(self) -> typing.Mapping[builtins.str, typing.Any]:
12530
13519
  return typing.cast(typing.Mapping[builtins.str, typing.Any], jsii.get(self, "cfnProperties"))
12531
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
+
12532
13527
  @builtins.property
12533
13528
  @jsii.member(jsii_name="tags")
12534
13529
  def tags(self) -> _TagManager_0a598cb3:
@@ -14336,7 +15331,7 @@ class CfnStorageLens(
14336
15331
  )
14337
15332
 
14338
15333
 
14339
- @jsii.implements(_IInspectable_c2943556, _ITaggableV2_4e6798f8)
15334
+ @jsii.implements(_IInspectable_c2943556, _IStorageLensGroupRef_aa787427, _ITaggableV2_4e6798f8)
14340
15335
  class CfnStorageLensGroup(
14341
15336
  _CfnResource_9df397a6,
14342
15337
  metaclass=jsii.JSIIMeta,
@@ -14424,7 +15419,8 @@ class CfnStorageLensGroup(
14424
15419
  name: builtins.str,
14425
15420
  tags: typing.Optional[typing.Sequence[typing.Union[_CfnTag_f6864754, typing.Dict[builtins.str, typing.Any]]]] = None,
14426
15421
  ) -> None:
14427
- '''
15422
+ '''Create a new ``AWS::S3::StorageLensGroup``.
15423
+
14428
15424
  :param scope: Scope in which this resource is defined.
14429
15425
  :param id: Construct identifier for this resource (unique in its scope).
14430
15426
  :param filter: This property contains the criteria for the Storage Lens group data that is displayed.
@@ -14489,6 +15485,12 @@ class CfnStorageLensGroup(
14489
15485
  def _cfn_properties(self) -> typing.Mapping[builtins.str, typing.Any]:
14490
15486
  return typing.cast(typing.Mapping[builtins.str, typing.Any], jsii.get(self, "cfnProperties"))
14491
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
+
14492
15494
  @builtins.property
14493
15495
  @jsii.member(jsii_name="filter")
14494
15496
  def filter(
@@ -16163,7 +17165,7 @@ class HttpMethods(enum.Enum):
16163
17165
 
16164
17166
 
16165
17167
  @jsii.interface(jsii_type="aws-cdk-lib.aws_s3.IBucket")
16166
- class IBucket(_IResource_c80c4260, typing_extensions.Protocol):
17168
+ class IBucket(_IResource_c80c4260, _IBucketRef_3debe44e, typing_extensions.Protocol):
16167
17169
  @builtins.property
16168
17170
  @jsii.member(jsii_name="bucketArn")
16169
17171
  def bucket_arn(self) -> builtins.str:
@@ -16723,6 +17725,7 @@ class IBucket(_IResource_c80c4260, typing_extensions.Protocol):
16723
17725
 
16724
17726
  class _IBucketProxy(
16725
17727
  jsii.proxy_for(_IResource_c80c4260), # type: ignore[misc]
17728
+ jsii.proxy_for(_IBucketRef_3debe44e), # type: ignore[misc]
16726
17729
  ):
16727
17730
  __jsii_type__: typing.ClassVar[str] = "aws-cdk-lib.aws_s3.IBucket"
16728
17731
 
@@ -17412,7 +18415,7 @@ class IBucketNotificationDestination(typing_extensions.Protocol):
17412
18415
  def bind(
17413
18416
  self,
17414
18417
  scope: _constructs_77d1e7e8.Construct,
17415
- bucket: IBucket,
18418
+ bucket: _IBucketRef_3debe44e,
17416
18419
  ) -> BucketNotificationDestinationConfig:
17417
18420
  '''Registers this resource to receive notifications for the specified bucket.
17418
18421
 
@@ -17435,7 +18438,7 @@ class _IBucketNotificationDestinationProxy:
17435
18438
  def bind(
17436
18439
  self,
17437
18440
  scope: _constructs_77d1e7e8.Construct,
17438
- bucket: IBucket,
18441
+ bucket: _IBucketRef_3debe44e,
17439
18442
  ) -> BucketNotificationDestinationConfig:
17440
18443
  '''Registers this resource to receive notifications for the specified bucket.
17441
18444
 
@@ -17994,7 +18997,7 @@ class LifecycleRule:
17994
18997
  :param id: A unique identifier for this rule. The value cannot be more than 255 characters.
17995
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
17996
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
17997
- :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.
17998
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
17999
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
18000
19003
  :param prefix: Object key prefix that identifies one or more objects to which this rule applies. Default: - Rule applies to all objects
@@ -18206,7 +19209,7 @@ class LifecycleRule:
18206
19209
  ) -> typing.Optional[typing.List["NoncurrentVersionTransition"]]:
18207
19210
  '''One or more transition rules that specify when non-current objects transition to a specified storage class.
18208
19211
 
18209
- Only for for buckets with versioning enabled (or suspended).
19212
+ Only for buckets with versioning enabled (or suspended).
18210
19213
 
18211
19214
  If you specify a transition and expiration time, the expiration time
18212
19215
  must be later than the transition time.
@@ -18302,26 +19305,43 @@ class Location:
18302
19305
  :param object_key: The path inside the Bucket where the object is located at.
18303
19306
  :param object_version: The S3 object version.
18304
19307
 
18305
- :exampleMetadata: infused
19308
+ :exampleMetadata: fixture=default infused
18306
19309
 
18307
19310
  Example::
18308
19311
 
18309
- start_query_execution_job = tasks.AthenaStartQueryExecution(self, "Start Athena Query",
18310
- query_string=sfn.JsonPath.string_at("$.queryString"),
18311
- query_execution_context=tasks.QueryExecutionContext(
18312
- database_name="mydatabase"
18313
- ),
18314
- result_configuration=tasks.ResultConfiguration(
18315
- encryption_configuration=tasks.EncryptionConfiguration(
18316
- encryption_option=tasks.EncryptionOption.S3_MANAGED
18317
- ),
18318
- output_location=s3.Location(
18319
- bucket_name="query-results-bucket",
18320
- 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/"
18321
19330
  )
18322
19331
  ),
18323
- execution_parameters=["param1", "param2"],
18324
- 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]
18325
19345
  )
18326
19346
  '''
18327
19347
  if __debug__:
@@ -20717,6 +21737,12 @@ class BucketBase(
20717
21737
  '''The name of the bucket.'''
20718
21738
  ...
20719
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
+
20720
21746
  @builtins.property
20721
21747
  @jsii.member(jsii_name="bucketRegionalDomainName")
20722
21748
  @abc.abstractmethod
@@ -21337,7 +22363,7 @@ class Bucket(
21337
22363
  :param id: A unique identifier for this rule. The value cannot be more than 255 characters.
21338
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
21339
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
21340
- :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.
21341
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
21342
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
21343
22369
  :param prefix: Object key prefix that identifies one or more objects to which this rule applies. Default: - Rule applies to all objects
@@ -21648,6 +22674,7 @@ def _typecheckingstub__910b3df1208e67cb52dad0b0b8c5feb43c7bddb0ced50eaf6c9534772
21648
22674
  id: builtins.str,
21649
22675
  *,
21650
22676
  bucket: IBucket,
22677
+ document: typing.Optional[_PolicyDocument_3ac34393] = None,
21651
22678
  removal_policy: typing.Optional[_RemovalPolicy_9f93c814] = None,
21652
22679
  ) -> None:
21653
22680
  """Type checking stubs"""
@@ -21668,6 +22695,7 @@ def _typecheckingstub__70ab6602f43f75a64ae8e8349b5d140cdfefe9af2e4d2352ec6279ed1
21668
22695
  def _typecheckingstub__4d7b9233434273933326211f004f27c2982fedd89ad904dc86d84c54f0f50ac6(
21669
22696
  *,
21670
22697
  bucket: IBucket,
22698
+ document: typing.Optional[_PolicyDocument_3ac34393] = None,
21671
22699
  removal_policy: typing.Optional[_RemovalPolicy_9f93c814] = None,
21672
22700
  ) -> None:
21673
22701
  """Type checking stubs"""
@@ -21856,8 +22884,8 @@ def _typecheckingstub__f63f8766c3f622205e3ea04592d9dbd1cdfdf34d2e6b1aca405f1b211
21856
22884
  scope: _constructs_77d1e7e8.Construct,
21857
22885
  id: builtins.str,
21858
22886
  *,
21859
- iam_role_arn: typing.Optional[builtins.str] = None,
21860
- location_scope: typing.Optional[builtins.str] = None,
22887
+ iam_role_arn: builtins.str,
22888
+ location_scope: builtins.str,
21861
22889
  tags: typing.Optional[typing.Sequence[typing.Union[_CfnTag_f6864754, typing.Dict[builtins.str, typing.Any]]]] = None,
21862
22890
  ) -> None:
21863
22891
  """Type checking stubs"""
@@ -21876,13 +22904,13 @@ def _typecheckingstub__41246c53313d09c72689110109c1c02c98b558c613dd50d35f19becfa
21876
22904
  pass
21877
22905
 
21878
22906
  def _typecheckingstub__c6ad3ea630d95d457364fa227ccc4159df9b2fe48cab3fd14afc7301612ddce6(
21879
- value: typing.Optional[builtins.str],
22907
+ value: builtins.str,
21880
22908
  ) -> None:
21881
22909
  """Type checking stubs"""
21882
22910
  pass
21883
22911
 
21884
22912
  def _typecheckingstub__80f4ecc1c277ca36e62d80157ee09c7e5856bf9bc1e1542588d3449f958c3302(
21885
- value: typing.Optional[builtins.str],
22913
+ value: builtins.str,
21886
22914
  ) -> None:
21887
22915
  """Type checking stubs"""
21888
22916
  pass
@@ -21895,8 +22923,8 @@ def _typecheckingstub__34ec64e9e3a170eac86359c24d865c728a0273caa8c470380483ea14c
21895
22923
 
21896
22924
  def _typecheckingstub__5f891152429263f2b2cdf0641e18212de422d1b020ebb0f7ffbac1e255090f5d(
21897
22925
  *,
21898
- iam_role_arn: typing.Optional[builtins.str] = None,
21899
- location_scope: typing.Optional[builtins.str] = None,
22926
+ iam_role_arn: builtins.str,
22927
+ location_scope: builtins.str,
21900
22928
  tags: typing.Optional[typing.Sequence[typing.Union[_CfnTag_f6864754, typing.Dict[builtins.str, typing.Any]]]] = None,
21901
22929
  ) -> None:
21902
22930
  """Type checking stubs"""
@@ -21911,11 +22939,28 @@ def _typecheckingstub__effa13924691e4b61b906bb0dc0bd5da8dfc4d4cbd167af0fe9491358
21911
22939
  name: typing.Optional[builtins.str] = None,
21912
22940
  policy: typing.Any = None,
21913
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,
21914
22943
  vpc_configuration: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnAccessPoint.VpcConfigurationProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
21915
22944
  ) -> None:
21916
22945
  """Type checking stubs"""
21917
22946
  pass
21918
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
+
21919
22964
  def _typecheckingstub__71b3c7d208bf045aac83ee95ce52f903885375649aecea79c502164e94dcdf8a(
21920
22965
  inspector: _TreeInspector_488e0dd5,
21921
22966
  ) -> None:
@@ -21958,6 +23003,12 @@ def _typecheckingstub__f1674ffbc32679c9e6b98201180481c7cd25fa6b6b1611ce89faf76ad
21958
23003
  """Type checking stubs"""
21959
23004
  pass
21960
23005
 
23006
+ def _typecheckingstub__d6c41b842366f80d771c24147e6f4bdb868bf8899c3f03b128339e380a158e19(
23007
+ value: typing.Optional[typing.List[_CfnTag_f6864754]],
23008
+ ) -> None:
23009
+ """Type checking stubs"""
23010
+ pass
23011
+
21961
23012
  def _typecheckingstub__a49ee3ddcfdce1bcd8c198e3823a2490c2f4ac82647902a91b701dbc61ab86b8(
21962
23013
  value: typing.Optional[typing.Union[_IResolvable_da3f097b, CfnAccessPoint.VpcConfigurationProperty]],
21963
23014
  ) -> None:
@@ -21988,6 +23039,7 @@ def _typecheckingstub__78747b8f8c95f80def774b788cce8b1ff46ec71c89a1b755270401066
21988
23039
  name: typing.Optional[builtins.str] = None,
21989
23040
  policy: typing.Any = None,
21990
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,
21991
23043
  vpc_configuration: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnAccessPoint.VpcConfigurationProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
21992
23044
  ) -> None:
21993
23045
  """Type checking stubs"""
@@ -22007,6 +23059,7 @@ def _typecheckingstub__0cfa39e37f5fa17b8234ce2f712ef5cf3bf2c262914967924c19a67f6
22007
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,
22008
23060
  lifecycle_configuration: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnBucket.LifecycleConfigurationProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
22009
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,
22010
23063
  metadata_table_configuration: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnBucket.MetadataTableConfigurationProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
22011
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,
22012
23065
  notification_configuration: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnBucket.NotificationConfigurationProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
@@ -22022,6 +23075,22 @@ def _typecheckingstub__0cfa39e37f5fa17b8234ce2f712ef5cf3bf2c262914967924c19a67f6
22022
23075
  """Type checking stubs"""
22023
23076
  pass
22024
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
+
22025
23094
  def _typecheckingstub__176de3038f1db142ab99b5462bff80dea14e125a51ef31e58c268c52bbbc103e(
22026
23095
  inspector: _TreeInspector_488e0dd5,
22027
23096
  ) -> None:
@@ -22094,6 +23163,12 @@ def _typecheckingstub__4b77f03fd3b3677eb1438ce6b2a3991e386c73bd8744df53f5e4ba5ea
22094
23163
  """Type checking stubs"""
22095
23164
  pass
22096
23165
 
23166
+ def _typecheckingstub__13b4697762f20bd91e57f93bf2922758e68d9cbc3f74472e7da7f9ce2f7dcdca(
23167
+ value: typing.Optional[typing.Union[_IResolvable_da3f097b, CfnBucket.MetadataConfigurationProperty]],
23168
+ ) -> None:
23169
+ """Type checking stubs"""
23170
+ pass
23171
+
22097
23172
  def _typecheckingstub__fd29cd03877c191999cfea4d853581d72ddc33cf57cc7d4cba47336d1b9943ec(
22098
23173
  value: typing.Optional[typing.Union[_IResolvable_da3f097b, CfnBucket.MetadataTableConfigurationProperty]],
22099
23174
  ) -> None:
@@ -22297,6 +23372,26 @@ def _typecheckingstub__cdee89cd1b92609a0e10908dd9212db336cab5c5d1cccdb91cf76efe8
22297
23372
  """Type checking stubs"""
22298
23373
  pass
22299
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
+
22300
23395
  def _typecheckingstub__599ef02853407bceb720424e9874eda7b5e2324f3be8a787939e9d5f9a7d5765(
22301
23396
  *,
22302
23397
  event: builtins.str,
@@ -22323,6 +23418,24 @@ def _typecheckingstub__01491815d16a808a2dce4d193703181c42183e3e002a73f20f0f129d4
22323
23418
  """Type checking stubs"""
22324
23419
  pass
22325
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
+
22326
23439
  def _typecheckingstub__5ca454da0b88593246b2d389c687410262b1687eb76eddb67e9375ebad28093f(
22327
23440
  *,
22328
23441
  s3_tables_destination: typing.Union[_IResolvable_da3f097b, typing.Union[CfnBucket.S3TablesDestinationProperty, typing.Dict[builtins.str, typing.Any]]],
@@ -22330,6 +23443,14 @@ def _typecheckingstub__5ca454da0b88593246b2d389c687410262b1687eb76eddb67e9375eba
22330
23443
  """Type checking stubs"""
22331
23444
  pass
22332
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
+
22333
23454
  def _typecheckingstub__ad42f7d497f9da61528b895926b56b4a48de1121e97039ba589509b4f56b32f7(
22334
23455
  *,
22335
23456
  id: builtins.str,
@@ -22437,6 +23558,14 @@ def _typecheckingstub__fa7475a01d5eb0e88eb78519cde0c5de6ace577577dd1b48ec5816cca
22437
23558
  """Type checking stubs"""
22438
23559
  pass
22439
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
+
22440
23569
  def _typecheckingstub__8aaa5db61b5a90e427f3a57c45b3bd725fb80aeca08f50b45728a5d954ee837f(
22441
23570
  *,
22442
23571
  host_name: builtins.str,
@@ -22736,6 +23865,7 @@ def _typecheckingstub__658a4165ec8804b9770871bbb27764713f55dc53e9c9e990dca120e77
22736
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,
22737
23866
  lifecycle_configuration: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnBucket.LifecycleConfigurationProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
22738
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,
22739
23869
  metadata_table_configuration: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnBucket.MetadataTableConfigurationProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
22740
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,
22741
23871
  notification_configuration: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnBucket.NotificationConfigurationProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
@@ -23390,7 +24520,7 @@ def _typecheckingstub__993ef29805b7b5223d6327faefc00c505108a1497efd501af949abb29
23390
24520
 
23391
24521
  def _typecheckingstub__c383a5262868f93c81da67f9058929f12151009bdb49b69a87ed6e62b4fe28a9(
23392
24522
  scope: _constructs_77d1e7e8.Construct,
23393
- bucket: IBucket,
24523
+ bucket: _IBucketRef_3debe44e,
23394
24524
  ) -> None:
23395
24525
  """Type checking stubs"""
23396
24526
  pass
@@ -23935,3 +25065,6 @@ def _typecheckingstub__3cb691a849de33681a4f0021424f266609c2785cf8cbf5306c98726a6
23935
25065
  ) -> None:
23936
25066
  """Type checking stubs"""
23937
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__'])