appmod-catalog-blueprints 1.0.1__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,154 +1971,473 @@ 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,
2082
2443
  enable_observability: typing.Optional[builtins.bool] = None,
@@ -3056,40 +3417,384 @@ class PowertoolsConfig(
3056
3417
  return typing.cast(typing.Mapping[builtins.str, builtins.str], jsii.sinvoke(cls, "generateDefaultLambdaConfig", [enable_observability, metrics_namespace, service_name]))
3057
3418
 
3058
3419
 
3059
- @jsii.implements(_aws_cdk_ceddda9d.IPropertyInjector)
3060
- class StateMachineObservabilityPropertyInjector(
3420
+ @jsii.implements(IAdapter)
3421
+ class QueuedS3Adapter(
3061
3422
  metaclass=jsii.JSIIMeta,
3062
- jsii_type="@cdklabs/cdk-appmod-catalog-blueprints.StateMachineObservabilityPropertyInjector",
3423
+ jsii_type="@cdklabs/cdk-appmod-catalog-blueprints.QueuedS3Adapter",
3063
3424
  ):
3064
- '''
3425
+ '''(experimental) This adapter allows the intelligent document processing workflow to be triggered by files that are uploaded into a S3 Bucket.
3426
+
3065
3427
  :stability: experimental
3066
3428
  '''
3067
3429
 
3068
3430
  def __init__(
3069
3431
  self,
3070
3432
  *,
3071
- data_protection_identifiers: typing.Optional[typing.Sequence[_aws_cdk_aws_logs_ceddda9d.DataIdentifier]] = None,
3072
- log_group_encryption_key: typing.Optional[_aws_cdk_aws_kms_ceddda9d.Key] = None,
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,
3073
3439
  ) -> None:
3074
3440
  '''
3075
- :param data_protection_identifiers: (experimental) List of DataIdentifiers that would be used as part of the Data Protection Policy that would be created for the log group. Default: Data Protection Policy won't be enabled
3076
- :param log_group_encryption_key: (experimental) Encryption key that would be used to encrypt the relevant log group. Default: a new KMS key would automatically be created
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/"
3077
3447
 
3078
3448
  :stability: experimental
3079
3449
  '''
3080
- log_group_data_protection = LogGroupDataProtectionProps(
3081
- data_protection_identifiers=data_protection_identifiers,
3082
- log_group_encryption_key=log_group_encryption_key,
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,
3083
3457
  )
3084
3458
 
3085
- jsii.create(self.__class__, self, [log_group_data_protection])
3459
+ jsii.create(self.__class__, self, [adapter_props])
3086
3460
 
3087
- @jsii.member(jsii_name="inject")
3088
- def inject(
3461
+ @jsii.member(jsii_name="createFailedChain")
3462
+ def create_failed_chain(
3089
3463
  self,
3090
- original_props: typing.Any,
3091
- *,
3092
- id: builtins.str,
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",
3768
+ ):
3769
+ '''
3770
+ :stability: experimental
3771
+ '''
3772
+
3773
+ def __init__(
3774
+ self,
3775
+ *,
3776
+ data_protection_identifiers: typing.Optional[typing.Sequence[_aws_cdk_aws_logs_ceddda9d.DataIdentifier]] = None,
3777
+ log_group_encryption_key: typing.Optional[_aws_cdk_aws_kms_ceddda9d.Key] = None,
3778
+ ) -> None:
3779
+ '''
3780
+ :param data_protection_identifiers: (experimental) List of DataIdentifiers that would be used as part of the Data Protection Policy that would be created for the log group. Default: Data Protection Policy won't be enabled
3781
+ :param log_group_encryption_key: (experimental) Encryption key that would be used to encrypt the relevant log group. Default: a new KMS key would automatically be created
3782
+
3783
+ :stability: experimental
3784
+ '''
3785
+ log_group_data_protection = LogGroupDataProtectionProps(
3786
+ data_protection_identifiers=data_protection_identifiers,
3787
+ log_group_encryption_key=log_group_encryption_key,
3788
+ )
3789
+
3790
+ jsii.create(self.__class__, self, [log_group_data_protection])
3791
+
3792
+ @jsii.member(jsii_name="inject")
3793
+ def inject(
3794
+ self,
3795
+ original_props: typing.Any,
3796
+ *,
3797
+ id: builtins.str,
3093
3798
  scope: _constructs_77d1e7e8.Construct,
3094
3799
  ) -> typing.Any:
3095
3800
  '''(experimental) The injector to be applied to the constructor properties of the Construct.
@@ -3167,14 +3872,12 @@ class BaseDocumentProcessing(
3167
3872
  scope: _constructs_77d1e7e8.Construct,
3168
3873
  id: builtins.str,
3169
3874
  *,
3170
- bucket: typing.Optional[_aws_cdk_aws_s3_ceddda9d.Bucket] = None,
3171
- dlq_max_receive_count: typing.Optional[jsii.Number] = None,
3172
3875
  document_processing_table: typing.Optional[_aws_cdk_aws_dynamodb_ceddda9d.Table] = None,
3173
3876
  enable_observability: typing.Optional[builtins.bool] = None,
3174
3877
  encryption_key: typing.Optional[_aws_cdk_aws_kms_ceddda9d.Key] = None,
3175
3878
  eventbridge_broker: typing.Optional[EventbridgeBroker] = None,
3879
+ ingress_adapter: typing.Optional[IAdapter] = None,
3176
3880
  network: typing.Optional[Network] = None,
3177
- queue_visibility_timeout: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
3178
3881
  removal_policy: typing.Optional[_aws_cdk_ceddda9d.RemovalPolicy] = None,
3179
3882
  workflow_timeout: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
3180
3883
  log_group_data_protection: typing.Optional[typing.Union[LogGroupDataProtectionProps, typing.Dict[builtins.str, typing.Any]]] = None,
@@ -3188,14 +3891,12 @@ class BaseDocumentProcessing(
3188
3891
 
3189
3892
  :param scope: - The scope in which to define this construct.
3190
3893
  :param id: - The scoped construct ID. Must be unique within the scope.
3191
- :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.
3192
- :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
3193
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.
3194
3895
  :param enable_observability: (experimental) Enable logging and tracing for all supporting resource. Default: false
3195
3896
  :param encryption_key: (experimental) KMS key to be used. Default: A new key would be created
3196
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
3197
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
3198
- :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)
3199
3900
  :param removal_policy: (experimental) Removal policy for created resources (bucket, table, queue). Default: RemovalPolicy.DESTROY
3200
3901
  :param workflow_timeout: (experimental) Maximum execution time for the Step Functions workflow. Default: Duration.minutes(30)
3201
3902
  :param log_group_data_protection: (experimental) Data protection related configuration. Default: a new KMS key would be generated
@@ -3209,14 +3910,12 @@ class BaseDocumentProcessing(
3209
3910
  check_type(argname="argument scope", value=scope, expected_type=type_hints["scope"])
3210
3911
  check_type(argname="argument id", value=id, expected_type=type_hints["id"])
3211
3912
  props = BaseDocumentProcessingProps(
3212
- bucket=bucket,
3213
- dlq_max_receive_count=dlq_max_receive_count,
3214
3913
  document_processing_table=document_processing_table,
3215
3914
  enable_observability=enable_observability,
3216
3915
  encryption_key=encryption_key,
3217
3916
  eventbridge_broker=eventbridge_broker,
3917
+ ingress_adapter=ingress_adapter,
3218
3918
  network=network,
3219
- queue_visibility_timeout=queue_visibility_timeout,
3220
3919
  removal_policy=removal_policy,
3221
3920
  workflow_timeout=workflow_timeout,
3222
3921
  log_group_data_protection=log_group_data_protection,
@@ -3273,21 +3972,6 @@ class BaseDocumentProcessing(
3273
3972
  check_type(argname="argument state_machine_id", value=state_machine_id, expected_type=type_hints["state_machine_id"])
3274
3973
  return typing.cast(_aws_cdk_aws_stepfunctions_ceddda9d.StateMachine, jsii.invoke(self, "handleStateMachineCreation", [state_machine_id]))
3275
3974
 
3276
- @jsii.member(jsii_name="handleWorkflowTrigger")
3277
- def _handle_workflow_trigger(
3278
- self,
3279
- state_machine: _aws_cdk_aws_stepfunctions_ceddda9d.StateMachine,
3280
- ) -> None:
3281
- '''
3282
- :param state_machine: -
3283
-
3284
- :stability: experimental
3285
- '''
3286
- if __debug__:
3287
- type_hints = typing.get_type_hints(_typecheckingstub__51565b317b75c58d9a9fb26bd3a0b7c471bf8844bfd0cc94dd43d1850d7ab957)
3288
- check_type(argname="argument state_machine", value=state_machine, expected_type=type_hints["state_machine"])
3289
- return typing.cast(None, jsii.invoke(self, "handleWorkflowTrigger", [state_machine]))
3290
-
3291
3975
  @jsii.member(jsii_name="metrics")
3292
3976
  def metrics(self) -> typing.List[_aws_cdk_aws_cloudwatch_ceddda9d.IMetric]:
3293
3977
  '''
@@ -3327,24 +4011,6 @@ class BaseDocumentProcessing(
3327
4011
  '''
3328
4012
  ...
3329
4013
 
3330
- @builtins.property
3331
- @jsii.member(jsii_name="bucket")
3332
- def bucket(self) -> _aws_cdk_aws_s3_ceddda9d.Bucket:
3333
- '''(experimental) S3 bucket for document storage with organized prefixes (raw/, processed/, failed/).
3334
-
3335
- :stability: experimental
3336
- '''
3337
- return typing.cast(_aws_cdk_aws_s3_ceddda9d.Bucket, jsii.get(self, "bucket"))
3338
-
3339
- @builtins.property
3340
- @jsii.member(jsii_name="deadLetterQueue")
3341
- def dead_letter_queue(self) -> _aws_cdk_aws_sqs_ceddda9d.Queue:
3342
- '''(experimental) Dead letter queue.
3343
-
3344
- :stability: experimental
3345
- '''
3346
- return typing.cast(_aws_cdk_aws_sqs_ceddda9d.Queue, jsii.get(self, "deadLetterQueue"))
3347
-
3348
4014
  @builtins.property
3349
4015
  @jsii.member(jsii_name="documentProcessingTable")
3350
4016
  def document_processing_table(self) -> _aws_cdk_aws_dynamodb_ceddda9d.Table:
@@ -3363,6 +4029,15 @@ class BaseDocumentProcessing(
3363
4029
  '''
3364
4030
  return typing.cast(_aws_cdk_aws_kms_ceddda9d.Key, jsii.get(self, "encryptionKey"))
3365
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
+
3366
4041
  @builtins.property
3367
4042
  @jsii.member(jsii_name="logGroupDataProtection")
3368
4043
  def log_group_data_protection(self) -> LogGroupDataProtectionProps:
@@ -3392,24 +4067,6 @@ class BaseDocumentProcessing(
3392
4067
  '''
3393
4068
  return typing.cast(builtins.str, jsii.get(self, "metricServiceName"))
3394
4069
 
3395
- @builtins.property
3396
- @jsii.member(jsii_name="queue")
3397
- def queue(self) -> _aws_cdk_aws_sqs_ceddda9d.Queue:
3398
- '''(experimental) SQS queue for reliable message processing with dead letter queue support.
3399
-
3400
- :stability: experimental
3401
- '''
3402
- return typing.cast(_aws_cdk_aws_sqs_ceddda9d.Queue, jsii.get(self, "queue"))
3403
-
3404
- @builtins.property
3405
- @jsii.member(jsii_name="bucketEncryptionKey")
3406
- def bucket_encryption_key(self) -> typing.Optional[_aws_cdk_aws_kms_ceddda9d.IKey]:
3407
- '''(experimental) Encryption key used by the DocumentProcessingBucket.
3408
-
3409
- :stability: experimental
3410
- '''
3411
- return typing.cast(typing.Optional[_aws_cdk_aws_kms_ceddda9d.IKey], jsii.get(self, "bucketEncryptionKey"))
3412
-
3413
4070
 
3414
4071
  class _BaseDocumentProcessingProxy(BaseDocumentProcessing):
3415
4072
  @jsii.member(jsii_name="classificationStep")
@@ -3483,14 +4140,12 @@ typing.cast(typing.Any, BaseDocumentProcessing).__jsii_proxy_class__ = lambda :
3483
4140
  "log_group_data_protection": "logGroupDataProtection",
3484
4141
  "metric_namespace": "metricNamespace",
3485
4142
  "metric_service_name": "metricServiceName",
3486
- "bucket": "bucket",
3487
- "dlq_max_receive_count": "dlqMaxReceiveCount",
3488
4143
  "document_processing_table": "documentProcessingTable",
3489
4144
  "enable_observability": "enableObservability",
3490
4145
  "encryption_key": "encryptionKey",
3491
4146
  "eventbridge_broker": "eventbridgeBroker",
4147
+ "ingress_adapter": "ingressAdapter",
3492
4148
  "network": "network",
3493
- "queue_visibility_timeout": "queueVisibilityTimeout",
3494
4149
  "removal_policy": "removalPolicy",
3495
4150
  "workflow_timeout": "workflowTimeout",
3496
4151
  },
@@ -3502,14 +4157,12 @@ class BaseDocumentProcessingProps(ObservableProps):
3502
4157
  log_group_data_protection: typing.Optional[typing.Union[LogGroupDataProtectionProps, typing.Dict[builtins.str, typing.Any]]] = None,
3503
4158
  metric_namespace: typing.Optional[builtins.str] = None,
3504
4159
  metric_service_name: typing.Optional[builtins.str] = None,
3505
- bucket: typing.Optional[_aws_cdk_aws_s3_ceddda9d.Bucket] = None,
3506
- dlq_max_receive_count: typing.Optional[jsii.Number] = None,
3507
4160
  document_processing_table: typing.Optional[_aws_cdk_aws_dynamodb_ceddda9d.Table] = None,
3508
4161
  enable_observability: typing.Optional[builtins.bool] = None,
3509
4162
  encryption_key: typing.Optional[_aws_cdk_aws_kms_ceddda9d.Key] = None,
3510
4163
  eventbridge_broker: typing.Optional[EventbridgeBroker] = None,
4164
+ ingress_adapter: typing.Optional[IAdapter] = None,
3511
4165
  network: typing.Optional[Network] = None,
3512
- queue_visibility_timeout: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
3513
4166
  removal_policy: typing.Optional[_aws_cdk_ceddda9d.RemovalPolicy] = None,
3514
4167
  workflow_timeout: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
3515
4168
  ) -> None:
@@ -3518,14 +4171,12 @@ class BaseDocumentProcessingProps(ObservableProps):
3518
4171
  :param log_group_data_protection: (experimental) Data protection related configuration. Default: a new KMS key would be generated
3519
4172
  :param metric_namespace: (experimental) Business metric namespace. Default: would be defined per use case
3520
4173
  :param metric_service_name: (experimental) Business metric service name dimension. Default: would be defined per use case
3521
- :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.
3522
- :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
3523
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.
3524
4175
  :param enable_observability: (experimental) Enable logging and tracing for all supporting resource. Default: false
3525
4176
  :param encryption_key: (experimental) KMS key to be used. Default: A new key would be created
3526
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
3527
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
3528
- :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)
3529
4180
  :param removal_policy: (experimental) Removal policy for created resources (bucket, table, queue). Default: RemovalPolicy.DESTROY
3530
4181
  :param workflow_timeout: (experimental) Maximum execution time for the Step Functions workflow. Default: Duration.minutes(30)
3531
4182
 
@@ -3538,14 +4189,12 @@ class BaseDocumentProcessingProps(ObservableProps):
3538
4189
  check_type(argname="argument log_group_data_protection", value=log_group_data_protection, expected_type=type_hints["log_group_data_protection"])
3539
4190
  check_type(argname="argument metric_namespace", value=metric_namespace, expected_type=type_hints["metric_namespace"])
3540
4191
  check_type(argname="argument metric_service_name", value=metric_service_name, expected_type=type_hints["metric_service_name"])
3541
- check_type(argname="argument bucket", value=bucket, expected_type=type_hints["bucket"])
3542
- check_type(argname="argument dlq_max_receive_count", value=dlq_max_receive_count, expected_type=type_hints["dlq_max_receive_count"])
3543
4192
  check_type(argname="argument document_processing_table", value=document_processing_table, expected_type=type_hints["document_processing_table"])
3544
4193
  check_type(argname="argument enable_observability", value=enable_observability, expected_type=type_hints["enable_observability"])
3545
4194
  check_type(argname="argument encryption_key", value=encryption_key, expected_type=type_hints["encryption_key"])
3546
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"])
3547
4197
  check_type(argname="argument network", value=network, expected_type=type_hints["network"])
3548
- check_type(argname="argument queue_visibility_timeout", value=queue_visibility_timeout, expected_type=type_hints["queue_visibility_timeout"])
3549
4198
  check_type(argname="argument removal_policy", value=removal_policy, expected_type=type_hints["removal_policy"])
3550
4199
  check_type(argname="argument workflow_timeout", value=workflow_timeout, expected_type=type_hints["workflow_timeout"])
3551
4200
  self._values: typing.Dict[builtins.str, typing.Any] = {}
@@ -3555,10 +4204,6 @@ class BaseDocumentProcessingProps(ObservableProps):
3555
4204
  self._values["metric_namespace"] = metric_namespace
3556
4205
  if metric_service_name is not None:
3557
4206
  self._values["metric_service_name"] = metric_service_name
3558
- if bucket is not None:
3559
- self._values["bucket"] = bucket
3560
- if dlq_max_receive_count is not None:
3561
- self._values["dlq_max_receive_count"] = dlq_max_receive_count
3562
4207
  if document_processing_table is not None:
3563
4208
  self._values["document_processing_table"] = document_processing_table
3564
4209
  if enable_observability is not None:
@@ -3567,10 +4212,10 @@ class BaseDocumentProcessingProps(ObservableProps):
3567
4212
  self._values["encryption_key"] = encryption_key
3568
4213
  if eventbridge_broker is not None:
3569
4214
  self._values["eventbridge_broker"] = eventbridge_broker
4215
+ if ingress_adapter is not None:
4216
+ self._values["ingress_adapter"] = ingress_adapter
3570
4217
  if network is not None:
3571
4218
  self._values["network"] = network
3572
- if queue_visibility_timeout is not None:
3573
- self._values["queue_visibility_timeout"] = queue_visibility_timeout
3574
4219
  if removal_policy is not None:
3575
4220
  self._values["removal_policy"] = removal_policy
3576
4221
  if workflow_timeout is not None:
@@ -3609,28 +4254,6 @@ class BaseDocumentProcessingProps(ObservableProps):
3609
4254
  result = self._values.get("metric_service_name")
3610
4255
  return typing.cast(typing.Optional[builtins.str], result)
3611
4256
 
3612
- @builtins.property
3613
- def bucket(self) -> typing.Optional[_aws_cdk_aws_s3_ceddda9d.Bucket]:
3614
- '''(experimental) S3 bucket for document storage with organized prefixes (raw/, processed/, failed/).
3615
-
3616
- If not provided, a new bucket will be created with auto-delete enabled based on removalPolicy.
3617
-
3618
- :stability: experimental
3619
- '''
3620
- result = self._values.get("bucket")
3621
- return typing.cast(typing.Optional[_aws_cdk_aws_s3_ceddda9d.Bucket], result)
3622
-
3623
- @builtins.property
3624
- def dlq_max_receive_count(self) -> typing.Optional[jsii.Number]:
3625
- '''(experimental) The number of times a message can be unsuccessfully dequeued before being moved to the dead-letter queue.
3626
-
3627
- :default: 5
3628
-
3629
- :stability: experimental
3630
- '''
3631
- result = self._values.get("dlq_max_receive_count")
3632
- return typing.cast(typing.Optional[jsii.Number], result)
3633
-
3634
4257
  @builtins.property
3635
4258
  def document_processing_table(
3636
4259
  self,
@@ -3678,28 +4301,26 @@ class BaseDocumentProcessingProps(ObservableProps):
3678
4301
  return typing.cast(typing.Optional[EventbridgeBroker], result)
3679
4302
 
3680
4303
  @builtins.property
3681
- def network(self) -> typing.Optional[Network]:
3682
- '''(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.
3683
4306
 
3684
- :default: resources will run outside of a VPC
4307
+ :default: QueuedS3Adapter
3685
4308
 
3686
4309
  :stability: experimental
3687
4310
  '''
3688
- result = self._values.get("network")
3689
- return typing.cast(typing.Optional[Network], result)
4311
+ result = self._values.get("ingress_adapter")
4312
+ return typing.cast(typing.Optional[IAdapter], result)
3690
4313
 
3691
4314
  @builtins.property
3692
- def queue_visibility_timeout(self) -> typing.Optional[_aws_cdk_ceddda9d.Duration]:
3693
- '''(experimental) SQS queue visibility timeout for processing messages.
3694
-
3695
- 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.
3696
4317
 
3697
- :default: Duration.seconds(300)
4318
+ :default: resources will run outside of a VPC
3698
4319
 
3699
4320
  :stability: experimental
3700
4321
  '''
3701
- result = self._values.get("queue_visibility_timeout")
3702
- return typing.cast(typing.Optional[_aws_cdk_ceddda9d.Duration], result)
4322
+ result = self._values.get("network")
4323
+ return typing.cast(typing.Optional[Network], result)
3703
4324
 
3704
4325
  @builtins.property
3705
4326
  def removal_policy(self) -> typing.Optional[_aws_cdk_ceddda9d.RemovalPolicy]:
@@ -3801,14 +4422,12 @@ class BedrockDocumentProcessing(
3801
4422
  processing_prompt: typing.Optional[builtins.str] = None,
3802
4423
  step_timeouts: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
3803
4424
  use_cross_region_inference: typing.Optional[builtins.bool] = None,
3804
- bucket: typing.Optional[_aws_cdk_aws_s3_ceddda9d.Bucket] = None,
3805
- dlq_max_receive_count: typing.Optional[jsii.Number] = None,
3806
4425
  document_processing_table: typing.Optional[_aws_cdk_aws_dynamodb_ceddda9d.Table] = None,
3807
4426
  enable_observability: typing.Optional[builtins.bool] = None,
3808
4427
  encryption_key: typing.Optional[_aws_cdk_aws_kms_ceddda9d.Key] = None,
3809
4428
  eventbridge_broker: typing.Optional[EventbridgeBroker] = None,
4429
+ ingress_adapter: typing.Optional[IAdapter] = None,
3810
4430
  network: typing.Optional[Network] = None,
3811
- queue_visibility_timeout: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
3812
4431
  removal_policy: typing.Optional[_aws_cdk_ceddda9d.RemovalPolicy] = None,
3813
4432
  workflow_timeout: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
3814
4433
  log_group_data_protection: typing.Optional[typing.Union[LogGroupDataProtectionProps, typing.Dict[builtins.str, typing.Any]]] = None,
@@ -3832,14 +4451,12 @@ class BedrockDocumentProcessing(
3832
4451
  :param processing_prompt: (experimental) Custom prompt template for document extraction. Must include placeholder for document content and classification result. Default: DEFAULT_EXTRACTION_PROMPT
3833
4452
  :param step_timeouts: (experimental) Timeout for individual Step Functions tasks (classification, extraction, etc.). Default: Duration.minutes(5)
3834
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
3835
- :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.
3836
- :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
3837
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.
3838
4455
  :param enable_observability: (experimental) Enable logging and tracing for all supporting resource. Default: false
3839
4456
  :param encryption_key: (experimental) KMS key to be used. Default: A new key would be created
3840
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
3841
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
3842
- :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)
3843
4460
  :param removal_policy: (experimental) Removal policy for created resources (bucket, table, queue). Default: RemovalPolicy.DESTROY
3844
4461
  :param workflow_timeout: (experimental) Maximum execution time for the Step Functions workflow. Default: Duration.minutes(30)
3845
4462
  :param log_group_data_protection: (experimental) Data protection related configuration. Default: a new KMS key would be generated
@@ -3862,14 +4479,12 @@ class BedrockDocumentProcessing(
3862
4479
  processing_prompt=processing_prompt,
3863
4480
  step_timeouts=step_timeouts,
3864
4481
  use_cross_region_inference=use_cross_region_inference,
3865
- bucket=bucket,
3866
- dlq_max_receive_count=dlq_max_receive_count,
3867
4482
  document_processing_table=document_processing_table,
3868
4483
  enable_observability=enable_observability,
3869
4484
  encryption_key=encryption_key,
3870
4485
  eventbridge_broker=eventbridge_broker,
4486
+ ingress_adapter=ingress_adapter,
3871
4487
  network=network,
3872
- queue_visibility_timeout=queue_visibility_timeout,
3873
4488
  removal_policy=removal_policy,
3874
4489
  workflow_timeout=workflow_timeout,
3875
4490
  log_group_data_protection=log_group_data_protection,
@@ -4032,14 +4647,12 @@ class BedrockDocumentProcessing(
4032
4647
  "log_group_data_protection": "logGroupDataProtection",
4033
4648
  "metric_namespace": "metricNamespace",
4034
4649
  "metric_service_name": "metricServiceName",
4035
- "bucket": "bucket",
4036
- "dlq_max_receive_count": "dlqMaxReceiveCount",
4037
4650
  "document_processing_table": "documentProcessingTable",
4038
4651
  "enable_observability": "enableObservability",
4039
4652
  "encryption_key": "encryptionKey",
4040
4653
  "eventbridge_broker": "eventbridgeBroker",
4654
+ "ingress_adapter": "ingressAdapter",
4041
4655
  "network": "network",
4042
- "queue_visibility_timeout": "queueVisibilityTimeout",
4043
4656
  "removal_policy": "removalPolicy",
4044
4657
  "workflow_timeout": "workflowTimeout",
4045
4658
  "classification_model_id": "classificationModelId",
@@ -4060,14 +4673,12 @@ class BedrockDocumentProcessingProps(BaseDocumentProcessingProps):
4060
4673
  log_group_data_protection: typing.Optional[typing.Union[LogGroupDataProtectionProps, typing.Dict[builtins.str, typing.Any]]] = None,
4061
4674
  metric_namespace: typing.Optional[builtins.str] = None,
4062
4675
  metric_service_name: typing.Optional[builtins.str] = None,
4063
- bucket: typing.Optional[_aws_cdk_aws_s3_ceddda9d.Bucket] = None,
4064
- dlq_max_receive_count: typing.Optional[jsii.Number] = None,
4065
4676
  document_processing_table: typing.Optional[_aws_cdk_aws_dynamodb_ceddda9d.Table] = None,
4066
4677
  enable_observability: typing.Optional[builtins.bool] = None,
4067
4678
  encryption_key: typing.Optional[_aws_cdk_aws_kms_ceddda9d.Key] = None,
4068
4679
  eventbridge_broker: typing.Optional[EventbridgeBroker] = None,
4680
+ ingress_adapter: typing.Optional[IAdapter] = None,
4069
4681
  network: typing.Optional[Network] = None,
4070
- queue_visibility_timeout: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
4071
4682
  removal_policy: typing.Optional[_aws_cdk_ceddda9d.RemovalPolicy] = None,
4072
4683
  workflow_timeout: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
4073
4684
  classification_model_id: typing.Optional[_aws_cdk_aws_bedrock_ceddda9d.FoundationModelIdentifier] = None,
@@ -4087,14 +4698,12 @@ class BedrockDocumentProcessingProps(BaseDocumentProcessingProps):
4087
4698
  :param log_group_data_protection: (experimental) Data protection related configuration. Default: a new KMS key would be generated
4088
4699
  :param metric_namespace: (experimental) Business metric namespace. Default: would be defined per use case
4089
4700
  :param metric_service_name: (experimental) Business metric service name dimension. Default: would be defined per use case
4090
- :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.
4091
- :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
4092
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.
4093
4702
  :param enable_observability: (experimental) Enable logging and tracing for all supporting resource. Default: false
4094
4703
  :param encryption_key: (experimental) KMS key to be used. Default: A new key would be created
4095
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
4096
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
4097
- :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)
4098
4707
  :param removal_policy: (experimental) Removal policy for created resources (bucket, table, queue). Default: RemovalPolicy.DESTROY
4099
4708
  :param workflow_timeout: (experimental) Maximum execution time for the Step Functions workflow. Default: Duration.minutes(30)
4100
4709
  :param classification_model_id: (experimental) Bedrock foundation model for document classification step. Default: FoundationModelIdentifier.ANTHROPIC_CLAUDE_3_7_SONNET_20250219_V1_0
@@ -4116,14 +4725,12 @@ class BedrockDocumentProcessingProps(BaseDocumentProcessingProps):
4116
4725
  check_type(argname="argument log_group_data_protection", value=log_group_data_protection, expected_type=type_hints["log_group_data_protection"])
4117
4726
  check_type(argname="argument metric_namespace", value=metric_namespace, expected_type=type_hints["metric_namespace"])
4118
4727
  check_type(argname="argument metric_service_name", value=metric_service_name, expected_type=type_hints["metric_service_name"])
4119
- check_type(argname="argument bucket", value=bucket, expected_type=type_hints["bucket"])
4120
- check_type(argname="argument dlq_max_receive_count", value=dlq_max_receive_count, expected_type=type_hints["dlq_max_receive_count"])
4121
4728
  check_type(argname="argument document_processing_table", value=document_processing_table, expected_type=type_hints["document_processing_table"])
4122
4729
  check_type(argname="argument enable_observability", value=enable_observability, expected_type=type_hints["enable_observability"])
4123
4730
  check_type(argname="argument encryption_key", value=encryption_key, expected_type=type_hints["encryption_key"])
4124
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"])
4125
4733
  check_type(argname="argument network", value=network, expected_type=type_hints["network"])
4126
- check_type(argname="argument queue_visibility_timeout", value=queue_visibility_timeout, expected_type=type_hints["queue_visibility_timeout"])
4127
4734
  check_type(argname="argument removal_policy", value=removal_policy, expected_type=type_hints["removal_policy"])
4128
4735
  check_type(argname="argument workflow_timeout", value=workflow_timeout, expected_type=type_hints["workflow_timeout"])
4129
4736
  check_type(argname="argument classification_model_id", value=classification_model_id, expected_type=type_hints["classification_model_id"])
@@ -4142,10 +4749,6 @@ class BedrockDocumentProcessingProps(BaseDocumentProcessingProps):
4142
4749
  self._values["metric_namespace"] = metric_namespace
4143
4750
  if metric_service_name is not None:
4144
4751
  self._values["metric_service_name"] = metric_service_name
4145
- if bucket is not None:
4146
- self._values["bucket"] = bucket
4147
- if dlq_max_receive_count is not None:
4148
- self._values["dlq_max_receive_count"] = dlq_max_receive_count
4149
4752
  if document_processing_table is not None:
4150
4753
  self._values["document_processing_table"] = document_processing_table
4151
4754
  if enable_observability is not None:
@@ -4154,10 +4757,10 @@ class BedrockDocumentProcessingProps(BaseDocumentProcessingProps):
4154
4757
  self._values["encryption_key"] = encryption_key
4155
4758
  if eventbridge_broker is not None:
4156
4759
  self._values["eventbridge_broker"] = eventbridge_broker
4760
+ if ingress_adapter is not None:
4761
+ self._values["ingress_adapter"] = ingress_adapter
4157
4762
  if network is not None:
4158
4763
  self._values["network"] = network
4159
- if queue_visibility_timeout is not None:
4160
- self._values["queue_visibility_timeout"] = queue_visibility_timeout
4161
4764
  if removal_policy is not None:
4162
4765
  self._values["removal_policy"] = removal_policy
4163
4766
  if workflow_timeout is not None:
@@ -4214,28 +4817,6 @@ class BedrockDocumentProcessingProps(BaseDocumentProcessingProps):
4214
4817
  result = self._values.get("metric_service_name")
4215
4818
  return typing.cast(typing.Optional[builtins.str], result)
4216
4819
 
4217
- @builtins.property
4218
- def bucket(self) -> typing.Optional[_aws_cdk_aws_s3_ceddda9d.Bucket]:
4219
- '''(experimental) S3 bucket for document storage with organized prefixes (raw/, processed/, failed/).
4220
-
4221
- If not provided, a new bucket will be created with auto-delete enabled based on removalPolicy.
4222
-
4223
- :stability: experimental
4224
- '''
4225
- result = self._values.get("bucket")
4226
- return typing.cast(typing.Optional[_aws_cdk_aws_s3_ceddda9d.Bucket], result)
4227
-
4228
- @builtins.property
4229
- def dlq_max_receive_count(self) -> typing.Optional[jsii.Number]:
4230
- '''(experimental) The number of times a message can be unsuccessfully dequeued before being moved to the dead-letter queue.
4231
-
4232
- :default: 5
4233
-
4234
- :stability: experimental
4235
- '''
4236
- result = self._values.get("dlq_max_receive_count")
4237
- return typing.cast(typing.Optional[jsii.Number], result)
4238
-
4239
4820
  @builtins.property
4240
4821
  def document_processing_table(
4241
4822
  self,
@@ -4283,28 +4864,26 @@ class BedrockDocumentProcessingProps(BaseDocumentProcessingProps):
4283
4864
  return typing.cast(typing.Optional[EventbridgeBroker], result)
4284
4865
 
4285
4866
  @builtins.property
4286
- def network(self) -> typing.Optional[Network]:
4287
- '''(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.
4288
4869
 
4289
- :default: resources will run outside of a VPC
4870
+ :default: QueuedS3Adapter
4290
4871
 
4291
4872
  :stability: experimental
4292
4873
  '''
4293
- result = self._values.get("network")
4294
- return typing.cast(typing.Optional[Network], result)
4874
+ result = self._values.get("ingress_adapter")
4875
+ return typing.cast(typing.Optional[IAdapter], result)
4295
4876
 
4296
4877
  @builtins.property
4297
- def queue_visibility_timeout(self) -> typing.Optional[_aws_cdk_ceddda9d.Duration]:
4298
- '''(experimental) SQS queue visibility timeout for processing messages.
4299
-
4300
- 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.
4301
4880
 
4302
- :default: Duration.seconds(300)
4881
+ :default: resources will run outside of a VPC
4303
4882
 
4304
4883
  :stability: experimental
4305
4884
  '''
4306
- result = self._values.get("queue_visibility_timeout")
4307
- return typing.cast(typing.Optional[_aws_cdk_ceddda9d.Duration], result)
4885
+ result = self._values.get("network")
4886
+ return typing.cast(typing.Optional[Network], result)
4308
4887
 
4309
4888
  @builtins.property
4310
4889
  def removal_policy(self) -> typing.Optional[_aws_cdk_ceddda9d.RemovalPolicy]:
@@ -4481,14 +5060,12 @@ class AgenticDocumentProcessing(
4481
5060
  processing_prompt: typing.Optional[builtins.str] = None,
4482
5061
  step_timeouts: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
4483
5062
  use_cross_region_inference: typing.Optional[builtins.bool] = None,
4484
- bucket: typing.Optional[_aws_cdk_aws_s3_ceddda9d.Bucket] = None,
4485
- dlq_max_receive_count: typing.Optional[jsii.Number] = None,
4486
5063
  document_processing_table: typing.Optional[_aws_cdk_aws_dynamodb_ceddda9d.Table] = None,
4487
5064
  enable_observability: typing.Optional[builtins.bool] = None,
4488
5065
  encryption_key: typing.Optional[_aws_cdk_aws_kms_ceddda9d.Key] = None,
4489
5066
  eventbridge_broker: typing.Optional[EventbridgeBroker] = None,
5067
+ ingress_adapter: typing.Optional[IAdapter] = None,
4490
5068
  network: typing.Optional[Network] = None,
4491
- queue_visibility_timeout: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
4492
5069
  removal_policy: typing.Optional[_aws_cdk_ceddda9d.RemovalPolicy] = None,
4493
5070
  workflow_timeout: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
4494
5071
  log_group_data_protection: typing.Optional[typing.Union[LogGroupDataProtectionProps, typing.Dict[builtins.str, typing.Any]]] = None,
@@ -4508,14 +5085,12 @@ class AgenticDocumentProcessing(
4508
5085
  :param processing_prompt: (experimental) Custom prompt template for document extraction. Must include placeholder for document content and classification result. Default: DEFAULT_EXTRACTION_PROMPT
4509
5086
  :param step_timeouts: (experimental) Timeout for individual Step Functions tasks (classification, extraction, etc.). Default: Duration.minutes(5)
4510
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
4511
- :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.
4512
- :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
4513
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.
4514
5089
  :param enable_observability: (experimental) Enable logging and tracing for all supporting resource. Default: false
4515
5090
  :param encryption_key: (experimental) KMS key to be used. Default: A new key would be created
4516
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
4517
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
4518
- :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)
4519
5094
  :param removal_policy: (experimental) Removal policy for created resources (bucket, table, queue). Default: RemovalPolicy.DESTROY
4520
5095
  :param workflow_timeout: (experimental) Maximum execution time for the Step Functions workflow. Default: Duration.minutes(30)
4521
5096
  :param log_group_data_protection: (experimental) Data protection related configuration. Default: a new KMS key would be generated
@@ -4539,14 +5114,12 @@ class AgenticDocumentProcessing(
4539
5114
  processing_prompt=processing_prompt,
4540
5115
  step_timeouts=step_timeouts,
4541
5116
  use_cross_region_inference=use_cross_region_inference,
4542
- bucket=bucket,
4543
- dlq_max_receive_count=dlq_max_receive_count,
4544
5117
  document_processing_table=document_processing_table,
4545
5118
  enable_observability=enable_observability,
4546
5119
  encryption_key=encryption_key,
4547
5120
  eventbridge_broker=eventbridge_broker,
5121
+ ingress_adapter=ingress_adapter,
4548
5122
  network=network,
4549
- queue_visibility_timeout=queue_visibility_timeout,
4550
5123
  removal_policy=removal_policy,
4551
5124
  workflow_timeout=workflow_timeout,
4552
5125
  log_group_data_protection=log_group_data_protection,
@@ -4578,14 +5151,12 @@ class AgenticDocumentProcessing(
4578
5151
  "log_group_data_protection": "logGroupDataProtection",
4579
5152
  "metric_namespace": "metricNamespace",
4580
5153
  "metric_service_name": "metricServiceName",
4581
- "bucket": "bucket",
4582
- "dlq_max_receive_count": "dlqMaxReceiveCount",
4583
5154
  "document_processing_table": "documentProcessingTable",
4584
5155
  "enable_observability": "enableObservability",
4585
5156
  "encryption_key": "encryptionKey",
4586
5157
  "eventbridge_broker": "eventbridgeBroker",
5158
+ "ingress_adapter": "ingressAdapter",
4587
5159
  "network": "network",
4588
- "queue_visibility_timeout": "queueVisibilityTimeout",
4589
5160
  "removal_policy": "removalPolicy",
4590
5161
  "workflow_timeout": "workflowTimeout",
4591
5162
  "classification_model_id": "classificationModelId",
@@ -4607,14 +5178,12 @@ class AgenticDocumentProcessingProps(BedrockDocumentProcessingProps):
4607
5178
  log_group_data_protection: typing.Optional[typing.Union[LogGroupDataProtectionProps, typing.Dict[builtins.str, typing.Any]]] = None,
4608
5179
  metric_namespace: typing.Optional[builtins.str] = None,
4609
5180
  metric_service_name: typing.Optional[builtins.str] = None,
4610
- bucket: typing.Optional[_aws_cdk_aws_s3_ceddda9d.Bucket] = None,
4611
- dlq_max_receive_count: typing.Optional[jsii.Number] = None,
4612
5181
  document_processing_table: typing.Optional[_aws_cdk_aws_dynamodb_ceddda9d.Table] = None,
4613
5182
  enable_observability: typing.Optional[builtins.bool] = None,
4614
5183
  encryption_key: typing.Optional[_aws_cdk_aws_kms_ceddda9d.Key] = None,
4615
5184
  eventbridge_broker: typing.Optional[EventbridgeBroker] = None,
5185
+ ingress_adapter: typing.Optional[IAdapter] = None,
4616
5186
  network: typing.Optional[Network] = None,
4617
- queue_visibility_timeout: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
4618
5187
  removal_policy: typing.Optional[_aws_cdk_ceddda9d.RemovalPolicy] = None,
4619
5188
  workflow_timeout: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
4620
5189
  classification_model_id: typing.Optional[_aws_cdk_aws_bedrock_ceddda9d.FoundationModelIdentifier] = None,
@@ -4632,14 +5201,12 @@ class AgenticDocumentProcessingProps(BedrockDocumentProcessingProps):
4632
5201
  :param log_group_data_protection: (experimental) Data protection related configuration. Default: a new KMS key would be generated
4633
5202
  :param metric_namespace: (experimental) Business metric namespace. Default: would be defined per use case
4634
5203
  :param metric_service_name: (experimental) Business metric service name dimension. Default: would be defined per use case
4635
- :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.
4636
- :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
4637
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.
4638
5205
  :param enable_observability: (experimental) Enable logging and tracing for all supporting resource. Default: false
4639
5206
  :param encryption_key: (experimental) KMS key to be used. Default: A new key would be created
4640
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
4641
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
4642
- :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)
4643
5210
  :param removal_policy: (experimental) Removal policy for created resources (bucket, table, queue). Default: RemovalPolicy.DESTROY
4644
5211
  :param workflow_timeout: (experimental) Maximum execution time for the Step Functions workflow. Default: Duration.minutes(30)
4645
5212
  :param classification_model_id: (experimental) Bedrock foundation model for document classification step. Default: FoundationModelIdentifier.ANTHROPIC_CLAUDE_3_7_SONNET_20250219_V1_0
@@ -4664,14 +5231,12 @@ class AgenticDocumentProcessingProps(BedrockDocumentProcessingProps):
4664
5231
  check_type(argname="argument log_group_data_protection", value=log_group_data_protection, expected_type=type_hints["log_group_data_protection"])
4665
5232
  check_type(argname="argument metric_namespace", value=metric_namespace, expected_type=type_hints["metric_namespace"])
4666
5233
  check_type(argname="argument metric_service_name", value=metric_service_name, expected_type=type_hints["metric_service_name"])
4667
- check_type(argname="argument bucket", value=bucket, expected_type=type_hints["bucket"])
4668
- check_type(argname="argument dlq_max_receive_count", value=dlq_max_receive_count, expected_type=type_hints["dlq_max_receive_count"])
4669
5234
  check_type(argname="argument document_processing_table", value=document_processing_table, expected_type=type_hints["document_processing_table"])
4670
5235
  check_type(argname="argument enable_observability", value=enable_observability, expected_type=type_hints["enable_observability"])
4671
5236
  check_type(argname="argument encryption_key", value=encryption_key, expected_type=type_hints["encryption_key"])
4672
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"])
4673
5239
  check_type(argname="argument network", value=network, expected_type=type_hints["network"])
4674
- check_type(argname="argument queue_visibility_timeout", value=queue_visibility_timeout, expected_type=type_hints["queue_visibility_timeout"])
4675
5240
  check_type(argname="argument removal_policy", value=removal_policy, expected_type=type_hints["removal_policy"])
4676
5241
  check_type(argname="argument workflow_timeout", value=workflow_timeout, expected_type=type_hints["workflow_timeout"])
4677
5242
  check_type(argname="argument classification_model_id", value=classification_model_id, expected_type=type_hints["classification_model_id"])
@@ -4691,10 +5256,6 @@ class AgenticDocumentProcessingProps(BedrockDocumentProcessingProps):
4691
5256
  self._values["metric_namespace"] = metric_namespace
4692
5257
  if metric_service_name is not None:
4693
5258
  self._values["metric_service_name"] = metric_service_name
4694
- if bucket is not None:
4695
- self._values["bucket"] = bucket
4696
- if dlq_max_receive_count is not None:
4697
- self._values["dlq_max_receive_count"] = dlq_max_receive_count
4698
5259
  if document_processing_table is not None:
4699
5260
  self._values["document_processing_table"] = document_processing_table
4700
5261
  if enable_observability is not None:
@@ -4703,10 +5264,10 @@ class AgenticDocumentProcessingProps(BedrockDocumentProcessingProps):
4703
5264
  self._values["encryption_key"] = encryption_key
4704
5265
  if eventbridge_broker is not None:
4705
5266
  self._values["eventbridge_broker"] = eventbridge_broker
5267
+ if ingress_adapter is not None:
5268
+ self._values["ingress_adapter"] = ingress_adapter
4706
5269
  if network is not None:
4707
5270
  self._values["network"] = network
4708
- if queue_visibility_timeout is not None:
4709
- self._values["queue_visibility_timeout"] = queue_visibility_timeout
4710
5271
  if removal_policy is not None:
4711
5272
  self._values["removal_policy"] = removal_policy
4712
5273
  if workflow_timeout is not None:
@@ -4765,28 +5326,6 @@ class AgenticDocumentProcessingProps(BedrockDocumentProcessingProps):
4765
5326
  result = self._values.get("metric_service_name")
4766
5327
  return typing.cast(typing.Optional[builtins.str], result)
4767
5328
 
4768
- @builtins.property
4769
- def bucket(self) -> typing.Optional[_aws_cdk_aws_s3_ceddda9d.Bucket]:
4770
- '''(experimental) S3 bucket for document storage with organized prefixes (raw/, processed/, failed/).
4771
-
4772
- If not provided, a new bucket will be created with auto-delete enabled based on removalPolicy.
4773
-
4774
- :stability: experimental
4775
- '''
4776
- result = self._values.get("bucket")
4777
- return typing.cast(typing.Optional[_aws_cdk_aws_s3_ceddda9d.Bucket], result)
4778
-
4779
- @builtins.property
4780
- def dlq_max_receive_count(self) -> typing.Optional[jsii.Number]:
4781
- '''(experimental) The number of times a message can be unsuccessfully dequeued before being moved to the dead-letter queue.
4782
-
4783
- :default: 5
4784
-
4785
- :stability: experimental
4786
- '''
4787
- result = self._values.get("dlq_max_receive_count")
4788
- return typing.cast(typing.Optional[jsii.Number], result)
4789
-
4790
5329
  @builtins.property
4791
5330
  def document_processing_table(
4792
5331
  self,
@@ -4834,28 +5373,26 @@ class AgenticDocumentProcessingProps(BedrockDocumentProcessingProps):
4834
5373
  return typing.cast(typing.Optional[EventbridgeBroker], result)
4835
5374
 
4836
5375
  @builtins.property
4837
- def network(self) -> typing.Optional[Network]:
4838
- '''(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.
4839
5378
 
4840
- :default: resources will run outside of a VPC
5379
+ :default: QueuedS3Adapter
4841
5380
 
4842
5381
  :stability: experimental
4843
5382
  '''
4844
- result = self._values.get("network")
4845
- return typing.cast(typing.Optional[Network], result)
5383
+ result = self._values.get("ingress_adapter")
5384
+ return typing.cast(typing.Optional[IAdapter], result)
4846
5385
 
4847
5386
  @builtins.property
4848
- def queue_visibility_timeout(self) -> typing.Optional[_aws_cdk_ceddda9d.Duration]:
4849
- '''(experimental) SQS queue visibility timeout for processing messages.
4850
-
4851
- 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.
4852
5389
 
4853
- :default: Duration.seconds(300)
5390
+ :default: resources will run outside of a VPC
4854
5391
 
4855
5392
  :stability: experimental
4856
5393
  '''
4857
- result = self._values.get("queue_visibility_timeout")
4858
- return typing.cast(typing.Optional[_aws_cdk_ceddda9d.Duration], result)
5394
+ result = self._values.get("network")
5395
+ return typing.cast(typing.Optional[Network], result)
4859
5396
 
4860
5397
  @builtins.property
4861
5398
  def removal_policy(self) -> typing.Optional[_aws_cdk_ceddda9d.RemovalPolicy]:
@@ -5034,14 +5571,16 @@ __all__ = [
5034
5571
  "DataLoaderProps",
5035
5572
  "DatabaseConfig",
5036
5573
  "DatabaseEngine",
5574
+ "DefaultDocumentProcessingConfig",
5575
+ "DefaultObservabilityConfig",
5037
5576
  "DefaultRuntimes",
5038
- "DocumentProcessingPrefix",
5039
5577
  "EventbridgeBroker",
5040
5578
  "EventbridgeBrokerProps",
5041
5579
  "FileInput",
5042
5580
  "FileType",
5043
5581
  "Frontend",
5044
5582
  "FrontendProps",
5583
+ "IAdapter",
5045
5584
  "IObservable",
5046
5585
  "LambdaIamUtils",
5047
5586
  "LambdaIamUtilsStackInfo",
@@ -5053,6 +5592,8 @@ __all__ = [
5053
5592
  "NetworkProps",
5054
5593
  "ObservableProps",
5055
5594
  "PowertoolsConfig",
5595
+ "QueuedS3Adapter",
5596
+ "QueuedS3AdapterProps",
5056
5597
  "StateMachineObservabilityPropertyInjector",
5057
5598
  ]
5058
5599
 
@@ -5108,6 +5649,7 @@ def _typecheckingstub__e1a82500ee072f393cd9a2ada2f9a3434219c7a51186f26fbba3061bd
5108
5649
  *,
5109
5650
  agent_system_prompt: typing.Optional[builtins.str] = None,
5110
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,
5111
5653
  tools_location: typing.Optional[typing.Sequence[builtins.str]] = None,
5112
5654
  ) -> None:
5113
5655
  """Type checking stubs"""
@@ -5251,6 +5793,62 @@ def _typecheckingstub__2648a6f2c6f02177f5b324264b7de549aa23b0c1d93c8d6cccbc307a8
5251
5793
  """Type checking stubs"""
5252
5794
  pass
5253
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
+
5254
5852
  def _typecheckingstub__8fea74c9846ad0c5bdddcbfe10063247cb7bcf58aac91e0be80d1226246784e4(
5255
5853
  table_arn: builtins.str,
5256
5854
  actions: typing.Optional[typing.Sequence[builtins.str]] = None,
@@ -5414,6 +6012,74 @@ def _typecheckingstub__e065c545d4fce5c4fc2579c3efea8203f50b6d3c8b39aa1595ea3577d
5414
6012
  """Type checking stubs"""
5415
6013
  pass
5416
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
+
5417
6083
  def _typecheckingstub__011b55520774139b52c951d9cc59273f686e377b5415ee42a57650da571d43e7(
5418
6084
  original_props: typing.Any,
5419
6085
  *,
@@ -5427,14 +6093,12 @@ def _typecheckingstub__117c249a26f3e7532983afc9123fadff3e20effcc69408df0f45a03eb
5427
6093
  scope: _constructs_77d1e7e8.Construct,
5428
6094
  id: builtins.str,
5429
6095
  *,
5430
- bucket: typing.Optional[_aws_cdk_aws_s3_ceddda9d.Bucket] = None,
5431
- dlq_max_receive_count: typing.Optional[jsii.Number] = None,
5432
6096
  document_processing_table: typing.Optional[_aws_cdk_aws_dynamodb_ceddda9d.Table] = None,
5433
6097
  enable_observability: typing.Optional[builtins.bool] = None,
5434
6098
  encryption_key: typing.Optional[_aws_cdk_aws_kms_ceddda9d.Key] = None,
5435
6099
  eventbridge_broker: typing.Optional[EventbridgeBroker] = None,
6100
+ ingress_adapter: typing.Optional[IAdapter] = None,
5436
6101
  network: typing.Optional[Network] = None,
5437
- queue_visibility_timeout: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
5438
6102
  removal_policy: typing.Optional[_aws_cdk_ceddda9d.RemovalPolicy] = None,
5439
6103
  workflow_timeout: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
5440
6104
  log_group_data_protection: typing.Optional[typing.Union[LogGroupDataProtectionProps, typing.Dict[builtins.str, typing.Any]]] = None,
@@ -5450,25 +6114,17 @@ def _typecheckingstub__900aa9de379313a2a9a3e24a2901f803dec0a30dde90b7255d9f180e2
5450
6114
  """Type checking stubs"""
5451
6115
  pass
5452
6116
 
5453
- def _typecheckingstub__51565b317b75c58d9a9fb26bd3a0b7c471bf8844bfd0cc94dd43d1850d7ab957(
5454
- state_machine: _aws_cdk_aws_stepfunctions_ceddda9d.StateMachine,
5455
- ) -> None:
5456
- """Type checking stubs"""
5457
- pass
5458
-
5459
6117
  def _typecheckingstub__75e07bce24d48571be58cad69f751b10a17a738fdb9db601acdc689ff1e6da22(
5460
6118
  *,
5461
6119
  log_group_data_protection: typing.Optional[typing.Union[LogGroupDataProtectionProps, typing.Dict[builtins.str, typing.Any]]] = None,
5462
6120
  metric_namespace: typing.Optional[builtins.str] = None,
5463
6121
  metric_service_name: typing.Optional[builtins.str] = None,
5464
- bucket: typing.Optional[_aws_cdk_aws_s3_ceddda9d.Bucket] = None,
5465
- dlq_max_receive_count: typing.Optional[jsii.Number] = None,
5466
6122
  document_processing_table: typing.Optional[_aws_cdk_aws_dynamodb_ceddda9d.Table] = None,
5467
6123
  enable_observability: typing.Optional[builtins.bool] = None,
5468
6124
  encryption_key: typing.Optional[_aws_cdk_aws_kms_ceddda9d.Key] = None,
5469
6125
  eventbridge_broker: typing.Optional[EventbridgeBroker] = None,
6126
+ ingress_adapter: typing.Optional[IAdapter] = None,
5470
6127
  network: typing.Optional[Network] = None,
5471
- queue_visibility_timeout: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
5472
6128
  removal_policy: typing.Optional[_aws_cdk_ceddda9d.RemovalPolicy] = None,
5473
6129
  workflow_timeout: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
5474
6130
  ) -> None:
@@ -5488,14 +6144,12 @@ def _typecheckingstub__7393f9c6b2af93f7d8668b32cec54ba8c77259644ab01f57b3fbd50c7
5488
6144
  processing_prompt: typing.Optional[builtins.str] = None,
5489
6145
  step_timeouts: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
5490
6146
  use_cross_region_inference: typing.Optional[builtins.bool] = None,
5491
- bucket: typing.Optional[_aws_cdk_aws_s3_ceddda9d.Bucket] = None,
5492
- dlq_max_receive_count: typing.Optional[jsii.Number] = None,
5493
6147
  document_processing_table: typing.Optional[_aws_cdk_aws_dynamodb_ceddda9d.Table] = None,
5494
6148
  enable_observability: typing.Optional[builtins.bool] = None,
5495
6149
  encryption_key: typing.Optional[_aws_cdk_aws_kms_ceddda9d.Key] = None,
5496
6150
  eventbridge_broker: typing.Optional[EventbridgeBroker] = None,
6151
+ ingress_adapter: typing.Optional[IAdapter] = None,
5497
6152
  network: typing.Optional[Network] = None,
5498
- queue_visibility_timeout: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
5499
6153
  removal_policy: typing.Optional[_aws_cdk_ceddda9d.RemovalPolicy] = None,
5500
6154
  workflow_timeout: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
5501
6155
  log_group_data_protection: typing.Optional[typing.Union[LogGroupDataProtectionProps, typing.Dict[builtins.str, typing.Any]]] = None,
@@ -5517,14 +6171,12 @@ def _typecheckingstub__9606a6418d69bde20176ec33b27eaa22c0e0cdb6b105d382e9d038566
5517
6171
  log_group_data_protection: typing.Optional[typing.Union[LogGroupDataProtectionProps, typing.Dict[builtins.str, typing.Any]]] = None,
5518
6172
  metric_namespace: typing.Optional[builtins.str] = None,
5519
6173
  metric_service_name: typing.Optional[builtins.str] = None,
5520
- bucket: typing.Optional[_aws_cdk_aws_s3_ceddda9d.Bucket] = None,
5521
- dlq_max_receive_count: typing.Optional[jsii.Number] = None,
5522
6174
  document_processing_table: typing.Optional[_aws_cdk_aws_dynamodb_ceddda9d.Table] = None,
5523
6175
  enable_observability: typing.Optional[builtins.bool] = None,
5524
6176
  encryption_key: typing.Optional[_aws_cdk_aws_kms_ceddda9d.Key] = None,
5525
6177
  eventbridge_broker: typing.Optional[EventbridgeBroker] = None,
6178
+ ingress_adapter: typing.Optional[IAdapter] = None,
5526
6179
  network: typing.Optional[Network] = None,
5527
- queue_visibility_timeout: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
5528
6180
  removal_policy: typing.Optional[_aws_cdk_ceddda9d.RemovalPolicy] = None,
5529
6181
  workflow_timeout: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
5530
6182
  classification_model_id: typing.Optional[_aws_cdk_aws_bedrock_ceddda9d.FoundationModelIdentifier] = None,
@@ -5554,14 +6206,12 @@ def _typecheckingstub__b7f396236f637ec7234d81b355cf773497392b537455f3d888c4b7170
5554
6206
  processing_prompt: typing.Optional[builtins.str] = None,
5555
6207
  step_timeouts: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
5556
6208
  use_cross_region_inference: typing.Optional[builtins.bool] = None,
5557
- bucket: typing.Optional[_aws_cdk_aws_s3_ceddda9d.Bucket] = None,
5558
- dlq_max_receive_count: typing.Optional[jsii.Number] = None,
5559
6209
  document_processing_table: typing.Optional[_aws_cdk_aws_dynamodb_ceddda9d.Table] = None,
5560
6210
  enable_observability: typing.Optional[builtins.bool] = None,
5561
6211
  encryption_key: typing.Optional[_aws_cdk_aws_kms_ceddda9d.Key] = None,
5562
6212
  eventbridge_broker: typing.Optional[EventbridgeBroker] = None,
6213
+ ingress_adapter: typing.Optional[IAdapter] = None,
5563
6214
  network: typing.Optional[Network] = None,
5564
- queue_visibility_timeout: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
5565
6215
  removal_policy: typing.Optional[_aws_cdk_ceddda9d.RemovalPolicy] = None,
5566
6216
  workflow_timeout: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
5567
6217
  log_group_data_protection: typing.Optional[typing.Union[LogGroupDataProtectionProps, typing.Dict[builtins.str, typing.Any]]] = None,
@@ -5576,14 +6226,12 @@ def _typecheckingstub__da9ccab0035a06d18b5aa3f2de69201b3bbd6e30f7707a291977a0e4f
5576
6226
  log_group_data_protection: typing.Optional[typing.Union[LogGroupDataProtectionProps, typing.Dict[builtins.str, typing.Any]]] = None,
5577
6227
  metric_namespace: typing.Optional[builtins.str] = None,
5578
6228
  metric_service_name: typing.Optional[builtins.str] = None,
5579
- bucket: typing.Optional[_aws_cdk_aws_s3_ceddda9d.Bucket] = None,
5580
- dlq_max_receive_count: typing.Optional[jsii.Number] = None,
5581
6229
  document_processing_table: typing.Optional[_aws_cdk_aws_dynamodb_ceddda9d.Table] = None,
5582
6230
  enable_observability: typing.Optional[builtins.bool] = None,
5583
6231
  encryption_key: typing.Optional[_aws_cdk_aws_kms_ceddda9d.Key] = None,
5584
6232
  eventbridge_broker: typing.Optional[EventbridgeBroker] = None,
6233
+ ingress_adapter: typing.Optional[IAdapter] = None,
5585
6234
  network: typing.Optional[Network] = None,
5586
- queue_visibility_timeout: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
5587
6235
  removal_policy: typing.Optional[_aws_cdk_ceddda9d.RemovalPolicy] = None,
5588
6236
  workflow_timeout: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
5589
6237
  classification_model_id: typing.Optional[_aws_cdk_aws_bedrock_ceddda9d.FoundationModelIdentifier] = None,
@@ -5599,3 +6247,6 @@ def _typecheckingstub__da9ccab0035a06d18b5aa3f2de69201b3bbd6e30f7707a291977a0e4f
5599
6247
  ) -> None:
5600
6248
  """Type checking stubs"""
5601
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__'])