aws-cdk-lib 2.155.0__py3-none-any.whl → 2.157.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 (66) hide show
  1. aws_cdk/__init__.py +28 -24
  2. aws_cdk/_jsii/__init__.py +1 -1
  3. aws_cdk/_jsii/{aws-cdk-lib@2.155.0.jsii.tgz → aws-cdk-lib@2.157.0.jsii.tgz} +0 -0
  4. aws_cdk/aws_acmpca/__init__.py +10 -75
  5. aws_cdk/aws_amplify/__init__.py +106 -0
  6. aws_cdk/aws_apigatewayv2/__init__.py +81 -13
  7. aws_cdk/aws_appintegrations/__init__.py +14 -14
  8. aws_cdk/aws_applicationsignals/__init__.py +750 -1
  9. aws_cdk/aws_appsync/__init__.py +50 -18
  10. aws_cdk/aws_autoscaling/__init__.py +6 -6
  11. aws_cdk/aws_backup/__init__.py +39 -0
  12. aws_cdk/aws_batch/__init__.py +41 -0
  13. aws_cdk/aws_bedrock/__init__.py +1528 -91
  14. aws_cdk/aws_chatbot/__init__.py +6 -6
  15. aws_cdk/aws_cloudformation/__init__.py +22 -22
  16. aws_cdk/aws_cloudfront/__init__.py +650 -57
  17. aws_cdk/aws_cloudfront/experimental/__init__.py +30 -3
  18. aws_cdk/aws_cloudfront_origins/__init__.py +2034 -91
  19. aws_cdk/aws_codebuild/__init__.py +1 -1
  20. aws_cdk/aws_datasync/__init__.py +40 -29
  21. aws_cdk/aws_docdb/__init__.py +78 -6
  22. aws_cdk/aws_ec2/__init__.py +397 -75
  23. aws_cdk/aws_ecs/__init__.py +271 -101
  24. aws_cdk/aws_ecs_patterns/__init__.py +129 -11
  25. aws_cdk/aws_eks/__init__.py +40 -4
  26. aws_cdk/aws_elasticloadbalancingv2/__init__.py +26 -50
  27. aws_cdk/aws_entityresolution/__init__.py +117 -4
  28. aws_cdk/aws_events/__init__.py +40 -14
  29. aws_cdk/aws_events_targets/__init__.py +357 -0
  30. aws_cdk/aws_glue/__init__.py +0 -8
  31. aws_cdk/aws_groundstation/__init__.py +27 -16
  32. aws_cdk/aws_guardduty/__init__.py +26 -14
  33. aws_cdk/aws_iam/__init__.py +7 -8
  34. aws_cdk/aws_iotfleetwise/__init__.py +108 -0
  35. aws_cdk/aws_kms/__init__.py +53 -10
  36. aws_cdk/aws_lambda/__init__.py +147 -17
  37. aws_cdk/aws_lambda_nodejs/__init__.py +30 -3
  38. aws_cdk/aws_macie/__init__.py +4 -4
  39. aws_cdk/aws_medialive/__init__.py +348 -0
  40. aws_cdk/aws_mediapackagev2/__init__.py +38 -38
  41. aws_cdk/aws_neptune/__init__.py +14 -8
  42. aws_cdk/aws_opensearchservice/__init__.py +194 -0
  43. aws_cdk/aws_pcaconnectorscep/__init__.py +884 -0
  44. aws_cdk/aws_personalize/__init__.py +2 -2
  45. aws_cdk/aws_pipes/__init__.py +22 -22
  46. aws_cdk/aws_qbusiness/__init__.py +675 -6
  47. aws_cdk/aws_quicksight/__init__.py +3285 -0
  48. aws_cdk/aws_rds/__init__.py +24 -0
  49. aws_cdk/aws_s3/__init__.py +13 -14
  50. aws_cdk/aws_sagemaker/__init__.py +1167 -0
  51. aws_cdk/aws_secretsmanager/__init__.py +2 -3
  52. aws_cdk/aws_securityhub/__init__.py +108 -103
  53. aws_cdk/aws_ses/__init__.py +31 -0
  54. aws_cdk/aws_sns/__init__.py +19 -13
  55. aws_cdk/aws_ssm/__init__.py +10 -6
  56. aws_cdk/aws_ssmquicksetup/__init__.py +967 -0
  57. aws_cdk/aws_stepfunctions_tasks/__init__.py +106 -45
  58. aws_cdk/aws_synthetics/__init__.py +13 -0
  59. aws_cdk/cx_api/__init__.py +16 -0
  60. aws_cdk/triggers/__init__.py +30 -3
  61. {aws_cdk_lib-2.155.0.dist-info → aws_cdk_lib-2.157.0.dist-info}/METADATA +1 -1
  62. {aws_cdk_lib-2.155.0.dist-info → aws_cdk_lib-2.157.0.dist-info}/RECORD +66 -64
  63. {aws_cdk_lib-2.155.0.dist-info → aws_cdk_lib-2.157.0.dist-info}/LICENSE +0 -0
  64. {aws_cdk_lib-2.155.0.dist-info → aws_cdk_lib-2.157.0.dist-info}/NOTICE +0 -0
  65. {aws_cdk_lib-2.155.0.dist-info → aws_cdk_lib-2.157.0.dist-info}/WHEEL +0 -0
  66. {aws_cdk_lib-2.155.0.dist-info → aws_cdk_lib-2.157.0.dist-info}/top_level.txt +0 -0
@@ -2251,7 +2251,7 @@ class CfnSecretTargetAttachment(
2251
2251
  :param id: Construct identifier for this resource (unique in its scope).
2252
2252
  :param secret_id: The ARN or name of the secret. To reference a secret also created in this template, use the see `Ref <https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/intrinsic-function-reference-ref.html>`_ function with the secret's logical ID.
2253
2253
  :param target_id: The ID of the database or cluster.
2254
- :param target_type: A string that defines the type of service or database associated with the secret. This value instructs Secrets Manager how to update the secret with the details of the service or database. This value must be one of the following: - AWS::RDS::DBInstance - AWS::RDS::DBCluster - AWS::Redshift::Cluster - AWS::DocDB::DBInstance - AWS::DocDB::DBCluster - AWS::DocDBElastic::Cluster
2254
+ :param target_type: A string that defines the type of service or database associated with the secret. This value instructs Secrets Manager how to update the secret with the details of the service or database. This value must be one of the following: - AWS::RDS::DBInstance - AWS::RDS::DBCluster - AWS::Redshift::Cluster - AWS::DocDB::DBInstance - AWS::DocDB::DBCluster
2255
2255
  '''
2256
2256
  if __debug__:
2257
2257
  type_hints = typing.get_type_hints(_typecheckingstub__f27548ced74eb3d06a9cd3710e7d562d307b5a2c264476a3e685fcb94ccdee58)
@@ -2367,7 +2367,7 @@ class CfnSecretTargetAttachmentProps:
2367
2367
 
2368
2368
  :param secret_id: The ARN or name of the secret. To reference a secret also created in this template, use the see `Ref <https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/intrinsic-function-reference-ref.html>`_ function with the secret's logical ID.
2369
2369
  :param target_id: The ID of the database or cluster.
2370
- :param target_type: A string that defines the type of service or database associated with the secret. This value instructs Secrets Manager how to update the secret with the details of the service or database. This value must be one of the following: - AWS::RDS::DBInstance - AWS::RDS::DBCluster - AWS::Redshift::Cluster - AWS::DocDB::DBInstance - AWS::DocDB::DBCluster - AWS::DocDBElastic::Cluster
2370
+ :param target_type: A string that defines the type of service or database associated with the secret. This value instructs Secrets Manager how to update the secret with the details of the service or database. This value must be one of the following: - AWS::RDS::DBInstance - AWS::RDS::DBCluster - AWS::Redshift::Cluster - AWS::DocDB::DBInstance - AWS::DocDB::DBCluster
2371
2371
 
2372
2372
  :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-secretsmanager-secrettargetattachment.html
2373
2373
  :exampleMetadata: fixture=_generated
@@ -2428,7 +2428,6 @@ class CfnSecretTargetAttachmentProps:
2428
2428
  - AWS::Redshift::Cluster
2429
2429
  - AWS::DocDB::DBInstance
2430
2430
  - AWS::DocDB::DBCluster
2431
- - AWS::DocDBElastic::Cluster
2432
2431
 
2433
2432
  :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-secretsmanager-secrettargetattachment.html#cfn-secretsmanager-secrettargetattachment-targettype
2434
2433
  '''
@@ -274,9 +274,11 @@ class CfnAutomationRule(
274
274
  )]
275
275
  ),
276
276
  description="description",
277
- is_terminal=False,
278
277
  rule_name="ruleName",
279
278
  rule_order=123,
279
+
280
+ # the properties below are optional
281
+ is_terminal=False,
280
282
  rule_status="ruleStatus",
281
283
  tags={
282
284
  "tags_key": "tags"
@@ -289,12 +291,12 @@ class CfnAutomationRule(
289
291
  scope: _constructs_77d1e7e8.Construct,
290
292
  id: builtins.str,
291
293
  *,
292
- actions: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Sequence[typing.Union[_IResolvable_da3f097b, typing.Union["CfnAutomationRule.AutomationRulesActionProperty", typing.Dict[builtins.str, typing.Any]]]]]] = None,
293
- criteria: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union["CfnAutomationRule.AutomationRulesFindingFiltersProperty", typing.Dict[builtins.str, typing.Any]]]] = None,
294
- description: typing.Optional[builtins.str] = None,
294
+ actions: typing.Union[_IResolvable_da3f097b, typing.Sequence[typing.Union[_IResolvable_da3f097b, typing.Union["CfnAutomationRule.AutomationRulesActionProperty", typing.Dict[builtins.str, typing.Any]]]]],
295
+ criteria: typing.Union[_IResolvable_da3f097b, typing.Union["CfnAutomationRule.AutomationRulesFindingFiltersProperty", typing.Dict[builtins.str, typing.Any]]],
296
+ description: builtins.str,
297
+ rule_name: builtins.str,
298
+ rule_order: jsii.Number,
295
299
  is_terminal: typing.Optional[typing.Union[builtins.bool, _IResolvable_da3f097b]] = None,
296
- rule_name: typing.Optional[builtins.str] = None,
297
- rule_order: typing.Optional[jsii.Number] = None,
298
300
  rule_status: typing.Optional[builtins.str] = None,
299
301
  tags: typing.Optional[typing.Mapping[builtins.str, builtins.str]] = None,
300
302
  ) -> None:
@@ -304,9 +306,9 @@ class CfnAutomationRule(
304
306
  :param actions: One or more actions to update finding fields if a finding matches the conditions specified in ``Criteria`` .
305
307
  :param criteria: A set of `AWS Security Finding Format (ASFF) <https://docs.aws.amazon.com/securityhub/latest/userguide/securityhub-findings-format.html>`_ finding field attributes and corresponding expected values that Security Hub uses to filter findings. If a rule is enabled and a finding matches the criteria specified in this parameter, Security Hub applies the rule action to the finding.
306
308
  :param description: A description of the rule.
307
- :param is_terminal: Specifies whether a rule is the last to be applied with respect to a finding that matches the rule criteria. This is useful when a finding matches the criteria for multiple rules, and each rule has different actions. If a rule is terminal, Security Hub applies the rule action to a finding that matches the rule criteria and doesn't evaluate other rules for the finding. By default, a rule isn't terminal.
308
309
  :param rule_name: The name of the rule.
309
310
  :param rule_order: An integer ranging from 1 to 1000 that represents the order in which the rule action is applied to findings. Security Hub applies rules with lower values for this parameter first.
311
+ :param is_terminal: Specifies whether a rule is the last to be applied with respect to a finding that matches the rule criteria. This is useful when a finding matches the criteria for multiple rules, and each rule has different actions. If a rule is terminal, Security Hub applies the rule action to a finding that matches the rule criteria and doesn't evaluate other rules for the finding. By default, a rule isn't terminal.
310
312
  :param rule_status: Whether the rule is active after it is created. If this parameter is equal to ``ENABLED`` , Security Hub applies the rule to findings and finding updates after the rule is created.
311
313
  :param tags: User-defined tags associated with an automation rule.
312
314
  '''
@@ -318,9 +320,9 @@ class CfnAutomationRule(
318
320
  actions=actions,
319
321
  criteria=criteria,
320
322
  description=description,
321
- is_terminal=is_terminal,
322
323
  rule_name=rule_name,
323
324
  rule_order=rule_order,
325
+ is_terminal=is_terminal,
324
326
  rule_status=rule_status,
325
327
  tags=tags,
326
328
  )
@@ -416,14 +418,14 @@ class CfnAutomationRule(
416
418
  @jsii.member(jsii_name="actions")
417
419
  def actions(
418
420
  self,
419
- ) -> typing.Optional[typing.Union[_IResolvable_da3f097b, typing.List[typing.Union[_IResolvable_da3f097b, "CfnAutomationRule.AutomationRulesActionProperty"]]]]:
421
+ ) -> typing.Union[_IResolvable_da3f097b, typing.List[typing.Union[_IResolvable_da3f097b, "CfnAutomationRule.AutomationRulesActionProperty"]]]:
420
422
  '''One or more actions to update finding fields if a finding matches the conditions specified in ``Criteria`` .'''
421
- return typing.cast(typing.Optional[typing.Union[_IResolvable_da3f097b, typing.List[typing.Union[_IResolvable_da3f097b, "CfnAutomationRule.AutomationRulesActionProperty"]]]], jsii.get(self, "actions"))
423
+ return typing.cast(typing.Union[_IResolvable_da3f097b, typing.List[typing.Union[_IResolvable_da3f097b, "CfnAutomationRule.AutomationRulesActionProperty"]]], jsii.get(self, "actions"))
422
424
 
423
425
  @actions.setter
424
426
  def actions(
425
427
  self,
426
- value: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.List[typing.Union[_IResolvable_da3f097b, "CfnAutomationRule.AutomationRulesActionProperty"]]]],
428
+ value: typing.Union[_IResolvable_da3f097b, typing.List[typing.Union[_IResolvable_da3f097b, "CfnAutomationRule.AutomationRulesActionProperty"]]],
427
429
  ) -> None:
428
430
  if __debug__:
429
431
  type_hints = typing.get_type_hints(_typecheckingstub__90988dc6b536563439917056373f7379ca48a864b5a3471a7b3552f6c9b40897)
@@ -434,14 +436,14 @@ class CfnAutomationRule(
434
436
  @jsii.member(jsii_name="criteria")
435
437
  def criteria(
436
438
  self,
437
- ) -> typing.Optional[typing.Union[_IResolvable_da3f097b, "CfnAutomationRule.AutomationRulesFindingFiltersProperty"]]:
439
+ ) -> typing.Union[_IResolvable_da3f097b, "CfnAutomationRule.AutomationRulesFindingFiltersProperty"]:
438
440
  '''A set of `AWS Security Finding Format (ASFF) <https://docs.aws.amazon.com/securityhub/latest/userguide/securityhub-findings-format.html>`_ finding field attributes and corresponding expected values that Security Hub uses to filter findings. If a rule is enabled and a finding matches the criteria specified in this parameter, Security Hub applies the rule action to the finding.'''
439
- return typing.cast(typing.Optional[typing.Union[_IResolvable_da3f097b, "CfnAutomationRule.AutomationRulesFindingFiltersProperty"]], jsii.get(self, "criteria"))
441
+ return typing.cast(typing.Union[_IResolvable_da3f097b, "CfnAutomationRule.AutomationRulesFindingFiltersProperty"], jsii.get(self, "criteria"))
440
442
 
441
443
  @criteria.setter
442
444
  def criteria(
443
445
  self,
444
- value: typing.Optional[typing.Union[_IResolvable_da3f097b, "CfnAutomationRule.AutomationRulesFindingFiltersProperty"]],
446
+ value: typing.Union[_IResolvable_da3f097b, "CfnAutomationRule.AutomationRulesFindingFiltersProperty"],
445
447
  ) -> None:
446
448
  if __debug__:
447
449
  type_hints = typing.get_type_hints(_typecheckingstub__cc91daff88300654f2c8a9e4e5aad76fd0c26ae9c62e118febc7d1bff9733c5f)
@@ -450,43 +452,25 @@ class CfnAutomationRule(
450
452
 
451
453
  @builtins.property
452
454
  @jsii.member(jsii_name="description")
453
- def description(self) -> typing.Optional[builtins.str]:
455
+ def description(self) -> builtins.str:
454
456
  '''A description of the rule.'''
455
- return typing.cast(typing.Optional[builtins.str], jsii.get(self, "description"))
457
+ return typing.cast(builtins.str, jsii.get(self, "description"))
456
458
 
457
459
  @description.setter
458
- def description(self, value: typing.Optional[builtins.str]) -> None:
460
+ def description(self, value: builtins.str) -> None:
459
461
  if __debug__:
460
462
  type_hints = typing.get_type_hints(_typecheckingstub__13e710145ba6564ce42bac7fc3465ec7406a15699f473acd70e62bf605c1f259)
461
463
  check_type(argname="argument value", value=value, expected_type=type_hints["value"])
462
464
  jsii.set(self, "description", value) # pyright: ignore[reportArgumentType]
463
465
 
464
- @builtins.property
465
- @jsii.member(jsii_name="isTerminal")
466
- def is_terminal(
467
- self,
468
- ) -> typing.Optional[typing.Union[builtins.bool, _IResolvable_da3f097b]]:
469
- '''Specifies whether a rule is the last to be applied with respect to a finding that matches the rule criteria.'''
470
- return typing.cast(typing.Optional[typing.Union[builtins.bool, _IResolvable_da3f097b]], jsii.get(self, "isTerminal"))
471
-
472
- @is_terminal.setter
473
- def is_terminal(
474
- self,
475
- value: typing.Optional[typing.Union[builtins.bool, _IResolvable_da3f097b]],
476
- ) -> None:
477
- if __debug__:
478
- type_hints = typing.get_type_hints(_typecheckingstub__11031a77a18a3180e3bf703420372155750c7001d9c920558ff50230e0111537)
479
- check_type(argname="argument value", value=value, expected_type=type_hints["value"])
480
- jsii.set(self, "isTerminal", value) # pyright: ignore[reportArgumentType]
481
-
482
466
  @builtins.property
483
467
  @jsii.member(jsii_name="ruleName")
484
- def rule_name(self) -> typing.Optional[builtins.str]:
468
+ def rule_name(self) -> builtins.str:
485
469
  '''The name of the rule.'''
486
- return typing.cast(typing.Optional[builtins.str], jsii.get(self, "ruleName"))
470
+ return typing.cast(builtins.str, jsii.get(self, "ruleName"))
487
471
 
488
472
  @rule_name.setter
489
- def rule_name(self, value: typing.Optional[builtins.str]) -> None:
473
+ def rule_name(self, value: builtins.str) -> None:
490
474
  if __debug__:
491
475
  type_hints = typing.get_type_hints(_typecheckingstub__ffff694fc9dee0bbe561a13e56455e4e3a3b12c8c47e7c20a7fe2e8c13c0725c)
492
476
  check_type(argname="argument value", value=value, expected_type=type_hints["value"])
@@ -494,17 +478,35 @@ class CfnAutomationRule(
494
478
 
495
479
  @builtins.property
496
480
  @jsii.member(jsii_name="ruleOrder")
497
- def rule_order(self) -> typing.Optional[jsii.Number]:
481
+ def rule_order(self) -> jsii.Number:
498
482
  '''An integer ranging from 1 to 1000 that represents the order in which the rule action is applied to findings.'''
499
- return typing.cast(typing.Optional[jsii.Number], jsii.get(self, "ruleOrder"))
483
+ return typing.cast(jsii.Number, jsii.get(self, "ruleOrder"))
500
484
 
501
485
  @rule_order.setter
502
- def rule_order(self, value: typing.Optional[jsii.Number]) -> None:
486
+ def rule_order(self, value: jsii.Number) -> None:
503
487
  if __debug__:
504
488
  type_hints = typing.get_type_hints(_typecheckingstub__db37e60211fd885d4c7d0aa9af521faa3786061d7fa1712b86f54f3646a4738b)
505
489
  check_type(argname="argument value", value=value, expected_type=type_hints["value"])
506
490
  jsii.set(self, "ruleOrder", value) # pyright: ignore[reportArgumentType]
507
491
 
492
+ @builtins.property
493
+ @jsii.member(jsii_name="isTerminal")
494
+ def is_terminal(
495
+ self,
496
+ ) -> typing.Optional[typing.Union[builtins.bool, _IResolvable_da3f097b]]:
497
+ '''Specifies whether a rule is the last to be applied with respect to a finding that matches the rule criteria.'''
498
+ return typing.cast(typing.Optional[typing.Union[builtins.bool, _IResolvable_da3f097b]], jsii.get(self, "isTerminal"))
499
+
500
+ @is_terminal.setter
501
+ def is_terminal(
502
+ self,
503
+ value: typing.Optional[typing.Union[builtins.bool, _IResolvable_da3f097b]],
504
+ ) -> None:
505
+ if __debug__:
506
+ type_hints = typing.get_type_hints(_typecheckingstub__11031a77a18a3180e3bf703420372155750c7001d9c920558ff50230e0111537)
507
+ check_type(argname="argument value", value=value, expected_type=type_hints["value"])
508
+ jsii.set(self, "isTerminal", value) # pyright: ignore[reportArgumentType]
509
+
508
510
  @builtins.property
509
511
  @jsii.member(jsii_name="ruleStatus")
510
512
  def rule_status(self) -> typing.Optional[builtins.str]:
@@ -2554,9 +2556,9 @@ class CfnAutomationRule(
2554
2556
  "actions": "actions",
2555
2557
  "criteria": "criteria",
2556
2558
  "description": "description",
2557
- "is_terminal": "isTerminal",
2558
2559
  "rule_name": "ruleName",
2559
2560
  "rule_order": "ruleOrder",
2561
+ "is_terminal": "isTerminal",
2560
2562
  "rule_status": "ruleStatus",
2561
2563
  "tags": "tags",
2562
2564
  },
@@ -2565,12 +2567,12 @@ class CfnAutomationRuleProps:
2565
2567
  def __init__(
2566
2568
  self,
2567
2569
  *,
2568
- actions: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Sequence[typing.Union[_IResolvable_da3f097b, typing.Union[CfnAutomationRule.AutomationRulesActionProperty, typing.Dict[builtins.str, typing.Any]]]]]] = None,
2569
- criteria: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnAutomationRule.AutomationRulesFindingFiltersProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
2570
- description: typing.Optional[builtins.str] = None,
2570
+ actions: typing.Union[_IResolvable_da3f097b, typing.Sequence[typing.Union[_IResolvable_da3f097b, typing.Union[CfnAutomationRule.AutomationRulesActionProperty, typing.Dict[builtins.str, typing.Any]]]]],
2571
+ criteria: typing.Union[_IResolvable_da3f097b, typing.Union[CfnAutomationRule.AutomationRulesFindingFiltersProperty, typing.Dict[builtins.str, typing.Any]]],
2572
+ description: builtins.str,
2573
+ rule_name: builtins.str,
2574
+ rule_order: jsii.Number,
2571
2575
  is_terminal: typing.Optional[typing.Union[builtins.bool, _IResolvable_da3f097b]] = None,
2572
- rule_name: typing.Optional[builtins.str] = None,
2573
- rule_order: typing.Optional[jsii.Number] = None,
2574
2576
  rule_status: typing.Optional[builtins.str] = None,
2575
2577
  tags: typing.Optional[typing.Mapping[builtins.str, builtins.str]] = None,
2576
2578
  ) -> None:
@@ -2579,9 +2581,9 @@ class CfnAutomationRuleProps:
2579
2581
  :param actions: One or more actions to update finding fields if a finding matches the conditions specified in ``Criteria`` .
2580
2582
  :param criteria: A set of `AWS Security Finding Format (ASFF) <https://docs.aws.amazon.com/securityhub/latest/userguide/securityhub-findings-format.html>`_ finding field attributes and corresponding expected values that Security Hub uses to filter findings. If a rule is enabled and a finding matches the criteria specified in this parameter, Security Hub applies the rule action to the finding.
2581
2583
  :param description: A description of the rule.
2582
- :param is_terminal: Specifies whether a rule is the last to be applied with respect to a finding that matches the rule criteria. This is useful when a finding matches the criteria for multiple rules, and each rule has different actions. If a rule is terminal, Security Hub applies the rule action to a finding that matches the rule criteria and doesn't evaluate other rules for the finding. By default, a rule isn't terminal.
2583
2584
  :param rule_name: The name of the rule.
2584
2585
  :param rule_order: An integer ranging from 1 to 1000 that represents the order in which the rule action is applied to findings. Security Hub applies rules with lower values for this parameter first.
2586
+ :param is_terminal: Specifies whether a rule is the last to be applied with respect to a finding that matches the rule criteria. This is useful when a finding matches the criteria for multiple rules, and each rule has different actions. If a rule is terminal, Security Hub applies the rule action to a finding that matches the rule criteria and doesn't evaluate other rules for the finding. By default, a rule isn't terminal.
2585
2587
  :param rule_status: Whether the rule is active after it is created. If this parameter is equal to ``ENABLED`` , Security Hub applies the rule to findings and finding updates after the rule is created.
2586
2588
  :param tags: User-defined tags associated with an automation rule.
2587
2589
 
@@ -2794,9 +2796,11 @@ class CfnAutomationRuleProps:
2794
2796
  )]
2795
2797
  ),
2796
2798
  description="description",
2797
- is_terminal=False,
2798
2799
  rule_name="ruleName",
2799
2800
  rule_order=123,
2801
+
2802
+ # the properties below are optional
2803
+ is_terminal=False,
2800
2804
  rule_status="ruleStatus",
2801
2805
  tags={
2802
2806
  "tags_key": "tags"
@@ -2808,24 +2812,20 @@ class CfnAutomationRuleProps:
2808
2812
  check_type(argname="argument actions", value=actions, expected_type=type_hints["actions"])
2809
2813
  check_type(argname="argument criteria", value=criteria, expected_type=type_hints["criteria"])
2810
2814
  check_type(argname="argument description", value=description, expected_type=type_hints["description"])
2811
- check_type(argname="argument is_terminal", value=is_terminal, expected_type=type_hints["is_terminal"])
2812
2815
  check_type(argname="argument rule_name", value=rule_name, expected_type=type_hints["rule_name"])
2813
2816
  check_type(argname="argument rule_order", value=rule_order, expected_type=type_hints["rule_order"])
2817
+ check_type(argname="argument is_terminal", value=is_terminal, expected_type=type_hints["is_terminal"])
2814
2818
  check_type(argname="argument rule_status", value=rule_status, expected_type=type_hints["rule_status"])
2815
2819
  check_type(argname="argument tags", value=tags, expected_type=type_hints["tags"])
2816
- self._values: typing.Dict[builtins.str, typing.Any] = {}
2817
- if actions is not None:
2818
- self._values["actions"] = actions
2819
- if criteria is not None:
2820
- self._values["criteria"] = criteria
2821
- if description is not None:
2822
- self._values["description"] = description
2820
+ self._values: typing.Dict[builtins.str, typing.Any] = {
2821
+ "actions": actions,
2822
+ "criteria": criteria,
2823
+ "description": description,
2824
+ "rule_name": rule_name,
2825
+ "rule_order": rule_order,
2826
+ }
2823
2827
  if is_terminal is not None:
2824
2828
  self._values["is_terminal"] = is_terminal
2825
- if rule_name is not None:
2826
- self._values["rule_name"] = rule_name
2827
- if rule_order is not None:
2828
- self._values["rule_order"] = rule_order
2829
2829
  if rule_status is not None:
2830
2830
  self._values["rule_status"] = rule_status
2831
2831
  if tags is not None:
@@ -2834,58 +2834,49 @@ class CfnAutomationRuleProps:
2834
2834
  @builtins.property
2835
2835
  def actions(
2836
2836
  self,
2837
- ) -> typing.Optional[typing.Union[_IResolvable_da3f097b, typing.List[typing.Union[_IResolvable_da3f097b, CfnAutomationRule.AutomationRulesActionProperty]]]]:
2837
+ ) -> typing.Union[_IResolvable_da3f097b, typing.List[typing.Union[_IResolvable_da3f097b, CfnAutomationRule.AutomationRulesActionProperty]]]:
2838
2838
  '''One or more actions to update finding fields if a finding matches the conditions specified in ``Criteria`` .
2839
2839
 
2840
2840
  :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-securityhub-automationrule.html#cfn-securityhub-automationrule-actions
2841
2841
  '''
2842
2842
  result = self._values.get("actions")
2843
- return typing.cast(typing.Optional[typing.Union[_IResolvable_da3f097b, typing.List[typing.Union[_IResolvable_da3f097b, CfnAutomationRule.AutomationRulesActionProperty]]]], result)
2843
+ assert result is not None, "Required property 'actions' is missing"
2844
+ return typing.cast(typing.Union[_IResolvable_da3f097b, typing.List[typing.Union[_IResolvable_da3f097b, CfnAutomationRule.AutomationRulesActionProperty]]], result)
2844
2845
 
2845
2846
  @builtins.property
2846
2847
  def criteria(
2847
2848
  self,
2848
- ) -> typing.Optional[typing.Union[_IResolvable_da3f097b, CfnAutomationRule.AutomationRulesFindingFiltersProperty]]:
2849
+ ) -> typing.Union[_IResolvable_da3f097b, CfnAutomationRule.AutomationRulesFindingFiltersProperty]:
2849
2850
  '''A set of `AWS Security Finding Format (ASFF) <https://docs.aws.amazon.com/securityhub/latest/userguide/securityhub-findings-format.html>`_ finding field attributes and corresponding expected values that Security Hub uses to filter findings. If a rule is enabled and a finding matches the criteria specified in this parameter, Security Hub applies the rule action to the finding.
2850
2851
 
2851
2852
  :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-securityhub-automationrule.html#cfn-securityhub-automationrule-criteria
2852
2853
  '''
2853
2854
  result = self._values.get("criteria")
2854
- return typing.cast(typing.Optional[typing.Union[_IResolvable_da3f097b, CfnAutomationRule.AutomationRulesFindingFiltersProperty]], result)
2855
+ assert result is not None, "Required property 'criteria' is missing"
2856
+ return typing.cast(typing.Union[_IResolvable_da3f097b, CfnAutomationRule.AutomationRulesFindingFiltersProperty], result)
2855
2857
 
2856
2858
  @builtins.property
2857
- def description(self) -> typing.Optional[builtins.str]:
2859
+ def description(self) -> builtins.str:
2858
2860
  '''A description of the rule.
2859
2861
 
2860
2862
  :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-securityhub-automationrule.html#cfn-securityhub-automationrule-description
2861
2863
  '''
2862
2864
  result = self._values.get("description")
2863
- return typing.cast(typing.Optional[builtins.str], result)
2864
-
2865
- @builtins.property
2866
- def is_terminal(
2867
- self,
2868
- ) -> typing.Optional[typing.Union[builtins.bool, _IResolvable_da3f097b]]:
2869
- '''Specifies whether a rule is the last to be applied with respect to a finding that matches the rule criteria.
2870
-
2871
- This is useful when a finding matches the criteria for multiple rules, and each rule has different actions. If a rule is terminal, Security Hub applies the rule action to a finding that matches the rule criteria and doesn't evaluate other rules for the finding. By default, a rule isn't terminal.
2872
-
2873
- :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-securityhub-automationrule.html#cfn-securityhub-automationrule-isterminal
2874
- '''
2875
- result = self._values.get("is_terminal")
2876
- return typing.cast(typing.Optional[typing.Union[builtins.bool, _IResolvable_da3f097b]], result)
2865
+ assert result is not None, "Required property 'description' is missing"
2866
+ return typing.cast(builtins.str, result)
2877
2867
 
2878
2868
  @builtins.property
2879
- def rule_name(self) -> typing.Optional[builtins.str]:
2869
+ def rule_name(self) -> builtins.str:
2880
2870
  '''The name of the rule.
2881
2871
 
2882
2872
  :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-securityhub-automationrule.html#cfn-securityhub-automationrule-rulename
2883
2873
  '''
2884
2874
  result = self._values.get("rule_name")
2885
- return typing.cast(typing.Optional[builtins.str], result)
2875
+ assert result is not None, "Required property 'rule_name' is missing"
2876
+ return typing.cast(builtins.str, result)
2886
2877
 
2887
2878
  @builtins.property
2888
- def rule_order(self) -> typing.Optional[jsii.Number]:
2879
+ def rule_order(self) -> jsii.Number:
2889
2880
  '''An integer ranging from 1 to 1000 that represents the order in which the rule action is applied to findings.
2890
2881
 
2891
2882
  Security Hub applies rules with lower values for this parameter first.
@@ -2893,7 +2884,21 @@ class CfnAutomationRuleProps:
2893
2884
  :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-securityhub-automationrule.html#cfn-securityhub-automationrule-ruleorder
2894
2885
  '''
2895
2886
  result = self._values.get("rule_order")
2896
- return typing.cast(typing.Optional[jsii.Number], result)
2887
+ assert result is not None, "Required property 'rule_order' is missing"
2888
+ return typing.cast(jsii.Number, result)
2889
+
2890
+ @builtins.property
2891
+ def is_terminal(
2892
+ self,
2893
+ ) -> typing.Optional[typing.Union[builtins.bool, _IResolvable_da3f097b]]:
2894
+ '''Specifies whether a rule is the last to be applied with respect to a finding that matches the rule criteria.
2895
+
2896
+ This is useful when a finding matches the criteria for multiple rules, and each rule has different actions. If a rule is terminal, Security Hub applies the rule action to a finding that matches the rule criteria and doesn't evaluate other rules for the finding. By default, a rule isn't terminal.
2897
+
2898
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-securityhub-automationrule.html#cfn-securityhub-automationrule-isterminal
2899
+ '''
2900
+ result = self._values.get("is_terminal")
2901
+ return typing.cast(typing.Optional[typing.Union[builtins.bool, _IResolvable_da3f097b]], result)
2897
2902
 
2898
2903
  @builtins.property
2899
2904
  def rule_status(self) -> typing.Optional[builtins.str]:
@@ -10314,12 +10319,12 @@ def _typecheckingstub__90c663d2946359b509542feafdcb3d89f11ca9e30a214aae02ea3d6b3
10314
10319
  scope: _constructs_77d1e7e8.Construct,
10315
10320
  id: builtins.str,
10316
10321
  *,
10317
- actions: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Sequence[typing.Union[_IResolvable_da3f097b, typing.Union[CfnAutomationRule.AutomationRulesActionProperty, typing.Dict[builtins.str, typing.Any]]]]]] = None,
10318
- criteria: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnAutomationRule.AutomationRulesFindingFiltersProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
10319
- description: typing.Optional[builtins.str] = None,
10322
+ actions: typing.Union[_IResolvable_da3f097b, typing.Sequence[typing.Union[_IResolvable_da3f097b, typing.Union[CfnAutomationRule.AutomationRulesActionProperty, typing.Dict[builtins.str, typing.Any]]]]],
10323
+ criteria: typing.Union[_IResolvable_da3f097b, typing.Union[CfnAutomationRule.AutomationRulesFindingFiltersProperty, typing.Dict[builtins.str, typing.Any]]],
10324
+ description: builtins.str,
10325
+ rule_name: builtins.str,
10326
+ rule_order: jsii.Number,
10320
10327
  is_terminal: typing.Optional[typing.Union[builtins.bool, _IResolvable_da3f097b]] = None,
10321
- rule_name: typing.Optional[builtins.str] = None,
10322
- rule_order: typing.Optional[jsii.Number] = None,
10323
10328
  rule_status: typing.Optional[builtins.str] = None,
10324
10329
  tags: typing.Optional[typing.Mapping[builtins.str, builtins.str]] = None,
10325
10330
  ) -> None:
@@ -10339,37 +10344,37 @@ def _typecheckingstub__cc6a8a522560219490822e00b9ec3810152de6616cf975f073c37fc9d
10339
10344
  pass
10340
10345
 
10341
10346
  def _typecheckingstub__90988dc6b536563439917056373f7379ca48a864b5a3471a7b3552f6c9b40897(
10342
- value: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.List[typing.Union[_IResolvable_da3f097b, CfnAutomationRule.AutomationRulesActionProperty]]]],
10347
+ value: typing.Union[_IResolvable_da3f097b, typing.List[typing.Union[_IResolvable_da3f097b, CfnAutomationRule.AutomationRulesActionProperty]]],
10343
10348
  ) -> None:
10344
10349
  """Type checking stubs"""
10345
10350
  pass
10346
10351
 
10347
10352
  def _typecheckingstub__cc91daff88300654f2c8a9e4e5aad76fd0c26ae9c62e118febc7d1bff9733c5f(
10348
- value: typing.Optional[typing.Union[_IResolvable_da3f097b, CfnAutomationRule.AutomationRulesFindingFiltersProperty]],
10353
+ value: typing.Union[_IResolvable_da3f097b, CfnAutomationRule.AutomationRulesFindingFiltersProperty],
10349
10354
  ) -> None:
10350
10355
  """Type checking stubs"""
10351
10356
  pass
10352
10357
 
10353
10358
  def _typecheckingstub__13e710145ba6564ce42bac7fc3465ec7406a15699f473acd70e62bf605c1f259(
10354
- value: typing.Optional[builtins.str],
10359
+ value: builtins.str,
10355
10360
  ) -> None:
10356
10361
  """Type checking stubs"""
10357
10362
  pass
10358
10363
 
10359
- def _typecheckingstub__11031a77a18a3180e3bf703420372155750c7001d9c920558ff50230e0111537(
10360
- value: typing.Optional[typing.Union[builtins.bool, _IResolvable_da3f097b]],
10364
+ def _typecheckingstub__ffff694fc9dee0bbe561a13e56455e4e3a3b12c8c47e7c20a7fe2e8c13c0725c(
10365
+ value: builtins.str,
10361
10366
  ) -> None:
10362
10367
  """Type checking stubs"""
10363
10368
  pass
10364
10369
 
10365
- def _typecheckingstub__ffff694fc9dee0bbe561a13e56455e4e3a3b12c8c47e7c20a7fe2e8c13c0725c(
10366
- value: typing.Optional[builtins.str],
10370
+ def _typecheckingstub__db37e60211fd885d4c7d0aa9af521faa3786061d7fa1712b86f54f3646a4738b(
10371
+ value: jsii.Number,
10367
10372
  ) -> None:
10368
10373
  """Type checking stubs"""
10369
10374
  pass
10370
10375
 
10371
- def _typecheckingstub__db37e60211fd885d4c7d0aa9af521faa3786061d7fa1712b86f54f3646a4738b(
10372
- value: typing.Optional[jsii.Number],
10376
+ def _typecheckingstub__11031a77a18a3180e3bf703420372155750c7001d9c920558ff50230e0111537(
10377
+ value: typing.Optional[typing.Union[builtins.bool, _IResolvable_da3f097b]],
10373
10378
  ) -> None:
10374
10379
  """Type checking stubs"""
10375
10380
  pass
@@ -10527,12 +10532,12 @@ def _typecheckingstub__e47be336b722bb880cce3edf7d5752dceac8f243282fcb2bc5094d82b
10527
10532
 
10528
10533
  def _typecheckingstub__221241b44c93ea569fcf69aaaade0ce7cf31b7343bc3d072d74ccd16895d9a2d(
10529
10534
  *,
10530
- actions: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Sequence[typing.Union[_IResolvable_da3f097b, typing.Union[CfnAutomationRule.AutomationRulesActionProperty, typing.Dict[builtins.str, typing.Any]]]]]] = None,
10531
- criteria: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnAutomationRule.AutomationRulesFindingFiltersProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
10532
- description: typing.Optional[builtins.str] = None,
10535
+ actions: typing.Union[_IResolvable_da3f097b, typing.Sequence[typing.Union[_IResolvable_da3f097b, typing.Union[CfnAutomationRule.AutomationRulesActionProperty, typing.Dict[builtins.str, typing.Any]]]]],
10536
+ criteria: typing.Union[_IResolvable_da3f097b, typing.Union[CfnAutomationRule.AutomationRulesFindingFiltersProperty, typing.Dict[builtins.str, typing.Any]]],
10537
+ description: builtins.str,
10538
+ rule_name: builtins.str,
10539
+ rule_order: jsii.Number,
10533
10540
  is_terminal: typing.Optional[typing.Union[builtins.bool, _IResolvable_da3f097b]] = None,
10534
- rule_name: typing.Optional[builtins.str] = None,
10535
- rule_order: typing.Optional[jsii.Number] = None,
10536
10541
  rule_status: typing.Optional[builtins.str] = None,
10537
10542
  tags: typing.Optional[typing.Mapping[builtins.str, builtins.str]] = None,
10538
10543
  ) -> None:
@@ -9944,6 +9944,7 @@ class CfnReceiptRule(
9944
9944
  bucket_name="bucketName",
9945
9945
 
9946
9946
  # the properties below are optional
9947
+ iam_role_arn="iamRoleArn",
9947
9948
  kms_key_arn="kmsKeyArn",
9948
9949
  object_key_prefix="objectKeyPrefix",
9949
9950
  topic_arn="topicArn"
@@ -10164,6 +10165,7 @@ class CfnReceiptRule(
10164
10165
  bucket_name="bucketName",
10165
10166
 
10166
10167
  # the properties below are optional
10168
+ iam_role_arn="iamRoleArn",
10167
10169
  kms_key_arn="kmsKeyArn",
10168
10170
  object_key_prefix="objectKeyPrefix",
10169
10171
  topic_arn="topicArn"
@@ -10686,6 +10688,7 @@ class CfnReceiptRule(
10686
10688
  bucket_name="bucketName",
10687
10689
 
10688
10690
  # the properties below are optional
10691
+ iam_role_arn="iamRoleArn",
10689
10692
  kms_key_arn="kmsKeyArn",
10690
10693
  object_key_prefix="objectKeyPrefix",
10691
10694
  topic_arn="topicArn"
@@ -10826,6 +10829,7 @@ class CfnReceiptRule(
10826
10829
  jsii_struct_bases=[],
10827
10830
  name_mapping={
10828
10831
  "bucket_name": "bucketName",
10832
+ "iam_role_arn": "iamRoleArn",
10829
10833
  "kms_key_arn": "kmsKeyArn",
10830
10834
  "object_key_prefix": "objectKeyPrefix",
10831
10835
  "topic_arn": "topicArn",
@@ -10836,6 +10840,7 @@ class CfnReceiptRule(
10836
10840
  self,
10837
10841
  *,
10838
10842
  bucket_name: builtins.str,
10843
+ iam_role_arn: typing.Optional[builtins.str] = None,
10839
10844
  kms_key_arn: typing.Optional[builtins.str] = None,
10840
10845
  object_key_prefix: typing.Optional[builtins.str] = None,
10841
10846
  topic_arn: typing.Optional[builtins.str] = None,
@@ -10850,6 +10855,7 @@ class CfnReceiptRule(
10850
10855
  For information about specifying Amazon S3 actions in receipt rules, see the `Amazon SES Developer Guide <https://docs.aws.amazon.com/ses/latest/dg/receiving-email-action-s3.html>`_ .
10851
10856
 
10852
10857
  :param bucket_name: The name of the Amazon S3 bucket for incoming email.
10858
+ :param iam_role_arn: The ARN of the IAM role to be used by Amazon Simple Email Service while writing to the Amazon S3 bucket, optionally encrypting your mail via the provided customer managed key, and publishing to the Amazon SNS topic. This role should have access to the following APIs: - ``s3:PutObject`` , ``kms:Encrypt`` and ``kms:GenerateDataKey`` for the given Amazon S3 bucket. - ``kms:GenerateDataKey`` for the given AWS KMS customer managed key. - ``sns:Publish`` for the given Amazon SNS topic. .. epigraph:: If an IAM role ARN is provided, the role (and only the role) is used to access all the given resources (Amazon S3 bucket, AWS KMS customer managed key and Amazon SNS topic). Therefore, setting up individual resource access permissions is not required.
10853
10859
  :param kms_key_arn: The customer managed key that Amazon SES should use to encrypt your emails before saving them to the Amazon S3 bucket. You can use the AWS managed key or a customer managed key that you created in AWS KMS as follows: - To use the AWS managed key, provide an ARN in the form of ``arn:aws:kms:REGION:ACCOUNT-ID-WITHOUT-HYPHENS:alias/aws/ses`` . For example, if your AWS account ID is 123456789012 and you want to use the AWS managed key in the US West (Oregon) Region, the ARN of the AWS managed key would be ``arn:aws:kms:us-west-2:123456789012:alias/aws/ses`` . If you use the AWS managed key, you don't need to perform any extra steps to give Amazon SES permission to use the key. - To use a customer managed key that you created in AWS KMS, provide the ARN of the customer managed key and ensure that you add a statement to your key's policy to give Amazon SES permission to use it. For more information about giving permissions, see the `Amazon SES Developer Guide <https://docs.aws.amazon.com/ses/latest/dg/receiving-email-permissions.html>`_ . For more information about key policies, see the `AWS KMS Developer Guide <https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html>`_ . If you do not specify an AWS KMS key, Amazon SES does not encrypt your emails. .. epigraph:: Your mail is encrypted by Amazon SES using the Amazon S3 encryption client before the mail is submitted to Amazon S3 for storage. It is not encrypted using Amazon S3 server-side encryption. This means that you must use the Amazon S3 encryption client to decrypt the email after retrieving it from Amazon S3, as the service has no access to use your AWS KMS keys for decryption. This encryption client is currently available with the `AWS SDK for Java <https://docs.aws.amazon.com/sdk-for-java/>`_ and `AWS SDK for Ruby <https://docs.aws.amazon.com/sdk-for-ruby/>`_ only. For more information about client-side encryption using AWS KMS managed keys, see the `Amazon S3 Developer Guide <https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingClientSideEncryption.html>`_ .
10854
10860
  :param object_key_prefix: The key prefix of the Amazon S3 bucket. The key prefix is similar to a directory name that enables you to store similar data under the same directory in a bucket.
10855
10861
  :param topic_arn: The ARN of the Amazon SNS topic to notify when the message is saved to the Amazon S3 bucket. You can find the ARN of a topic by using the `ListTopics <https://docs.aws.amazon.com/sns/latest/api/API_ListTopics.html>`_ operation in Amazon SNS. For more information about Amazon SNS topics, see the `Amazon SNS Developer Guide <https://docs.aws.amazon.com/sns/latest/dg/CreateTopic.html>`_ .
@@ -10867,6 +10873,7 @@ class CfnReceiptRule(
10867
10873
  bucket_name="bucketName",
10868
10874
 
10869
10875
  # the properties below are optional
10876
+ iam_role_arn="iamRoleArn",
10870
10877
  kms_key_arn="kmsKeyArn",
10871
10878
  object_key_prefix="objectKeyPrefix",
10872
10879
  topic_arn="topicArn"
@@ -10875,12 +10882,15 @@ class CfnReceiptRule(
10875
10882
  if __debug__:
10876
10883
  type_hints = typing.get_type_hints(_typecheckingstub__39d61a089bfe9f0df546774b89ce5903a571f298fca9c95b6767da42860a40aa)
10877
10884
  check_type(argname="argument bucket_name", value=bucket_name, expected_type=type_hints["bucket_name"])
10885
+ check_type(argname="argument iam_role_arn", value=iam_role_arn, expected_type=type_hints["iam_role_arn"])
10878
10886
  check_type(argname="argument kms_key_arn", value=kms_key_arn, expected_type=type_hints["kms_key_arn"])
10879
10887
  check_type(argname="argument object_key_prefix", value=object_key_prefix, expected_type=type_hints["object_key_prefix"])
10880
10888
  check_type(argname="argument topic_arn", value=topic_arn, expected_type=type_hints["topic_arn"])
10881
10889
  self._values: typing.Dict[builtins.str, typing.Any] = {
10882
10890
  "bucket_name": bucket_name,
10883
10891
  }
10892
+ if iam_role_arn is not None:
10893
+ self._values["iam_role_arn"] = iam_role_arn
10884
10894
  if kms_key_arn is not None:
10885
10895
  self._values["kms_key_arn"] = kms_key_arn
10886
10896
  if object_key_prefix is not None:
@@ -10898,6 +10908,25 @@ class CfnReceiptRule(
10898
10908
  assert result is not None, "Required property 'bucket_name' is missing"
10899
10909
  return typing.cast(builtins.str, result)
10900
10910
 
10911
+ @builtins.property
10912
+ def iam_role_arn(self) -> typing.Optional[builtins.str]:
10913
+ '''The ARN of the IAM role to be used by Amazon Simple Email Service while writing to the Amazon S3 bucket, optionally encrypting your mail via the provided customer managed key, and publishing to the Amazon SNS topic.
10914
+
10915
+ This role should have access to the following APIs:
10916
+
10917
+ - ``s3:PutObject`` , ``kms:Encrypt`` and ``kms:GenerateDataKey`` for the given Amazon S3 bucket.
10918
+ - ``kms:GenerateDataKey`` for the given AWS KMS customer managed key.
10919
+ - ``sns:Publish`` for the given Amazon SNS topic.
10920
+
10921
+ .. epigraph::
10922
+
10923
+ If an IAM role ARN is provided, the role (and only the role) is used to access all the given resources (Amazon S3 bucket, AWS KMS customer managed key and Amazon SNS topic). Therefore, setting up individual resource access permissions is not required.
10924
+
10925
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ses-receiptrule-s3action.html#cfn-ses-receiptrule-s3action-iamrolearn
10926
+ '''
10927
+ result = self._values.get("iam_role_arn")
10928
+ return typing.cast(typing.Optional[builtins.str], result)
10929
+
10901
10930
  @builtins.property
10902
10931
  def kms_key_arn(self) -> typing.Optional[builtins.str]:
10903
10932
  '''The customer managed key that Amazon SES should use to encrypt your emails before saving them to the Amazon S3 bucket.
@@ -11261,6 +11290,7 @@ class CfnReceiptRuleProps:
11261
11290
  bucket_name="bucketName",
11262
11291
 
11263
11292
  # the properties below are optional
11293
+ iam_role_arn="iamRoleArn",
11264
11294
  kms_key_arn="kmsKeyArn",
11265
11295
  object_key_prefix="objectKeyPrefix",
11266
11296
  topic_arn="topicArn"
@@ -17674,6 +17704,7 @@ def _typecheckingstub__597a4926fee926f01951cda574fa9265912d5bc1c5bf1e98c3410d25d
17674
17704
  def _typecheckingstub__39d61a089bfe9f0df546774b89ce5903a571f298fca9c95b6767da42860a40aa(
17675
17705
  *,
17676
17706
  bucket_name: builtins.str,
17707
+ iam_role_arn: typing.Optional[builtins.str] = None,
17677
17708
  kms_key_arn: typing.Optional[builtins.str] = None,
17678
17709
  object_key_prefix: typing.Optional[builtins.str] = None,
17679
17710
  topic_arn: typing.Optional[builtins.str] = None,