appmod-catalog-blueprints 1.0.0__py3-none-any.whl → 1.1.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.
@@ -281,7 +281,6 @@ import aws_cdk.aws_s3 as _aws_cdk_aws_s3_ceddda9d
281
281
  import aws_cdk.aws_s3_assets as _aws_cdk_aws_s3_assets_ceddda9d
282
282
  import aws_cdk.aws_s3_deployment as _aws_cdk_aws_s3_deployment_ceddda9d
283
283
  import aws_cdk.aws_secretsmanager as _aws_cdk_aws_secretsmanager_ceddda9d
284
- import aws_cdk.aws_sqs as _aws_cdk_aws_sqs_ceddda9d
285
284
  import aws_cdk.aws_stepfunctions as _aws_cdk_aws_stepfunctions_ceddda9d
286
285
  import aws_cdk.aws_stepfunctions_tasks as _aws_cdk_aws_stepfunctions_tasks_ceddda9d
287
286
  import aws_cdk.custom_resources as _aws_cdk_custom_resources_ceddda9d
@@ -612,6 +611,7 @@ class AdditionalDistributionProps:
612
611
  name_mapping={
613
612
  "agent_system_prompt": "agentSystemPrompt",
614
613
  "lambda_layers": "lambdaLayers",
614
+ "tools_bucket": "toolsBucket",
615
615
  "tools_location": "toolsLocation",
616
616
  },
617
617
  )
@@ -621,12 +621,14 @@ class AgentProps:
621
621
  *,
622
622
  agent_system_prompt: typing.Optional[builtins.str] = None,
623
623
  lambda_layers: typing.Optional[typing.Sequence[_aws_cdk_aws_lambda_ceddda9d.LayerVersion]] = None,
624
+ tools_bucket: typing.Optional[_aws_cdk_aws_s3_ceddda9d.Bucket] = None,
624
625
  tools_location: typing.Optional[typing.Sequence[builtins.str]] = None,
625
626
  ) -> None:
626
627
  '''
627
- :param agent_system_prompt:
628
- :param lambda_layers:
629
- :param tools_location:
628
+ :param agent_system_prompt: (experimental) System prompt for the agent.
629
+ :param lambda_layers: (experimental) If there are python dependencies that are needed by the provided tools, provide the Lambda Layers with the dependencies.
630
+ :param tools_bucket: (experimental) Bucket where the tools are located in Primarily use to grant read permission to the processing agent to access the tools. Default: No extra IAM permissions would be automatically assigned to the processing agent.
631
+ :param tools_location: (experimental) S3 path where the tools are located. The agent would dynamically load the tools
630
632
 
631
633
  :stability: experimental
632
634
  '''
@@ -634,18 +636,22 @@ class AgentProps:
634
636
  type_hints = typing.get_type_hints(_typecheckingstub__e1a82500ee072f393cd9a2ada2f9a3434219c7a51186f26fbba3061bd896d11e)
635
637
  check_type(argname="argument agent_system_prompt", value=agent_system_prompt, expected_type=type_hints["agent_system_prompt"])
636
638
  check_type(argname="argument lambda_layers", value=lambda_layers, expected_type=type_hints["lambda_layers"])
639
+ check_type(argname="argument tools_bucket", value=tools_bucket, expected_type=type_hints["tools_bucket"])
637
640
  check_type(argname="argument tools_location", value=tools_location, expected_type=type_hints["tools_location"])
638
641
  self._values: typing.Dict[builtins.str, typing.Any] = {}
639
642
  if agent_system_prompt is not None:
640
643
  self._values["agent_system_prompt"] = agent_system_prompt
641
644
  if lambda_layers is not None:
642
645
  self._values["lambda_layers"] = lambda_layers
646
+ if tools_bucket is not None:
647
+ self._values["tools_bucket"] = tools_bucket
643
648
  if tools_location is not None:
644
649
  self._values["tools_location"] = tools_location
645
650
 
646
651
  @builtins.property
647
652
  def agent_system_prompt(self) -> typing.Optional[builtins.str]:
648
- '''
653
+ '''(experimental) System prompt for the agent.
654
+
649
655
  :stability: experimental
650
656
  '''
651
657
  result = self._values.get("agent_system_prompt")
@@ -655,15 +661,33 @@ class AgentProps:
655
661
  def lambda_layers(
656
662
  self,
657
663
  ) -> typing.Optional[typing.List[_aws_cdk_aws_lambda_ceddda9d.LayerVersion]]:
658
- '''
664
+ '''(experimental) If there are python dependencies that are needed by the provided tools, provide the Lambda Layers with the dependencies.
665
+
659
666
  :stability: experimental
660
667
  '''
661
668
  result = self._values.get("lambda_layers")
662
669
  return typing.cast(typing.Optional[typing.List[_aws_cdk_aws_lambda_ceddda9d.LayerVersion]], result)
663
670
 
664
671
  @builtins.property
665
- def tools_location(self) -> typing.Optional[typing.List[builtins.str]]:
672
+ def tools_bucket(self) -> typing.Optional[_aws_cdk_aws_s3_ceddda9d.Bucket]:
673
+ '''(experimental) Bucket where the tools are located in Primarily use to grant read permission to the processing agent to access the tools.
674
+
675
+ :default:
676
+
677
+ No extra IAM permissions would be automatically
678
+ assigned to the processing agent.
679
+
680
+ :stability: experimental
666
681
  '''
682
+ result = self._values.get("tools_bucket")
683
+ return typing.cast(typing.Optional[_aws_cdk_aws_s3_ceddda9d.Bucket], result)
684
+
685
+ @builtins.property
686
+ def tools_location(self) -> typing.Optional[typing.List[builtins.str]]:
687
+ '''(experimental) S3 path where the tools are located.
688
+
689
+ The agent would dynamically load the tools
690
+
667
691
  :stability: experimental
668
692
  '''
669
693
  result = self._values.get("tools_location")
@@ -1240,6 +1264,54 @@ class DatabaseEngine(enum.Enum):
1240
1264
  '''
1241
1265
 
1242
1266
 
1267
+ class DefaultDocumentProcessingConfig(
1268
+ metaclass=jsii.JSIIMeta,
1269
+ jsii_type="@cdklabs/cdk-appmod-catalog-blueprints.DefaultDocumentProcessingConfig",
1270
+ ):
1271
+ '''
1272
+ :stability: experimental
1273
+ '''
1274
+
1275
+ def __init__(self) -> None:
1276
+ '''
1277
+ :stability: experimental
1278
+ '''
1279
+ jsii.create(self.__class__, self, [])
1280
+
1281
+ @jsii.python.classproperty
1282
+ @jsii.member(jsii_name="DEFAULT_OBSERVABILITY_METRIC_SVC_NAME")
1283
+ def DEFAULT_OBSERVABILITY_METRIC_SVC_NAME(cls) -> builtins.str:
1284
+ '''
1285
+ :stability: experimental
1286
+ '''
1287
+ return typing.cast(builtins.str, jsii.sget(cls, "DEFAULT_OBSERVABILITY_METRIC_SVC_NAME"))
1288
+
1289
+
1290
+ class DefaultObservabilityConfig(
1291
+ metaclass=jsii.JSIIMeta,
1292
+ jsii_type="@cdklabs/cdk-appmod-catalog-blueprints.DefaultObservabilityConfig",
1293
+ ):
1294
+ '''(experimental) Contains default constants for Observability related configuration.
1295
+
1296
+ :stability: experimental
1297
+ '''
1298
+
1299
+ def __init__(self) -> None:
1300
+ '''
1301
+ :stability: experimental
1302
+ '''
1303
+ jsii.create(self.__class__, self, [])
1304
+
1305
+ @jsii.python.classproperty
1306
+ @jsii.member(jsii_name="DEFAULT_METRIC_NAMESPACE")
1307
+ def DEFAULT_METRIC_NAMESPACE(cls) -> builtins.str:
1308
+ '''(experimental) Default namespace for powertools.
1309
+
1310
+ :stability: experimental
1311
+ '''
1312
+ return typing.cast(builtins.str, jsii.sget(cls, "DEFAULT_METRIC_NAMESPACE"))
1313
+
1314
+
1243
1315
  class DefaultRuntimes(
1244
1316
  metaclass=jsii.JSIIMeta,
1245
1317
  jsii_type="@cdklabs/cdk-appmod-catalog-blueprints.DefaultRuntimes",
@@ -1296,36 +1368,6 @@ class DefaultRuntimes(
1296
1368
  return typing.cast(_aws_cdk_aws_lambda_python_alpha_49328424.BundlingOptions, jsii.sget(cls, "PYTHON_FUNCTION_BUNDLING"))
1297
1369
 
1298
1370
 
1299
- @jsii.enum(jsii_type="@cdklabs/cdk-appmod-catalog-blueprints.DocumentProcessingPrefix")
1300
- class DocumentProcessingPrefix(enum.Enum):
1301
- '''(experimental) S3 prefix constants for organizing documents throughout the processing lifecycle.
1302
-
1303
- Documents flow through these prefixes based on processing outcomes:
1304
-
1305
- - Upload → raw/ (triggers processing)
1306
- - Success → processed/ (workflow completed successfully)
1307
- - Failure → failed/ (workflow encountered errors)
1308
-
1309
- :stability: experimental
1310
- '''
1311
-
1312
- RAW = "RAW"
1313
- '''(experimental) Prefix for newly uploaded documents awaiting processing.
1314
-
1315
- :stability: experimental
1316
- '''
1317
- FAILED = "FAILED"
1318
- '''(experimental) Prefix for documents that failed processing.
1319
-
1320
- :stability: experimental
1321
- '''
1322
- PROCESSED = "PROCESSED"
1323
- '''(experimental) Prefix for successfully processed documents.
1324
-
1325
- :stability: experimental
1326
- '''
1327
-
1328
-
1329
1371
  class EventbridgeBroker(
1330
1372
  _constructs_77d1e7e8.Construct,
1331
1373
  metaclass=jsii.JSIIMeta,
@@ -1929,156 +1971,476 @@ class FrontendProps:
1929
1971
  )
1930
1972
 
1931
1973
 
1932
- @jsii.interface(jsii_type="@cdklabs/cdk-appmod-catalog-blueprints.IObservable")
1933
- class IObservable(typing_extensions.Protocol):
1934
- '''(experimental) Interface providing configuration parameters for constructs that support Observability.
1974
+ @jsii.interface(jsii_type="@cdklabs/cdk-appmod-catalog-blueprints.IAdapter")
1975
+ class IAdapter(typing_extensions.Protocol):
1976
+ '''(experimental) Abstraction to enable different types of source triggers for the intelligent document processing workflow.
1935
1977
 
1936
1978
  :stability: experimental
1937
1979
  '''
1938
1980
 
1939
- @builtins.property
1940
- @jsii.member(jsii_name="logGroupDataProtection")
1941
- def log_group_data_protection(self) -> "LogGroupDataProtectionProps":
1942
- '''
1943
- :stability: experimental
1944
- '''
1945
- ...
1981
+ @jsii.member(jsii_name="createFailedChain")
1982
+ def create_failed_chain(
1983
+ self,
1984
+ scope: _constructs_77d1e7e8.Construct,
1985
+ ) -> _aws_cdk_aws_stepfunctions_ceddda9d.Chain:
1986
+ '''(experimental) Create the adapter specific handler for failed processing.
1987
+
1988
+ :param scope: Scope to use in relation to the CDK hierarchy.
1989
+
1990
+ :return: Chain to be added to the state machine to handle failure scenarios
1946
1991
 
1947
- @builtins.property
1948
- @jsii.member(jsii_name="metricNamespace")
1949
- def metric_namespace(self) -> builtins.str:
1950
- '''
1951
1992
  :stability: experimental
1952
1993
  '''
1953
1994
  ...
1954
1995
 
1955
- @builtins.property
1956
- @jsii.member(jsii_name="metricServiceName")
1957
- def metric_service_name(self) -> builtins.str:
1958
- '''
1996
+ @jsii.member(jsii_name="createIngressTrigger")
1997
+ def create_ingress_trigger(
1998
+ self,
1999
+ scope: _constructs_77d1e7e8.Construct,
2000
+ state_machine: _aws_cdk_aws_stepfunctions_ceddda9d.StateMachine,
2001
+ *,
2002
+ document_processing_table: typing.Optional[_aws_cdk_aws_dynamodb_ceddda9d.Table] = None,
2003
+ enable_observability: typing.Optional[builtins.bool] = None,
2004
+ encryption_key: typing.Optional[_aws_cdk_aws_kms_ceddda9d.Key] = None,
2005
+ eventbridge_broker: typing.Optional[EventbridgeBroker] = None,
2006
+ ingress_adapter: typing.Optional["IAdapter"] = None,
2007
+ network: typing.Optional["Network"] = None,
2008
+ removal_policy: typing.Optional[_aws_cdk_ceddda9d.RemovalPolicy] = None,
2009
+ workflow_timeout: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
2010
+ log_group_data_protection: typing.Optional[typing.Union["LogGroupDataProtectionProps", typing.Dict[builtins.str, typing.Any]]] = None,
2011
+ metric_namespace: typing.Optional[builtins.str] = None,
2012
+ metric_service_name: typing.Optional[builtins.str] = None,
2013
+ ) -> typing.Mapping[builtins.str, typing.Any]:
2014
+ '''(experimental) Create resources that would receive the data and trigger the workflow.
2015
+
2016
+ Important: resource created should trigger the state machine
2017
+
2018
+ :param scope: Scope to use in relation to the CDK hierarchy.
2019
+ :param state_machine: The workflow of the document processor.
2020
+ :param document_processing_table: (experimental) DynamoDB table for storing document processing metadata and workflow state. If not provided, a new table will be created with DocumentId as partition key.
2021
+ :param enable_observability: (experimental) Enable logging and tracing for all supporting resource. Default: false
2022
+ :param encryption_key: (experimental) KMS key to be used. Default: A new key would be created
2023
+ :param eventbridge_broker: (experimental) Optional EventBridge broker for publishing custom events during processing. If not provided, no custom events will be sent out.
2024
+ :param ingress_adapter: (experimental) Adapter that defines how the document processing workflow is triggered. Default: QueuedS3Adapter
2025
+ :param network: (experimental) Resources that can run inside a VPC will follow the provided network configuration. Default: resources will run outside of a VPC
2026
+ :param removal_policy: (experimental) Removal policy for created resources (bucket, table, queue). Default: RemovalPolicy.DESTROY
2027
+ :param workflow_timeout: (experimental) Maximum execution time for the Step Functions workflow. Default: Duration.minutes(30)
2028
+ :param log_group_data_protection: (experimental) Data protection related configuration. Default: a new KMS key would be generated
2029
+ :param metric_namespace: (experimental) Business metric namespace. Default: would be defined per use case
2030
+ :param metric_service_name: (experimental) Business metric service name dimension. Default: would be defined per use case
2031
+
2032
+ :return: Resources that are created
2033
+
1959
2034
  :stability: experimental
1960
2035
  '''
1961
2036
  ...
1962
2037
 
1963
- @jsii.member(jsii_name="metrics")
1964
- def metrics(self) -> typing.List[_aws_cdk_aws_cloudwatch_ceddda9d.IMetric]:
1965
- '''
2038
+ @jsii.member(jsii_name="createSuccessChain")
2039
+ def create_success_chain(
2040
+ self,
2041
+ scope: _constructs_77d1e7e8.Construct,
2042
+ ) -> _aws_cdk_aws_stepfunctions_ceddda9d.Chain:
2043
+ '''(experimental) Create the adapter specific handler for successful processing.
2044
+
2045
+ :param scope: Scope to use in relation to the CDK hierarchy.
2046
+
2047
+ :return: Chain to be added to the state machine to handle successful scenarios
2048
+
1966
2049
  :stability: experimental
1967
2050
  '''
1968
2051
  ...
1969
2052
 
2053
+ @jsii.member(jsii_name="generateAdapterIAMPolicies")
2054
+ def generate_adapter_iam_policies(
2055
+ self,
2056
+ additional_iam_actions: typing.Optional[typing.Sequence[builtins.str]] = None,
2057
+ narrow_actions: typing.Optional[builtins.bool] = None,
2058
+ ) -> typing.List[_aws_cdk_aws_iam_ceddda9d.PolicyStatement]:
2059
+ '''(experimental) Generate IAM statements that can be used by other resources to access the storage.
1970
2060
 
1971
- class _IObservableProxy:
1972
- '''(experimental) Interface providing configuration parameters for constructs that support Observability.
2061
+ :param additional_iam_actions: (Optional) list of additional actions in relation to the underlying storage for the adapter.
2062
+ :param narrow_actions: (Optional) whether the resulting permissions would only be the IAM actions indicated in the ``additionalIAMActions`` parameter.
1973
2063
 
1974
- :stability: experimental
1975
- '''
2064
+ :default: false
1976
2065
 
1977
- __jsii_type__: typing.ClassVar[str] = "@cdklabs/cdk-appmod-catalog-blueprints.IObservable"
2066
+ :return: PolicyStatement[] IAM policy statements that would included in the state machine IAM role
1978
2067
 
1979
- @builtins.property
1980
- @jsii.member(jsii_name="logGroupDataProtection")
1981
- def log_group_data_protection(self) -> "LogGroupDataProtectionProps":
1982
- '''
1983
2068
  :stability: experimental
1984
2069
  '''
1985
- return typing.cast("LogGroupDataProtectionProps", jsii.get(self, "logGroupDataProtection"))
2070
+ ...
1986
2071
 
1987
- @builtins.property
1988
- @jsii.member(jsii_name="metricNamespace")
1989
- def metric_namespace(self) -> builtins.str:
1990
- '''
1991
- :stability: experimental
1992
- '''
1993
- return typing.cast(builtins.str, jsii.get(self, "metricNamespace"))
2072
+ @jsii.member(jsii_name="init")
2073
+ def init(
2074
+ self,
2075
+ scope: _constructs_77d1e7e8.Construct,
2076
+ *,
2077
+ document_processing_table: typing.Optional[_aws_cdk_aws_dynamodb_ceddda9d.Table] = None,
2078
+ enable_observability: typing.Optional[builtins.bool] = None,
2079
+ encryption_key: typing.Optional[_aws_cdk_aws_kms_ceddda9d.Key] = None,
2080
+ eventbridge_broker: typing.Optional[EventbridgeBroker] = None,
2081
+ ingress_adapter: typing.Optional["IAdapter"] = None,
2082
+ network: typing.Optional["Network"] = None,
2083
+ removal_policy: typing.Optional[_aws_cdk_ceddda9d.RemovalPolicy] = None,
2084
+ workflow_timeout: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
2085
+ log_group_data_protection: typing.Optional[typing.Union["LogGroupDataProtectionProps", typing.Dict[builtins.str, typing.Any]]] = None,
2086
+ metric_namespace: typing.Optional[builtins.str] = None,
2087
+ metric_service_name: typing.Optional[builtins.str] = None,
2088
+ ) -> None:
2089
+ '''(experimental) Initializes the adapter.
1994
2090
 
1995
- @builtins.property
1996
- @jsii.member(jsii_name="metricServiceName")
1997
- def metric_service_name(self) -> builtins.str:
1998
- '''
1999
- :stability: experimental
2000
- '''
2001
- return typing.cast(builtins.str, jsii.get(self, "metricServiceName"))
2091
+ :param scope: Scope to use in relation to the CDK hierarchy.
2092
+ :param document_processing_table: (experimental) DynamoDB table for storing document processing metadata and workflow state. If not provided, a new table will be created with DocumentId as partition key.
2093
+ :param enable_observability: (experimental) Enable logging and tracing for all supporting resource. Default: false
2094
+ :param encryption_key: (experimental) KMS key to be used. Default: A new key would be created
2095
+ :param eventbridge_broker: (experimental) Optional EventBridge broker for publishing custom events during processing. If not provided, no custom events will be sent out.
2096
+ :param ingress_adapter: (experimental) Adapter that defines how the document processing workflow is triggered. Default: QueuedS3Adapter
2097
+ :param network: (experimental) Resources that can run inside a VPC will follow the provided network configuration. Default: resources will run outside of a VPC
2098
+ :param removal_policy: (experimental) Removal policy for created resources (bucket, table, queue). Default: RemovalPolicy.DESTROY
2099
+ :param workflow_timeout: (experimental) Maximum execution time for the Step Functions workflow. Default: Duration.minutes(30)
2100
+ :param log_group_data_protection: (experimental) Data protection related configuration. Default: a new KMS key would be generated
2101
+ :param metric_namespace: (experimental) Business metric namespace. Default: would be defined per use case
2102
+ :param metric_service_name: (experimental) Business metric service name dimension. Default: would be defined per use case
2002
2103
 
2003
- @jsii.member(jsii_name="metrics")
2004
- def metrics(self) -> typing.List[_aws_cdk_aws_cloudwatch_ceddda9d.IMetric]:
2005
- '''
2006
2104
  :stability: experimental
2007
2105
  '''
2008
- return typing.cast(typing.List[_aws_cdk_aws_cloudwatch_ceddda9d.IMetric], jsii.invoke(self, "metrics", []))
2009
-
2010
- # Adding a "__jsii_proxy_class__(): typing.Type" function to the interface
2011
- typing.cast(typing.Any, IObservable).__jsii_proxy_class__ = lambda : _IObservableProxy
2106
+ ...
2012
2107
 
2013
2108
 
2014
- class LambdaIamUtils(
2015
- metaclass=jsii.JSIIMeta,
2016
- jsii_type="@cdklabs/cdk-appmod-catalog-blueprints.LambdaIamUtils",
2017
- ):
2018
- '''(experimental) Utility class for creating secure Lambda IAM policy statements with minimal permissions.
2109
+ class _IAdapterProxy:
2110
+ '''(experimental) Abstraction to enable different types of source triggers for the intelligent document processing workflow.
2019
2111
 
2020
2112
  :stability: experimental
2021
2113
  '''
2022
2114
 
2023
- def __init__(self) -> None:
2024
- '''
2025
- :stability: experimental
2026
- '''
2027
- jsii.create(self.__class__, self, [])
2115
+ __jsii_type__: typing.ClassVar[str] = "@cdklabs/cdk-appmod-catalog-blueprints.IAdapter"
2028
2116
 
2029
- @jsii.member(jsii_name="createDynamoDbPolicyStatement")
2030
- @builtins.classmethod
2031
- def create_dynamo_db_policy_statement(
2032
- cls,
2033
- table_arn: builtins.str,
2034
- actions: typing.Optional[typing.Sequence[builtins.str]] = None,
2035
- ) -> _aws_cdk_aws_iam_ceddda9d.PolicyStatement:
2036
- '''(experimental) Creates a policy statement for DynamoDB table access.
2117
+ @jsii.member(jsii_name="createFailedChain")
2118
+ def create_failed_chain(
2119
+ self,
2120
+ scope: _constructs_77d1e7e8.Construct,
2121
+ ) -> _aws_cdk_aws_stepfunctions_ceddda9d.Chain:
2122
+ '''(experimental) Create the adapter specific handler for failed processing.
2037
2123
 
2038
- :param table_arn: The ARN of the DynamoDB table.
2039
- :param actions: The DynamoDB actions to allow.
2124
+ :param scope: Scope to use in relation to the CDK hierarchy.
2040
2125
 
2041
- :return: PolicyStatement for DynamoDB access
2126
+ :return: Chain to be added to the state machine to handle failure scenarios
2042
2127
 
2043
2128
  :stability: experimental
2044
2129
  '''
2045
2130
  if __debug__:
2046
- type_hints = typing.get_type_hints(_typecheckingstub__8fea74c9846ad0c5bdddcbfe10063247cb7bcf58aac91e0be80d1226246784e4)
2047
- check_type(argname="argument table_arn", value=table_arn, expected_type=type_hints["table_arn"])
2048
- check_type(argname="argument actions", value=actions, expected_type=type_hints["actions"])
2049
- return typing.cast(_aws_cdk_aws_iam_ceddda9d.PolicyStatement, jsii.sinvoke(cls, "createDynamoDbPolicyStatement", [table_arn, actions]))
2131
+ type_hints = typing.get_type_hints(_typecheckingstub__5998f6c7e16512d92cd00097e77d737333304685208eb36a522c156f8378a9e7)
2132
+ check_type(argname="argument scope", value=scope, expected_type=type_hints["scope"])
2133
+ return typing.cast(_aws_cdk_aws_stepfunctions_ceddda9d.Chain, jsii.invoke(self, "createFailedChain", [scope]))
2050
2134
 
2051
- @jsii.member(jsii_name="createKmsPolicyStatement")
2052
- @builtins.classmethod
2053
- def create_kms_policy_statement(
2054
- cls,
2055
- key_arn: builtins.str,
2056
- actions: typing.Optional[typing.Sequence[builtins.str]] = None,
2057
- ) -> _aws_cdk_aws_iam_ceddda9d.PolicyStatement:
2058
- '''(experimental) Creates a policy statement for KMS key access.
2135
+ @jsii.member(jsii_name="createIngressTrigger")
2136
+ def create_ingress_trigger(
2137
+ self,
2138
+ scope: _constructs_77d1e7e8.Construct,
2139
+ state_machine: _aws_cdk_aws_stepfunctions_ceddda9d.StateMachine,
2140
+ *,
2141
+ document_processing_table: typing.Optional[_aws_cdk_aws_dynamodb_ceddda9d.Table] = None,
2142
+ enable_observability: typing.Optional[builtins.bool] = None,
2143
+ encryption_key: typing.Optional[_aws_cdk_aws_kms_ceddda9d.Key] = None,
2144
+ eventbridge_broker: typing.Optional[EventbridgeBroker] = None,
2145
+ ingress_adapter: typing.Optional[IAdapter] = None,
2146
+ network: typing.Optional["Network"] = None,
2147
+ removal_policy: typing.Optional[_aws_cdk_ceddda9d.RemovalPolicy] = None,
2148
+ workflow_timeout: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
2149
+ log_group_data_protection: typing.Optional[typing.Union["LogGroupDataProtectionProps", typing.Dict[builtins.str, typing.Any]]] = None,
2150
+ metric_namespace: typing.Optional[builtins.str] = None,
2151
+ metric_service_name: typing.Optional[builtins.str] = None,
2152
+ ) -> typing.Mapping[builtins.str, typing.Any]:
2153
+ '''(experimental) Create resources that would receive the data and trigger the workflow.
2059
2154
 
2060
- :param key_arn: The ARN of the KMS key.
2061
- :param actions: The KMS actions to allow.
2155
+ Important: resource created should trigger the state machine
2062
2156
 
2063
- :return: PolicyStatement for KMS access
2157
+ :param scope: Scope to use in relation to the CDK hierarchy.
2158
+ :param state_machine: The workflow of the document processor.
2159
+ :param document_processing_table: (experimental) DynamoDB table for storing document processing metadata and workflow state. If not provided, a new table will be created with DocumentId as partition key.
2160
+ :param enable_observability: (experimental) Enable logging and tracing for all supporting resource. Default: false
2161
+ :param encryption_key: (experimental) KMS key to be used. Default: A new key would be created
2162
+ :param eventbridge_broker: (experimental) Optional EventBridge broker for publishing custom events during processing. If not provided, no custom events will be sent out.
2163
+ :param ingress_adapter: (experimental) Adapter that defines how the document processing workflow is triggered. Default: QueuedS3Adapter
2164
+ :param network: (experimental) Resources that can run inside a VPC will follow the provided network configuration. Default: resources will run outside of a VPC
2165
+ :param removal_policy: (experimental) Removal policy for created resources (bucket, table, queue). Default: RemovalPolicy.DESTROY
2166
+ :param workflow_timeout: (experimental) Maximum execution time for the Step Functions workflow. Default: Duration.minutes(30)
2167
+ :param log_group_data_protection: (experimental) Data protection related configuration. Default: a new KMS key would be generated
2168
+ :param metric_namespace: (experimental) Business metric namespace. Default: would be defined per use case
2169
+ :param metric_service_name: (experimental) Business metric service name dimension. Default: would be defined per use case
2170
+
2171
+ :return: Resources that are created
2064
2172
 
2065
2173
  :stability: experimental
2066
2174
  '''
2067
2175
  if __debug__:
2068
- type_hints = typing.get_type_hints(_typecheckingstub__ef86294be8c776ba98bebc269fab82304f75649efab35cf030d999168ba5d690)
2069
- check_type(argname="argument key_arn", value=key_arn, expected_type=type_hints["key_arn"])
2070
- check_type(argname="argument actions", value=actions, expected_type=type_hints["actions"])
2071
- return typing.cast(_aws_cdk_aws_iam_ceddda9d.PolicyStatement, jsii.sinvoke(cls, "createKmsPolicyStatement", [key_arn, actions]))
2072
-
2073
- @jsii.member(jsii_name="createLogsPermissions")
2074
- @builtins.classmethod
2075
- def create_logs_permissions(
2076
- cls,
2077
- *,
2078
- account: builtins.str,
2079
- function_name: builtins.str,
2176
+ type_hints = typing.get_type_hints(_typecheckingstub__b61e74ddd8982f4b30ae59307c9fb3adaff26122ddc7f5faabc2cc8e1e2da034)
2177
+ check_type(argname="argument scope", value=scope, expected_type=type_hints["scope"])
2178
+ check_type(argname="argument state_machine", value=state_machine, expected_type=type_hints["state_machine"])
2179
+ props = BaseDocumentProcessingProps(
2180
+ document_processing_table=document_processing_table,
2181
+ enable_observability=enable_observability,
2182
+ encryption_key=encryption_key,
2183
+ eventbridge_broker=eventbridge_broker,
2184
+ ingress_adapter=ingress_adapter,
2185
+ network=network,
2186
+ removal_policy=removal_policy,
2187
+ workflow_timeout=workflow_timeout,
2188
+ log_group_data_protection=log_group_data_protection,
2189
+ metric_namespace=metric_namespace,
2190
+ metric_service_name=metric_service_name,
2191
+ )
2192
+
2193
+ return typing.cast(typing.Mapping[builtins.str, typing.Any], jsii.invoke(self, "createIngressTrigger", [scope, state_machine, props]))
2194
+
2195
+ @jsii.member(jsii_name="createSuccessChain")
2196
+ def create_success_chain(
2197
+ self,
2198
+ scope: _constructs_77d1e7e8.Construct,
2199
+ ) -> _aws_cdk_aws_stepfunctions_ceddda9d.Chain:
2200
+ '''(experimental) Create the adapter specific handler for successful processing.
2201
+
2202
+ :param scope: Scope to use in relation to the CDK hierarchy.
2203
+
2204
+ :return: Chain to be added to the state machine to handle successful scenarios
2205
+
2206
+ :stability: experimental
2207
+ '''
2208
+ if __debug__:
2209
+ type_hints = typing.get_type_hints(_typecheckingstub__cd0aad7a5879633fca8d89cbf92e8f5a13e31615116036f29a82a58c1bb4727d)
2210
+ check_type(argname="argument scope", value=scope, expected_type=type_hints["scope"])
2211
+ return typing.cast(_aws_cdk_aws_stepfunctions_ceddda9d.Chain, jsii.invoke(self, "createSuccessChain", [scope]))
2212
+
2213
+ @jsii.member(jsii_name="generateAdapterIAMPolicies")
2214
+ def generate_adapter_iam_policies(
2215
+ self,
2216
+ additional_iam_actions: typing.Optional[typing.Sequence[builtins.str]] = None,
2217
+ narrow_actions: typing.Optional[builtins.bool] = None,
2218
+ ) -> typing.List[_aws_cdk_aws_iam_ceddda9d.PolicyStatement]:
2219
+ '''(experimental) Generate IAM statements that can be used by other resources to access the storage.
2220
+
2221
+ :param additional_iam_actions: (Optional) list of additional actions in relation to the underlying storage for the adapter.
2222
+ :param narrow_actions: (Optional) whether the resulting permissions would only be the IAM actions indicated in the ``additionalIAMActions`` parameter.
2223
+
2224
+ :default: false
2225
+
2226
+ :return: PolicyStatement[] IAM policy statements that would included in the state machine IAM role
2227
+
2228
+ :stability: experimental
2229
+ '''
2230
+ if __debug__:
2231
+ type_hints = typing.get_type_hints(_typecheckingstub__82a45114a0ff76d4b9d091edd6674d4e762dc5ca19631d61579cf1aa47e30b5e)
2232
+ check_type(argname="argument additional_iam_actions", value=additional_iam_actions, expected_type=type_hints["additional_iam_actions"])
2233
+ check_type(argname="argument narrow_actions", value=narrow_actions, expected_type=type_hints["narrow_actions"])
2234
+ return typing.cast(typing.List[_aws_cdk_aws_iam_ceddda9d.PolicyStatement], jsii.invoke(self, "generateAdapterIAMPolicies", [additional_iam_actions, narrow_actions]))
2235
+
2236
+ @jsii.member(jsii_name="init")
2237
+ def init(
2238
+ self,
2239
+ scope: _constructs_77d1e7e8.Construct,
2240
+ *,
2241
+ document_processing_table: typing.Optional[_aws_cdk_aws_dynamodb_ceddda9d.Table] = None,
2242
+ enable_observability: typing.Optional[builtins.bool] = None,
2243
+ encryption_key: typing.Optional[_aws_cdk_aws_kms_ceddda9d.Key] = None,
2244
+ eventbridge_broker: typing.Optional[EventbridgeBroker] = None,
2245
+ ingress_adapter: typing.Optional[IAdapter] = None,
2246
+ network: typing.Optional["Network"] = None,
2247
+ removal_policy: typing.Optional[_aws_cdk_ceddda9d.RemovalPolicy] = None,
2248
+ workflow_timeout: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
2249
+ log_group_data_protection: typing.Optional[typing.Union["LogGroupDataProtectionProps", typing.Dict[builtins.str, typing.Any]]] = None,
2250
+ metric_namespace: typing.Optional[builtins.str] = None,
2251
+ metric_service_name: typing.Optional[builtins.str] = None,
2252
+ ) -> None:
2253
+ '''(experimental) Initializes the adapter.
2254
+
2255
+ :param scope: Scope to use in relation to the CDK hierarchy.
2256
+ :param document_processing_table: (experimental) DynamoDB table for storing document processing metadata and workflow state. If not provided, a new table will be created with DocumentId as partition key.
2257
+ :param enable_observability: (experimental) Enable logging and tracing for all supporting resource. Default: false
2258
+ :param encryption_key: (experimental) KMS key to be used. Default: A new key would be created
2259
+ :param eventbridge_broker: (experimental) Optional EventBridge broker for publishing custom events during processing. If not provided, no custom events will be sent out.
2260
+ :param ingress_adapter: (experimental) Adapter that defines how the document processing workflow is triggered. Default: QueuedS3Adapter
2261
+ :param network: (experimental) Resources that can run inside a VPC will follow the provided network configuration. Default: resources will run outside of a VPC
2262
+ :param removal_policy: (experimental) Removal policy for created resources (bucket, table, queue). Default: RemovalPolicy.DESTROY
2263
+ :param workflow_timeout: (experimental) Maximum execution time for the Step Functions workflow. Default: Duration.minutes(30)
2264
+ :param log_group_data_protection: (experimental) Data protection related configuration. Default: a new KMS key would be generated
2265
+ :param metric_namespace: (experimental) Business metric namespace. Default: would be defined per use case
2266
+ :param metric_service_name: (experimental) Business metric service name dimension. Default: would be defined per use case
2267
+
2268
+ :stability: experimental
2269
+ '''
2270
+ if __debug__:
2271
+ type_hints = typing.get_type_hints(_typecheckingstub__17f7e7f35ea8e49cf6ded248435aa1e1dcf416e61c549f3e7b74baad3ac399e7)
2272
+ check_type(argname="argument scope", value=scope, expected_type=type_hints["scope"])
2273
+ props = BaseDocumentProcessingProps(
2274
+ document_processing_table=document_processing_table,
2275
+ enable_observability=enable_observability,
2276
+ encryption_key=encryption_key,
2277
+ eventbridge_broker=eventbridge_broker,
2278
+ ingress_adapter=ingress_adapter,
2279
+ network=network,
2280
+ removal_policy=removal_policy,
2281
+ workflow_timeout=workflow_timeout,
2282
+ log_group_data_protection=log_group_data_protection,
2283
+ metric_namespace=metric_namespace,
2284
+ metric_service_name=metric_service_name,
2285
+ )
2286
+
2287
+ return typing.cast(None, jsii.invoke(self, "init", [scope, props]))
2288
+
2289
+ # Adding a "__jsii_proxy_class__(): typing.Type" function to the interface
2290
+ typing.cast(typing.Any, IAdapter).__jsii_proxy_class__ = lambda : _IAdapterProxy
2291
+
2292
+
2293
+ @jsii.interface(jsii_type="@cdklabs/cdk-appmod-catalog-blueprints.IObservable")
2294
+ class IObservable(typing_extensions.Protocol):
2295
+ '''(experimental) Interface providing configuration parameters for constructs that support Observability.
2296
+
2297
+ :stability: experimental
2298
+ '''
2299
+
2300
+ @builtins.property
2301
+ @jsii.member(jsii_name="logGroupDataProtection")
2302
+ def log_group_data_protection(self) -> "LogGroupDataProtectionProps":
2303
+ '''
2304
+ :stability: experimental
2305
+ '''
2306
+ ...
2307
+
2308
+ @builtins.property
2309
+ @jsii.member(jsii_name="metricNamespace")
2310
+ def metric_namespace(self) -> builtins.str:
2311
+ '''
2312
+ :stability: experimental
2313
+ '''
2314
+ ...
2315
+
2316
+ @builtins.property
2317
+ @jsii.member(jsii_name="metricServiceName")
2318
+ def metric_service_name(self) -> builtins.str:
2319
+ '''
2320
+ :stability: experimental
2321
+ '''
2322
+ ...
2323
+
2324
+ @jsii.member(jsii_name="metrics")
2325
+ def metrics(self) -> typing.List[_aws_cdk_aws_cloudwatch_ceddda9d.IMetric]:
2326
+ '''
2327
+ :stability: experimental
2328
+ '''
2329
+ ...
2330
+
2331
+
2332
+ class _IObservableProxy:
2333
+ '''(experimental) Interface providing configuration parameters for constructs that support Observability.
2334
+
2335
+ :stability: experimental
2336
+ '''
2337
+
2338
+ __jsii_type__: typing.ClassVar[str] = "@cdklabs/cdk-appmod-catalog-blueprints.IObservable"
2339
+
2340
+ @builtins.property
2341
+ @jsii.member(jsii_name="logGroupDataProtection")
2342
+ def log_group_data_protection(self) -> "LogGroupDataProtectionProps":
2343
+ '''
2344
+ :stability: experimental
2345
+ '''
2346
+ return typing.cast("LogGroupDataProtectionProps", jsii.get(self, "logGroupDataProtection"))
2347
+
2348
+ @builtins.property
2349
+ @jsii.member(jsii_name="metricNamespace")
2350
+ def metric_namespace(self) -> builtins.str:
2351
+ '''
2352
+ :stability: experimental
2353
+ '''
2354
+ return typing.cast(builtins.str, jsii.get(self, "metricNamespace"))
2355
+
2356
+ @builtins.property
2357
+ @jsii.member(jsii_name="metricServiceName")
2358
+ def metric_service_name(self) -> builtins.str:
2359
+ '''
2360
+ :stability: experimental
2361
+ '''
2362
+ return typing.cast(builtins.str, jsii.get(self, "metricServiceName"))
2363
+
2364
+ @jsii.member(jsii_name="metrics")
2365
+ def metrics(self) -> typing.List[_aws_cdk_aws_cloudwatch_ceddda9d.IMetric]:
2366
+ '''
2367
+ :stability: experimental
2368
+ '''
2369
+ return typing.cast(typing.List[_aws_cdk_aws_cloudwatch_ceddda9d.IMetric], jsii.invoke(self, "metrics", []))
2370
+
2371
+ # Adding a "__jsii_proxy_class__(): typing.Type" function to the interface
2372
+ typing.cast(typing.Any, IObservable).__jsii_proxy_class__ = lambda : _IObservableProxy
2373
+
2374
+
2375
+ class LambdaIamUtils(
2376
+ metaclass=jsii.JSIIMeta,
2377
+ jsii_type="@cdklabs/cdk-appmod-catalog-blueprints.LambdaIamUtils",
2378
+ ):
2379
+ '''(experimental) Utility class for creating secure Lambda IAM policy statements with minimal permissions.
2380
+
2381
+ :stability: experimental
2382
+ '''
2383
+
2384
+ def __init__(self) -> None:
2385
+ '''
2386
+ :stability: experimental
2387
+ '''
2388
+ jsii.create(self.__class__, self, [])
2389
+
2390
+ @jsii.member(jsii_name="createDynamoDbPolicyStatement")
2391
+ @builtins.classmethod
2392
+ def create_dynamo_db_policy_statement(
2393
+ cls,
2394
+ table_arn: builtins.str,
2395
+ actions: typing.Optional[typing.Sequence[builtins.str]] = None,
2396
+ ) -> _aws_cdk_aws_iam_ceddda9d.PolicyStatement:
2397
+ '''(experimental) Creates a policy statement for DynamoDB table access.
2398
+
2399
+ :param table_arn: The ARN of the DynamoDB table.
2400
+ :param actions: The DynamoDB actions to allow.
2401
+
2402
+ :return: PolicyStatement for DynamoDB access
2403
+
2404
+ :stability: experimental
2405
+ '''
2406
+ if __debug__:
2407
+ type_hints = typing.get_type_hints(_typecheckingstub__8fea74c9846ad0c5bdddcbfe10063247cb7bcf58aac91e0be80d1226246784e4)
2408
+ check_type(argname="argument table_arn", value=table_arn, expected_type=type_hints["table_arn"])
2409
+ check_type(argname="argument actions", value=actions, expected_type=type_hints["actions"])
2410
+ return typing.cast(_aws_cdk_aws_iam_ceddda9d.PolicyStatement, jsii.sinvoke(cls, "createDynamoDbPolicyStatement", [table_arn, actions]))
2411
+
2412
+ @jsii.member(jsii_name="createKmsPolicyStatement")
2413
+ @builtins.classmethod
2414
+ def create_kms_policy_statement(
2415
+ cls,
2416
+ key_arn: builtins.str,
2417
+ actions: typing.Optional[typing.Sequence[builtins.str]] = None,
2418
+ ) -> _aws_cdk_aws_iam_ceddda9d.PolicyStatement:
2419
+ '''(experimental) Creates a policy statement for KMS key access.
2420
+
2421
+ :param key_arn: The ARN of the KMS key.
2422
+ :param actions: The KMS actions to allow.
2423
+
2424
+ :return: PolicyStatement for KMS access
2425
+
2426
+ :stability: experimental
2427
+ '''
2428
+ if __debug__:
2429
+ type_hints = typing.get_type_hints(_typecheckingstub__ef86294be8c776ba98bebc269fab82304f75649efab35cf030d999168ba5d690)
2430
+ check_type(argname="argument key_arn", value=key_arn, expected_type=type_hints["key_arn"])
2431
+ check_type(argname="argument actions", value=actions, expected_type=type_hints["actions"])
2432
+ return typing.cast(_aws_cdk_aws_iam_ceddda9d.PolicyStatement, jsii.sinvoke(cls, "createKmsPolicyStatement", [key_arn, actions]))
2433
+
2434
+ @jsii.member(jsii_name="createLogsPermissions")
2435
+ @builtins.classmethod
2436
+ def create_logs_permissions(
2437
+ cls,
2438
+ *,
2439
+ account: builtins.str,
2440
+ function_name: builtins.str,
2080
2441
  region: builtins.str,
2081
2442
  scope: _constructs_77d1e7e8.Construct,
2443
+ enable_observability: typing.Optional[builtins.bool] = None,
2082
2444
  log_group_name: typing.Optional[builtins.str] = None,
2083
2445
  ) -> "LambdaLogsPermissionsResult":
2084
2446
  '''(experimental) Creates CloudWatch Logs policy statements for Lambda execution.
@@ -2087,6 +2449,7 @@ class LambdaIamUtils(
2087
2449
  :param function_name: (experimental) The base name of the Lambda function.
2088
2450
  :param region: (experimental) AWS region for the log group ARN.
2089
2451
  :param scope: (experimental) The construct scope (used to generate unique names).
2452
+ :param enable_observability: (experimental) Whether observability is enabled or not. This would have an impact on the result IAM policy for the LogGroup for the Lambda function Default: false
2090
2453
  :param log_group_name: (experimental) Custom log group name pattern. Default: '/aws/lambda/{uniqueFunctionName}'
2091
2454
 
2092
2455
  :return: Object containing policy statements and the unique function name
@@ -2098,6 +2461,7 @@ class LambdaIamUtils(
2098
2461
  function_name=function_name,
2099
2462
  region=region,
2100
2463
  scope=scope,
2464
+ enable_observability=enable_observability,
2101
2465
  log_group_name=log_group_name,
2102
2466
  )
2103
2467
 
@@ -2293,6 +2657,14 @@ class LambdaIamUtils(
2293
2657
  check_type(argname="argument scope", value=scope, expected_type=type_hints["scope"])
2294
2658
  return typing.cast("LambdaIamUtilsStackInfo", jsii.sinvoke(cls, "getStackInfo", [scope]))
2295
2659
 
2660
+ @jsii.python.classproperty
2661
+ @jsii.member(jsii_name="OBSERVABILITY_SUFFIX")
2662
+ def OBSERVABILITY_SUFFIX(cls) -> builtins.str:
2663
+ '''
2664
+ :stability: experimental
2665
+ '''
2666
+ return typing.cast(builtins.str, jsii.sget(cls, "OBSERVABILITY_SUFFIX"))
2667
+
2296
2668
 
2297
2669
  @jsii.data_type(
2298
2670
  jsii_type="@cdklabs/cdk-appmod-catalog-blueprints.LambdaIamUtilsStackInfo",
@@ -2355,6 +2727,7 @@ class LambdaIamUtilsStackInfo:
2355
2727
  "function_name": "functionName",
2356
2728
  "region": "region",
2357
2729
  "scope": "scope",
2730
+ "enable_observability": "enableObservability",
2358
2731
  "log_group_name": "logGroupName",
2359
2732
  },
2360
2733
  )
@@ -2366,6 +2739,7 @@ class LambdaLogsPermissionsProps:
2366
2739
  function_name: builtins.str,
2367
2740
  region: builtins.str,
2368
2741
  scope: _constructs_77d1e7e8.Construct,
2742
+ enable_observability: typing.Optional[builtins.bool] = None,
2369
2743
  log_group_name: typing.Optional[builtins.str] = None,
2370
2744
  ) -> None:
2371
2745
  '''(experimental) Configuration options for Lambda CloudWatch Logs permissions.
@@ -2374,6 +2748,7 @@ class LambdaLogsPermissionsProps:
2374
2748
  :param function_name: (experimental) The base name of the Lambda function.
2375
2749
  :param region: (experimental) AWS region for the log group ARN.
2376
2750
  :param scope: (experimental) The construct scope (used to generate unique names).
2751
+ :param enable_observability: (experimental) Whether observability is enabled or not. This would have an impact on the result IAM policy for the LogGroup for the Lambda function Default: false
2377
2752
  :param log_group_name: (experimental) Custom log group name pattern. Default: '/aws/lambda/{uniqueFunctionName}'
2378
2753
 
2379
2754
  :stability: experimental
@@ -2384,6 +2759,7 @@ class LambdaLogsPermissionsProps:
2384
2759
  check_type(argname="argument function_name", value=function_name, expected_type=type_hints["function_name"])
2385
2760
  check_type(argname="argument region", value=region, expected_type=type_hints["region"])
2386
2761
  check_type(argname="argument scope", value=scope, expected_type=type_hints["scope"])
2762
+ check_type(argname="argument enable_observability", value=enable_observability, expected_type=type_hints["enable_observability"])
2387
2763
  check_type(argname="argument log_group_name", value=log_group_name, expected_type=type_hints["log_group_name"])
2388
2764
  self._values: typing.Dict[builtins.str, typing.Any] = {
2389
2765
  "account": account,
@@ -2391,6 +2767,8 @@ class LambdaLogsPermissionsProps:
2391
2767
  "region": region,
2392
2768
  "scope": scope,
2393
2769
  }
2770
+ if enable_observability is not None:
2771
+ self._values["enable_observability"] = enable_observability
2394
2772
  if log_group_name is not None:
2395
2773
  self._values["log_group_name"] = log_group_name
2396
2774
 
@@ -2434,6 +2812,20 @@ class LambdaLogsPermissionsProps:
2434
2812
  assert result is not None, "Required property 'scope' is missing"
2435
2813
  return typing.cast(_constructs_77d1e7e8.Construct, result)
2436
2814
 
2815
+ @builtins.property
2816
+ def enable_observability(self) -> typing.Optional[builtins.bool]:
2817
+ '''(experimental) Whether observability is enabled or not.
2818
+
2819
+ This would have an impact
2820
+ on the result IAM policy for the LogGroup for the Lambda function
2821
+
2822
+ :default: false
2823
+
2824
+ :stability: experimental
2825
+ '''
2826
+ result = self._values.get("enable_observability")
2827
+ return typing.cast(typing.Optional[builtins.bool], result)
2828
+
2437
2829
  @builtins.property
2438
2830
  def log_group_name(self) -> typing.Optional[builtins.str]:
2439
2831
  '''(experimental) Custom log group name pattern.
@@ -3025,10 +3417,354 @@ class PowertoolsConfig(
3025
3417
  return typing.cast(typing.Mapping[builtins.str, builtins.str], jsii.sinvoke(cls, "generateDefaultLambdaConfig", [enable_observability, metrics_namespace, service_name]))
3026
3418
 
3027
3419
 
3028
- @jsii.implements(_aws_cdk_ceddda9d.IPropertyInjector)
3029
- class StateMachineObservabilityPropertyInjector(
3420
+ @jsii.implements(IAdapter)
3421
+ class QueuedS3Adapter(
3030
3422
  metaclass=jsii.JSIIMeta,
3031
- jsii_type="@cdklabs/cdk-appmod-catalog-blueprints.StateMachineObservabilityPropertyInjector",
3423
+ jsii_type="@cdklabs/cdk-appmod-catalog-blueprints.QueuedS3Adapter",
3424
+ ):
3425
+ '''(experimental) This adapter allows the intelligent document processing workflow to be triggered by files that are uploaded into a S3 Bucket.
3426
+
3427
+ :stability: experimental
3428
+ '''
3429
+
3430
+ def __init__(
3431
+ self,
3432
+ *,
3433
+ bucket: typing.Optional[_aws_cdk_aws_s3_ceddda9d.Bucket] = None,
3434
+ dlq_max_receive_count: typing.Optional[jsii.Number] = None,
3435
+ failed_prefix: typing.Optional[builtins.str] = None,
3436
+ processed_prefix: typing.Optional[builtins.str] = None,
3437
+ queue_visibility_timeout: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
3438
+ raw_prefix: typing.Optional[builtins.str] = None,
3439
+ ) -> None:
3440
+ '''
3441
+ :param bucket: (experimental) S3 bucket for document storage with organized prefixes (raw/, processed/, failed/). If not provided, a new bucket will be created with auto-delete enabled based on removalPolicy. Default: create a new bucket
3442
+ :param dlq_max_receive_count: (experimental) The number of times a message can be unsuccessfully dequeued before being moved to the dead-letter queue. Default: 5
3443
+ :param failed_prefix: (experimental) S3 prefix where the files that failed processing would be stored. Default: "failed/"
3444
+ :param processed_prefix: (experimental) S3 prefix where the processed files would be stored. Default: "processed/"
3445
+ :param queue_visibility_timeout: (experimental) SQS queue visibility timeout for processing messages. Should be longer than expected processing time to prevent duplicate processing. Default: Duration.seconds(300)
3446
+ :param raw_prefix: (experimental) S3 prefix where the raw files would be stored. This serves as the trigger point for processing Default: "raw/"
3447
+
3448
+ :stability: experimental
3449
+ '''
3450
+ adapter_props = QueuedS3AdapterProps(
3451
+ bucket=bucket,
3452
+ dlq_max_receive_count=dlq_max_receive_count,
3453
+ failed_prefix=failed_prefix,
3454
+ processed_prefix=processed_prefix,
3455
+ queue_visibility_timeout=queue_visibility_timeout,
3456
+ raw_prefix=raw_prefix,
3457
+ )
3458
+
3459
+ jsii.create(self.__class__, self, [adapter_props])
3460
+
3461
+ @jsii.member(jsii_name="createFailedChain")
3462
+ def create_failed_chain(
3463
+ self,
3464
+ scope: _constructs_77d1e7e8.Construct,
3465
+ ) -> _aws_cdk_aws_stepfunctions_ceddda9d.Chain:
3466
+ '''(experimental) Create the adapter specific handler for failed processing.
3467
+
3468
+ :param scope: -
3469
+
3470
+ :stability: experimental
3471
+ '''
3472
+ if __debug__:
3473
+ type_hints = typing.get_type_hints(_typecheckingstub__b95daf862a9819daa9b25cecfc08214dc429ef07ac6de3920b5dea59e01616eb)
3474
+ check_type(argname="argument scope", value=scope, expected_type=type_hints["scope"])
3475
+ return typing.cast(_aws_cdk_aws_stepfunctions_ceddda9d.Chain, jsii.invoke(self, "createFailedChain", [scope]))
3476
+
3477
+ @jsii.member(jsii_name="createIngressTrigger")
3478
+ def create_ingress_trigger(
3479
+ self,
3480
+ scope: _constructs_77d1e7e8.Construct,
3481
+ state_machine: _aws_cdk_aws_stepfunctions_ceddda9d.StateMachine,
3482
+ *,
3483
+ document_processing_table: typing.Optional[_aws_cdk_aws_dynamodb_ceddda9d.Table] = None,
3484
+ enable_observability: typing.Optional[builtins.bool] = None,
3485
+ encryption_key: typing.Optional[_aws_cdk_aws_kms_ceddda9d.Key] = None,
3486
+ eventbridge_broker: typing.Optional[EventbridgeBroker] = None,
3487
+ ingress_adapter: typing.Optional[IAdapter] = None,
3488
+ network: typing.Optional[Network] = None,
3489
+ removal_policy: typing.Optional[_aws_cdk_ceddda9d.RemovalPolicy] = None,
3490
+ workflow_timeout: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
3491
+ log_group_data_protection: typing.Optional[typing.Union[LogGroupDataProtectionProps, typing.Dict[builtins.str, typing.Any]]] = None,
3492
+ metric_namespace: typing.Optional[builtins.str] = None,
3493
+ metric_service_name: typing.Optional[builtins.str] = None,
3494
+ ) -> typing.Mapping[builtins.str, typing.Any]:
3495
+ '''(experimental) Create resources that would receive the data and trigger the workflow.
3496
+
3497
+ Important: resource created should trigger the state machine
3498
+
3499
+ :param scope: -
3500
+ :param state_machine: -
3501
+ :param document_processing_table: (experimental) DynamoDB table for storing document processing metadata and workflow state. If not provided, a new table will be created with DocumentId as partition key.
3502
+ :param enable_observability: (experimental) Enable logging and tracing for all supporting resource. Default: false
3503
+ :param encryption_key: (experimental) KMS key to be used. Default: A new key would be created
3504
+ :param eventbridge_broker: (experimental) Optional EventBridge broker for publishing custom events during processing. If not provided, no custom events will be sent out.
3505
+ :param ingress_adapter: (experimental) Adapter that defines how the document processing workflow is triggered. Default: QueuedS3Adapter
3506
+ :param network: (experimental) Resources that can run inside a VPC will follow the provided network configuration. Default: resources will run outside of a VPC
3507
+ :param removal_policy: (experimental) Removal policy for created resources (bucket, table, queue). Default: RemovalPolicy.DESTROY
3508
+ :param workflow_timeout: (experimental) Maximum execution time for the Step Functions workflow. Default: Duration.minutes(30)
3509
+ :param log_group_data_protection: (experimental) Data protection related configuration. Default: a new KMS key would be generated
3510
+ :param metric_namespace: (experimental) Business metric namespace. Default: would be defined per use case
3511
+ :param metric_service_name: (experimental) Business metric service name dimension. Default: would be defined per use case
3512
+
3513
+ :stability: experimental
3514
+ '''
3515
+ if __debug__:
3516
+ type_hints = typing.get_type_hints(_typecheckingstub__fb0e9adf74054c1b0a1974cab45642af57cb1651ef8052310a0229dae1eac178)
3517
+ check_type(argname="argument scope", value=scope, expected_type=type_hints["scope"])
3518
+ check_type(argname="argument state_machine", value=state_machine, expected_type=type_hints["state_machine"])
3519
+ props = BaseDocumentProcessingProps(
3520
+ document_processing_table=document_processing_table,
3521
+ enable_observability=enable_observability,
3522
+ encryption_key=encryption_key,
3523
+ eventbridge_broker=eventbridge_broker,
3524
+ ingress_adapter=ingress_adapter,
3525
+ network=network,
3526
+ removal_policy=removal_policy,
3527
+ workflow_timeout=workflow_timeout,
3528
+ log_group_data_protection=log_group_data_protection,
3529
+ metric_namespace=metric_namespace,
3530
+ metric_service_name=metric_service_name,
3531
+ )
3532
+
3533
+ return typing.cast(typing.Mapping[builtins.str, typing.Any], jsii.invoke(self, "createIngressTrigger", [scope, state_machine, props]))
3534
+
3535
+ @jsii.member(jsii_name="createSuccessChain")
3536
+ def create_success_chain(
3537
+ self,
3538
+ scope: _constructs_77d1e7e8.Construct,
3539
+ ) -> _aws_cdk_aws_stepfunctions_ceddda9d.Chain:
3540
+ '''(experimental) Create the adapter specific handler for successful processing.
3541
+
3542
+ :param scope: -
3543
+
3544
+ :stability: experimental
3545
+ '''
3546
+ if __debug__:
3547
+ type_hints = typing.get_type_hints(_typecheckingstub__76aa2fd577ace3b2507bf11a33f4d039ae5ac0af0d5d3edede30c4515a1a0986)
3548
+ check_type(argname="argument scope", value=scope, expected_type=type_hints["scope"])
3549
+ return typing.cast(_aws_cdk_aws_stepfunctions_ceddda9d.Chain, jsii.invoke(self, "createSuccessChain", [scope]))
3550
+
3551
+ @jsii.member(jsii_name="generateAdapterIAMPolicies")
3552
+ def generate_adapter_iam_policies(
3553
+ self,
3554
+ additional_iam_actions: typing.Optional[typing.Sequence[builtins.str]] = None,
3555
+ narrow_actions: typing.Optional[builtins.bool] = None,
3556
+ ) -> typing.List[_aws_cdk_aws_iam_ceddda9d.PolicyStatement]:
3557
+ '''(experimental) Generate IAM statements that can be used by other resources to access the storage.
3558
+
3559
+ :param additional_iam_actions: -
3560
+ :param narrow_actions: -
3561
+
3562
+ :stability: experimental
3563
+ '''
3564
+ if __debug__:
3565
+ type_hints = typing.get_type_hints(_typecheckingstub__308867c51abfbbc08d0fba9125db9b86eddda969dc95de8546e6f8cb242ee8a9)
3566
+ check_type(argname="argument additional_iam_actions", value=additional_iam_actions, expected_type=type_hints["additional_iam_actions"])
3567
+ check_type(argname="argument narrow_actions", value=narrow_actions, expected_type=type_hints["narrow_actions"])
3568
+ return typing.cast(typing.List[_aws_cdk_aws_iam_ceddda9d.PolicyStatement], jsii.invoke(self, "generateAdapterIAMPolicies", [additional_iam_actions, narrow_actions]))
3569
+
3570
+ @jsii.member(jsii_name="init")
3571
+ def init(
3572
+ self,
3573
+ scope: _constructs_77d1e7e8.Construct,
3574
+ *,
3575
+ document_processing_table: typing.Optional[_aws_cdk_aws_dynamodb_ceddda9d.Table] = None,
3576
+ enable_observability: typing.Optional[builtins.bool] = None,
3577
+ encryption_key: typing.Optional[_aws_cdk_aws_kms_ceddda9d.Key] = None,
3578
+ eventbridge_broker: typing.Optional[EventbridgeBroker] = None,
3579
+ ingress_adapter: typing.Optional[IAdapter] = None,
3580
+ network: typing.Optional[Network] = None,
3581
+ removal_policy: typing.Optional[_aws_cdk_ceddda9d.RemovalPolicy] = None,
3582
+ workflow_timeout: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
3583
+ log_group_data_protection: typing.Optional[typing.Union[LogGroupDataProtectionProps, typing.Dict[builtins.str, typing.Any]]] = None,
3584
+ metric_namespace: typing.Optional[builtins.str] = None,
3585
+ metric_service_name: typing.Optional[builtins.str] = None,
3586
+ ) -> None:
3587
+ '''(experimental) Initializes the adapter.
3588
+
3589
+ :param scope: -
3590
+ :param document_processing_table: (experimental) DynamoDB table for storing document processing metadata and workflow state. If not provided, a new table will be created with DocumentId as partition key.
3591
+ :param enable_observability: (experimental) Enable logging and tracing for all supporting resource. Default: false
3592
+ :param encryption_key: (experimental) KMS key to be used. Default: A new key would be created
3593
+ :param eventbridge_broker: (experimental) Optional EventBridge broker for publishing custom events during processing. If not provided, no custom events will be sent out.
3594
+ :param ingress_adapter: (experimental) Adapter that defines how the document processing workflow is triggered. Default: QueuedS3Adapter
3595
+ :param network: (experimental) Resources that can run inside a VPC will follow the provided network configuration. Default: resources will run outside of a VPC
3596
+ :param removal_policy: (experimental) Removal policy for created resources (bucket, table, queue). Default: RemovalPolicy.DESTROY
3597
+ :param workflow_timeout: (experimental) Maximum execution time for the Step Functions workflow. Default: Duration.minutes(30)
3598
+ :param log_group_data_protection: (experimental) Data protection related configuration. Default: a new KMS key would be generated
3599
+ :param metric_namespace: (experimental) Business metric namespace. Default: would be defined per use case
3600
+ :param metric_service_name: (experimental) Business metric service name dimension. Default: would be defined per use case
3601
+
3602
+ :stability: experimental
3603
+ '''
3604
+ if __debug__:
3605
+ type_hints = typing.get_type_hints(_typecheckingstub__3fe79d0c4a3a771012bc95cea6a690155ea89fa70073f87564e65aad5cdfdb64)
3606
+ check_type(argname="argument scope", value=scope, expected_type=type_hints["scope"])
3607
+ props = BaseDocumentProcessingProps(
3608
+ document_processing_table=document_processing_table,
3609
+ enable_observability=enable_observability,
3610
+ encryption_key=encryption_key,
3611
+ eventbridge_broker=eventbridge_broker,
3612
+ ingress_adapter=ingress_adapter,
3613
+ network=network,
3614
+ removal_policy=removal_policy,
3615
+ workflow_timeout=workflow_timeout,
3616
+ log_group_data_protection=log_group_data_protection,
3617
+ metric_namespace=metric_namespace,
3618
+ metric_service_name=metric_service_name,
3619
+ )
3620
+
3621
+ return typing.cast(None, jsii.invoke(self, "init", [scope, props]))
3622
+
3623
+
3624
+ @jsii.data_type(
3625
+ jsii_type="@cdklabs/cdk-appmod-catalog-blueprints.QueuedS3AdapterProps",
3626
+ jsii_struct_bases=[],
3627
+ name_mapping={
3628
+ "bucket": "bucket",
3629
+ "dlq_max_receive_count": "dlqMaxReceiveCount",
3630
+ "failed_prefix": "failedPrefix",
3631
+ "processed_prefix": "processedPrefix",
3632
+ "queue_visibility_timeout": "queueVisibilityTimeout",
3633
+ "raw_prefix": "rawPrefix",
3634
+ },
3635
+ )
3636
+ class QueuedS3AdapterProps:
3637
+ def __init__(
3638
+ self,
3639
+ *,
3640
+ bucket: typing.Optional[_aws_cdk_aws_s3_ceddda9d.Bucket] = None,
3641
+ dlq_max_receive_count: typing.Optional[jsii.Number] = None,
3642
+ failed_prefix: typing.Optional[builtins.str] = None,
3643
+ processed_prefix: typing.Optional[builtins.str] = None,
3644
+ queue_visibility_timeout: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
3645
+ raw_prefix: typing.Optional[builtins.str] = None,
3646
+ ) -> None:
3647
+ '''(experimental) Props for the Queued S3 Adapter.
3648
+
3649
+ :param bucket: (experimental) S3 bucket for document storage with organized prefixes (raw/, processed/, failed/). If not provided, a new bucket will be created with auto-delete enabled based on removalPolicy. Default: create a new bucket
3650
+ :param dlq_max_receive_count: (experimental) The number of times a message can be unsuccessfully dequeued before being moved to the dead-letter queue. Default: 5
3651
+ :param failed_prefix: (experimental) S3 prefix where the files that failed processing would be stored. Default: "failed/"
3652
+ :param processed_prefix: (experimental) S3 prefix where the processed files would be stored. Default: "processed/"
3653
+ :param queue_visibility_timeout: (experimental) SQS queue visibility timeout for processing messages. Should be longer than expected processing time to prevent duplicate processing. Default: Duration.seconds(300)
3654
+ :param raw_prefix: (experimental) S3 prefix where the raw files would be stored. This serves as the trigger point for processing Default: "raw/"
3655
+
3656
+ :stability: experimental
3657
+ '''
3658
+ if __debug__:
3659
+ type_hints = typing.get_type_hints(_typecheckingstub__c2db7ec0d4b3e93062e1f20f29f9821e5a0fd526ecf05f9ccaa6db663fb1e8de)
3660
+ check_type(argname="argument bucket", value=bucket, expected_type=type_hints["bucket"])
3661
+ check_type(argname="argument dlq_max_receive_count", value=dlq_max_receive_count, expected_type=type_hints["dlq_max_receive_count"])
3662
+ check_type(argname="argument failed_prefix", value=failed_prefix, expected_type=type_hints["failed_prefix"])
3663
+ check_type(argname="argument processed_prefix", value=processed_prefix, expected_type=type_hints["processed_prefix"])
3664
+ check_type(argname="argument queue_visibility_timeout", value=queue_visibility_timeout, expected_type=type_hints["queue_visibility_timeout"])
3665
+ check_type(argname="argument raw_prefix", value=raw_prefix, expected_type=type_hints["raw_prefix"])
3666
+ self._values: typing.Dict[builtins.str, typing.Any] = {}
3667
+ if bucket is not None:
3668
+ self._values["bucket"] = bucket
3669
+ if dlq_max_receive_count is not None:
3670
+ self._values["dlq_max_receive_count"] = dlq_max_receive_count
3671
+ if failed_prefix is not None:
3672
+ self._values["failed_prefix"] = failed_prefix
3673
+ if processed_prefix is not None:
3674
+ self._values["processed_prefix"] = processed_prefix
3675
+ if queue_visibility_timeout is not None:
3676
+ self._values["queue_visibility_timeout"] = queue_visibility_timeout
3677
+ if raw_prefix is not None:
3678
+ self._values["raw_prefix"] = raw_prefix
3679
+
3680
+ @builtins.property
3681
+ def bucket(self) -> typing.Optional[_aws_cdk_aws_s3_ceddda9d.Bucket]:
3682
+ '''(experimental) S3 bucket for document storage with organized prefixes (raw/, processed/, failed/).
3683
+
3684
+ If not provided, a new bucket will be created with auto-delete enabled based on removalPolicy.
3685
+
3686
+ :default: create a new bucket
3687
+
3688
+ :stability: experimental
3689
+ '''
3690
+ result = self._values.get("bucket")
3691
+ return typing.cast(typing.Optional[_aws_cdk_aws_s3_ceddda9d.Bucket], result)
3692
+
3693
+ @builtins.property
3694
+ def dlq_max_receive_count(self) -> typing.Optional[jsii.Number]:
3695
+ '''(experimental) The number of times a message can be unsuccessfully dequeued before being moved to the dead-letter queue.
3696
+
3697
+ :default: 5
3698
+
3699
+ :stability: experimental
3700
+ '''
3701
+ result = self._values.get("dlq_max_receive_count")
3702
+ return typing.cast(typing.Optional[jsii.Number], result)
3703
+
3704
+ @builtins.property
3705
+ def failed_prefix(self) -> typing.Optional[builtins.str]:
3706
+ '''(experimental) S3 prefix where the files that failed processing would be stored.
3707
+
3708
+ :default: "failed/"
3709
+
3710
+ :stability: experimental
3711
+ '''
3712
+ result = self._values.get("failed_prefix")
3713
+ return typing.cast(typing.Optional[builtins.str], result)
3714
+
3715
+ @builtins.property
3716
+ def processed_prefix(self) -> typing.Optional[builtins.str]:
3717
+ '''(experimental) S3 prefix where the processed files would be stored.
3718
+
3719
+ :default: "processed/"
3720
+
3721
+ :stability: experimental
3722
+ '''
3723
+ result = self._values.get("processed_prefix")
3724
+ return typing.cast(typing.Optional[builtins.str], result)
3725
+
3726
+ @builtins.property
3727
+ def queue_visibility_timeout(self) -> typing.Optional[_aws_cdk_ceddda9d.Duration]:
3728
+ '''(experimental) SQS queue visibility timeout for processing messages.
3729
+
3730
+ Should be longer than expected processing time to prevent duplicate processing.
3731
+
3732
+ :default: Duration.seconds(300)
3733
+
3734
+ :stability: experimental
3735
+ '''
3736
+ result = self._values.get("queue_visibility_timeout")
3737
+ return typing.cast(typing.Optional[_aws_cdk_ceddda9d.Duration], result)
3738
+
3739
+ @builtins.property
3740
+ def raw_prefix(self) -> typing.Optional[builtins.str]:
3741
+ '''(experimental) S3 prefix where the raw files would be stored.
3742
+
3743
+ This serves as the trigger point for processing
3744
+
3745
+ :default: "raw/"
3746
+
3747
+ :stability: experimental
3748
+ '''
3749
+ result = self._values.get("raw_prefix")
3750
+ return typing.cast(typing.Optional[builtins.str], result)
3751
+
3752
+ def __eq__(self, rhs: typing.Any) -> builtins.bool:
3753
+ return isinstance(rhs, self.__class__) and rhs._values == self._values
3754
+
3755
+ def __ne__(self, rhs: typing.Any) -> builtins.bool:
3756
+ return not (rhs == self)
3757
+
3758
+ def __repr__(self) -> str:
3759
+ return "QueuedS3AdapterProps(%s)" % ", ".join(
3760
+ k + "=" + repr(v) for k, v in self._values.items()
3761
+ )
3762
+
3763
+
3764
+ @jsii.implements(_aws_cdk_ceddda9d.IPropertyInjector)
3765
+ class StateMachineObservabilityPropertyInjector(
3766
+ metaclass=jsii.JSIIMeta,
3767
+ jsii_type="@cdklabs/cdk-appmod-catalog-blueprints.StateMachineObservabilityPropertyInjector",
3032
3768
  ):
3033
3769
  '''
3034
3770
  :stability: experimental
@@ -3136,14 +3872,12 @@ class BaseDocumentProcessing(
3136
3872
  scope: _constructs_77d1e7e8.Construct,
3137
3873
  id: builtins.str,
3138
3874
  *,
3139
- bucket: typing.Optional[_aws_cdk_aws_s3_ceddda9d.Bucket] = None,
3140
- dlq_max_receive_count: typing.Optional[jsii.Number] = None,
3141
3875
  document_processing_table: typing.Optional[_aws_cdk_aws_dynamodb_ceddda9d.Table] = None,
3142
3876
  enable_observability: typing.Optional[builtins.bool] = None,
3143
3877
  encryption_key: typing.Optional[_aws_cdk_aws_kms_ceddda9d.Key] = None,
3144
3878
  eventbridge_broker: typing.Optional[EventbridgeBroker] = None,
3879
+ ingress_adapter: typing.Optional[IAdapter] = None,
3145
3880
  network: typing.Optional[Network] = None,
3146
- queue_visibility_timeout: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
3147
3881
  removal_policy: typing.Optional[_aws_cdk_ceddda9d.RemovalPolicy] = None,
3148
3882
  workflow_timeout: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
3149
3883
  log_group_data_protection: typing.Optional[typing.Union[LogGroupDataProtectionProps, typing.Dict[builtins.str, typing.Any]]] = None,
@@ -3157,14 +3891,12 @@ class BaseDocumentProcessing(
3157
3891
 
3158
3892
  :param scope: - The scope in which to define this construct.
3159
3893
  :param id: - The scoped construct ID. Must be unique within the scope.
3160
- :param bucket: (experimental) S3 bucket for document storage with organized prefixes (raw/, processed/, failed/). If not provided, a new bucket will be created with auto-delete enabled based on removalPolicy.
3161
- :param dlq_max_receive_count: (experimental) The number of times a message can be unsuccessfully dequeued before being moved to the dead-letter queue. Default: 5
3162
3894
  :param document_processing_table: (experimental) DynamoDB table for storing document processing metadata and workflow state. If not provided, a new table will be created with DocumentId as partition key.
3163
3895
  :param enable_observability: (experimental) Enable logging and tracing for all supporting resource. Default: false
3164
3896
  :param encryption_key: (experimental) KMS key to be used. Default: A new key would be created
3165
3897
  :param eventbridge_broker: (experimental) Optional EventBridge broker for publishing custom events during processing. If not provided, no custom events will be sent out.
3898
+ :param ingress_adapter: (experimental) Adapter that defines how the document processing workflow is triggered. Default: QueuedS3Adapter
3166
3899
  :param network: (experimental) Resources that can run inside a VPC will follow the provided network configuration. Default: resources will run outside of a VPC
3167
- :param queue_visibility_timeout: (experimental) SQS queue visibility timeout for processing messages. Should be longer than expected processing time to prevent duplicate processing. Default: Duration.seconds(300)
3168
3900
  :param removal_policy: (experimental) Removal policy for created resources (bucket, table, queue). Default: RemovalPolicy.DESTROY
3169
3901
  :param workflow_timeout: (experimental) Maximum execution time for the Step Functions workflow. Default: Duration.minutes(30)
3170
3902
  :param log_group_data_protection: (experimental) Data protection related configuration. Default: a new KMS key would be generated
@@ -3178,14 +3910,12 @@ class BaseDocumentProcessing(
3178
3910
  check_type(argname="argument scope", value=scope, expected_type=type_hints["scope"])
3179
3911
  check_type(argname="argument id", value=id, expected_type=type_hints["id"])
3180
3912
  props = BaseDocumentProcessingProps(
3181
- bucket=bucket,
3182
- dlq_max_receive_count=dlq_max_receive_count,
3183
3913
  document_processing_table=document_processing_table,
3184
3914
  enable_observability=enable_observability,
3185
3915
  encryption_key=encryption_key,
3186
3916
  eventbridge_broker=eventbridge_broker,
3917
+ ingress_adapter=ingress_adapter,
3187
3918
  network=network,
3188
- queue_visibility_timeout=queue_visibility_timeout,
3189
3919
  removal_policy=removal_policy,
3190
3920
  workflow_timeout=workflow_timeout,
3191
3921
  log_group_data_protection=log_group_data_protection,
@@ -3242,21 +3972,6 @@ class BaseDocumentProcessing(
3242
3972
  check_type(argname="argument state_machine_id", value=state_machine_id, expected_type=type_hints["state_machine_id"])
3243
3973
  return typing.cast(_aws_cdk_aws_stepfunctions_ceddda9d.StateMachine, jsii.invoke(self, "handleStateMachineCreation", [state_machine_id]))
3244
3974
 
3245
- @jsii.member(jsii_name="handleWorkflowTrigger")
3246
- def _handle_workflow_trigger(
3247
- self,
3248
- state_machine: _aws_cdk_aws_stepfunctions_ceddda9d.StateMachine,
3249
- ) -> None:
3250
- '''
3251
- :param state_machine: -
3252
-
3253
- :stability: experimental
3254
- '''
3255
- if __debug__:
3256
- type_hints = typing.get_type_hints(_typecheckingstub__51565b317b75c58d9a9fb26bd3a0b7c471bf8844bfd0cc94dd43d1850d7ab957)
3257
- check_type(argname="argument state_machine", value=state_machine, expected_type=type_hints["state_machine"])
3258
- return typing.cast(None, jsii.invoke(self, "handleWorkflowTrigger", [state_machine]))
3259
-
3260
3975
  @jsii.member(jsii_name="metrics")
3261
3976
  def metrics(self) -> typing.List[_aws_cdk_aws_cloudwatch_ceddda9d.IMetric]:
3262
3977
  '''
@@ -3296,24 +4011,6 @@ class BaseDocumentProcessing(
3296
4011
  '''
3297
4012
  ...
3298
4013
 
3299
- @builtins.property
3300
- @jsii.member(jsii_name="bucket")
3301
- def bucket(self) -> _aws_cdk_aws_s3_ceddda9d.Bucket:
3302
- '''(experimental) S3 bucket for document storage with organized prefixes (raw/, processed/, failed/).
3303
-
3304
- :stability: experimental
3305
- '''
3306
- return typing.cast(_aws_cdk_aws_s3_ceddda9d.Bucket, jsii.get(self, "bucket"))
3307
-
3308
- @builtins.property
3309
- @jsii.member(jsii_name="deadLetterQueue")
3310
- def dead_letter_queue(self) -> _aws_cdk_aws_sqs_ceddda9d.Queue:
3311
- '''(experimental) Dead letter queue.
3312
-
3313
- :stability: experimental
3314
- '''
3315
- return typing.cast(_aws_cdk_aws_sqs_ceddda9d.Queue, jsii.get(self, "deadLetterQueue"))
3316
-
3317
4014
  @builtins.property
3318
4015
  @jsii.member(jsii_name="documentProcessingTable")
3319
4016
  def document_processing_table(self) -> _aws_cdk_aws_dynamodb_ceddda9d.Table:
@@ -3332,6 +4029,15 @@ class BaseDocumentProcessing(
3332
4029
  '''
3333
4030
  return typing.cast(_aws_cdk_aws_kms_ceddda9d.Key, jsii.get(self, "encryptionKey"))
3334
4031
 
4032
+ @builtins.property
4033
+ @jsii.member(jsii_name="ingressAdapter")
4034
+ def ingress_adapter(self) -> IAdapter:
4035
+ '''(experimental) Ingress adapter, responsible for triggering workflow.
4036
+
4037
+ :stability: experimental
4038
+ '''
4039
+ return typing.cast(IAdapter, jsii.get(self, "ingressAdapter"))
4040
+
3335
4041
  @builtins.property
3336
4042
  @jsii.member(jsii_name="logGroupDataProtection")
3337
4043
  def log_group_data_protection(self) -> LogGroupDataProtectionProps:
@@ -3361,24 +4067,6 @@ class BaseDocumentProcessing(
3361
4067
  '''
3362
4068
  return typing.cast(builtins.str, jsii.get(self, "metricServiceName"))
3363
4069
 
3364
- @builtins.property
3365
- @jsii.member(jsii_name="queue")
3366
- def queue(self) -> _aws_cdk_aws_sqs_ceddda9d.Queue:
3367
- '''(experimental) SQS queue for reliable message processing with dead letter queue support.
3368
-
3369
- :stability: experimental
3370
- '''
3371
- return typing.cast(_aws_cdk_aws_sqs_ceddda9d.Queue, jsii.get(self, "queue"))
3372
-
3373
- @builtins.property
3374
- @jsii.member(jsii_name="bucketEncryptionKey")
3375
- def bucket_encryption_key(self) -> typing.Optional[_aws_cdk_aws_kms_ceddda9d.IKey]:
3376
- '''(experimental) Encryption key used by the DocumentProcessingBucket.
3377
-
3378
- :stability: experimental
3379
- '''
3380
- return typing.cast(typing.Optional[_aws_cdk_aws_kms_ceddda9d.IKey], jsii.get(self, "bucketEncryptionKey"))
3381
-
3382
4070
 
3383
4071
  class _BaseDocumentProcessingProxy(BaseDocumentProcessing):
3384
4072
  @jsii.member(jsii_name="classificationStep")
@@ -3452,14 +4140,12 @@ typing.cast(typing.Any, BaseDocumentProcessing).__jsii_proxy_class__ = lambda :
3452
4140
  "log_group_data_protection": "logGroupDataProtection",
3453
4141
  "metric_namespace": "metricNamespace",
3454
4142
  "metric_service_name": "metricServiceName",
3455
- "bucket": "bucket",
3456
- "dlq_max_receive_count": "dlqMaxReceiveCount",
3457
4143
  "document_processing_table": "documentProcessingTable",
3458
4144
  "enable_observability": "enableObservability",
3459
4145
  "encryption_key": "encryptionKey",
3460
4146
  "eventbridge_broker": "eventbridgeBroker",
4147
+ "ingress_adapter": "ingressAdapter",
3461
4148
  "network": "network",
3462
- "queue_visibility_timeout": "queueVisibilityTimeout",
3463
4149
  "removal_policy": "removalPolicy",
3464
4150
  "workflow_timeout": "workflowTimeout",
3465
4151
  },
@@ -3471,14 +4157,12 @@ class BaseDocumentProcessingProps(ObservableProps):
3471
4157
  log_group_data_protection: typing.Optional[typing.Union[LogGroupDataProtectionProps, typing.Dict[builtins.str, typing.Any]]] = None,
3472
4158
  metric_namespace: typing.Optional[builtins.str] = None,
3473
4159
  metric_service_name: typing.Optional[builtins.str] = None,
3474
- bucket: typing.Optional[_aws_cdk_aws_s3_ceddda9d.Bucket] = None,
3475
- dlq_max_receive_count: typing.Optional[jsii.Number] = None,
3476
4160
  document_processing_table: typing.Optional[_aws_cdk_aws_dynamodb_ceddda9d.Table] = None,
3477
4161
  enable_observability: typing.Optional[builtins.bool] = None,
3478
4162
  encryption_key: typing.Optional[_aws_cdk_aws_kms_ceddda9d.Key] = None,
3479
4163
  eventbridge_broker: typing.Optional[EventbridgeBroker] = None,
4164
+ ingress_adapter: typing.Optional[IAdapter] = None,
3480
4165
  network: typing.Optional[Network] = None,
3481
- queue_visibility_timeout: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
3482
4166
  removal_policy: typing.Optional[_aws_cdk_ceddda9d.RemovalPolicy] = None,
3483
4167
  workflow_timeout: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
3484
4168
  ) -> None:
@@ -3487,14 +4171,12 @@ class BaseDocumentProcessingProps(ObservableProps):
3487
4171
  :param log_group_data_protection: (experimental) Data protection related configuration. Default: a new KMS key would be generated
3488
4172
  :param metric_namespace: (experimental) Business metric namespace. Default: would be defined per use case
3489
4173
  :param metric_service_name: (experimental) Business metric service name dimension. Default: would be defined per use case
3490
- :param bucket: (experimental) S3 bucket for document storage with organized prefixes (raw/, processed/, failed/). If not provided, a new bucket will be created with auto-delete enabled based on removalPolicy.
3491
- :param dlq_max_receive_count: (experimental) The number of times a message can be unsuccessfully dequeued before being moved to the dead-letter queue. Default: 5
3492
4174
  :param document_processing_table: (experimental) DynamoDB table for storing document processing metadata and workflow state. If not provided, a new table will be created with DocumentId as partition key.
3493
4175
  :param enable_observability: (experimental) Enable logging and tracing for all supporting resource. Default: false
3494
4176
  :param encryption_key: (experimental) KMS key to be used. Default: A new key would be created
3495
4177
  :param eventbridge_broker: (experimental) Optional EventBridge broker for publishing custom events during processing. If not provided, no custom events will be sent out.
4178
+ :param ingress_adapter: (experimental) Adapter that defines how the document processing workflow is triggered. Default: QueuedS3Adapter
3496
4179
  :param network: (experimental) Resources that can run inside a VPC will follow the provided network configuration. Default: resources will run outside of a VPC
3497
- :param queue_visibility_timeout: (experimental) SQS queue visibility timeout for processing messages. Should be longer than expected processing time to prevent duplicate processing. Default: Duration.seconds(300)
3498
4180
  :param removal_policy: (experimental) Removal policy for created resources (bucket, table, queue). Default: RemovalPolicy.DESTROY
3499
4181
  :param workflow_timeout: (experimental) Maximum execution time for the Step Functions workflow. Default: Duration.minutes(30)
3500
4182
 
@@ -3507,14 +4189,12 @@ class BaseDocumentProcessingProps(ObservableProps):
3507
4189
  check_type(argname="argument log_group_data_protection", value=log_group_data_protection, expected_type=type_hints["log_group_data_protection"])
3508
4190
  check_type(argname="argument metric_namespace", value=metric_namespace, expected_type=type_hints["metric_namespace"])
3509
4191
  check_type(argname="argument metric_service_name", value=metric_service_name, expected_type=type_hints["metric_service_name"])
3510
- check_type(argname="argument bucket", value=bucket, expected_type=type_hints["bucket"])
3511
- check_type(argname="argument dlq_max_receive_count", value=dlq_max_receive_count, expected_type=type_hints["dlq_max_receive_count"])
3512
4192
  check_type(argname="argument document_processing_table", value=document_processing_table, expected_type=type_hints["document_processing_table"])
3513
4193
  check_type(argname="argument enable_observability", value=enable_observability, expected_type=type_hints["enable_observability"])
3514
4194
  check_type(argname="argument encryption_key", value=encryption_key, expected_type=type_hints["encryption_key"])
3515
4195
  check_type(argname="argument eventbridge_broker", value=eventbridge_broker, expected_type=type_hints["eventbridge_broker"])
4196
+ check_type(argname="argument ingress_adapter", value=ingress_adapter, expected_type=type_hints["ingress_adapter"])
3516
4197
  check_type(argname="argument network", value=network, expected_type=type_hints["network"])
3517
- check_type(argname="argument queue_visibility_timeout", value=queue_visibility_timeout, expected_type=type_hints["queue_visibility_timeout"])
3518
4198
  check_type(argname="argument removal_policy", value=removal_policy, expected_type=type_hints["removal_policy"])
3519
4199
  check_type(argname="argument workflow_timeout", value=workflow_timeout, expected_type=type_hints["workflow_timeout"])
3520
4200
  self._values: typing.Dict[builtins.str, typing.Any] = {}
@@ -3524,10 +4204,6 @@ class BaseDocumentProcessingProps(ObservableProps):
3524
4204
  self._values["metric_namespace"] = metric_namespace
3525
4205
  if metric_service_name is not None:
3526
4206
  self._values["metric_service_name"] = metric_service_name
3527
- if bucket is not None:
3528
- self._values["bucket"] = bucket
3529
- if dlq_max_receive_count is not None:
3530
- self._values["dlq_max_receive_count"] = dlq_max_receive_count
3531
4207
  if document_processing_table is not None:
3532
4208
  self._values["document_processing_table"] = document_processing_table
3533
4209
  if enable_observability is not None:
@@ -3536,10 +4212,10 @@ class BaseDocumentProcessingProps(ObservableProps):
3536
4212
  self._values["encryption_key"] = encryption_key
3537
4213
  if eventbridge_broker is not None:
3538
4214
  self._values["eventbridge_broker"] = eventbridge_broker
4215
+ if ingress_adapter is not None:
4216
+ self._values["ingress_adapter"] = ingress_adapter
3539
4217
  if network is not None:
3540
4218
  self._values["network"] = network
3541
- if queue_visibility_timeout is not None:
3542
- self._values["queue_visibility_timeout"] = queue_visibility_timeout
3543
4219
  if removal_policy is not None:
3544
4220
  self._values["removal_policy"] = removal_policy
3545
4221
  if workflow_timeout is not None:
@@ -3578,28 +4254,6 @@ class BaseDocumentProcessingProps(ObservableProps):
3578
4254
  result = self._values.get("metric_service_name")
3579
4255
  return typing.cast(typing.Optional[builtins.str], result)
3580
4256
 
3581
- @builtins.property
3582
- def bucket(self) -> typing.Optional[_aws_cdk_aws_s3_ceddda9d.Bucket]:
3583
- '''(experimental) S3 bucket for document storage with organized prefixes (raw/, processed/, failed/).
3584
-
3585
- If not provided, a new bucket will be created with auto-delete enabled based on removalPolicy.
3586
-
3587
- :stability: experimental
3588
- '''
3589
- result = self._values.get("bucket")
3590
- return typing.cast(typing.Optional[_aws_cdk_aws_s3_ceddda9d.Bucket], result)
3591
-
3592
- @builtins.property
3593
- def dlq_max_receive_count(self) -> typing.Optional[jsii.Number]:
3594
- '''(experimental) The number of times a message can be unsuccessfully dequeued before being moved to the dead-letter queue.
3595
-
3596
- :default: 5
3597
-
3598
- :stability: experimental
3599
- '''
3600
- result = self._values.get("dlq_max_receive_count")
3601
- return typing.cast(typing.Optional[jsii.Number], result)
3602
-
3603
4257
  @builtins.property
3604
4258
  def document_processing_table(
3605
4259
  self,
@@ -3647,28 +4301,26 @@ class BaseDocumentProcessingProps(ObservableProps):
3647
4301
  return typing.cast(typing.Optional[EventbridgeBroker], result)
3648
4302
 
3649
4303
  @builtins.property
3650
- def network(self) -> typing.Optional[Network]:
3651
- '''(experimental) Resources that can run inside a VPC will follow the provided network configuration.
4304
+ def ingress_adapter(self) -> typing.Optional[IAdapter]:
4305
+ '''(experimental) Adapter that defines how the document processing workflow is triggered.
3652
4306
 
3653
- :default: resources will run outside of a VPC
4307
+ :default: QueuedS3Adapter
3654
4308
 
3655
4309
  :stability: experimental
3656
4310
  '''
3657
- result = self._values.get("network")
3658
- return typing.cast(typing.Optional[Network], result)
4311
+ result = self._values.get("ingress_adapter")
4312
+ return typing.cast(typing.Optional[IAdapter], result)
3659
4313
 
3660
4314
  @builtins.property
3661
- def queue_visibility_timeout(self) -> typing.Optional[_aws_cdk_ceddda9d.Duration]:
3662
- '''(experimental) SQS queue visibility timeout for processing messages.
3663
-
3664
- Should be longer than expected processing time to prevent duplicate processing.
4315
+ def network(self) -> typing.Optional[Network]:
4316
+ '''(experimental) Resources that can run inside a VPC will follow the provided network configuration.
3665
4317
 
3666
- :default: Duration.seconds(300)
4318
+ :default: resources will run outside of a VPC
3667
4319
 
3668
4320
  :stability: experimental
3669
4321
  '''
3670
- result = self._values.get("queue_visibility_timeout")
3671
- return typing.cast(typing.Optional[_aws_cdk_ceddda9d.Duration], result)
4322
+ result = self._values.get("network")
4323
+ return typing.cast(typing.Optional[Network], result)
3672
4324
 
3673
4325
  @builtins.property
3674
4326
  def removal_policy(self) -> typing.Optional[_aws_cdk_ceddda9d.RemovalPolicy]:
@@ -3770,14 +4422,12 @@ class BedrockDocumentProcessing(
3770
4422
  processing_prompt: typing.Optional[builtins.str] = None,
3771
4423
  step_timeouts: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
3772
4424
  use_cross_region_inference: typing.Optional[builtins.bool] = None,
3773
- bucket: typing.Optional[_aws_cdk_aws_s3_ceddda9d.Bucket] = None,
3774
- dlq_max_receive_count: typing.Optional[jsii.Number] = None,
3775
4425
  document_processing_table: typing.Optional[_aws_cdk_aws_dynamodb_ceddda9d.Table] = None,
3776
4426
  enable_observability: typing.Optional[builtins.bool] = None,
3777
4427
  encryption_key: typing.Optional[_aws_cdk_aws_kms_ceddda9d.Key] = None,
3778
4428
  eventbridge_broker: typing.Optional[EventbridgeBroker] = None,
4429
+ ingress_adapter: typing.Optional[IAdapter] = None,
3779
4430
  network: typing.Optional[Network] = None,
3780
- queue_visibility_timeout: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
3781
4431
  removal_policy: typing.Optional[_aws_cdk_ceddda9d.RemovalPolicy] = None,
3782
4432
  workflow_timeout: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
3783
4433
  log_group_data_protection: typing.Optional[typing.Union[LogGroupDataProtectionProps, typing.Dict[builtins.str, typing.Any]]] = None,
@@ -3801,14 +4451,12 @@ class BedrockDocumentProcessing(
3801
4451
  :param processing_prompt: (experimental) Custom prompt template for document extraction. Must include placeholder for document content and classification result. Default: DEFAULT_EXTRACTION_PROMPT
3802
4452
  :param step_timeouts: (experimental) Timeout for individual Step Functions tasks (classification, extraction, etc.). Default: Duration.minutes(5)
3803
4453
  :param use_cross_region_inference: (experimental) Enable cross-region inference for Bedrock models to improve availability and performance. When enabled, uses inference profiles instead of direct model invocation. Default: false
3804
- :param bucket: (experimental) S3 bucket for document storage with organized prefixes (raw/, processed/, failed/). If not provided, a new bucket will be created with auto-delete enabled based on removalPolicy.
3805
- :param dlq_max_receive_count: (experimental) The number of times a message can be unsuccessfully dequeued before being moved to the dead-letter queue. Default: 5
3806
4454
  :param document_processing_table: (experimental) DynamoDB table for storing document processing metadata and workflow state. If not provided, a new table will be created with DocumentId as partition key.
3807
4455
  :param enable_observability: (experimental) Enable logging and tracing for all supporting resource. Default: false
3808
4456
  :param encryption_key: (experimental) KMS key to be used. Default: A new key would be created
3809
4457
  :param eventbridge_broker: (experimental) Optional EventBridge broker for publishing custom events during processing. If not provided, no custom events will be sent out.
4458
+ :param ingress_adapter: (experimental) Adapter that defines how the document processing workflow is triggered. Default: QueuedS3Adapter
3810
4459
  :param network: (experimental) Resources that can run inside a VPC will follow the provided network configuration. Default: resources will run outside of a VPC
3811
- :param queue_visibility_timeout: (experimental) SQS queue visibility timeout for processing messages. Should be longer than expected processing time to prevent duplicate processing. Default: Duration.seconds(300)
3812
4460
  :param removal_policy: (experimental) Removal policy for created resources (bucket, table, queue). Default: RemovalPolicy.DESTROY
3813
4461
  :param workflow_timeout: (experimental) Maximum execution time for the Step Functions workflow. Default: Duration.minutes(30)
3814
4462
  :param log_group_data_protection: (experimental) Data protection related configuration. Default: a new KMS key would be generated
@@ -3831,14 +4479,12 @@ class BedrockDocumentProcessing(
3831
4479
  processing_prompt=processing_prompt,
3832
4480
  step_timeouts=step_timeouts,
3833
4481
  use_cross_region_inference=use_cross_region_inference,
3834
- bucket=bucket,
3835
- dlq_max_receive_count=dlq_max_receive_count,
3836
4482
  document_processing_table=document_processing_table,
3837
4483
  enable_observability=enable_observability,
3838
4484
  encryption_key=encryption_key,
3839
4485
  eventbridge_broker=eventbridge_broker,
4486
+ ingress_adapter=ingress_adapter,
3840
4487
  network=network,
3841
- queue_visibility_timeout=queue_visibility_timeout,
3842
4488
  removal_policy=removal_policy,
3843
4489
  workflow_timeout=workflow_timeout,
3844
4490
  log_group_data_protection=log_group_data_protection,
@@ -4001,14 +4647,12 @@ class BedrockDocumentProcessing(
4001
4647
  "log_group_data_protection": "logGroupDataProtection",
4002
4648
  "metric_namespace": "metricNamespace",
4003
4649
  "metric_service_name": "metricServiceName",
4004
- "bucket": "bucket",
4005
- "dlq_max_receive_count": "dlqMaxReceiveCount",
4006
4650
  "document_processing_table": "documentProcessingTable",
4007
4651
  "enable_observability": "enableObservability",
4008
4652
  "encryption_key": "encryptionKey",
4009
4653
  "eventbridge_broker": "eventbridgeBroker",
4654
+ "ingress_adapter": "ingressAdapter",
4010
4655
  "network": "network",
4011
- "queue_visibility_timeout": "queueVisibilityTimeout",
4012
4656
  "removal_policy": "removalPolicy",
4013
4657
  "workflow_timeout": "workflowTimeout",
4014
4658
  "classification_model_id": "classificationModelId",
@@ -4029,14 +4673,12 @@ class BedrockDocumentProcessingProps(BaseDocumentProcessingProps):
4029
4673
  log_group_data_protection: typing.Optional[typing.Union[LogGroupDataProtectionProps, typing.Dict[builtins.str, typing.Any]]] = None,
4030
4674
  metric_namespace: typing.Optional[builtins.str] = None,
4031
4675
  metric_service_name: typing.Optional[builtins.str] = None,
4032
- bucket: typing.Optional[_aws_cdk_aws_s3_ceddda9d.Bucket] = None,
4033
- dlq_max_receive_count: typing.Optional[jsii.Number] = None,
4034
4676
  document_processing_table: typing.Optional[_aws_cdk_aws_dynamodb_ceddda9d.Table] = None,
4035
4677
  enable_observability: typing.Optional[builtins.bool] = None,
4036
4678
  encryption_key: typing.Optional[_aws_cdk_aws_kms_ceddda9d.Key] = None,
4037
4679
  eventbridge_broker: typing.Optional[EventbridgeBroker] = None,
4680
+ ingress_adapter: typing.Optional[IAdapter] = None,
4038
4681
  network: typing.Optional[Network] = None,
4039
- queue_visibility_timeout: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
4040
4682
  removal_policy: typing.Optional[_aws_cdk_ceddda9d.RemovalPolicy] = None,
4041
4683
  workflow_timeout: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
4042
4684
  classification_model_id: typing.Optional[_aws_cdk_aws_bedrock_ceddda9d.FoundationModelIdentifier] = None,
@@ -4056,14 +4698,12 @@ class BedrockDocumentProcessingProps(BaseDocumentProcessingProps):
4056
4698
  :param log_group_data_protection: (experimental) Data protection related configuration. Default: a new KMS key would be generated
4057
4699
  :param metric_namespace: (experimental) Business metric namespace. Default: would be defined per use case
4058
4700
  :param metric_service_name: (experimental) Business metric service name dimension. Default: would be defined per use case
4059
- :param bucket: (experimental) S3 bucket for document storage with organized prefixes (raw/, processed/, failed/). If not provided, a new bucket will be created with auto-delete enabled based on removalPolicy.
4060
- :param dlq_max_receive_count: (experimental) The number of times a message can be unsuccessfully dequeued before being moved to the dead-letter queue. Default: 5
4061
4701
  :param document_processing_table: (experimental) DynamoDB table for storing document processing metadata and workflow state. If not provided, a new table will be created with DocumentId as partition key.
4062
4702
  :param enable_observability: (experimental) Enable logging and tracing for all supporting resource. Default: false
4063
4703
  :param encryption_key: (experimental) KMS key to be used. Default: A new key would be created
4064
4704
  :param eventbridge_broker: (experimental) Optional EventBridge broker for publishing custom events during processing. If not provided, no custom events will be sent out.
4705
+ :param ingress_adapter: (experimental) Adapter that defines how the document processing workflow is triggered. Default: QueuedS3Adapter
4065
4706
  :param network: (experimental) Resources that can run inside a VPC will follow the provided network configuration. Default: resources will run outside of a VPC
4066
- :param queue_visibility_timeout: (experimental) SQS queue visibility timeout for processing messages. Should be longer than expected processing time to prevent duplicate processing. Default: Duration.seconds(300)
4067
4707
  :param removal_policy: (experimental) Removal policy for created resources (bucket, table, queue). Default: RemovalPolicy.DESTROY
4068
4708
  :param workflow_timeout: (experimental) Maximum execution time for the Step Functions workflow. Default: Duration.minutes(30)
4069
4709
  :param classification_model_id: (experimental) Bedrock foundation model for document classification step. Default: FoundationModelIdentifier.ANTHROPIC_CLAUDE_3_7_SONNET_20250219_V1_0
@@ -4085,14 +4725,12 @@ class BedrockDocumentProcessingProps(BaseDocumentProcessingProps):
4085
4725
  check_type(argname="argument log_group_data_protection", value=log_group_data_protection, expected_type=type_hints["log_group_data_protection"])
4086
4726
  check_type(argname="argument metric_namespace", value=metric_namespace, expected_type=type_hints["metric_namespace"])
4087
4727
  check_type(argname="argument metric_service_name", value=metric_service_name, expected_type=type_hints["metric_service_name"])
4088
- check_type(argname="argument bucket", value=bucket, expected_type=type_hints["bucket"])
4089
- check_type(argname="argument dlq_max_receive_count", value=dlq_max_receive_count, expected_type=type_hints["dlq_max_receive_count"])
4090
4728
  check_type(argname="argument document_processing_table", value=document_processing_table, expected_type=type_hints["document_processing_table"])
4091
4729
  check_type(argname="argument enable_observability", value=enable_observability, expected_type=type_hints["enable_observability"])
4092
4730
  check_type(argname="argument encryption_key", value=encryption_key, expected_type=type_hints["encryption_key"])
4093
4731
  check_type(argname="argument eventbridge_broker", value=eventbridge_broker, expected_type=type_hints["eventbridge_broker"])
4732
+ check_type(argname="argument ingress_adapter", value=ingress_adapter, expected_type=type_hints["ingress_adapter"])
4094
4733
  check_type(argname="argument network", value=network, expected_type=type_hints["network"])
4095
- check_type(argname="argument queue_visibility_timeout", value=queue_visibility_timeout, expected_type=type_hints["queue_visibility_timeout"])
4096
4734
  check_type(argname="argument removal_policy", value=removal_policy, expected_type=type_hints["removal_policy"])
4097
4735
  check_type(argname="argument workflow_timeout", value=workflow_timeout, expected_type=type_hints["workflow_timeout"])
4098
4736
  check_type(argname="argument classification_model_id", value=classification_model_id, expected_type=type_hints["classification_model_id"])
@@ -4111,10 +4749,6 @@ class BedrockDocumentProcessingProps(BaseDocumentProcessingProps):
4111
4749
  self._values["metric_namespace"] = metric_namespace
4112
4750
  if metric_service_name is not None:
4113
4751
  self._values["metric_service_name"] = metric_service_name
4114
- if bucket is not None:
4115
- self._values["bucket"] = bucket
4116
- if dlq_max_receive_count is not None:
4117
- self._values["dlq_max_receive_count"] = dlq_max_receive_count
4118
4752
  if document_processing_table is not None:
4119
4753
  self._values["document_processing_table"] = document_processing_table
4120
4754
  if enable_observability is not None:
@@ -4123,10 +4757,10 @@ class BedrockDocumentProcessingProps(BaseDocumentProcessingProps):
4123
4757
  self._values["encryption_key"] = encryption_key
4124
4758
  if eventbridge_broker is not None:
4125
4759
  self._values["eventbridge_broker"] = eventbridge_broker
4760
+ if ingress_adapter is not None:
4761
+ self._values["ingress_adapter"] = ingress_adapter
4126
4762
  if network is not None:
4127
4763
  self._values["network"] = network
4128
- if queue_visibility_timeout is not None:
4129
- self._values["queue_visibility_timeout"] = queue_visibility_timeout
4130
4764
  if removal_policy is not None:
4131
4765
  self._values["removal_policy"] = removal_policy
4132
4766
  if workflow_timeout is not None:
@@ -4183,28 +4817,6 @@ class BedrockDocumentProcessingProps(BaseDocumentProcessingProps):
4183
4817
  result = self._values.get("metric_service_name")
4184
4818
  return typing.cast(typing.Optional[builtins.str], result)
4185
4819
 
4186
- @builtins.property
4187
- def bucket(self) -> typing.Optional[_aws_cdk_aws_s3_ceddda9d.Bucket]:
4188
- '''(experimental) S3 bucket for document storage with organized prefixes (raw/, processed/, failed/).
4189
-
4190
- If not provided, a new bucket will be created with auto-delete enabled based on removalPolicy.
4191
-
4192
- :stability: experimental
4193
- '''
4194
- result = self._values.get("bucket")
4195
- return typing.cast(typing.Optional[_aws_cdk_aws_s3_ceddda9d.Bucket], result)
4196
-
4197
- @builtins.property
4198
- def dlq_max_receive_count(self) -> typing.Optional[jsii.Number]:
4199
- '''(experimental) The number of times a message can be unsuccessfully dequeued before being moved to the dead-letter queue.
4200
-
4201
- :default: 5
4202
-
4203
- :stability: experimental
4204
- '''
4205
- result = self._values.get("dlq_max_receive_count")
4206
- return typing.cast(typing.Optional[jsii.Number], result)
4207
-
4208
4820
  @builtins.property
4209
4821
  def document_processing_table(
4210
4822
  self,
@@ -4252,28 +4864,26 @@ class BedrockDocumentProcessingProps(BaseDocumentProcessingProps):
4252
4864
  return typing.cast(typing.Optional[EventbridgeBroker], result)
4253
4865
 
4254
4866
  @builtins.property
4255
- def network(self) -> typing.Optional[Network]:
4256
- '''(experimental) Resources that can run inside a VPC will follow the provided network configuration.
4867
+ def ingress_adapter(self) -> typing.Optional[IAdapter]:
4868
+ '''(experimental) Adapter that defines how the document processing workflow is triggered.
4257
4869
 
4258
- :default: resources will run outside of a VPC
4870
+ :default: QueuedS3Adapter
4259
4871
 
4260
4872
  :stability: experimental
4261
4873
  '''
4262
- result = self._values.get("network")
4263
- return typing.cast(typing.Optional[Network], result)
4874
+ result = self._values.get("ingress_adapter")
4875
+ return typing.cast(typing.Optional[IAdapter], result)
4264
4876
 
4265
4877
  @builtins.property
4266
- def queue_visibility_timeout(self) -> typing.Optional[_aws_cdk_ceddda9d.Duration]:
4267
- '''(experimental) SQS queue visibility timeout for processing messages.
4268
-
4269
- Should be longer than expected processing time to prevent duplicate processing.
4878
+ def network(self) -> typing.Optional[Network]:
4879
+ '''(experimental) Resources that can run inside a VPC will follow the provided network configuration.
4270
4880
 
4271
- :default: Duration.seconds(300)
4881
+ :default: resources will run outside of a VPC
4272
4882
 
4273
4883
  :stability: experimental
4274
4884
  '''
4275
- result = self._values.get("queue_visibility_timeout")
4276
- return typing.cast(typing.Optional[_aws_cdk_ceddda9d.Duration], result)
4885
+ result = self._values.get("network")
4886
+ return typing.cast(typing.Optional[Network], result)
4277
4887
 
4278
4888
  @builtins.property
4279
4889
  def removal_policy(self) -> typing.Optional[_aws_cdk_ceddda9d.RemovalPolicy]:
@@ -4450,14 +5060,12 @@ class AgenticDocumentProcessing(
4450
5060
  processing_prompt: typing.Optional[builtins.str] = None,
4451
5061
  step_timeouts: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
4452
5062
  use_cross_region_inference: typing.Optional[builtins.bool] = None,
4453
- bucket: typing.Optional[_aws_cdk_aws_s3_ceddda9d.Bucket] = None,
4454
- dlq_max_receive_count: typing.Optional[jsii.Number] = None,
4455
5063
  document_processing_table: typing.Optional[_aws_cdk_aws_dynamodb_ceddda9d.Table] = None,
4456
5064
  enable_observability: typing.Optional[builtins.bool] = None,
4457
5065
  encryption_key: typing.Optional[_aws_cdk_aws_kms_ceddda9d.Key] = None,
4458
5066
  eventbridge_broker: typing.Optional[EventbridgeBroker] = None,
5067
+ ingress_adapter: typing.Optional[IAdapter] = None,
4459
5068
  network: typing.Optional[Network] = None,
4460
- queue_visibility_timeout: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
4461
5069
  removal_policy: typing.Optional[_aws_cdk_ceddda9d.RemovalPolicy] = None,
4462
5070
  workflow_timeout: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
4463
5071
  log_group_data_protection: typing.Optional[typing.Union[LogGroupDataProtectionProps, typing.Dict[builtins.str, typing.Any]]] = None,
@@ -4477,14 +5085,12 @@ class AgenticDocumentProcessing(
4477
5085
  :param processing_prompt: (experimental) Custom prompt template for document extraction. Must include placeholder for document content and classification result. Default: DEFAULT_EXTRACTION_PROMPT
4478
5086
  :param step_timeouts: (experimental) Timeout for individual Step Functions tasks (classification, extraction, etc.). Default: Duration.minutes(5)
4479
5087
  :param use_cross_region_inference: (experimental) Enable cross-region inference for Bedrock models to improve availability and performance. When enabled, uses inference profiles instead of direct model invocation. Default: false
4480
- :param bucket: (experimental) S3 bucket for document storage with organized prefixes (raw/, processed/, failed/). If not provided, a new bucket will be created with auto-delete enabled based on removalPolicy.
4481
- :param dlq_max_receive_count: (experimental) The number of times a message can be unsuccessfully dequeued before being moved to the dead-letter queue. Default: 5
4482
5088
  :param document_processing_table: (experimental) DynamoDB table for storing document processing metadata and workflow state. If not provided, a new table will be created with DocumentId as partition key.
4483
5089
  :param enable_observability: (experimental) Enable logging and tracing for all supporting resource. Default: false
4484
5090
  :param encryption_key: (experimental) KMS key to be used. Default: A new key would be created
4485
5091
  :param eventbridge_broker: (experimental) Optional EventBridge broker for publishing custom events during processing. If not provided, no custom events will be sent out.
5092
+ :param ingress_adapter: (experimental) Adapter that defines how the document processing workflow is triggered. Default: QueuedS3Adapter
4486
5093
  :param network: (experimental) Resources that can run inside a VPC will follow the provided network configuration. Default: resources will run outside of a VPC
4487
- :param queue_visibility_timeout: (experimental) SQS queue visibility timeout for processing messages. Should be longer than expected processing time to prevent duplicate processing. Default: Duration.seconds(300)
4488
5094
  :param removal_policy: (experimental) Removal policy for created resources (bucket, table, queue). Default: RemovalPolicy.DESTROY
4489
5095
  :param workflow_timeout: (experimental) Maximum execution time for the Step Functions workflow. Default: Duration.minutes(30)
4490
5096
  :param log_group_data_protection: (experimental) Data protection related configuration. Default: a new KMS key would be generated
@@ -4508,14 +5114,12 @@ class AgenticDocumentProcessing(
4508
5114
  processing_prompt=processing_prompt,
4509
5115
  step_timeouts=step_timeouts,
4510
5116
  use_cross_region_inference=use_cross_region_inference,
4511
- bucket=bucket,
4512
- dlq_max_receive_count=dlq_max_receive_count,
4513
5117
  document_processing_table=document_processing_table,
4514
5118
  enable_observability=enable_observability,
4515
5119
  encryption_key=encryption_key,
4516
5120
  eventbridge_broker=eventbridge_broker,
5121
+ ingress_adapter=ingress_adapter,
4517
5122
  network=network,
4518
- queue_visibility_timeout=queue_visibility_timeout,
4519
5123
  removal_policy=removal_policy,
4520
5124
  workflow_timeout=workflow_timeout,
4521
5125
  log_group_data_protection=log_group_data_protection,
@@ -4547,14 +5151,12 @@ class AgenticDocumentProcessing(
4547
5151
  "log_group_data_protection": "logGroupDataProtection",
4548
5152
  "metric_namespace": "metricNamespace",
4549
5153
  "metric_service_name": "metricServiceName",
4550
- "bucket": "bucket",
4551
- "dlq_max_receive_count": "dlqMaxReceiveCount",
4552
5154
  "document_processing_table": "documentProcessingTable",
4553
5155
  "enable_observability": "enableObservability",
4554
5156
  "encryption_key": "encryptionKey",
4555
5157
  "eventbridge_broker": "eventbridgeBroker",
5158
+ "ingress_adapter": "ingressAdapter",
4556
5159
  "network": "network",
4557
- "queue_visibility_timeout": "queueVisibilityTimeout",
4558
5160
  "removal_policy": "removalPolicy",
4559
5161
  "workflow_timeout": "workflowTimeout",
4560
5162
  "classification_model_id": "classificationModelId",
@@ -4576,14 +5178,12 @@ class AgenticDocumentProcessingProps(BedrockDocumentProcessingProps):
4576
5178
  log_group_data_protection: typing.Optional[typing.Union[LogGroupDataProtectionProps, typing.Dict[builtins.str, typing.Any]]] = None,
4577
5179
  metric_namespace: typing.Optional[builtins.str] = None,
4578
5180
  metric_service_name: typing.Optional[builtins.str] = None,
4579
- bucket: typing.Optional[_aws_cdk_aws_s3_ceddda9d.Bucket] = None,
4580
- dlq_max_receive_count: typing.Optional[jsii.Number] = None,
4581
5181
  document_processing_table: typing.Optional[_aws_cdk_aws_dynamodb_ceddda9d.Table] = None,
4582
5182
  enable_observability: typing.Optional[builtins.bool] = None,
4583
5183
  encryption_key: typing.Optional[_aws_cdk_aws_kms_ceddda9d.Key] = None,
4584
5184
  eventbridge_broker: typing.Optional[EventbridgeBroker] = None,
5185
+ ingress_adapter: typing.Optional[IAdapter] = None,
4585
5186
  network: typing.Optional[Network] = None,
4586
- queue_visibility_timeout: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
4587
5187
  removal_policy: typing.Optional[_aws_cdk_ceddda9d.RemovalPolicy] = None,
4588
5188
  workflow_timeout: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
4589
5189
  classification_model_id: typing.Optional[_aws_cdk_aws_bedrock_ceddda9d.FoundationModelIdentifier] = None,
@@ -4601,14 +5201,12 @@ class AgenticDocumentProcessingProps(BedrockDocumentProcessingProps):
4601
5201
  :param log_group_data_protection: (experimental) Data protection related configuration. Default: a new KMS key would be generated
4602
5202
  :param metric_namespace: (experimental) Business metric namespace. Default: would be defined per use case
4603
5203
  :param metric_service_name: (experimental) Business metric service name dimension. Default: would be defined per use case
4604
- :param bucket: (experimental) S3 bucket for document storage with organized prefixes (raw/, processed/, failed/). If not provided, a new bucket will be created with auto-delete enabled based on removalPolicy.
4605
- :param dlq_max_receive_count: (experimental) The number of times a message can be unsuccessfully dequeued before being moved to the dead-letter queue. Default: 5
4606
5204
  :param document_processing_table: (experimental) DynamoDB table for storing document processing metadata and workflow state. If not provided, a new table will be created with DocumentId as partition key.
4607
5205
  :param enable_observability: (experimental) Enable logging and tracing for all supporting resource. Default: false
4608
5206
  :param encryption_key: (experimental) KMS key to be used. Default: A new key would be created
4609
5207
  :param eventbridge_broker: (experimental) Optional EventBridge broker for publishing custom events during processing. If not provided, no custom events will be sent out.
5208
+ :param ingress_adapter: (experimental) Adapter that defines how the document processing workflow is triggered. Default: QueuedS3Adapter
4610
5209
  :param network: (experimental) Resources that can run inside a VPC will follow the provided network configuration. Default: resources will run outside of a VPC
4611
- :param queue_visibility_timeout: (experimental) SQS queue visibility timeout for processing messages. Should be longer than expected processing time to prevent duplicate processing. Default: Duration.seconds(300)
4612
5210
  :param removal_policy: (experimental) Removal policy for created resources (bucket, table, queue). Default: RemovalPolicy.DESTROY
4613
5211
  :param workflow_timeout: (experimental) Maximum execution time for the Step Functions workflow. Default: Duration.minutes(30)
4614
5212
  :param classification_model_id: (experimental) Bedrock foundation model for document classification step. Default: FoundationModelIdentifier.ANTHROPIC_CLAUDE_3_7_SONNET_20250219_V1_0
@@ -4633,14 +5231,12 @@ class AgenticDocumentProcessingProps(BedrockDocumentProcessingProps):
4633
5231
  check_type(argname="argument log_group_data_protection", value=log_group_data_protection, expected_type=type_hints["log_group_data_protection"])
4634
5232
  check_type(argname="argument metric_namespace", value=metric_namespace, expected_type=type_hints["metric_namespace"])
4635
5233
  check_type(argname="argument metric_service_name", value=metric_service_name, expected_type=type_hints["metric_service_name"])
4636
- check_type(argname="argument bucket", value=bucket, expected_type=type_hints["bucket"])
4637
- check_type(argname="argument dlq_max_receive_count", value=dlq_max_receive_count, expected_type=type_hints["dlq_max_receive_count"])
4638
5234
  check_type(argname="argument document_processing_table", value=document_processing_table, expected_type=type_hints["document_processing_table"])
4639
5235
  check_type(argname="argument enable_observability", value=enable_observability, expected_type=type_hints["enable_observability"])
4640
5236
  check_type(argname="argument encryption_key", value=encryption_key, expected_type=type_hints["encryption_key"])
4641
5237
  check_type(argname="argument eventbridge_broker", value=eventbridge_broker, expected_type=type_hints["eventbridge_broker"])
5238
+ check_type(argname="argument ingress_adapter", value=ingress_adapter, expected_type=type_hints["ingress_adapter"])
4642
5239
  check_type(argname="argument network", value=network, expected_type=type_hints["network"])
4643
- check_type(argname="argument queue_visibility_timeout", value=queue_visibility_timeout, expected_type=type_hints["queue_visibility_timeout"])
4644
5240
  check_type(argname="argument removal_policy", value=removal_policy, expected_type=type_hints["removal_policy"])
4645
5241
  check_type(argname="argument workflow_timeout", value=workflow_timeout, expected_type=type_hints["workflow_timeout"])
4646
5242
  check_type(argname="argument classification_model_id", value=classification_model_id, expected_type=type_hints["classification_model_id"])
@@ -4660,10 +5256,6 @@ class AgenticDocumentProcessingProps(BedrockDocumentProcessingProps):
4660
5256
  self._values["metric_namespace"] = metric_namespace
4661
5257
  if metric_service_name is not None:
4662
5258
  self._values["metric_service_name"] = metric_service_name
4663
- if bucket is not None:
4664
- self._values["bucket"] = bucket
4665
- if dlq_max_receive_count is not None:
4666
- self._values["dlq_max_receive_count"] = dlq_max_receive_count
4667
5259
  if document_processing_table is not None:
4668
5260
  self._values["document_processing_table"] = document_processing_table
4669
5261
  if enable_observability is not None:
@@ -4672,10 +5264,10 @@ class AgenticDocumentProcessingProps(BedrockDocumentProcessingProps):
4672
5264
  self._values["encryption_key"] = encryption_key
4673
5265
  if eventbridge_broker is not None:
4674
5266
  self._values["eventbridge_broker"] = eventbridge_broker
5267
+ if ingress_adapter is not None:
5268
+ self._values["ingress_adapter"] = ingress_adapter
4675
5269
  if network is not None:
4676
5270
  self._values["network"] = network
4677
- if queue_visibility_timeout is not None:
4678
- self._values["queue_visibility_timeout"] = queue_visibility_timeout
4679
5271
  if removal_policy is not None:
4680
5272
  self._values["removal_policy"] = removal_policy
4681
5273
  if workflow_timeout is not None:
@@ -4734,28 +5326,6 @@ class AgenticDocumentProcessingProps(BedrockDocumentProcessingProps):
4734
5326
  result = self._values.get("metric_service_name")
4735
5327
  return typing.cast(typing.Optional[builtins.str], result)
4736
5328
 
4737
- @builtins.property
4738
- def bucket(self) -> typing.Optional[_aws_cdk_aws_s3_ceddda9d.Bucket]:
4739
- '''(experimental) S3 bucket for document storage with organized prefixes (raw/, processed/, failed/).
4740
-
4741
- If not provided, a new bucket will be created with auto-delete enabled based on removalPolicy.
4742
-
4743
- :stability: experimental
4744
- '''
4745
- result = self._values.get("bucket")
4746
- return typing.cast(typing.Optional[_aws_cdk_aws_s3_ceddda9d.Bucket], result)
4747
-
4748
- @builtins.property
4749
- def dlq_max_receive_count(self) -> typing.Optional[jsii.Number]:
4750
- '''(experimental) The number of times a message can be unsuccessfully dequeued before being moved to the dead-letter queue.
4751
-
4752
- :default: 5
4753
-
4754
- :stability: experimental
4755
- '''
4756
- result = self._values.get("dlq_max_receive_count")
4757
- return typing.cast(typing.Optional[jsii.Number], result)
4758
-
4759
5329
  @builtins.property
4760
5330
  def document_processing_table(
4761
5331
  self,
@@ -4803,28 +5373,26 @@ class AgenticDocumentProcessingProps(BedrockDocumentProcessingProps):
4803
5373
  return typing.cast(typing.Optional[EventbridgeBroker], result)
4804
5374
 
4805
5375
  @builtins.property
4806
- def network(self) -> typing.Optional[Network]:
4807
- '''(experimental) Resources that can run inside a VPC will follow the provided network configuration.
5376
+ def ingress_adapter(self) -> typing.Optional[IAdapter]:
5377
+ '''(experimental) Adapter that defines how the document processing workflow is triggered.
4808
5378
 
4809
- :default: resources will run outside of a VPC
5379
+ :default: QueuedS3Adapter
4810
5380
 
4811
5381
  :stability: experimental
4812
5382
  '''
4813
- result = self._values.get("network")
4814
- return typing.cast(typing.Optional[Network], result)
5383
+ result = self._values.get("ingress_adapter")
5384
+ return typing.cast(typing.Optional[IAdapter], result)
4815
5385
 
4816
5386
  @builtins.property
4817
- def queue_visibility_timeout(self) -> typing.Optional[_aws_cdk_ceddda9d.Duration]:
4818
- '''(experimental) SQS queue visibility timeout for processing messages.
4819
-
4820
- Should be longer than expected processing time to prevent duplicate processing.
5387
+ def network(self) -> typing.Optional[Network]:
5388
+ '''(experimental) Resources that can run inside a VPC will follow the provided network configuration.
4821
5389
 
4822
- :default: Duration.seconds(300)
5390
+ :default: resources will run outside of a VPC
4823
5391
 
4824
5392
  :stability: experimental
4825
5393
  '''
4826
- result = self._values.get("queue_visibility_timeout")
4827
- return typing.cast(typing.Optional[_aws_cdk_ceddda9d.Duration], result)
5394
+ result = self._values.get("network")
5395
+ return typing.cast(typing.Optional[Network], result)
4828
5396
 
4829
5397
  @builtins.property
4830
5398
  def removal_policy(self) -> typing.Optional[_aws_cdk_ceddda9d.RemovalPolicy]:
@@ -5003,14 +5571,16 @@ __all__ = [
5003
5571
  "DataLoaderProps",
5004
5572
  "DatabaseConfig",
5005
5573
  "DatabaseEngine",
5574
+ "DefaultDocumentProcessingConfig",
5575
+ "DefaultObservabilityConfig",
5006
5576
  "DefaultRuntimes",
5007
- "DocumentProcessingPrefix",
5008
5577
  "EventbridgeBroker",
5009
5578
  "EventbridgeBrokerProps",
5010
5579
  "FileInput",
5011
5580
  "FileType",
5012
5581
  "Frontend",
5013
5582
  "FrontendProps",
5583
+ "IAdapter",
5014
5584
  "IObservable",
5015
5585
  "LambdaIamUtils",
5016
5586
  "LambdaIamUtilsStackInfo",
@@ -5022,6 +5592,8 @@ __all__ = [
5022
5592
  "NetworkProps",
5023
5593
  "ObservableProps",
5024
5594
  "PowertoolsConfig",
5595
+ "QueuedS3Adapter",
5596
+ "QueuedS3AdapterProps",
5025
5597
  "StateMachineObservabilityPropertyInjector",
5026
5598
  ]
5027
5599
 
@@ -5077,6 +5649,7 @@ def _typecheckingstub__e1a82500ee072f393cd9a2ada2f9a3434219c7a51186f26fbba3061bd
5077
5649
  *,
5078
5650
  agent_system_prompt: typing.Optional[builtins.str] = None,
5079
5651
  lambda_layers: typing.Optional[typing.Sequence[_aws_cdk_aws_lambda_ceddda9d.LayerVersion]] = None,
5652
+ tools_bucket: typing.Optional[_aws_cdk_aws_s3_ceddda9d.Bucket] = None,
5080
5653
  tools_location: typing.Optional[typing.Sequence[builtins.str]] = None,
5081
5654
  ) -> None:
5082
5655
  """Type checking stubs"""
@@ -5220,6 +5793,62 @@ def _typecheckingstub__2648a6f2c6f02177f5b324264b7de549aa23b0c1d93c8d6cccbc307a8
5220
5793
  """Type checking stubs"""
5221
5794
  pass
5222
5795
 
5796
+ def _typecheckingstub__5998f6c7e16512d92cd00097e77d737333304685208eb36a522c156f8378a9e7(
5797
+ scope: _constructs_77d1e7e8.Construct,
5798
+ ) -> None:
5799
+ """Type checking stubs"""
5800
+ pass
5801
+
5802
+ def _typecheckingstub__b61e74ddd8982f4b30ae59307c9fb3adaff26122ddc7f5faabc2cc8e1e2da034(
5803
+ scope: _constructs_77d1e7e8.Construct,
5804
+ state_machine: _aws_cdk_aws_stepfunctions_ceddda9d.StateMachine,
5805
+ *,
5806
+ document_processing_table: typing.Optional[_aws_cdk_aws_dynamodb_ceddda9d.Table] = None,
5807
+ enable_observability: typing.Optional[builtins.bool] = None,
5808
+ encryption_key: typing.Optional[_aws_cdk_aws_kms_ceddda9d.Key] = None,
5809
+ eventbridge_broker: typing.Optional[EventbridgeBroker] = None,
5810
+ ingress_adapter: typing.Optional[IAdapter] = None,
5811
+ network: typing.Optional[Network] = None,
5812
+ removal_policy: typing.Optional[_aws_cdk_ceddda9d.RemovalPolicy] = None,
5813
+ workflow_timeout: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
5814
+ log_group_data_protection: typing.Optional[typing.Union[LogGroupDataProtectionProps, typing.Dict[builtins.str, typing.Any]]] = None,
5815
+ metric_namespace: typing.Optional[builtins.str] = None,
5816
+ metric_service_name: typing.Optional[builtins.str] = None,
5817
+ ) -> None:
5818
+ """Type checking stubs"""
5819
+ pass
5820
+
5821
+ def _typecheckingstub__cd0aad7a5879633fca8d89cbf92e8f5a13e31615116036f29a82a58c1bb4727d(
5822
+ scope: _constructs_77d1e7e8.Construct,
5823
+ ) -> None:
5824
+ """Type checking stubs"""
5825
+ pass
5826
+
5827
+ def _typecheckingstub__82a45114a0ff76d4b9d091edd6674d4e762dc5ca19631d61579cf1aa47e30b5e(
5828
+ additional_iam_actions: typing.Optional[typing.Sequence[builtins.str]] = None,
5829
+ narrow_actions: typing.Optional[builtins.bool] = None,
5830
+ ) -> None:
5831
+ """Type checking stubs"""
5832
+ pass
5833
+
5834
+ def _typecheckingstub__17f7e7f35ea8e49cf6ded248435aa1e1dcf416e61c549f3e7b74baad3ac399e7(
5835
+ scope: _constructs_77d1e7e8.Construct,
5836
+ *,
5837
+ document_processing_table: typing.Optional[_aws_cdk_aws_dynamodb_ceddda9d.Table] = None,
5838
+ enable_observability: typing.Optional[builtins.bool] = None,
5839
+ encryption_key: typing.Optional[_aws_cdk_aws_kms_ceddda9d.Key] = None,
5840
+ eventbridge_broker: typing.Optional[EventbridgeBroker] = None,
5841
+ ingress_adapter: typing.Optional[IAdapter] = None,
5842
+ network: typing.Optional[Network] = None,
5843
+ removal_policy: typing.Optional[_aws_cdk_ceddda9d.RemovalPolicy] = None,
5844
+ workflow_timeout: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
5845
+ log_group_data_protection: typing.Optional[typing.Union[LogGroupDataProtectionProps, typing.Dict[builtins.str, typing.Any]]] = None,
5846
+ metric_namespace: typing.Optional[builtins.str] = None,
5847
+ metric_service_name: typing.Optional[builtins.str] = None,
5848
+ ) -> None:
5849
+ """Type checking stubs"""
5850
+ pass
5851
+
5223
5852
  def _typecheckingstub__8fea74c9846ad0c5bdddcbfe10063247cb7bcf58aac91e0be80d1226246784e4(
5224
5853
  table_arn: builtins.str,
5225
5854
  actions: typing.Optional[typing.Sequence[builtins.str]] = None,
@@ -5297,6 +5926,7 @@ def _typecheckingstub__47564dc2777638ca33ba53983ac385b2dd8b03133d66569da912ae1ce
5297
5926
  function_name: builtins.str,
5298
5927
  region: builtins.str,
5299
5928
  scope: _constructs_77d1e7e8.Construct,
5929
+ enable_observability: typing.Optional[builtins.bool] = None,
5300
5930
  log_group_name: typing.Optional[builtins.str] = None,
5301
5931
  ) -> None:
5302
5932
  """Type checking stubs"""
@@ -5382,6 +6012,74 @@ def _typecheckingstub__e065c545d4fce5c4fc2579c3efea8203f50b6d3c8b39aa1595ea3577d
5382
6012
  """Type checking stubs"""
5383
6013
  pass
5384
6014
 
6015
+ def _typecheckingstub__b95daf862a9819daa9b25cecfc08214dc429ef07ac6de3920b5dea59e01616eb(
6016
+ scope: _constructs_77d1e7e8.Construct,
6017
+ ) -> None:
6018
+ """Type checking stubs"""
6019
+ pass
6020
+
6021
+ def _typecheckingstub__fb0e9adf74054c1b0a1974cab45642af57cb1651ef8052310a0229dae1eac178(
6022
+ scope: _constructs_77d1e7e8.Construct,
6023
+ state_machine: _aws_cdk_aws_stepfunctions_ceddda9d.StateMachine,
6024
+ *,
6025
+ document_processing_table: typing.Optional[_aws_cdk_aws_dynamodb_ceddda9d.Table] = None,
6026
+ enable_observability: typing.Optional[builtins.bool] = None,
6027
+ encryption_key: typing.Optional[_aws_cdk_aws_kms_ceddda9d.Key] = None,
6028
+ eventbridge_broker: typing.Optional[EventbridgeBroker] = None,
6029
+ ingress_adapter: typing.Optional[IAdapter] = None,
6030
+ network: typing.Optional[Network] = None,
6031
+ removal_policy: typing.Optional[_aws_cdk_ceddda9d.RemovalPolicy] = None,
6032
+ workflow_timeout: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
6033
+ log_group_data_protection: typing.Optional[typing.Union[LogGroupDataProtectionProps, typing.Dict[builtins.str, typing.Any]]] = None,
6034
+ metric_namespace: typing.Optional[builtins.str] = None,
6035
+ metric_service_name: typing.Optional[builtins.str] = None,
6036
+ ) -> None:
6037
+ """Type checking stubs"""
6038
+ pass
6039
+
6040
+ def _typecheckingstub__76aa2fd577ace3b2507bf11a33f4d039ae5ac0af0d5d3edede30c4515a1a0986(
6041
+ scope: _constructs_77d1e7e8.Construct,
6042
+ ) -> None:
6043
+ """Type checking stubs"""
6044
+ pass
6045
+
6046
+ def _typecheckingstub__308867c51abfbbc08d0fba9125db9b86eddda969dc95de8546e6f8cb242ee8a9(
6047
+ additional_iam_actions: typing.Optional[typing.Sequence[builtins.str]] = None,
6048
+ narrow_actions: typing.Optional[builtins.bool] = None,
6049
+ ) -> None:
6050
+ """Type checking stubs"""
6051
+ pass
6052
+
6053
+ def _typecheckingstub__3fe79d0c4a3a771012bc95cea6a690155ea89fa70073f87564e65aad5cdfdb64(
6054
+ scope: _constructs_77d1e7e8.Construct,
6055
+ *,
6056
+ document_processing_table: typing.Optional[_aws_cdk_aws_dynamodb_ceddda9d.Table] = None,
6057
+ enable_observability: typing.Optional[builtins.bool] = None,
6058
+ encryption_key: typing.Optional[_aws_cdk_aws_kms_ceddda9d.Key] = None,
6059
+ eventbridge_broker: typing.Optional[EventbridgeBroker] = None,
6060
+ ingress_adapter: typing.Optional[IAdapter] = None,
6061
+ network: typing.Optional[Network] = None,
6062
+ removal_policy: typing.Optional[_aws_cdk_ceddda9d.RemovalPolicy] = None,
6063
+ workflow_timeout: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
6064
+ log_group_data_protection: typing.Optional[typing.Union[LogGroupDataProtectionProps, typing.Dict[builtins.str, typing.Any]]] = None,
6065
+ metric_namespace: typing.Optional[builtins.str] = None,
6066
+ metric_service_name: typing.Optional[builtins.str] = None,
6067
+ ) -> None:
6068
+ """Type checking stubs"""
6069
+ pass
6070
+
6071
+ def _typecheckingstub__c2db7ec0d4b3e93062e1f20f29f9821e5a0fd526ecf05f9ccaa6db663fb1e8de(
6072
+ *,
6073
+ bucket: typing.Optional[_aws_cdk_aws_s3_ceddda9d.Bucket] = None,
6074
+ dlq_max_receive_count: typing.Optional[jsii.Number] = None,
6075
+ failed_prefix: typing.Optional[builtins.str] = None,
6076
+ processed_prefix: typing.Optional[builtins.str] = None,
6077
+ queue_visibility_timeout: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
6078
+ raw_prefix: typing.Optional[builtins.str] = None,
6079
+ ) -> None:
6080
+ """Type checking stubs"""
6081
+ pass
6082
+
5385
6083
  def _typecheckingstub__011b55520774139b52c951d9cc59273f686e377b5415ee42a57650da571d43e7(
5386
6084
  original_props: typing.Any,
5387
6085
  *,
@@ -5395,14 +6093,12 @@ def _typecheckingstub__117c249a26f3e7532983afc9123fadff3e20effcc69408df0f45a03eb
5395
6093
  scope: _constructs_77d1e7e8.Construct,
5396
6094
  id: builtins.str,
5397
6095
  *,
5398
- bucket: typing.Optional[_aws_cdk_aws_s3_ceddda9d.Bucket] = None,
5399
- dlq_max_receive_count: typing.Optional[jsii.Number] = None,
5400
6096
  document_processing_table: typing.Optional[_aws_cdk_aws_dynamodb_ceddda9d.Table] = None,
5401
6097
  enable_observability: typing.Optional[builtins.bool] = None,
5402
6098
  encryption_key: typing.Optional[_aws_cdk_aws_kms_ceddda9d.Key] = None,
5403
6099
  eventbridge_broker: typing.Optional[EventbridgeBroker] = None,
6100
+ ingress_adapter: typing.Optional[IAdapter] = None,
5404
6101
  network: typing.Optional[Network] = None,
5405
- queue_visibility_timeout: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
5406
6102
  removal_policy: typing.Optional[_aws_cdk_ceddda9d.RemovalPolicy] = None,
5407
6103
  workflow_timeout: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
5408
6104
  log_group_data_protection: typing.Optional[typing.Union[LogGroupDataProtectionProps, typing.Dict[builtins.str, typing.Any]]] = None,
@@ -5418,25 +6114,17 @@ def _typecheckingstub__900aa9de379313a2a9a3e24a2901f803dec0a30dde90b7255d9f180e2
5418
6114
  """Type checking stubs"""
5419
6115
  pass
5420
6116
 
5421
- def _typecheckingstub__51565b317b75c58d9a9fb26bd3a0b7c471bf8844bfd0cc94dd43d1850d7ab957(
5422
- state_machine: _aws_cdk_aws_stepfunctions_ceddda9d.StateMachine,
5423
- ) -> None:
5424
- """Type checking stubs"""
5425
- pass
5426
-
5427
6117
  def _typecheckingstub__75e07bce24d48571be58cad69f751b10a17a738fdb9db601acdc689ff1e6da22(
5428
6118
  *,
5429
6119
  log_group_data_protection: typing.Optional[typing.Union[LogGroupDataProtectionProps, typing.Dict[builtins.str, typing.Any]]] = None,
5430
6120
  metric_namespace: typing.Optional[builtins.str] = None,
5431
6121
  metric_service_name: typing.Optional[builtins.str] = None,
5432
- bucket: typing.Optional[_aws_cdk_aws_s3_ceddda9d.Bucket] = None,
5433
- dlq_max_receive_count: typing.Optional[jsii.Number] = None,
5434
6122
  document_processing_table: typing.Optional[_aws_cdk_aws_dynamodb_ceddda9d.Table] = None,
5435
6123
  enable_observability: typing.Optional[builtins.bool] = None,
5436
6124
  encryption_key: typing.Optional[_aws_cdk_aws_kms_ceddda9d.Key] = None,
5437
6125
  eventbridge_broker: typing.Optional[EventbridgeBroker] = None,
6126
+ ingress_adapter: typing.Optional[IAdapter] = None,
5438
6127
  network: typing.Optional[Network] = None,
5439
- queue_visibility_timeout: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
5440
6128
  removal_policy: typing.Optional[_aws_cdk_ceddda9d.RemovalPolicy] = None,
5441
6129
  workflow_timeout: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
5442
6130
  ) -> None:
@@ -5456,14 +6144,12 @@ def _typecheckingstub__7393f9c6b2af93f7d8668b32cec54ba8c77259644ab01f57b3fbd50c7
5456
6144
  processing_prompt: typing.Optional[builtins.str] = None,
5457
6145
  step_timeouts: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
5458
6146
  use_cross_region_inference: typing.Optional[builtins.bool] = None,
5459
- bucket: typing.Optional[_aws_cdk_aws_s3_ceddda9d.Bucket] = None,
5460
- dlq_max_receive_count: typing.Optional[jsii.Number] = None,
5461
6147
  document_processing_table: typing.Optional[_aws_cdk_aws_dynamodb_ceddda9d.Table] = None,
5462
6148
  enable_observability: typing.Optional[builtins.bool] = None,
5463
6149
  encryption_key: typing.Optional[_aws_cdk_aws_kms_ceddda9d.Key] = None,
5464
6150
  eventbridge_broker: typing.Optional[EventbridgeBroker] = None,
6151
+ ingress_adapter: typing.Optional[IAdapter] = None,
5465
6152
  network: typing.Optional[Network] = None,
5466
- queue_visibility_timeout: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
5467
6153
  removal_policy: typing.Optional[_aws_cdk_ceddda9d.RemovalPolicy] = None,
5468
6154
  workflow_timeout: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
5469
6155
  log_group_data_protection: typing.Optional[typing.Union[LogGroupDataProtectionProps, typing.Dict[builtins.str, typing.Any]]] = None,
@@ -5485,14 +6171,12 @@ def _typecheckingstub__9606a6418d69bde20176ec33b27eaa22c0e0cdb6b105d382e9d038566
5485
6171
  log_group_data_protection: typing.Optional[typing.Union[LogGroupDataProtectionProps, typing.Dict[builtins.str, typing.Any]]] = None,
5486
6172
  metric_namespace: typing.Optional[builtins.str] = None,
5487
6173
  metric_service_name: typing.Optional[builtins.str] = None,
5488
- bucket: typing.Optional[_aws_cdk_aws_s3_ceddda9d.Bucket] = None,
5489
- dlq_max_receive_count: typing.Optional[jsii.Number] = None,
5490
6174
  document_processing_table: typing.Optional[_aws_cdk_aws_dynamodb_ceddda9d.Table] = None,
5491
6175
  enable_observability: typing.Optional[builtins.bool] = None,
5492
6176
  encryption_key: typing.Optional[_aws_cdk_aws_kms_ceddda9d.Key] = None,
5493
6177
  eventbridge_broker: typing.Optional[EventbridgeBroker] = None,
6178
+ ingress_adapter: typing.Optional[IAdapter] = None,
5494
6179
  network: typing.Optional[Network] = None,
5495
- queue_visibility_timeout: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
5496
6180
  removal_policy: typing.Optional[_aws_cdk_ceddda9d.RemovalPolicy] = None,
5497
6181
  workflow_timeout: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
5498
6182
  classification_model_id: typing.Optional[_aws_cdk_aws_bedrock_ceddda9d.FoundationModelIdentifier] = None,
@@ -5522,14 +6206,12 @@ def _typecheckingstub__b7f396236f637ec7234d81b355cf773497392b537455f3d888c4b7170
5522
6206
  processing_prompt: typing.Optional[builtins.str] = None,
5523
6207
  step_timeouts: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
5524
6208
  use_cross_region_inference: typing.Optional[builtins.bool] = None,
5525
- bucket: typing.Optional[_aws_cdk_aws_s3_ceddda9d.Bucket] = None,
5526
- dlq_max_receive_count: typing.Optional[jsii.Number] = None,
5527
6209
  document_processing_table: typing.Optional[_aws_cdk_aws_dynamodb_ceddda9d.Table] = None,
5528
6210
  enable_observability: typing.Optional[builtins.bool] = None,
5529
6211
  encryption_key: typing.Optional[_aws_cdk_aws_kms_ceddda9d.Key] = None,
5530
6212
  eventbridge_broker: typing.Optional[EventbridgeBroker] = None,
6213
+ ingress_adapter: typing.Optional[IAdapter] = None,
5531
6214
  network: typing.Optional[Network] = None,
5532
- queue_visibility_timeout: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
5533
6215
  removal_policy: typing.Optional[_aws_cdk_ceddda9d.RemovalPolicy] = None,
5534
6216
  workflow_timeout: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
5535
6217
  log_group_data_protection: typing.Optional[typing.Union[LogGroupDataProtectionProps, typing.Dict[builtins.str, typing.Any]]] = None,
@@ -5544,14 +6226,12 @@ def _typecheckingstub__da9ccab0035a06d18b5aa3f2de69201b3bbd6e30f7707a291977a0e4f
5544
6226
  log_group_data_protection: typing.Optional[typing.Union[LogGroupDataProtectionProps, typing.Dict[builtins.str, typing.Any]]] = None,
5545
6227
  metric_namespace: typing.Optional[builtins.str] = None,
5546
6228
  metric_service_name: typing.Optional[builtins.str] = None,
5547
- bucket: typing.Optional[_aws_cdk_aws_s3_ceddda9d.Bucket] = None,
5548
- dlq_max_receive_count: typing.Optional[jsii.Number] = None,
5549
6229
  document_processing_table: typing.Optional[_aws_cdk_aws_dynamodb_ceddda9d.Table] = None,
5550
6230
  enable_observability: typing.Optional[builtins.bool] = None,
5551
6231
  encryption_key: typing.Optional[_aws_cdk_aws_kms_ceddda9d.Key] = None,
5552
6232
  eventbridge_broker: typing.Optional[EventbridgeBroker] = None,
6233
+ ingress_adapter: typing.Optional[IAdapter] = None,
5553
6234
  network: typing.Optional[Network] = None,
5554
- queue_visibility_timeout: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
5555
6235
  removal_policy: typing.Optional[_aws_cdk_ceddda9d.RemovalPolicy] = None,
5556
6236
  workflow_timeout: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
5557
6237
  classification_model_id: typing.Optional[_aws_cdk_aws_bedrock_ceddda9d.FoundationModelIdentifier] = None,
@@ -5567,3 +6247,6 @@ def _typecheckingstub__da9ccab0035a06d18b5aa3f2de69201b3bbd6e30f7707a291977a0e4f
5567
6247
  ) -> None:
5568
6248
  """Type checking stubs"""
5569
6249
  pass
6250
+
6251
+ for cls in [IAdapter, IObservable]:
6252
+ typing.cast(typing.Any, cls).__protocol_attrs__ = typing.cast(typing.Any, cls).__protocol_attrs__ - set(['__jsii_proxy_class__', '__jsii_type__'])