aws-cdk-lib 2.195.0__py3-none-any.whl → 2.196.1__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 (99) hide show
  1. aws_cdk/__init__.py +433 -20
  2. aws_cdk/_jsii/__init__.py +1 -1
  3. aws_cdk/_jsii/{aws-cdk-lib@2.195.0.jsii.tgz → aws-cdk-lib@2.196.1.jsii.tgz} +0 -0
  4. aws_cdk/aws_acmpca/__init__.py +1 -1
  5. aws_cdk/aws_amazonmq/__init__.py +2 -2
  6. aws_cdk/aws_apigateway/__init__.py +148 -69
  7. aws_cdk/aws_apigatewayv2/__init__.py +155 -24
  8. aws_cdk/aws_appconfig/__init__.py +24 -0
  9. aws_cdk/aws_applicationautoscaling/__init__.py +6 -0
  10. aws_cdk/aws_appmesh/__init__.py +42 -0
  11. aws_cdk/aws_appsync/__init__.py +92 -20
  12. aws_cdk/aws_autoscaling/__init__.py +24 -0
  13. aws_cdk/aws_backup/__init__.py +53 -14
  14. aws_cdk/aws_batch/__init__.py +72 -0
  15. aws_cdk/aws_bedrock/__init__.py +620 -14
  16. aws_cdk/aws_budgets/__init__.py +569 -0
  17. aws_cdk/aws_certificatemanager/__init__.py +21 -0
  18. aws_cdk/aws_chatbot/__init__.py +6 -0
  19. aws_cdk/aws_cloudfront/__init__.py +87 -0
  20. aws_cdk/aws_cloudfront/experimental/__init__.py +6 -0
  21. aws_cdk/aws_cloudtrail/__init__.py +6 -0
  22. aws_cdk/aws_cloudwatch/__init__.py +18 -0
  23. aws_cdk/aws_cloudwatch_actions/__init__.py +75 -1
  24. aws_cdk/aws_codebuild/__init__.py +48 -0
  25. aws_cdk/aws_codecommit/__init__.py +6 -0
  26. aws_cdk/aws_codedeploy/__init__.py +63 -0
  27. aws_cdk/aws_codeguruprofiler/__init__.py +6 -0
  28. aws_cdk/aws_codepipeline/__init__.py +6 -0
  29. aws_cdk/aws_codepipeline_actions/__init__.py +4 -4
  30. aws_cdk/aws_codestarnotifications/__init__.py +6 -0
  31. aws_cdk/aws_cognito/__init__.py +91 -12
  32. aws_cdk/aws_cognito_identitypool/__init__.py +6 -0
  33. aws_cdk/aws_config/__init__.py +36 -0
  34. aws_cdk/aws_datazone/__init__.py +557 -14
  35. aws_cdk/aws_docdb/__init__.py +27 -3
  36. aws_cdk/aws_dsql/__init__.py +21 -13
  37. aws_cdk/aws_dynamodb/__init__.py +20 -8
  38. aws_cdk/aws_ec2/__init__.py +282 -21
  39. aws_cdk/aws_ecr/__init__.py +6 -0
  40. aws_cdk/aws_ecr_assets/__init__.py +6 -0
  41. aws_cdk/aws_ecs/__init__.py +112 -19
  42. aws_cdk/aws_ecs_patterns/__init__.py +58 -0
  43. aws_cdk/aws_efs/__init__.py +12 -0
  44. aws_cdk/aws_eks/__init__.py +42 -0
  45. aws_cdk/aws_elasticloadbalancing/__init__.py +6 -0
  46. aws_cdk/aws_elasticloadbalancingv2/__init__.py +112 -9
  47. aws_cdk/aws_elasticsearch/__init__.py +9 -0
  48. aws_cdk/aws_events/__init__.py +36 -0
  49. aws_cdk/aws_events_targets/__init__.py +10 -10
  50. aws_cdk/aws_fsx/__init__.py +6 -0
  51. aws_cdk/aws_globalaccelerator/__init__.py +18 -0
  52. aws_cdk/aws_iam/__init__.py +66 -0
  53. aws_cdk/aws_imagebuilder/__init__.py +21 -16
  54. aws_cdk/aws_inspector/__init__.py +6 -0
  55. aws_cdk/aws_kinesis/__init__.py +19 -1
  56. aws_cdk/aws_kinesisanalytics/__init__.py +9 -11
  57. aws_cdk/aws_kinesisanalyticsv2/__init__.py +9 -11
  58. aws_cdk/aws_kinesisfirehose/__init__.py +6 -0
  59. aws_cdk/aws_kms/__init__.py +16 -4
  60. aws_cdk/aws_lambda/__init__.py +76 -6
  61. aws_cdk/aws_logs/__init__.py +155 -12
  62. aws_cdk/aws_opensearchservice/__init__.py +6 -0
  63. aws_cdk/aws_quicksight/__init__.py +22 -22
  64. aws_cdk/aws_rds/__init__.py +306 -30
  65. aws_cdk/aws_redshiftserverless/__init__.py +7 -7
  66. aws_cdk/aws_route53/__init__.py +723 -25
  67. aws_cdk/aws_s3/__init__.py +37 -10
  68. aws_cdk/aws_s3_deployment/__init__.py +6 -0
  69. aws_cdk/aws_sagemaker/__init__.py +199 -4
  70. aws_cdk/aws_scheduler/__init__.py +12 -0
  71. aws_cdk/aws_secretsmanager/__init__.py +24 -0
  72. aws_cdk/aws_servicecatalog/__init__.py +24 -0
  73. aws_cdk/aws_servicediscovery/__init__.py +48 -0
  74. aws_cdk/aws_ses/__init__.py +133 -33
  75. aws_cdk/aws_signer/__init__.py +6 -0
  76. aws_cdk/aws_sns/__init__.py +18 -0
  77. aws_cdk/aws_sns_subscriptions/__init__.py +6 -0
  78. aws_cdk/aws_sqs/__init__.py +12 -0
  79. aws_cdk/aws_ssm/__init__.py +12 -0
  80. aws_cdk/aws_ssmcontacts/__init__.py +53 -2
  81. aws_cdk/aws_ssmguiconnect/__init__.py +7 -7
  82. aws_cdk/aws_stepfunctions/__init__.py +153 -7
  83. aws_cdk/aws_stepfunctions_tasks/__init__.py +46 -10
  84. aws_cdk/aws_synthetics/__init__.py +32 -0
  85. aws_cdk/aws_verifiedpermissions/__init__.py +168 -3
  86. aws_cdk/aws_vpclattice/__init__.py +3 -1
  87. aws_cdk/aws_wisdom/__init__.py +6 -4
  88. aws_cdk/custom_resources/__init__.py +18 -0
  89. aws_cdk/cx_api/__init__.py +33 -0
  90. aws_cdk/lambda_layer_awscli/__init__.py +6 -0
  91. aws_cdk/lambda_layer_node_proxy_agent/__init__.py +6 -0
  92. aws_cdk/pipelines/__init__.py +10 -10
  93. aws_cdk/triggers/__init__.py +6 -0
  94. {aws_cdk_lib-2.195.0.dist-info → aws_cdk_lib-2.196.1.dist-info}/METADATA +83 -5
  95. {aws_cdk_lib-2.195.0.dist-info → aws_cdk_lib-2.196.1.dist-info}/RECORD +99 -99
  96. {aws_cdk_lib-2.195.0.dist-info → aws_cdk_lib-2.196.1.dist-info}/LICENSE +0 -0
  97. {aws_cdk_lib-2.195.0.dist-info → aws_cdk_lib-2.196.1.dist-info}/NOTICE +0 -0
  98. {aws_cdk_lib-2.195.0.dist-info → aws_cdk_lib-2.196.1.dist-info}/WHEEL +0 -0
  99. {aws_cdk_lib-2.195.0.dist-info → aws_cdk_lib-2.196.1.dist-info}/top_level.txt +0 -0
aws_cdk/__init__.py CHANGED
@@ -173,8 +173,8 @@ class MyNestedStack(cfn.NestedStack):
173
173
  s3.Bucket(self, "NestedBucket")
174
174
 
175
175
  class MyParentStack(Stack):
176
- def __init__(self, scope, id, *, description=None, env=None, stackName=None, tags=None, notificationArns=None, synthesizer=None, terminationProtection=None, analyticsReporting=None, crossRegionReferences=None, permissionsBoundary=None, suppressTemplateIndentation=None):
177
- super().__init__(scope, id, description=description, env=env, stackName=stackName, tags=tags, notificationArns=notificationArns, synthesizer=synthesizer, terminationProtection=terminationProtection, analyticsReporting=analyticsReporting, crossRegionReferences=crossRegionReferences, permissionsBoundary=permissionsBoundary, suppressTemplateIndentation=suppressTemplateIndentation)
176
+ def __init__(self, scope, id, *, description=None, env=None, stackName=None, tags=None, notificationArns=None, synthesizer=None, terminationProtection=None, analyticsReporting=None, crossRegionReferences=None, permissionsBoundary=None, suppressTemplateIndentation=None, propertyInjectors=None):
177
+ super().__init__(scope, id, description=description, env=env, stackName=stackName, tags=tags, notificationArns=notificationArns, synthesizer=synthesizer, terminationProtection=terminationProtection, analyticsReporting=analyticsReporting, crossRegionReferences=crossRegionReferences, permissionsBoundary=permissionsBoundary, suppressTemplateIndentation=suppressTemplateIndentation, propertyInjectors=propertyInjectors)
178
178
 
179
179
  MyNestedStack(self, "Nested1")
180
180
  MyNestedStack(self, "Nested2")
@@ -1499,6 +1499,84 @@ warning by the `id`.
1499
1499
  Annotations.of(self).acknowledge_warning("IAM:Group:MaxPoliciesExceeded", "Account has quota increased to 20")
1500
1500
  ```
1501
1501
 
1502
+ ## Blueprint Property Injection
1503
+
1504
+ The goal of Blueprint Property Injection is to provide builders an automatic way to set default property values.
1505
+
1506
+ Construct authors can declare that a Construct can have it properties injected by adding `@propertyInjectable`
1507
+ class decorator and specifying `PROPERTY_INJECTION_ID` readonly property.
1508
+ All L2 Constructs will support Property Injection so organizations can write injectors to set their Construct Props.
1509
+
1510
+ Organizations can set default property values to a Construct by writing Injectors for builders to consume.
1511
+
1512
+ Here is a simple example of an Injector for APiKey that sets enabled to false.
1513
+
1514
+ ```python
1515
+ @jsii.implements(IPropertyInjector)
1516
+ class ApiKeyPropsInjector:
1517
+
1518
+ def __init__(self):
1519
+ self.construct_unique_id = api.ApiKey.PROPERTY_INJECTION_ID
1520
+
1521
+ def inject(self, original_props, *, scope, id):
1522
+ return api.ApiKeyProps(
1523
+ enabled=False,
1524
+ api_key_name=original_props.api_key_name,
1525
+ customer_id=original_props.customer_id,
1526
+ default_cors_preflight_options=original_props.default_cors_preflight_options,
1527
+ default_integration=original_props.default_integration,
1528
+ default_method_options=original_props.default_method_options,
1529
+ description=original_props.description,
1530
+ generate_distinct_id=original_props.generate_distinct_id,
1531
+ resources=original_props.resources,
1532
+ stages=original_props.stages,
1533
+ value=original_props.value
1534
+ )
1535
+ ```
1536
+
1537
+ Some notes:
1538
+
1539
+ * ApiKey must have a `PROPERTY_INJECTION_ID` property, in addition to having `@propertyInjectable` class decorator.
1540
+ * We set ApiKeyProps.enabled to false, if it is not provided; otherwise it would use the value that was passed in.
1541
+ * It is also possible to force ApiKeyProps.enabled to false, and not provide a way for the builders to overwrite it.
1542
+
1543
+ Here is an example of how builders can use the injector the org created.
1544
+
1545
+ ```python
1546
+ stack = Stack(app, "my-stack",
1547
+ property_injectors=[ApiKeyPropsInjector()]
1548
+ )
1549
+ api.ApiKey(stack, "my-api-key")
1550
+ ```
1551
+
1552
+ This is equivalent to:
1553
+
1554
+ ```python
1555
+ stack = Stack(app, "my-stack")
1556
+ api.ApiKey(stack, "my-api-key",
1557
+ enabled=False
1558
+ )
1559
+ ```
1560
+
1561
+ Some notes:
1562
+
1563
+ * We attach the injectors to Stack in this example, but we can also attach them to App or Stage.
1564
+ * All the ApiKey created in the scope of stack will get `enabled: false`.
1565
+ * Builders can overwrite the default value with `new ApiKey(stack, 'my-api-key', {enabled: true});`
1566
+
1567
+ If you specify two or more injectors for the same Constructs, the last one is in effect. In the example below, `ApiKeyPropsInjector` will never be applied.
1568
+
1569
+ ```python
1570
+ stack = Stack(app, "my-stack",
1571
+ property_injectors=[
1572
+ ApiKeyPropsInjector(),
1573
+ AnotherApiKeyPropsInjector()
1574
+ ]
1575
+ )
1576
+ ```
1577
+
1578
+ For more information, please see the [RFC](https://github.com/aws/aws-cdk-rfcs/blob/main/text/0693-property-injection.md).
1579
+
1502
1580
  <!--END CORE DOCUMENTATION-->
1503
1581
  '''
1504
1582
  from pkgutil import extend_path
@@ -1834,6 +1912,7 @@ class Annotations(metaclass=jsii.JSIIMeta, jsii_type="aws-cdk-lib.Annotations"):
1834
1912
  "outdir": "outdir",
1835
1913
  "policy_validation_beta1": "policyValidationBeta1",
1836
1914
  "post_cli_context": "postCliContext",
1915
+ "property_injectors": "propertyInjectors",
1837
1916
  "stack_traces": "stackTraces",
1838
1917
  "tree_metadata": "treeMetadata",
1839
1918
  },
@@ -1849,6 +1928,7 @@ class AppProps:
1849
1928
  outdir: typing.Optional[builtins.str] = None,
1850
1929
  policy_validation_beta1: typing.Optional[typing.Sequence["IPolicyValidationPluginBeta1"]] = None,
1851
1930
  post_cli_context: typing.Optional[typing.Mapping[builtins.str, typing.Any]] = None,
1931
+ property_injectors: typing.Optional[typing.Sequence["IPropertyInjector"]] = None,
1852
1932
  stack_traces: typing.Optional[builtins.bool] = None,
1853
1933
  tree_metadata: typing.Optional[builtins.bool] = None,
1854
1934
  ) -> None:
@@ -1861,6 +1941,7 @@ class AppProps:
1861
1941
  :param outdir: The output directory into which to emit synthesized artifacts. You should never need to set this value. By default, the value you pass to the CLI's ``--output`` flag will be used, and if you change it to a different directory the CLI will fail to pick up the generated Cloud Assembly. This property is intended for internal and testing use. Default: - If this value is *not* set, considers the environment variable ``CDK_OUTDIR``. If ``CDK_OUTDIR`` is not defined, uses a temp directory.
1862
1942
  :param policy_validation_beta1: Validation plugins to run after synthesis. Default: - no validation plugins
1863
1943
  :param post_cli_context: Additional context values for the application. Context provided here has precedence over context set by: - The CLI via --context - The ``context`` key in ``cdk.json`` - The ``AppProps.context`` property This property is recommended over the ``AppProps.context`` property since you can make final decision over which context value to take in your app. Context can be read from any construct using ``node.getContext(key)``. Default: - no additional context
1944
+ :param property_injectors: A list of IPropertyInjector attached to this App. Default: - no PropertyInjectors
1864
1945
  :param stack_traces: Include construct creation stack trace in the ``aws:cdk:trace`` metadata key of all constructs. Default: true stack traces are included unless ``aws:cdk:disable-stack-trace`` is set in the context.
1865
1946
  :param tree_metadata: Include construct tree metadata as part of the Cloud Assembly. Default: true
1866
1947
 
@@ -1888,6 +1969,7 @@ class AppProps:
1888
1969
  check_type(argname="argument outdir", value=outdir, expected_type=type_hints["outdir"])
1889
1970
  check_type(argname="argument policy_validation_beta1", value=policy_validation_beta1, expected_type=type_hints["policy_validation_beta1"])
1890
1971
  check_type(argname="argument post_cli_context", value=post_cli_context, expected_type=type_hints["post_cli_context"])
1972
+ check_type(argname="argument property_injectors", value=property_injectors, expected_type=type_hints["property_injectors"])
1891
1973
  check_type(argname="argument stack_traces", value=stack_traces, expected_type=type_hints["stack_traces"])
1892
1974
  check_type(argname="argument tree_metadata", value=tree_metadata, expected_type=type_hints["tree_metadata"])
1893
1975
  self._values: typing.Dict[builtins.str, typing.Any] = {}
@@ -1905,6 +1987,8 @@ class AppProps:
1905
1987
  self._values["policy_validation_beta1"] = policy_validation_beta1
1906
1988
  if post_cli_context is not None:
1907
1989
  self._values["post_cli_context"] = post_cli_context
1990
+ if property_injectors is not None:
1991
+ self._values["property_injectors"] = property_injectors
1908
1992
  if stack_traces is not None:
1909
1993
  self._values["stack_traces"] = stack_traces
1910
1994
  if tree_metadata is not None:
@@ -2026,6 +2110,15 @@ class AppProps:
2026
2110
  result = self._values.get("post_cli_context")
2027
2111
  return typing.cast(typing.Optional[typing.Mapping[builtins.str, typing.Any]], result)
2028
2112
 
2113
+ @builtins.property
2114
+ def property_injectors(self) -> typing.Optional[typing.List["IPropertyInjector"]]:
2115
+ '''A list of IPropertyInjector attached to this App.
2116
+
2117
+ :default: - no PropertyInjectors
2118
+ '''
2119
+ result = self._values.get("property_injectors")
2120
+ return typing.cast(typing.Optional[typing.List["IPropertyInjector"]], result)
2121
+
2029
2122
  @builtins.property
2030
2123
  def stack_traces(self) -> typing.Optional[builtins.bool]:
2031
2124
  '''Include construct creation stack trace in the ``aws:cdk:trace`` metadata key of all constructs.
@@ -16410,6 +16503,75 @@ class _IPostProcessorProxy:
16410
16503
  typing.cast(typing.Any, IPostProcessor).__jsii_proxy_class__ = lambda : _IPostProcessorProxy
16411
16504
 
16412
16505
 
16506
+ @jsii.interface(jsii_type="aws-cdk-lib.IPropertyInjector")
16507
+ class IPropertyInjector(typing_extensions.Protocol):
16508
+ '''This interface define an inject function that operates on a Construct's Property.
16509
+
16510
+ The Construct must have a constructUniqueId to uniquely identify itself.
16511
+ '''
16512
+
16513
+ @builtins.property
16514
+ @jsii.member(jsii_name="constructUniqueId")
16515
+ def construct_unique_id(self) -> builtins.str:
16516
+ '''The unique Id of the Construct class.'''
16517
+ ...
16518
+
16519
+ @jsii.member(jsii_name="inject")
16520
+ def inject(
16521
+ self,
16522
+ original_props: typing.Any,
16523
+ *,
16524
+ id: builtins.str,
16525
+ scope: _constructs_77d1e7e8.Construct,
16526
+ ) -> typing.Any:
16527
+ '''The injector to be applied to the constructor properties of the Construct.
16528
+
16529
+ :param original_props: -
16530
+ :param id: id from the Construct constructor.
16531
+ :param scope: scope from the constructor.
16532
+ '''
16533
+ ...
16534
+
16535
+
16536
+ class _IPropertyInjectorProxy:
16537
+ '''This interface define an inject function that operates on a Construct's Property.
16538
+
16539
+ The Construct must have a constructUniqueId to uniquely identify itself.
16540
+ '''
16541
+
16542
+ __jsii_type__: typing.ClassVar[str] = "aws-cdk-lib.IPropertyInjector"
16543
+
16544
+ @builtins.property
16545
+ @jsii.member(jsii_name="constructUniqueId")
16546
+ def construct_unique_id(self) -> builtins.str:
16547
+ '''The unique Id of the Construct class.'''
16548
+ return typing.cast(builtins.str, jsii.get(self, "constructUniqueId"))
16549
+
16550
+ @jsii.member(jsii_name="inject")
16551
+ def inject(
16552
+ self,
16553
+ original_props: typing.Any,
16554
+ *,
16555
+ id: builtins.str,
16556
+ scope: _constructs_77d1e7e8.Construct,
16557
+ ) -> typing.Any:
16558
+ '''The injector to be applied to the constructor properties of the Construct.
16559
+
16560
+ :param original_props: -
16561
+ :param id: id from the Construct constructor.
16562
+ :param scope: scope from the constructor.
16563
+ '''
16564
+ if __debug__:
16565
+ type_hints = typing.get_type_hints(_typecheckingstub__a84c13d89fffb1ee8026280d3071636f041aaa121bab44f9659e3255feca881d)
16566
+ check_type(argname="argument original_props", value=original_props, expected_type=type_hints["original_props"])
16567
+ context = InjectionContext(id=id, scope=scope)
16568
+
16569
+ return typing.cast(typing.Any, jsii.invoke(self, "inject", [original_props, context]))
16570
+
16571
+ # Adding a "__jsii_proxy_class__(): typing.Type" function to the interface
16572
+ typing.cast(typing.Any, IPropertyInjector).__jsii_proxy_class__ = lambda : _IPropertyInjectorProxy
16573
+
16574
+
16413
16575
  @jsii.interface(jsii_type="aws-cdk-lib.IResolvable")
16414
16576
  class IResolvable(typing_extensions.Protocol):
16415
16577
  '''Interface for values that can be resolvable later.
@@ -17708,6 +17870,74 @@ class _IgnoreStrategyProxy(IgnoreStrategy):
17708
17870
  typing.cast(typing.Any, IgnoreStrategy).__jsii_proxy_class__ = lambda : _IgnoreStrategyProxy
17709
17871
 
17710
17872
 
17873
+ @jsii.data_type(
17874
+ jsii_type="aws-cdk-lib.InjectionContext",
17875
+ jsii_struct_bases=[],
17876
+ name_mapping={"id": "id", "scope": "scope"},
17877
+ )
17878
+ class InjectionContext:
17879
+ def __init__(
17880
+ self,
17881
+ *,
17882
+ id: builtins.str,
17883
+ scope: _constructs_77d1e7e8.Construct,
17884
+ ) -> None:
17885
+ '''This defines the values needed for Injection.
17886
+
17887
+ :param id: id from the Construct constructor.
17888
+ :param scope: scope from the constructor.
17889
+
17890
+ :exampleMetadata: fixture=_generated
17891
+
17892
+ Example::
17893
+
17894
+ # The code below shows an example of how to instantiate this type.
17895
+ # The values are placeholders you should change.
17896
+ import aws_cdk as cdk
17897
+ import constructs as constructs
17898
+
17899
+ # construct: constructs.Construct
17900
+
17901
+ injection_context = cdk.InjectionContext(
17902
+ id="id",
17903
+ scope=construct
17904
+ )
17905
+ '''
17906
+ if __debug__:
17907
+ type_hints = typing.get_type_hints(_typecheckingstub__474d9096cc3297bd5f64e3e487372aedd71d529e93d80a946aa117f0e0f8bc5b)
17908
+ check_type(argname="argument id", value=id, expected_type=type_hints["id"])
17909
+ check_type(argname="argument scope", value=scope, expected_type=type_hints["scope"])
17910
+ self._values: typing.Dict[builtins.str, typing.Any] = {
17911
+ "id": id,
17912
+ "scope": scope,
17913
+ }
17914
+
17915
+ @builtins.property
17916
+ def id(self) -> builtins.str:
17917
+ '''id from the Construct constructor.'''
17918
+ result = self._values.get("id")
17919
+ assert result is not None, "Required property 'id' is missing"
17920
+ return typing.cast(builtins.str, result)
17921
+
17922
+ @builtins.property
17923
+ def scope(self) -> _constructs_77d1e7e8.Construct:
17924
+ '''scope from the constructor.'''
17925
+ result = self._values.get("scope")
17926
+ assert result is not None, "Required property 'scope' is missing"
17927
+ return typing.cast(_constructs_77d1e7e8.Construct, result)
17928
+
17929
+ def __eq__(self, rhs: typing.Any) -> builtins.bool:
17930
+ return isinstance(rhs, self.__class__) and rhs._values == self._values
17931
+
17932
+ def __ne__(self, rhs: typing.Any) -> builtins.bool:
17933
+ return not (rhs == self)
17934
+
17935
+ def __repr__(self) -> str:
17936
+ return "InjectionContext(%s)" % ", ".join(
17937
+ k + "=" + repr(v) for k, v in self._values.items()
17938
+ )
17939
+
17940
+
17711
17941
  @jsii.implements(IResolvable)
17712
17942
  class Intrinsic(metaclass=jsii.JSIIMeta, jsii_type="aws-cdk-lib.Intrinsic"):
17713
17943
  '''Token subclass that represents values intrinsic to the target document language.
@@ -19344,6 +19574,92 @@ class PolicyViolationBeta1:
19344
19574
  )
19345
19575
 
19346
19576
 
19577
+ class PropertyInjectors(
19578
+ metaclass=jsii.JSIIMeta,
19579
+ jsii_type="aws-cdk-lib.PropertyInjectors",
19580
+ ):
19581
+ '''This is a collection of ProjectInjectors assigned to this scope.
19582
+
19583
+ It is keyed by constructUniqueId. There can be only one ProjectInjector for a constructUniqueId.
19584
+
19585
+ :exampleMetadata: fixture=_generated
19586
+
19587
+ Example::
19588
+
19589
+ # The code below shows an example of how to instantiate this type.
19590
+ # The values are placeholders you should change.
19591
+ import aws_cdk as cdk
19592
+
19593
+ property_injectors = cdk.PropertyInjectors.of(self)
19594
+ '''
19595
+
19596
+ @jsii.member(jsii_name="hasPropertyInjectors")
19597
+ @builtins.classmethod
19598
+ def has_property_injectors(cls, x: typing.Any) -> builtins.bool:
19599
+ '''Return whether the given object has a PropertyInjectors property.
19600
+
19601
+ We do attribute detection since we can't reliably use 'instanceof'.
19602
+
19603
+ :param x: -
19604
+ '''
19605
+ if __debug__:
19606
+ type_hints = typing.get_type_hints(_typecheckingstub__4200e15e2cc09377aa6dd49e79c545a26e8c65589955f7210d145afb4881fcc5)
19607
+ check_type(argname="argument x", value=x, expected_type=type_hints["x"])
19608
+ return typing.cast(builtins.bool, jsii.sinvoke(cls, "hasPropertyInjectors", [x]))
19609
+
19610
+ @jsii.member(jsii_name="of")
19611
+ @builtins.classmethod
19612
+ def of(cls, scope: _constructs_77d1e7e8.IConstruct) -> "PropertyInjectors":
19613
+ '''Returns the ``PropertyInjectors`` object associated with a construct scope.
19614
+
19615
+ If ``PropertyInjectors`` object doesn't exist on this scope, then it creates one and attaches it to scope.
19616
+
19617
+ :param scope: The scope for which these PropertyInjectors will apply.
19618
+ '''
19619
+ if __debug__:
19620
+ type_hints = typing.get_type_hints(_typecheckingstub__d558bd5d62319107ba8d7aec423cb982f18f533d7f90939b4576ae5cabe237e6)
19621
+ check_type(argname="argument scope", value=scope, expected_type=type_hints["scope"])
19622
+ return typing.cast("PropertyInjectors", jsii.sinvoke(cls, "of", [scope]))
19623
+
19624
+ @jsii.member(jsii_name="add")
19625
+ def add(self, *props_injectors: IPropertyInjector) -> None:
19626
+ '''Add a list of IPropertyInjectors to this collection of PropertyInjectors.
19627
+
19628
+ :param props_injectors: - a list of IPropertyInjector.
19629
+ '''
19630
+ if __debug__:
19631
+ type_hints = typing.get_type_hints(_typecheckingstub__b15ed456b528cac4ffc455783d09279b63e060419397678acf12dc8a07323ae9)
19632
+ check_type(argname="argument props_injectors", value=props_injectors, expected_type=typing.Tuple[type_hints["props_injectors"], ...]) # pyright: ignore [reportGeneralTypeIssues]
19633
+ return typing.cast(None, jsii.invoke(self, "add", [*props_injectors]))
19634
+
19635
+ @jsii.member(jsii_name="for")
19636
+ def for_(self, unique_id: builtins.str) -> typing.Optional[IPropertyInjector]:
19637
+ '''Get the PropertyInjector that is registered to the Construct's uniqueId.
19638
+
19639
+ :param unique_id: - the construct uniqueId.
19640
+
19641
+ :return: - the IPropertyInjector for that construct uniqueId
19642
+ '''
19643
+ if __debug__:
19644
+ type_hints = typing.get_type_hints(_typecheckingstub__ba79b618f23d72687ff58834f8d791bcc5f41fb49c8301987bb45eee4378958b)
19645
+ check_type(argname="argument unique_id", value=unique_id, expected_type=type_hints["unique_id"])
19646
+ return typing.cast(typing.Optional[IPropertyInjector], jsii.invoke(self, "for", [unique_id]))
19647
+
19648
+ @jsii.member(jsii_name="supportedClasses")
19649
+ def supported_classes(self) -> typing.List[builtins.str]:
19650
+ '''This returns a list of the Constructs that are supporting by this PropertyInjectors.
19651
+
19652
+ :return: a list of string showing the supported Constructs.
19653
+ '''
19654
+ return typing.cast(typing.List[builtins.str], jsii.invoke(self, "supportedClasses", []))
19655
+
19656
+ @builtins.property
19657
+ @jsii.member(jsii_name="scope")
19658
+ def scope(self) -> _constructs_77d1e7e8.IConstruct:
19659
+ '''The scope attached to Injectors.'''
19660
+ return typing.cast(_constructs_77d1e7e8.IConstruct, jsii.get(self, "scope"))
19661
+
19662
+
19347
19663
  class Reference(
19348
19664
  Intrinsic,
19349
19665
  metaclass=jsii.JSIIAbstractClass,
@@ -21410,6 +21726,7 @@ class Stack(
21410
21726
  env: typing.Optional[typing.Union[Environment, typing.Dict[builtins.str, typing.Any]]] = None,
21411
21727
  notification_arns: typing.Optional[typing.Sequence[builtins.str]] = None,
21412
21728
  permissions_boundary: typing.Optional[PermissionsBoundary] = None,
21729
+ property_injectors: typing.Optional[typing.Sequence[IPropertyInjector]] = None,
21413
21730
  stack_name: typing.Optional[builtins.str] = None,
21414
21731
  suppress_template_indentation: typing.Optional[builtins.bool] = None,
21415
21732
  synthesizer: typing.Optional[IStackSynthesizer] = None,
@@ -21426,6 +21743,7 @@ class Stack(
21426
21743
  :param env: The AWS environment (account/region) where this stack will be deployed. Set the ``region``/``account`` fields of ``env`` to either a concrete value to select the indicated environment (recommended for production stacks), or to the values of environment variables ``CDK_DEFAULT_REGION``/``CDK_DEFAULT_ACCOUNT`` to let the target environment depend on the AWS credentials/configuration that the CDK CLI is executed under (recommended for development stacks). If the ``Stack`` is instantiated inside a ``Stage``, any undefined ``region``/``account`` fields from ``env`` will default to the same field on the encompassing ``Stage``, if configured there. If either ``region`` or ``account`` are not set nor inherited from ``Stage``, the Stack will be considered "*environment-agnostic*"". Environment-agnostic stacks can be deployed to any environment but may not be able to take advantage of all features of the CDK. For example, they will not be able to use environmental context lookups such as ``ec2.Vpc.fromLookup`` and will not automatically translate Service Principals to the right format based on the environment's AWS partition, and other such enhancements. Default: - The environment of the containing ``Stage`` if available, otherwise create the stack will be environment-agnostic.
21427
21744
  :param notification_arns: SNS Topic ARNs that will receive stack events. Default: - no notfication arns.
21428
21745
  :param permissions_boundary: Options for applying a permissions boundary to all IAM Roles and Users created within this Stage. Default: - no permissions boundary is applied
21746
+ :param property_injectors: A list of IPropertyInjector attached to this Stack. Default: - no PropertyInjectors
21429
21747
  :param stack_name: Name to deploy the stack with. Default: - Derived from construct path.
21430
21748
  :param suppress_template_indentation: Enable this flag to suppress indentation in generated CloudFormation templates. If not specified, the value of the ``@aws-cdk/core:suppressTemplateIndentation`` context key will be used. If that is not specified, then the default value ``false`` will be used. Default: - the value of ``@aws-cdk/core:suppressTemplateIndentation``, or ``false`` if that is not set.
21431
21749
  :param synthesizer: Synthesis method to use while deploying this stack. The Stack Synthesizer controls aspects of synthesis and deployment, like how assets are referenced and what IAM roles to use. For more information, see the README of the main CDK package. If not specified, the ``defaultStackSynthesizer`` from ``App`` will be used. If that is not specified, ``DefaultStackSynthesizer`` is used if ``@aws-cdk/core:newStyleStackSynthesis`` is set to ``true`` or the CDK major version is v2. In CDK v1 ``LegacyStackSynthesizer`` is the default if no other synthesizer is specified. Default: - The synthesizer specified on ``App``, or ``DefaultStackSynthesizer`` otherwise.
@@ -21443,6 +21761,7 @@ class Stack(
21443
21761
  env=env,
21444
21762
  notification_arns=notification_arns,
21445
21763
  permissions_boundary=permissions_boundary,
21764
+ property_injectors=property_injectors,
21446
21765
  stack_name=stack_name,
21447
21766
  suppress_template_indentation=suppress_template_indentation,
21448
21767
  synthesizer=synthesizer,
@@ -22103,6 +22422,7 @@ class Stack(
22103
22422
  "env": "env",
22104
22423
  "notification_arns": "notificationArns",
22105
22424
  "permissions_boundary": "permissionsBoundary",
22425
+ "property_injectors": "propertyInjectors",
22106
22426
  "stack_name": "stackName",
22107
22427
  "suppress_template_indentation": "suppressTemplateIndentation",
22108
22428
  "synthesizer": "synthesizer",
@@ -22120,6 +22440,7 @@ class StackProps:
22120
22440
  env: typing.Optional[typing.Union[Environment, typing.Dict[builtins.str, typing.Any]]] = None,
22121
22441
  notification_arns: typing.Optional[typing.Sequence[builtins.str]] = None,
22122
22442
  permissions_boundary: typing.Optional[PermissionsBoundary] = None,
22443
+ property_injectors: typing.Optional[typing.Sequence[IPropertyInjector]] = None,
22123
22444
  stack_name: typing.Optional[builtins.str] = None,
22124
22445
  suppress_template_indentation: typing.Optional[builtins.bool] = None,
22125
22446
  synthesizer: typing.Optional[IStackSynthesizer] = None,
@@ -22133,6 +22454,7 @@ class StackProps:
22133
22454
  :param env: The AWS environment (account/region) where this stack will be deployed. Set the ``region``/``account`` fields of ``env`` to either a concrete value to select the indicated environment (recommended for production stacks), or to the values of environment variables ``CDK_DEFAULT_REGION``/``CDK_DEFAULT_ACCOUNT`` to let the target environment depend on the AWS credentials/configuration that the CDK CLI is executed under (recommended for development stacks). If the ``Stack`` is instantiated inside a ``Stage``, any undefined ``region``/``account`` fields from ``env`` will default to the same field on the encompassing ``Stage``, if configured there. If either ``region`` or ``account`` are not set nor inherited from ``Stage``, the Stack will be considered "*environment-agnostic*"". Environment-agnostic stacks can be deployed to any environment but may not be able to take advantage of all features of the CDK. For example, they will not be able to use environmental context lookups such as ``ec2.Vpc.fromLookup`` and will not automatically translate Service Principals to the right format based on the environment's AWS partition, and other such enhancements. Default: - The environment of the containing ``Stage`` if available, otherwise create the stack will be environment-agnostic.
22134
22455
  :param notification_arns: SNS Topic ARNs that will receive stack events. Default: - no notfication arns.
22135
22456
  :param permissions_boundary: Options for applying a permissions boundary to all IAM Roles and Users created within this Stage. Default: - no permissions boundary is applied
22457
+ :param property_injectors: A list of IPropertyInjector attached to this Stack. Default: - no PropertyInjectors
22136
22458
  :param stack_name: Name to deploy the stack with. Default: - Derived from construct path.
22137
22459
  :param suppress_template_indentation: Enable this flag to suppress indentation in generated CloudFormation templates. If not specified, the value of the ``@aws-cdk/core:suppressTemplateIndentation`` context key will be used. If that is not specified, then the default value ``false`` will be used. Default: - the value of ``@aws-cdk/core:suppressTemplateIndentation``, or ``false`` if that is not set.
22138
22460
  :param synthesizer: Synthesis method to use while deploying this stack. The Stack Synthesizer controls aspects of synthesis and deployment, like how assets are referenced and what IAM roles to use. For more information, see the README of the main CDK package. If not specified, the ``defaultStackSynthesizer`` from ``App`` will be used. If that is not specified, ``DefaultStackSynthesizer`` is used if ``@aws-cdk/core:newStyleStackSynthesis`` is set to ``true`` or the CDK major version is v2. In CDK v1 ``LegacyStackSynthesizer`` is the default if no other synthesizer is specified. Default: - The synthesizer specified on ``App``, or ``DefaultStackSynthesizer`` otherwise.
@@ -22143,26 +22465,29 @@ class StackProps:
22143
22465
 
22144
22466
  Example::
22145
22467
 
22146
- import aws_cdk as cdk
22147
- import aws_cdk.aws_cloudwatch as cloudwatch
22148
-
22149
-
22150
- app = cdk.App()
22151
- stack = cdk.Stack(app, "Stack", env=cdk.Environment(region="us-west-2"))
22152
-
22153
- global_table = dynamodb.TableV2(stack, "GlobalTable",
22154
- partition_key=dynamodb.Attribute(name="pk", type=dynamodb.AttributeType.STRING),
22155
- replicas=[dynamodb.ReplicaTableProps(region="us-east-1"), dynamodb.ReplicaTableProps(region="us-east-2")
22156
- ]
22468
+ stack1 = Stack(app, "Stack1",
22469
+ env=Environment(
22470
+ region="us-east-1"
22471
+ ),
22472
+ cross_region_references=True
22473
+ )
22474
+ cert = acm.Certificate(stack1, "Cert",
22475
+ domain_name="*.example.com",
22476
+ validation=acm.CertificateValidation.from_dns(route53.PublicHostedZone.from_hosted_zone_id(stack1, "Zone", "Z0329774B51CGXTDQV3X"))
22157
22477
  )
22158
22478
 
22159
- # metric is only for the table in us-west-2
22160
- metric = global_table.metric_consumed_read_capacity_units()
22161
-
22162
- cloudwatch.Alarm(self, "Alarm",
22163
- metric=metric,
22164
- evaluation_periods=1,
22165
- threshold=1
22479
+ stack2 = Stack(app, "Stack2",
22480
+ env=Environment(
22481
+ region="us-east-2"
22482
+ ),
22483
+ cross_region_references=True
22484
+ )
22485
+ cloudfront.Distribution(stack2, "Distribution",
22486
+ default_behavior=cloudfront.BehaviorOptions(
22487
+ origin=origins.HttpOrigin("example.com")
22488
+ ),
22489
+ domain_names=["dev.example.com"],
22490
+ certificate=cert
22166
22491
  )
22167
22492
  '''
22168
22493
  if isinstance(env, dict):
@@ -22175,6 +22500,7 @@ class StackProps:
22175
22500
  check_type(argname="argument env", value=env, expected_type=type_hints["env"])
22176
22501
  check_type(argname="argument notification_arns", value=notification_arns, expected_type=type_hints["notification_arns"])
22177
22502
  check_type(argname="argument permissions_boundary", value=permissions_boundary, expected_type=type_hints["permissions_boundary"])
22503
+ check_type(argname="argument property_injectors", value=property_injectors, expected_type=type_hints["property_injectors"])
22178
22504
  check_type(argname="argument stack_name", value=stack_name, expected_type=type_hints["stack_name"])
22179
22505
  check_type(argname="argument suppress_template_indentation", value=suppress_template_indentation, expected_type=type_hints["suppress_template_indentation"])
22180
22506
  check_type(argname="argument synthesizer", value=synthesizer, expected_type=type_hints["synthesizer"])
@@ -22193,6 +22519,8 @@ class StackProps:
22193
22519
  self._values["notification_arns"] = notification_arns
22194
22520
  if permissions_boundary is not None:
22195
22521
  self._values["permissions_boundary"] = permissions_boundary
22522
+ if property_injectors is not None:
22523
+ self._values["property_injectors"] = property_injectors
22196
22524
  if stack_name is not None:
22197
22525
  self._values["stack_name"] = stack_name
22198
22526
  if suppress_template_indentation is not None:
@@ -22327,6 +22655,15 @@ class StackProps:
22327
22655
  result = self._values.get("permissions_boundary")
22328
22656
  return typing.cast(typing.Optional[PermissionsBoundary], result)
22329
22657
 
22658
+ @builtins.property
22659
+ def property_injectors(self) -> typing.Optional[typing.List[IPropertyInjector]]:
22660
+ '''A list of IPropertyInjector attached to this Stack.
22661
+
22662
+ :default: - no PropertyInjectors
22663
+ '''
22664
+ result = self._values.get("property_injectors")
22665
+ return typing.cast(typing.Optional[typing.List[IPropertyInjector]], result)
22666
+
22330
22667
  @builtins.property
22331
22668
  def stack_name(self) -> typing.Optional[builtins.str]:
22332
22669
  '''Name to deploy the stack with.
@@ -22965,6 +23302,7 @@ class Stage(
22965
23302
  outdir: typing.Optional[builtins.str] = None,
22966
23303
  permissions_boundary: typing.Optional[PermissionsBoundary] = None,
22967
23304
  policy_validation_beta1: typing.Optional[typing.Sequence[IPolicyValidationPluginBeta1]] = None,
23305
+ property_injectors: typing.Optional[typing.Sequence[IPropertyInjector]] = None,
22968
23306
  stage_name: typing.Optional[builtins.str] = None,
22969
23307
  ) -> None:
22970
23308
  '''
@@ -22974,6 +23312,7 @@ class Stage(
22974
23312
  :param outdir: The output directory into which to emit synthesized artifacts. Can only be specified if this stage is the root stage (the app). If this is specified and this stage is nested within another stage, an error will be thrown. Default: - for nested stages, outdir will be determined as a relative directory to the outdir of the app. For apps, if outdir is not specified, a temporary directory will be created.
22975
23313
  :param permissions_boundary: Options for applying a permissions boundary to all IAM Roles and Users created within this Stage. Be aware that this feature uses Aspects, and the Aspects are applied at the Stack level with a priority of ``MUTATING`` (if the feature flag ``@aws-cdk/core:aspectPrioritiesMutating`` is set) or ``DEFAULT`` (if the flag is not set). This is relevant if you are both using your own Aspects to assign Permissions Boundaries, as well as specifying this property. The Aspect added by this property will overwrite the Permissions Boundary assigned by your own Aspect if both: (a) your Aspect has a lower or equal priority to the automatic Aspect, and (b) your Aspect is applied *above* the Stack level. If either of those conditions are not true, your own Aspect will win. We recommend assigning Permissions Boundaries only using the provided APIs, and not using custom Aspects. Default: - no permissions boundary is applied
22976
23314
  :param policy_validation_beta1: Validation plugins to run during synthesis. If any plugin reports any violation, synthesis will be interrupted and the report displayed to the user. Default: - no validation plugins are used
23315
+ :param property_injectors: A list of IPropertyInjector attached to this Stage. Default: - no PropertyInjectors
22977
23316
  :param stage_name: Name of this stage. Default: - Derived from the id.
22978
23317
  '''
22979
23318
  if __debug__:
@@ -22985,6 +23324,7 @@ class Stage(
22985
23324
  outdir=outdir,
22986
23325
  permissions_boundary=permissions_boundary,
22987
23326
  policy_validation_beta1=policy_validation_beta1,
23327
+ property_injectors=property_injectors,
22988
23328
  stage_name=stage_name,
22989
23329
  )
22990
23330
 
@@ -23121,6 +23461,7 @@ class Stage(
23121
23461
  "outdir": "outdir",
23122
23462
  "permissions_boundary": "permissionsBoundary",
23123
23463
  "policy_validation_beta1": "policyValidationBeta1",
23464
+ "property_injectors": "propertyInjectors",
23124
23465
  "stage_name": "stageName",
23125
23466
  },
23126
23467
  )
@@ -23132,6 +23473,7 @@ class StageProps:
23132
23473
  outdir: typing.Optional[builtins.str] = None,
23133
23474
  permissions_boundary: typing.Optional[PermissionsBoundary] = None,
23134
23475
  policy_validation_beta1: typing.Optional[typing.Sequence[IPolicyValidationPluginBeta1]] = None,
23476
+ property_injectors: typing.Optional[typing.Sequence[IPropertyInjector]] = None,
23135
23477
  stage_name: typing.Optional[builtins.str] = None,
23136
23478
  ) -> None:
23137
23479
  '''Initialization props for a stage.
@@ -23140,6 +23482,7 @@ class StageProps:
23140
23482
  :param outdir: The output directory into which to emit synthesized artifacts. Can only be specified if this stage is the root stage (the app). If this is specified and this stage is nested within another stage, an error will be thrown. Default: - for nested stages, outdir will be determined as a relative directory to the outdir of the app. For apps, if outdir is not specified, a temporary directory will be created.
23141
23483
  :param permissions_boundary: Options for applying a permissions boundary to all IAM Roles and Users created within this Stage. Be aware that this feature uses Aspects, and the Aspects are applied at the Stack level with a priority of ``MUTATING`` (if the feature flag ``@aws-cdk/core:aspectPrioritiesMutating`` is set) or ``DEFAULT`` (if the flag is not set). This is relevant if you are both using your own Aspects to assign Permissions Boundaries, as well as specifying this property. The Aspect added by this property will overwrite the Permissions Boundary assigned by your own Aspect if both: (a) your Aspect has a lower or equal priority to the automatic Aspect, and (b) your Aspect is applied *above* the Stack level. If either of those conditions are not true, your own Aspect will win. We recommend assigning Permissions Boundaries only using the provided APIs, and not using custom Aspects. Default: - no permissions boundary is applied
23142
23484
  :param policy_validation_beta1: Validation plugins to run during synthesis. If any plugin reports any violation, synthesis will be interrupted and the report displayed to the user. Default: - no validation plugins are used
23485
+ :param property_injectors: A list of IPropertyInjector attached to this Stage. Default: - no PropertyInjectors
23143
23486
  :param stage_name: Name of this stage. Default: - Derived from the id.
23144
23487
 
23145
23488
  :exampleMetadata: infused
@@ -23171,6 +23514,7 @@ class StageProps:
23171
23514
  check_type(argname="argument outdir", value=outdir, expected_type=type_hints["outdir"])
23172
23515
  check_type(argname="argument permissions_boundary", value=permissions_boundary, expected_type=type_hints["permissions_boundary"])
23173
23516
  check_type(argname="argument policy_validation_beta1", value=policy_validation_beta1, expected_type=type_hints["policy_validation_beta1"])
23517
+ check_type(argname="argument property_injectors", value=property_injectors, expected_type=type_hints["property_injectors"])
23174
23518
  check_type(argname="argument stage_name", value=stage_name, expected_type=type_hints["stage_name"])
23175
23519
  self._values: typing.Dict[builtins.str, typing.Any] = {}
23176
23520
  if env is not None:
@@ -23181,6 +23525,8 @@ class StageProps:
23181
23525
  self._values["permissions_boundary"] = permissions_boundary
23182
23526
  if policy_validation_beta1 is not None:
23183
23527
  self._values["policy_validation_beta1"] = policy_validation_beta1
23528
+ if property_injectors is not None:
23529
+ self._values["property_injectors"] = property_injectors
23184
23530
  if stage_name is not None:
23185
23531
  self._values["stage_name"] = stage_name
23186
23532
 
@@ -23272,6 +23618,15 @@ class StageProps:
23272
23618
  result = self._values.get("policy_validation_beta1")
23273
23619
  return typing.cast(typing.Optional[typing.List[IPolicyValidationPluginBeta1]], result)
23274
23620
 
23621
+ @builtins.property
23622
+ def property_injectors(self) -> typing.Optional[typing.List[IPropertyInjector]]:
23623
+ '''A list of IPropertyInjector attached to this Stage.
23624
+
23625
+ :default: - no PropertyInjectors
23626
+ '''
23627
+ result = self._values.get("property_injectors")
23628
+ return typing.cast(typing.Optional[typing.List[IPropertyInjector]], result)
23629
+
23275
23630
  @builtins.property
23276
23631
  def stage_name(self) -> typing.Optional[builtins.str]:
23277
23632
  '''Name of this stage.
@@ -28334,6 +28689,7 @@ class App(Stage, metaclass=jsii.JSIIMeta, jsii_type="aws-cdk-lib.App"):
28334
28689
  outdir: typing.Optional[builtins.str] = None,
28335
28690
  policy_validation_beta1: typing.Optional[typing.Sequence[IPolicyValidationPluginBeta1]] = None,
28336
28691
  post_cli_context: typing.Optional[typing.Mapping[builtins.str, typing.Any]] = None,
28692
+ property_injectors: typing.Optional[typing.Sequence[IPropertyInjector]] = None,
28337
28693
  stack_traces: typing.Optional[builtins.bool] = None,
28338
28694
  tree_metadata: typing.Optional[builtins.bool] = None,
28339
28695
  ) -> None:
@@ -28346,6 +28702,7 @@ class App(Stage, metaclass=jsii.JSIIMeta, jsii_type="aws-cdk-lib.App"):
28346
28702
  :param outdir: The output directory into which to emit synthesized artifacts. You should never need to set this value. By default, the value you pass to the CLI's ``--output`` flag will be used, and if you change it to a different directory the CLI will fail to pick up the generated Cloud Assembly. This property is intended for internal and testing use. Default: - If this value is *not* set, considers the environment variable ``CDK_OUTDIR``. If ``CDK_OUTDIR`` is not defined, uses a temp directory.
28347
28703
  :param policy_validation_beta1: Validation plugins to run after synthesis. Default: - no validation plugins
28348
28704
  :param post_cli_context: Additional context values for the application. Context provided here has precedence over context set by: - The CLI via --context - The ``context`` key in ``cdk.json`` - The ``AppProps.context`` property This property is recommended over the ``AppProps.context`` property since you can make final decision over which context value to take in your app. Context can be read from any construct using ``node.getContext(key)``. Default: - no additional context
28705
+ :param property_injectors: A list of IPropertyInjector attached to this App. Default: - no PropertyInjectors
28349
28706
  :param stack_traces: Include construct creation stack trace in the ``aws:cdk:trace`` metadata key of all constructs. Default: true stack traces are included unless ``aws:cdk:disable-stack-trace`` is set in the context.
28350
28707
  :param tree_metadata: Include construct tree metadata as part of the Cloud Assembly. Default: true
28351
28708
  '''
@@ -28357,6 +28714,7 @@ class App(Stage, metaclass=jsii.JSIIMeta, jsii_type="aws-cdk-lib.App"):
28357
28714
  outdir=outdir,
28358
28715
  policy_validation_beta1=policy_validation_beta1,
28359
28716
  post_cli_context=post_cli_context,
28717
+ property_injectors=property_injectors,
28360
28718
  stack_traces=stack_traces,
28361
28719
  tree_metadata=tree_metadata,
28362
28720
  )
@@ -34792,6 +35150,12 @@ class CustomResource(
34792
35150
  check_type(argname="argument attribute_name", value=attribute_name, expected_type=type_hints["attribute_name"])
34793
35151
  return typing.cast(builtins.str, jsii.invoke(self, "getAttString", [attribute_name]))
34794
35152
 
35153
+ @jsii.python.classproperty
35154
+ @jsii.member(jsii_name="PROPERTY_INJECTION_ID")
35155
+ def PROPERTY_INJECTION_ID(cls) -> builtins.str:
35156
+ '''Uniquely identifies this class.'''
35157
+ return typing.cast(builtins.str, jsii.sget(cls, "PROPERTY_INJECTION_ID"))
35158
+
34795
35159
  @builtins.property
34796
35160
  @jsii.member(jsii_name="ref")
34797
35161
  def ref(self) -> builtins.str:
@@ -37159,6 +37523,7 @@ __all__ = [
37159
37523
  "IPolicyValidationContextBeta1",
37160
37524
  "IPolicyValidationPluginBeta1",
37161
37525
  "IPostProcessor",
37526
+ "IPropertyInjector",
37162
37527
  "IResolvable",
37163
37528
  "IResolveContext",
37164
37529
  "IResource",
@@ -37177,6 +37542,7 @@ __all__ = [
37177
37542
  "ITokenResolver",
37178
37543
  "IgnoreMode",
37179
37544
  "IgnoreStrategy",
37545
+ "InjectionContext",
37180
37546
  "Intrinsic",
37181
37547
  "IntrinsicProps",
37182
37548
  "JsonNull",
@@ -37197,6 +37563,7 @@ __all__ = [
37197
37563
  "PolicyValidationReportStatusBeta1",
37198
37564
  "PolicyViolatingResourceBeta1",
37199
37565
  "PolicyViolationBeta1",
37566
+ "PropertyInjectors",
37200
37567
  "Reference",
37201
37568
  "RemovalPolicies",
37202
37569
  "RemovalPolicy",
@@ -37902,6 +38269,7 @@ def _typecheckingstub__ef2fee5e91b22ed9e2b91aa309be73835ddfb834f19eb3d41540c7e38
37902
38269
  outdir: typing.Optional[builtins.str] = None,
37903
38270
  policy_validation_beta1: typing.Optional[typing.Sequence[IPolicyValidationPluginBeta1]] = None,
37904
38271
  post_cli_context: typing.Optional[typing.Mapping[builtins.str, typing.Any]] = None,
38272
+ property_injectors: typing.Optional[typing.Sequence[IPropertyInjector]] = None,
37905
38273
  stack_traces: typing.Optional[builtins.bool] = None,
37906
38274
  tree_metadata: typing.Optional[builtins.bool] = None,
37907
38275
  ) -> None:
@@ -39671,6 +40039,15 @@ def _typecheckingstub__421f2755d7e81609d225eb32560b6f8749147026d0e9c4a8130c5421a
39671
40039
  """Type checking stubs"""
39672
40040
  pass
39673
40041
 
40042
+ def _typecheckingstub__a84c13d89fffb1ee8026280d3071636f041aaa121bab44f9659e3255feca881d(
40043
+ original_props: typing.Any,
40044
+ *,
40045
+ id: builtins.str,
40046
+ scope: _constructs_77d1e7e8.Construct,
40047
+ ) -> None:
40048
+ """Type checking stubs"""
40049
+ pass
40050
+
39674
40051
  def _typecheckingstub__09341b9d2d6a06b3937530fa96a1bcb7562ccdf5246e5563a8a552ec1f8c0fa5(
39675
40052
  context: IResolveContext,
39676
40053
  ) -> None:
@@ -39826,6 +40203,14 @@ def _typecheckingstub__639820bc3ab9fb78a31dec5d3d916a2befafc70af8c041b6e444ac075
39826
40203
  """Type checking stubs"""
39827
40204
  pass
39828
40205
 
40206
+ def _typecheckingstub__474d9096cc3297bd5f64e3e487372aedd71d529e93d80a946aa117f0e0f8bc5b(
40207
+ *,
40208
+ id: builtins.str,
40209
+ scope: _constructs_77d1e7e8.Construct,
40210
+ ) -> None:
40211
+ """Type checking stubs"""
40212
+ pass
40213
+
39829
40214
  def _typecheckingstub__4fdfa4eddae987229a9f6236b6c0b78b4d7e291c17d32a624ad710cd632917ff(
39830
40215
  value: typing.Any,
39831
40216
  *,
@@ -40046,6 +40431,30 @@ def _typecheckingstub__2f965066f077908d4839609b519c39167a0b14e83374fbf4bb1601ab5
40046
40431
  """Type checking stubs"""
40047
40432
  pass
40048
40433
 
40434
+ def _typecheckingstub__4200e15e2cc09377aa6dd49e79c545a26e8c65589955f7210d145afb4881fcc5(
40435
+ x: typing.Any,
40436
+ ) -> None:
40437
+ """Type checking stubs"""
40438
+ pass
40439
+
40440
+ def _typecheckingstub__d558bd5d62319107ba8d7aec423cb982f18f533d7f90939b4576ae5cabe237e6(
40441
+ scope: _constructs_77d1e7e8.IConstruct,
40442
+ ) -> None:
40443
+ """Type checking stubs"""
40444
+ pass
40445
+
40446
+ def _typecheckingstub__b15ed456b528cac4ffc455783d09279b63e060419397678acf12dc8a07323ae9(
40447
+ *props_injectors: IPropertyInjector,
40448
+ ) -> None:
40449
+ """Type checking stubs"""
40450
+ pass
40451
+
40452
+ def _typecheckingstub__ba79b618f23d72687ff58834f8d791bcc5f41fb49c8301987bb45eee4378958b(
40453
+ unique_id: builtins.str,
40454
+ ) -> None:
40455
+ """Type checking stubs"""
40456
+ pass
40457
+
40049
40458
  def _typecheckingstub__151f083e00bfac139cbf164b9069ab02924a37639eb1b7b58edc3dee3fdf3279(
40050
40459
  value: typing.Any,
40051
40460
  target: _constructs_77d1e7e8.IConstruct,
@@ -40361,6 +40770,7 @@ def _typecheckingstub__835828a2dac25cb8eb22f32985554296e8bd61463c8cc32bb2df4c1f4
40361
40770
  env: typing.Optional[typing.Union[Environment, typing.Dict[builtins.str, typing.Any]]] = None,
40362
40771
  notification_arns: typing.Optional[typing.Sequence[builtins.str]] = None,
40363
40772
  permissions_boundary: typing.Optional[PermissionsBoundary] = None,
40773
+ property_injectors: typing.Optional[typing.Sequence[IPropertyInjector]] = None,
40364
40774
  stack_name: typing.Optional[builtins.str] = None,
40365
40775
  suppress_template_indentation: typing.Optional[builtins.bool] = None,
40366
40776
  synthesizer: typing.Optional[IStackSynthesizer] = None,
@@ -40486,6 +40896,7 @@ def _typecheckingstub__a36aaf4edf2967c8ed36d2cad24d023f14778db721379dffbd74eb6dd
40486
40896
  env: typing.Optional[typing.Union[Environment, typing.Dict[builtins.str, typing.Any]]] = None,
40487
40897
  notification_arns: typing.Optional[typing.Sequence[builtins.str]] = None,
40488
40898
  permissions_boundary: typing.Optional[PermissionsBoundary] = None,
40899
+ property_injectors: typing.Optional[typing.Sequence[IPropertyInjector]] = None,
40489
40900
  stack_name: typing.Optional[builtins.str] = None,
40490
40901
  suppress_template_indentation: typing.Optional[builtins.bool] = None,
40491
40902
  synthesizer: typing.Optional[IStackSynthesizer] = None,
@@ -40573,6 +40984,7 @@ def _typecheckingstub__c0677d374e192ff51310cb5059d45186fd8a854f0c4f6485ff9ec9692
40573
40984
  outdir: typing.Optional[builtins.str] = None,
40574
40985
  permissions_boundary: typing.Optional[PermissionsBoundary] = None,
40575
40986
  policy_validation_beta1: typing.Optional[typing.Sequence[IPolicyValidationPluginBeta1]] = None,
40987
+ property_injectors: typing.Optional[typing.Sequence[IPropertyInjector]] = None,
40576
40988
  stage_name: typing.Optional[builtins.str] = None,
40577
40989
  ) -> None:
40578
40990
  """Type checking stubs"""
@@ -40596,6 +41008,7 @@ def _typecheckingstub__c519a1aa0534921a8dfdfa69ddc24b52c09a7eb52fc889f7fb96b737e
40596
41008
  outdir: typing.Optional[builtins.str] = None,
40597
41009
  permissions_boundary: typing.Optional[PermissionsBoundary] = None,
40598
41010
  policy_validation_beta1: typing.Optional[typing.Sequence[IPolicyValidationPluginBeta1]] = None,
41011
+ property_injectors: typing.Optional[typing.Sequence[IPropertyInjector]] = None,
40599
41012
  stage_name: typing.Optional[builtins.str] = None,
40600
41013
  ) -> None:
40601
41014
  """Type checking stubs"""