appmod-catalog-blueprints 1.0.1__py3-none-any.whl → 1.2.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.
@@ -1,226 +1,159 @@
1
1
  r'''
2
- # AppMod Use Case Blueprints
2
+ ---
3
3
 
4
- Serverless infrastructure components for modern application development. This catalog provides composable building blocks organized by business use cases, enabling rapid deployment of secure, scalable solutions.
5
4
 
6
- ## Quick Start
5
+ ## title: Introduction
7
6
 
8
- **Deploy a working example in 5 minutes:**
7
+ # AppMod Catalog Blueprints
9
8
 
10
- Clone the repository, build the project, then navigate to any example directory and deploy using CDK with your AWS profile and region.
9
+ Application Modernization (AppMod) Catalog Blueprints is a comprehensive library of production-ready, use case-driven infrastructure blueprints in the form of composable multi-layered building blocks built using [AWS Cloud Development Kit](https://aws.amazon.com/cdk/) (CDK) [L3 constructs](https://docs.aws.amazon.com/cdk/v2/guide/constructs.html). These blueprints offer use case-driven solutions with multiple implementation pathways and industry-specific implementations that are designed to accelerate serverless development and modernization on AWS.
11
10
 
12
- ## Core Use Cases
13
-
14
- ### 1. 📄 Document Processing
15
-
16
- Serverless document processing pipeline with AI-powered classification, extraction, and workflow orchestration.
17
-
18
- **Architecture:**
19
-
20
- ```
21
- S3 Upload → SQS → Step Functions → Bedrock Models → DynamoDB
22
- ↓ ↓ ↓ ↓ ↓
23
- [Storage] [Buffer] [Workflow] [AI Processing] [Results]
24
- ```
25
-
26
- **Key Features:**
27
-
28
- * **Event-Driven Pipeline**: S3 upload triggers SQS → Step Functions workflow
29
- * **AI-Powered Processing**: Amazon Bedrock for document classification and extraction
30
- * **Multi-format Support**: PDF, JPG, PNG document processing
31
- * **Flexible Workflows**: Base construct with extensible processing steps
32
- * **State Management**: DynamoDB for workflow state and document metadata
33
- * **Error Handling**: Dead letter queues and retry mechanisms with observability
34
-
35
- **Available Constructs:**
36
-
37
- **BaseDocumentProcessing** - Foundation construct providing:
38
-
39
- * S3 bucket with organized prefixes (raw/, processed/, failed/)
40
- * SQS queue with configurable visibility timeout and DLQ
41
- * DynamoDB table for document metadata and workflow state
42
- * Step Functions workflow with customizable processing steps
43
- * Built-in observability and monitoring
44
-
45
- **BedrockDocumentProcessing** - AI-powered document analysis:
46
-
47
- * Document classification using Claude 3.5 Sonnet
48
- * Entity extraction and content analysis
49
- * Configurable prompts for classification and extraction
50
- * Optional enrichment Lambda function integration
51
- * Automatic workflow state management
52
-
53
- **AgenticDocumentProcessing** - Multi-agent document workflows:
54
-
55
- * Advanced multi-step processing with agent coordination
56
- * Complex document understanding and analysis
57
- * Configurable agent behaviors and processing flows
11
+ Built with [JSII](https://aws.github.io/jsii/), these constructs are available in TypeScript, Python, Java, and .NET, enabling teams to use their preferred programming language while leveraging the same proven infrastructure patterns.
58
12
 
59
- ### 2. 🌐 Frontend Web Applications
13
+ Get started by exploring the [use case constructs](use-cases) and deployable [examples](examples). Learn more from [documentation](https://cdklabs.github.io/cdk-appmod-catalog-blueprints/) and [Construct Hub](https://constructs.dev/packages/@cdklabs/cdk-appmod-catalog-blueprints).
60
14
 
61
- Static web application hosting with CloudFront distribution and security best practices.
62
-
63
- **Architecture:**
15
+ ## Core Use Cases
64
16
 
65
- ```
66
- CloudFront → S3 Static Website → Security Headers
67
- ↓ ↓ ↓
68
- [Global CDN] [Static Assets] [Security Functions]
69
- ```
17
+ | Use Case | Description | Quick Deploy Examples |
18
+ |----------|-------------|----------------------|
19
+ | **[Document Processing](./use-cases/document-processing/)** | AI-powered document processing workflows with classification, extraction, and agentic capabilities | • [Bedrock Document Processing](./examples/document-processing/bedrock-document-processing/)<br/>• [Agentic Document Processing](./examples/document-processing/agentic-document-processing/)<br/>• [Full-Stack Insurance Claims Processing Web Application](./examples/document-processing/doc-processing-fullstack-webapp/) |
20
+ | **[Web Application](./use-cases/webapp/)** | Static web application hosting with global CDN, security headers, and SPA support | • [Full-Stack Insurance Claims Processing Web Application](./examples/document-processing/doc-processing-fullstack-webapp/) |
70
21
 
71
- **Key Features:**
22
+ ## Foundation and Utilities
72
23
 
73
- * **Global Distribution**: CloudFront CDN for low-latency content delivery
74
- * **Security Headers**: Automatic injection of security headers via CloudFront functions
75
- * **SSL/TLS**: Automatic HTTPS with AWS Certificate Manager
76
- * **Custom Domains**: Support for custom domain names with Route 53 integration
77
- * **Error Pages**: Custom 404/403 error page handling
78
- * **Access Logging**: CloudFront access logs for analytics
24
+ | Component | Description |
25
+ |-----------|-------------|
26
+ | **[Observability & Monitoring](./use-cases/utilities/observability/)** | Comprehensive monitoring, logging, and alerting with automatic property injection and Lambda Powertools integration |
27
+ | **[Data Masking](./use-cases/utilities/lambda_layers/data-masking/)** | Lambda layer for data masking and PII protection in serverless applications |
28
+ | **[Infrastructure Foundation](./use-cases/framework/)** | Core infrastructure components and utilities for building scalable applications |
79
29
 
80
- **Available Constructs:**
30
+ ## Key Design Principles
81
31
 
82
- **FrontendConstruct** - Complete static website hosting:
32
+ AppMod Catalog Blueprints is built on Object-Oriented Programming (OOP) principles, providing a structured approach to infrastructure development through core design concepts:
83
33
 
84
- * S3 bucket configured for static website hosting
85
- * CloudFront distribution with optimized caching
86
- * Security headers function for OWASP compliance
87
- * Optional custom domain and SSL certificate
88
- * Access logging and monitoring integration
34
+ ### Composable Architecture
89
35
 
90
- ### 3. 📊 Observability & Monitoring
36
+ Build complex enterprise systems by combining independent, reusable components with standardized interfaces.
91
37
 
92
- Comprehensive monitoring, logging, and alerting for AWS infrastructure with automatic property injection and Lambda Powertools integration.
38
+ * **Independent components** with clear interfaces and loose coupling for maximum flexibility
39
+ * **Mix and match building blocks** to create custom solutions across different contexts and use cases
40
+ * **Scalable composition** that maintains consistency while enabling incremental adoption and gradual modernization
93
41
 
94
- **Features:**
42
+ ### Multi-Layered Building Blocks Architecture
95
43
 
96
- * **Property Injection**: Automatic observability configuration across AWS services
97
- * **Lambda Powertools**: Structured logging, metrics, and tracing for Python/Node.js
98
- * **CloudWatch Integration**: Dashboards, alarms, and custom metrics
99
- * **X-Ray Tracing**: End-to-end request flow visualization
100
- * **Bedrock Monitoring**: Specialized observability for Amazon Bedrock workloads
101
- * **Cost Optimization**: Intelligent log retention and metric filtering
44
+ Our blueprints use a multi-layered architecture that bridges the gap between business requirements and technical implementation:
102
45
 
103
- **Available Components:**
46
+ | Layer | Implementation Type | Purpose | Key Features |
47
+ |-------|-------------------|---------|--------------|
48
+ | **Infrastructure Foundation** | Abstract base classes | Shared infrastructure components and common services | • Standardized interfaces and contracts<br/>• Extensible foundation for custom implementations |
49
+ | **General Use Case Implementation** | Concrete implementation classes | Production-ready implementations for common patterns across industries | • Configurable parameters for different environments<br/>• Abstract method implementations with general-purpose solutions |
50
+ | **Industry-Aligned Implementation** | Configured implementation examples | Pre-configured solutions for specific business domains | • Industry-specific validation rules and workflows<br/>• Built-in compliance requirements and domain expertise |
104
51
 
105
- **Property Injectors:**
52
+ ### Production-Ready with Smart Defaults
106
53
 
107
- * `LambdaObservabilityPropertyInjector` - Auto-enables X-Ray tracing for Lambda functions
108
- * `StateMachineObservabilityPropertyInjector` - Enables logging for Step Functions
109
- * `CloudfrontDistributionObservabilityPropertyInjector` - CDN monitoring and logging
54
+ AppMod Catalog Blueprints serves both **rapid deployment** needs (for teams wanting immediate solutions) and **custom development** requirements (for teams needing tailored implementations), providing flexibility without compromising on production readiness.
110
55
 
111
- **Observability Constructs:**
56
+ | Approach | Best For | Capabilities |
57
+ |----------|----------|--------------|
58
+ | **Out-of-the-Box Deployment** | Rapid deployment and evaluation | • Deploy complete solutions in minutes using examples for immediate value<br/>• Pre-configured security, monitoring, and best practices for production readiness<br/>• Sensible defaults with production-ready configurations that work immediately<br/>• No infrastructure boilerplate required with minimal learning curve |
59
+ | **Intelligent Customization** | Custom development and integration | • Override defaults to modify behavior without changing core implementation<br/>• Enable/disable optional features to meet specific requirements<br/>• Inject custom logic at predefined extension points while maintaining production readiness<br/>• Configure parameters for different environments and use cases |
112
60
 
113
- * `BedrockObservability` - Comprehensive monitoring for Bedrock workloads with log groups, encryption, and data protection
114
- * `PowertoolsConfig` - Lambda Powertools configuration for structured logging and metrics
115
- * `Observable` interface - Standardized observability contract for constructs
61
+ ### Security & Compliance
116
62
 
117
- **Data Protection:**
63
+ All components include enterprise-grade security by default:
118
64
 
119
- * `LogGroupDataProtectionProps` - Configurable data protection policies for CloudWatch logs
65
+ * **CDK Nag Integration**: Automated security compliance checking
66
+ * **AWS Well-Architected**: Security, reliability, and performance best practices
67
+ * **Encryption & IAM**: At-rest/in-transit encryption with least-privilege access
68
+ * **Compliance Reports**: Generate reports with `npm test -- --testPathPattern="nag.test.ts"`
120
69
 
121
- ### 4. 🏗️ Foundation & Framework
70
+ ## Essential Commands
122
71
 
123
- Core infrastructure components and utilities for building scalable applications.
72
+ ### Environment Setup
124
73
 
125
- **Available Components:**
74
+ ```bash
75
+ # Clone the repository
76
+ git clone https://github.com/cdklabs/cdk-appmod-catalog-blueprints.git
126
77
 
127
- **Network Foundation:**
78
+ # Configure AWS credentials and region
79
+ aws configure
80
+ # OR set AWS profile: export AWS_PROFILE=your-profile-name
128
81
 
129
- * `Network` - VPC with public/private subnets, NAT gateways, and security groups
130
- * `AccessLog` - Centralized access logging configuration for AWS services
131
- * `EventBridgeBroker` - Event-driven architecture with custom EventBridge bus
82
+ # Bootstrap your AWS environment (one-time setup)
83
+ npx cdk bootstrap
84
+ ```
132
85
 
133
- **Utilities:**
86
+ ### Quick Start
134
87
 
135
- * `DataLoader` - Custom resource for loading initial data into databases and services
136
- * `LambdaIamUtils` - Utility functions for Lambda IAM role and policy management
137
- * `DefaultRuntimes` - Standardized Lambda runtime configurations
88
+ Deploy a working example in **5 minutes**:
138
89
 
139
- **Lambda Layers:**
90
+ ```bash
91
+ # Navigate to any example and deploy
92
+ cd examples/document-processing/agentic-document-processing
93
+ npm install
94
+ npm run deploy
95
+ ```
140
96
 
141
- * `DataMasking` - Layer for data masking and PII protection in Lambda functions
97
+ ### Build & Deploy Project
142
98
 
143
- ## Essential Commands
99
+ ```bash
100
+ # Build entire project
101
+ npx projen build
144
102
 
145
- **Build & Deploy:**
103
+ # Deploy with specific profile/region
104
+ npx cdk deploy --require-approval never
146
105
 
147
- Build entire project with npx projen build. Deploy with specific profile/region using npx cdk deploy --require-approval never. Update CDK CLI if needed with npm install aws-cdk@latest.
106
+ # Update CDK CLI if needed
107
+ npm install aws-cdk@latest
108
+ ```
148
109
 
149
- **Development:**
110
+ ### Development
150
111
 
151
- Run tests with npm test. Run specific test pattern with npm test -- --testPathPattern="document-processing". Generate CDK Nag compliance reports with npm test -- --testPathPattern="nag.test.ts".
112
+ ```bash
113
+ # Run all tests
114
+ npm test
152
115
 
153
- ## Repository Structure
116
+ # Run specific test pattern
117
+ npm test -- --testPathPattern="document-processing"
154
118
 
155
- ```
156
- appmod-usecase-blueprints/
157
- ├── use-cases/
158
- │ ├── document-processing/ # Document processing components
159
- │ │ ├── base-document-processing.ts
160
- │ │ ├── bedrock-document-processing.ts
161
- │ │ ├── agentic-document-processing.ts
162
- │ │ ├── resources/ # Lambda functions
163
- │ │ └── tests/ # Unit and CDK Nag tests
164
- │ ├── webapp/ # Web application components
165
- │ │ ├── frontend-construct.ts
166
- │ │ └── tests/ # Unit and CDK Nag tests
167
- │ ├── framework/ # Core infrastructure
168
- │ │ ├── foundation/ # Network, access logs, EventBridge
169
- │ │ ├── quickstart/ # Base quickstart patterns
170
- │ │ └── custom-resource/ # Default runtimes
171
- │ └── utilities/
172
- │ ├── observability/ # Monitoring components
173
- │ ├── lambda_layers/ # Shared Lambda layers
174
- │ ├── data-loader.ts # Custom resource for data loading
175
- │ └── lambda-iam-utils.ts # IAM utilities
176
- ├── examples/ # Ready-to-deploy examples
177
- │ └── document-processing/
178
- │ ├── bedrock-document-processing/
179
- │ ├── agentic-document-processing/
180
- │ └── doc-processing-fullstack-webapp/
181
- └── README.md
119
+ # Generate CDK Nag compliance reports
120
+ npm test -- --testPathPattern="nag.test.ts"
182
121
  ```
183
122
 
184
- ## Security & Compliance
123
+ ## How to Use This Library
185
124
 
186
- All components include:
125
+ ### Quick Start (Deploy Examples)
187
126
 
188
- * **CDK Nag Integration**: Automated security compliance checking
189
- * **AWS Well-Architected**: Following best practices for security, reliability, performance
190
- * **Encryption**: At-rest and in-transit encryption by default
191
- * **IAM Least Privilege**: Minimal required permissions
192
- * **VPC Isolation**: Private subnets and security groups
127
+ 1. **Browse Examples**: Start with the [examples](./examples/) folder to see working implementations
128
+ 2. **Deploy & Test**: Use `npm run deploy` in any example to get a working system in minutes
129
+ 3. **Customize**: Modify example parameters to fit your specific requirements
193
130
 
194
- **Generate Compliance Reports:**
131
+ ### Using Individual Constructs
195
132
 
196
- Run npm test with testPathPattern="nag.test.ts" to generate reports in cdk.out/*-NagReport.csv
133
+ 1. **Import Constructs**: Add `@cdklabs/appmod-catalog-blueprints` to your CDK project
134
+ 2. **Choose Your Layer**: Pick the right abstraction level for your needs
135
+ 3. **Configure**: Use the configuration options documented in each construct
197
136
 
198
- ## Examples
137
+ ### Understanding the Layers
199
138
 
200
- ### Document Processing
139
+ **Foundation Layer** (`use-cases/framework/`, `use-cases/utilities/`)
201
140
 
202
- * **Bedrock Document Processing**: AI-powered document analysis with Claude 3.5 Sonnet
203
- * **Agentic Document Processing**: Multi-agent document workflows with complex processing
204
- * **Full-Stack Document Processing Webapp**: Complete document processing application with frontend interface
141
+ * **When to use**: Building custom solutions or need specific infrastructure components
142
+ * **Components**: VPC networking, observability utilities, data management tools, etc.
205
143
 
206
- Each example includes deployment scripts, sample files, and comprehensive documentation.
144
+ **Use Case Layer** (`use-cases/document-processing/`, `use-cases/webapp/`)
207
145
 
208
- ## Key AWS Services
146
+ * **When to use**: Need proven patterns for common business problems
147
+ * **Components**: Document processing workflows, web application hosting, data transformation patterns, etc.
209
148
 
210
- * **Compute**: Lambda, ECS Fargate, Step Functions
211
- * **Storage**: S3, DynamoDB
212
- * **Database**: RDS (MySQL/PostgreSQL)
213
- * **Networking**: VPC, CloudFront, Application Load Balancer
214
- * **AI/ML**: Amazon Bedrock, Textract
215
- * **Monitoring**: CloudWatch, X-Ray
216
- * **Security**: KMS, Secrets Manager, IAM
149
+ **Example Layer** (`examples/`)
150
+
151
+ * **When to use**: Want complete, deployable solutions
152
+ * **Components**: Industry-specific configurations, end-to-end applications, reference implementations, etc.
217
153
 
218
154
  ## Contributing
219
155
 
220
- 1. **Add New Use Case**: Create directory under `use-cases/`
221
- 2. **Follow Structure**: Include constructs, tests, and documentation
222
- 3. **Security First**: All components must pass CDK Nag checks
223
- 4. **Include Monitoring**: Include monitoring, error handling, and cost optimization
156
+ See [CONTRIBUTING.md](https://github.com/cdklabs/cdk-appmod-catalog-blueprints/blob/main/CONTRIBUTING.md) for detailed guidelines on how to contribute to this project.
224
157
 
225
158
  ## Disclaimer
226
159
 
@@ -228,7 +161,7 @@ These application solutions are not supported products in their own right, but e
228
161
 
229
162
  ## License
230
163
 
231
- Apache License 2.0 - see [LICENSE](./LICENSE) file for details.
164
+ Apache License 2.0 - see [LICENSE](https://github.com/cdklabs/cdk-appmod-catalog-blueprints/blob/main/LICENSE) file for details.
232
165
  '''
233
166
  from pkgutil import extend_path
234
167
  __path__ = extend_path(__path__, __name__)
@@ -281,7 +214,6 @@ import aws_cdk.aws_s3 as _aws_cdk_aws_s3_ceddda9d
281
214
  import aws_cdk.aws_s3_assets as _aws_cdk_aws_s3_assets_ceddda9d
282
215
  import aws_cdk.aws_s3_deployment as _aws_cdk_aws_s3_deployment_ceddda9d
283
216
  import aws_cdk.aws_secretsmanager as _aws_cdk_aws_secretsmanager_ceddda9d
284
- import aws_cdk.aws_sqs as _aws_cdk_aws_sqs_ceddda9d
285
217
  import aws_cdk.aws_stepfunctions as _aws_cdk_aws_stepfunctions_ceddda9d
286
218
  import aws_cdk.aws_stepfunctions_tasks as _aws_cdk_aws_stepfunctions_tasks_ceddda9d
287
219
  import aws_cdk.custom_resources as _aws_cdk_custom_resources_ceddda9d
@@ -612,6 +544,7 @@ class AdditionalDistributionProps:
612
544
  name_mapping={
613
545
  "agent_system_prompt": "agentSystemPrompt",
614
546
  "lambda_layers": "lambdaLayers",
547
+ "tools_bucket": "toolsBucket",
615
548
  "tools_location": "toolsLocation",
616
549
  },
617
550
  )
@@ -621,12 +554,14 @@ class AgentProps:
621
554
  *,
622
555
  agent_system_prompt: typing.Optional[builtins.str] = None,
623
556
  lambda_layers: typing.Optional[typing.Sequence[_aws_cdk_aws_lambda_ceddda9d.LayerVersion]] = None,
557
+ tools_bucket: typing.Optional[_aws_cdk_aws_s3_ceddda9d.Bucket] = None,
624
558
  tools_location: typing.Optional[typing.Sequence[builtins.str]] = None,
625
559
  ) -> None:
626
560
  '''
627
- :param agent_system_prompt:
628
- :param lambda_layers:
629
- :param tools_location:
561
+ :param agent_system_prompt: (experimental) System prompt for the agent.
562
+ :param lambda_layers: (experimental) If there are python dependencies that are needed by the provided tools, provide the Lambda Layers with the dependencies.
563
+ :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.
564
+ :param tools_location: (experimental) S3 path where the tools are located. The agent would dynamically load the tools
630
565
 
631
566
  :stability: experimental
632
567
  '''
@@ -634,18 +569,22 @@ class AgentProps:
634
569
  type_hints = typing.get_type_hints(_typecheckingstub__e1a82500ee072f393cd9a2ada2f9a3434219c7a51186f26fbba3061bd896d11e)
635
570
  check_type(argname="argument agent_system_prompt", value=agent_system_prompt, expected_type=type_hints["agent_system_prompt"])
636
571
  check_type(argname="argument lambda_layers", value=lambda_layers, expected_type=type_hints["lambda_layers"])
572
+ check_type(argname="argument tools_bucket", value=tools_bucket, expected_type=type_hints["tools_bucket"])
637
573
  check_type(argname="argument tools_location", value=tools_location, expected_type=type_hints["tools_location"])
638
574
  self._values: typing.Dict[builtins.str, typing.Any] = {}
639
575
  if agent_system_prompt is not None:
640
576
  self._values["agent_system_prompt"] = agent_system_prompt
641
577
  if lambda_layers is not None:
642
578
  self._values["lambda_layers"] = lambda_layers
579
+ if tools_bucket is not None:
580
+ self._values["tools_bucket"] = tools_bucket
643
581
  if tools_location is not None:
644
582
  self._values["tools_location"] = tools_location
645
583
 
646
584
  @builtins.property
647
585
  def agent_system_prompt(self) -> typing.Optional[builtins.str]:
648
- '''
586
+ '''(experimental) System prompt for the agent.
587
+
649
588
  :stability: experimental
650
589
  '''
651
590
  result = self._values.get("agent_system_prompt")
@@ -655,15 +594,33 @@ class AgentProps:
655
594
  def lambda_layers(
656
595
  self,
657
596
  ) -> typing.Optional[typing.List[_aws_cdk_aws_lambda_ceddda9d.LayerVersion]]:
658
- '''
597
+ '''(experimental) If there are python dependencies that are needed by the provided tools, provide the Lambda Layers with the dependencies.
598
+
659
599
  :stability: experimental
660
600
  '''
661
601
  result = self._values.get("lambda_layers")
662
602
  return typing.cast(typing.Optional[typing.List[_aws_cdk_aws_lambda_ceddda9d.LayerVersion]], result)
663
603
 
664
604
  @builtins.property
665
- def tools_location(self) -> typing.Optional[typing.List[builtins.str]]:
605
+ def tools_bucket(self) -> typing.Optional[_aws_cdk_aws_s3_ceddda9d.Bucket]:
606
+ '''(experimental) Bucket where the tools are located in Primarily use to grant read permission to the processing agent to access the tools.
607
+
608
+ :default:
609
+
610
+ No extra IAM permissions would be automatically
611
+ assigned to the processing agent.
612
+
613
+ :stability: experimental
666
614
  '''
615
+ result = self._values.get("tools_bucket")
616
+ return typing.cast(typing.Optional[_aws_cdk_aws_s3_ceddda9d.Bucket], result)
617
+
618
+ @builtins.property
619
+ def tools_location(self) -> typing.Optional[typing.List[builtins.str]]:
620
+ '''(experimental) S3 path where the tools are located.
621
+
622
+ The agent would dynamically load the tools
623
+
667
624
  :stability: experimental
668
625
  '''
669
626
  result = self._values.get("tools_location")
@@ -1240,6 +1197,54 @@ class DatabaseEngine(enum.Enum):
1240
1197
  '''
1241
1198
 
1242
1199
 
1200
+ class DefaultDocumentProcessingConfig(
1201
+ metaclass=jsii.JSIIMeta,
1202
+ jsii_type="@cdklabs/cdk-appmod-catalog-blueprints.DefaultDocumentProcessingConfig",
1203
+ ):
1204
+ '''
1205
+ :stability: experimental
1206
+ '''
1207
+
1208
+ def __init__(self) -> None:
1209
+ '''
1210
+ :stability: experimental
1211
+ '''
1212
+ jsii.create(self.__class__, self, [])
1213
+
1214
+ @jsii.python.classproperty
1215
+ @jsii.member(jsii_name="DEFAULT_OBSERVABILITY_METRIC_SVC_NAME")
1216
+ def DEFAULT_OBSERVABILITY_METRIC_SVC_NAME(cls) -> builtins.str:
1217
+ '''
1218
+ :stability: experimental
1219
+ '''
1220
+ return typing.cast(builtins.str, jsii.sget(cls, "DEFAULT_OBSERVABILITY_METRIC_SVC_NAME"))
1221
+
1222
+
1223
+ class DefaultObservabilityConfig(
1224
+ metaclass=jsii.JSIIMeta,
1225
+ jsii_type="@cdklabs/cdk-appmod-catalog-blueprints.DefaultObservabilityConfig",
1226
+ ):
1227
+ '''(experimental) Contains default constants for Observability related configuration.
1228
+
1229
+ :stability: experimental
1230
+ '''
1231
+
1232
+ def __init__(self) -> None:
1233
+ '''
1234
+ :stability: experimental
1235
+ '''
1236
+ jsii.create(self.__class__, self, [])
1237
+
1238
+ @jsii.python.classproperty
1239
+ @jsii.member(jsii_name="DEFAULT_METRIC_NAMESPACE")
1240
+ def DEFAULT_METRIC_NAMESPACE(cls) -> builtins.str:
1241
+ '''(experimental) Default namespace for powertools.
1242
+
1243
+ :stability: experimental
1244
+ '''
1245
+ return typing.cast(builtins.str, jsii.sget(cls, "DEFAULT_METRIC_NAMESPACE"))
1246
+
1247
+
1243
1248
  class DefaultRuntimes(
1244
1249
  metaclass=jsii.JSIIMeta,
1245
1250
  jsii_type="@cdklabs/cdk-appmod-catalog-blueprints.DefaultRuntimes",
@@ -1296,36 +1301,6 @@ class DefaultRuntimes(
1296
1301
  return typing.cast(_aws_cdk_aws_lambda_python_alpha_49328424.BundlingOptions, jsii.sget(cls, "PYTHON_FUNCTION_BUNDLING"))
1297
1302
 
1298
1303
 
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
1304
  class EventbridgeBroker(
1330
1305
  _constructs_77d1e7e8.Construct,
1331
1306
  metaclass=jsii.JSIIMeta,
@@ -1929,142 +1904,461 @@ class FrontendProps:
1929
1904
  )
1930
1905
 
1931
1906
 
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.
1907
+ @jsii.interface(jsii_type="@cdklabs/cdk-appmod-catalog-blueprints.IAdapter")
1908
+ class IAdapter(typing_extensions.Protocol):
1909
+ '''(experimental) Abstraction to enable different types of source triggers for the intelligent document processing workflow.
1935
1910
 
1936
1911
  :stability: experimental
1937
1912
  '''
1938
1913
 
1939
- @builtins.property
1940
- @jsii.member(jsii_name="logGroupDataProtection")
1941
- def log_group_data_protection(self) -> "LogGroupDataProtectionProps":
1942
- '''
1943
- :stability: experimental
1944
- '''
1945
- ...
1914
+ @jsii.member(jsii_name="createFailedChain")
1915
+ def create_failed_chain(
1916
+ self,
1917
+ scope: _constructs_77d1e7e8.Construct,
1918
+ ) -> _aws_cdk_aws_stepfunctions_ceddda9d.Chain:
1919
+ '''(experimental) Create the adapter specific handler for failed processing.
1920
+
1921
+ :param scope: Scope to use in relation to the CDK hierarchy.
1922
+
1923
+ :return: Chain to be added to the state machine to handle failure scenarios
1946
1924
 
1947
- @builtins.property
1948
- @jsii.member(jsii_name="metricNamespace")
1949
- def metric_namespace(self) -> builtins.str:
1950
- '''
1951
1925
  :stability: experimental
1952
1926
  '''
1953
1927
  ...
1954
1928
 
1955
- @builtins.property
1956
- @jsii.member(jsii_name="metricServiceName")
1957
- def metric_service_name(self) -> builtins.str:
1958
- '''
1929
+ @jsii.member(jsii_name="createIngressTrigger")
1930
+ def create_ingress_trigger(
1931
+ self,
1932
+ scope: _constructs_77d1e7e8.Construct,
1933
+ state_machine: _aws_cdk_aws_stepfunctions_ceddda9d.StateMachine,
1934
+ *,
1935
+ document_processing_table: typing.Optional[_aws_cdk_aws_dynamodb_ceddda9d.Table] = None,
1936
+ enable_observability: typing.Optional[builtins.bool] = None,
1937
+ encryption_key: typing.Optional[_aws_cdk_aws_kms_ceddda9d.Key] = None,
1938
+ eventbridge_broker: typing.Optional[EventbridgeBroker] = None,
1939
+ ingress_adapter: typing.Optional["IAdapter"] = None,
1940
+ network: typing.Optional["Network"] = None,
1941
+ removal_policy: typing.Optional[_aws_cdk_ceddda9d.RemovalPolicy] = None,
1942
+ workflow_timeout: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
1943
+ log_group_data_protection: typing.Optional[typing.Union["LogGroupDataProtectionProps", typing.Dict[builtins.str, typing.Any]]] = None,
1944
+ metric_namespace: typing.Optional[builtins.str] = None,
1945
+ metric_service_name: typing.Optional[builtins.str] = None,
1946
+ ) -> typing.Mapping[builtins.str, typing.Any]:
1947
+ '''(experimental) Create resources that would receive the data and trigger the workflow.
1948
+
1949
+ Important: resource created should trigger the state machine
1950
+
1951
+ :param scope: Scope to use in relation to the CDK hierarchy.
1952
+ :param state_machine: The workflow of the document processor.
1953
+ :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.
1954
+ :param enable_observability: (experimental) Enable logging and tracing for all supporting resource. Default: false
1955
+ :param encryption_key: (experimental) KMS key to be used. Default: A new key would be created
1956
+ :param eventbridge_broker: (experimental) Optional EventBridge broker for publishing custom events during processing. If not provided, no custom events will be sent out.
1957
+ :param ingress_adapter: (experimental) Adapter that defines how the document processing workflow is triggered. Default: QueuedS3Adapter
1958
+ :param network: (experimental) Resources that can run inside a VPC will follow the provided network configuration. Default: resources will run outside of a VPC
1959
+ :param removal_policy: (experimental) Removal policy for created resources (bucket, table, queue). Default: RemovalPolicy.DESTROY
1960
+ :param workflow_timeout: (experimental) Maximum execution time for the Step Functions workflow. Default: Duration.minutes(30)
1961
+ :param log_group_data_protection: (experimental) Data protection related configuration. Default: a new KMS key would be generated
1962
+ :param metric_namespace: (experimental) Business metric namespace. Default: would be defined per use case
1963
+ :param metric_service_name: (experimental) Business metric service name dimension. Default: would be defined per use case
1964
+
1965
+ :return: Resources that are created
1966
+
1959
1967
  :stability: experimental
1960
1968
  '''
1961
1969
  ...
1962
1970
 
1963
- @jsii.member(jsii_name="metrics")
1964
- def metrics(self) -> typing.List[_aws_cdk_aws_cloudwatch_ceddda9d.IMetric]:
1965
- '''
1971
+ @jsii.member(jsii_name="createSuccessChain")
1972
+ def create_success_chain(
1973
+ self,
1974
+ scope: _constructs_77d1e7e8.Construct,
1975
+ ) -> _aws_cdk_aws_stepfunctions_ceddda9d.Chain:
1976
+ '''(experimental) Create the adapter specific handler for successful processing.
1977
+
1978
+ :param scope: Scope to use in relation to the CDK hierarchy.
1979
+
1980
+ :return: Chain to be added to the state machine to handle successful scenarios
1981
+
1966
1982
  :stability: experimental
1967
1983
  '''
1968
1984
  ...
1969
1985
 
1986
+ @jsii.member(jsii_name="generateAdapterIAMPolicies")
1987
+ def generate_adapter_iam_policies(
1988
+ self,
1989
+ additional_iam_actions: typing.Optional[typing.Sequence[builtins.str]] = None,
1990
+ narrow_actions: typing.Optional[builtins.bool] = None,
1991
+ ) -> typing.List[_aws_cdk_aws_iam_ceddda9d.PolicyStatement]:
1992
+ '''(experimental) Generate IAM statements that can be used by other resources to access the storage.
1970
1993
 
1971
- class _IObservableProxy:
1972
- '''(experimental) Interface providing configuration parameters for constructs that support Observability.
1994
+ :param additional_iam_actions: (Optional) list of additional actions in relation to the underlying storage for the adapter.
1995
+ :param narrow_actions: (Optional) whether the resulting permissions would only be the IAM actions indicated in the ``additionalIAMActions`` parameter.
1973
1996
 
1974
- :stability: experimental
1975
- '''
1997
+ :default: false
1976
1998
 
1977
- __jsii_type__: typing.ClassVar[str] = "@cdklabs/cdk-appmod-catalog-blueprints.IObservable"
1999
+ :return: PolicyStatement[] IAM policy statements that would included in the state machine IAM role
1978
2000
 
1979
- @builtins.property
1980
- @jsii.member(jsii_name="logGroupDataProtection")
1981
- def log_group_data_protection(self) -> "LogGroupDataProtectionProps":
1982
- '''
1983
2001
  :stability: experimental
1984
2002
  '''
1985
- return typing.cast("LogGroupDataProtectionProps", jsii.get(self, "logGroupDataProtection"))
2003
+ ...
1986
2004
 
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"))
2005
+ @jsii.member(jsii_name="init")
2006
+ def init(
2007
+ self,
2008
+ scope: _constructs_77d1e7e8.Construct,
2009
+ *,
2010
+ document_processing_table: typing.Optional[_aws_cdk_aws_dynamodb_ceddda9d.Table] = None,
2011
+ enable_observability: typing.Optional[builtins.bool] = None,
2012
+ encryption_key: typing.Optional[_aws_cdk_aws_kms_ceddda9d.Key] = None,
2013
+ eventbridge_broker: typing.Optional[EventbridgeBroker] = None,
2014
+ ingress_adapter: typing.Optional["IAdapter"] = None,
2015
+ network: typing.Optional["Network"] = None,
2016
+ removal_policy: typing.Optional[_aws_cdk_ceddda9d.RemovalPolicy] = None,
2017
+ workflow_timeout: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
2018
+ log_group_data_protection: typing.Optional[typing.Union["LogGroupDataProtectionProps", typing.Dict[builtins.str, typing.Any]]] = None,
2019
+ metric_namespace: typing.Optional[builtins.str] = None,
2020
+ metric_service_name: typing.Optional[builtins.str] = None,
2021
+ ) -> None:
2022
+ '''(experimental) Initializes the adapter.
1994
2023
 
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"))
2024
+ :param scope: Scope to use in relation to the CDK hierarchy.
2025
+ :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.
2026
+ :param enable_observability: (experimental) Enable logging and tracing for all supporting resource. Default: false
2027
+ :param encryption_key: (experimental) KMS key to be used. Default: A new key would be created
2028
+ :param eventbridge_broker: (experimental) Optional EventBridge broker for publishing custom events during processing. If not provided, no custom events will be sent out.
2029
+ :param ingress_adapter: (experimental) Adapter that defines how the document processing workflow is triggered. Default: QueuedS3Adapter
2030
+ :param network: (experimental) Resources that can run inside a VPC will follow the provided network configuration. Default: resources will run outside of a VPC
2031
+ :param removal_policy: (experimental) Removal policy for created resources (bucket, table, queue). Default: RemovalPolicy.DESTROY
2032
+ :param workflow_timeout: (experimental) Maximum execution time for the Step Functions workflow. Default: Duration.minutes(30)
2033
+ :param log_group_data_protection: (experimental) Data protection related configuration. Default: a new KMS key would be generated
2034
+ :param metric_namespace: (experimental) Business metric namespace. Default: would be defined per use case
2035
+ :param metric_service_name: (experimental) Business metric service name dimension. Default: would be defined per use case
2002
2036
 
2003
- @jsii.member(jsii_name="metrics")
2004
- def metrics(self) -> typing.List[_aws_cdk_aws_cloudwatch_ceddda9d.IMetric]:
2005
- '''
2006
2037
  :stability: experimental
2007
2038
  '''
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
2039
+ ...
2012
2040
 
2013
2041
 
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.
2042
+ class _IAdapterProxy:
2043
+ '''(experimental) Abstraction to enable different types of source triggers for the intelligent document processing workflow.
2019
2044
 
2020
2045
  :stability: experimental
2021
2046
  '''
2022
2047
 
2023
- def __init__(self) -> None:
2024
- '''
2025
- :stability: experimental
2026
- '''
2027
- jsii.create(self.__class__, self, [])
2048
+ __jsii_type__: typing.ClassVar[str] = "@cdklabs/cdk-appmod-catalog-blueprints.IAdapter"
2028
2049
 
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.
2050
+ @jsii.member(jsii_name="createFailedChain")
2051
+ def create_failed_chain(
2052
+ self,
2053
+ scope: _constructs_77d1e7e8.Construct,
2054
+ ) -> _aws_cdk_aws_stepfunctions_ceddda9d.Chain:
2055
+ '''(experimental) Create the adapter specific handler for failed processing.
2037
2056
 
2038
- :param table_arn: The ARN of the DynamoDB table.
2039
- :param actions: The DynamoDB actions to allow.
2057
+ :param scope: Scope to use in relation to the CDK hierarchy.
2040
2058
 
2041
- :return: PolicyStatement for DynamoDB access
2059
+ :return: Chain to be added to the state machine to handle failure scenarios
2042
2060
 
2043
2061
  :stability: experimental
2044
2062
  '''
2045
2063
  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]))
2050
-
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.
2059
-
2060
- :param key_arn: The ARN of the KMS key.
2061
- :param actions: The KMS actions to allow.
2062
-
2063
- :return: PolicyStatement for KMS access
2064
+ type_hints = typing.get_type_hints(_typecheckingstub__5998f6c7e16512d92cd00097e77d737333304685208eb36a522c156f8378a9e7)
2065
+ check_type(argname="argument scope", value=scope, expected_type=type_hints["scope"])
2066
+ return typing.cast(_aws_cdk_aws_stepfunctions_ceddda9d.Chain, jsii.invoke(self, "createFailedChain", [scope]))
2064
2067
 
2065
- :stability: experimental
2066
- '''
2067
- if __debug__:
2068
+ @jsii.member(jsii_name="createIngressTrigger")
2069
+ def create_ingress_trigger(
2070
+ self,
2071
+ scope: _constructs_77d1e7e8.Construct,
2072
+ state_machine: _aws_cdk_aws_stepfunctions_ceddda9d.StateMachine,
2073
+ *,
2074
+ document_processing_table: typing.Optional[_aws_cdk_aws_dynamodb_ceddda9d.Table] = None,
2075
+ enable_observability: typing.Optional[builtins.bool] = None,
2076
+ encryption_key: typing.Optional[_aws_cdk_aws_kms_ceddda9d.Key] = None,
2077
+ eventbridge_broker: typing.Optional[EventbridgeBroker] = None,
2078
+ ingress_adapter: typing.Optional[IAdapter] = None,
2079
+ network: typing.Optional["Network"] = None,
2080
+ removal_policy: typing.Optional[_aws_cdk_ceddda9d.RemovalPolicy] = None,
2081
+ workflow_timeout: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
2082
+ log_group_data_protection: typing.Optional[typing.Union["LogGroupDataProtectionProps", typing.Dict[builtins.str, typing.Any]]] = None,
2083
+ metric_namespace: typing.Optional[builtins.str] = None,
2084
+ metric_service_name: typing.Optional[builtins.str] = None,
2085
+ ) -> typing.Mapping[builtins.str, typing.Any]:
2086
+ '''(experimental) Create resources that would receive the data and trigger the workflow.
2087
+
2088
+ Important: resource created should trigger the state machine
2089
+
2090
+ :param scope: Scope to use in relation to the CDK hierarchy.
2091
+ :param state_machine: The workflow of the document processor.
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
2103
+
2104
+ :return: Resources that are created
2105
+
2106
+ :stability: experimental
2107
+ '''
2108
+ if __debug__:
2109
+ type_hints = typing.get_type_hints(_typecheckingstub__b61e74ddd8982f4b30ae59307c9fb3adaff26122ddc7f5faabc2cc8e1e2da034)
2110
+ check_type(argname="argument scope", value=scope, expected_type=type_hints["scope"])
2111
+ check_type(argname="argument state_machine", value=state_machine, expected_type=type_hints["state_machine"])
2112
+ props = BaseDocumentProcessingProps(
2113
+ document_processing_table=document_processing_table,
2114
+ enable_observability=enable_observability,
2115
+ encryption_key=encryption_key,
2116
+ eventbridge_broker=eventbridge_broker,
2117
+ ingress_adapter=ingress_adapter,
2118
+ network=network,
2119
+ removal_policy=removal_policy,
2120
+ workflow_timeout=workflow_timeout,
2121
+ log_group_data_protection=log_group_data_protection,
2122
+ metric_namespace=metric_namespace,
2123
+ metric_service_name=metric_service_name,
2124
+ )
2125
+
2126
+ return typing.cast(typing.Mapping[builtins.str, typing.Any], jsii.invoke(self, "createIngressTrigger", [scope, state_machine, props]))
2127
+
2128
+ @jsii.member(jsii_name="createSuccessChain")
2129
+ def create_success_chain(
2130
+ self,
2131
+ scope: _constructs_77d1e7e8.Construct,
2132
+ ) -> _aws_cdk_aws_stepfunctions_ceddda9d.Chain:
2133
+ '''(experimental) Create the adapter specific handler for successful processing.
2134
+
2135
+ :param scope: Scope to use in relation to the CDK hierarchy.
2136
+
2137
+ :return: Chain to be added to the state machine to handle successful scenarios
2138
+
2139
+ :stability: experimental
2140
+ '''
2141
+ if __debug__:
2142
+ type_hints = typing.get_type_hints(_typecheckingstub__cd0aad7a5879633fca8d89cbf92e8f5a13e31615116036f29a82a58c1bb4727d)
2143
+ check_type(argname="argument scope", value=scope, expected_type=type_hints["scope"])
2144
+ return typing.cast(_aws_cdk_aws_stepfunctions_ceddda9d.Chain, jsii.invoke(self, "createSuccessChain", [scope]))
2145
+
2146
+ @jsii.member(jsii_name="generateAdapterIAMPolicies")
2147
+ def generate_adapter_iam_policies(
2148
+ self,
2149
+ additional_iam_actions: typing.Optional[typing.Sequence[builtins.str]] = None,
2150
+ narrow_actions: typing.Optional[builtins.bool] = None,
2151
+ ) -> typing.List[_aws_cdk_aws_iam_ceddda9d.PolicyStatement]:
2152
+ '''(experimental) Generate IAM statements that can be used by other resources to access the storage.
2153
+
2154
+ :param additional_iam_actions: (Optional) list of additional actions in relation to the underlying storage for the adapter.
2155
+ :param narrow_actions: (Optional) whether the resulting permissions would only be the IAM actions indicated in the ``additionalIAMActions`` parameter.
2156
+
2157
+ :default: false
2158
+
2159
+ :return: PolicyStatement[] IAM policy statements that would included in the state machine IAM role
2160
+
2161
+ :stability: experimental
2162
+ '''
2163
+ if __debug__:
2164
+ type_hints = typing.get_type_hints(_typecheckingstub__82a45114a0ff76d4b9d091edd6674d4e762dc5ca19631d61579cf1aa47e30b5e)
2165
+ check_type(argname="argument additional_iam_actions", value=additional_iam_actions, expected_type=type_hints["additional_iam_actions"])
2166
+ check_type(argname="argument narrow_actions", value=narrow_actions, expected_type=type_hints["narrow_actions"])
2167
+ return typing.cast(typing.List[_aws_cdk_aws_iam_ceddda9d.PolicyStatement], jsii.invoke(self, "generateAdapterIAMPolicies", [additional_iam_actions, narrow_actions]))
2168
+
2169
+ @jsii.member(jsii_name="init")
2170
+ def init(
2171
+ self,
2172
+ scope: _constructs_77d1e7e8.Construct,
2173
+ *,
2174
+ document_processing_table: typing.Optional[_aws_cdk_aws_dynamodb_ceddda9d.Table] = None,
2175
+ enable_observability: typing.Optional[builtins.bool] = None,
2176
+ encryption_key: typing.Optional[_aws_cdk_aws_kms_ceddda9d.Key] = None,
2177
+ eventbridge_broker: typing.Optional[EventbridgeBroker] = None,
2178
+ ingress_adapter: typing.Optional[IAdapter] = None,
2179
+ network: typing.Optional["Network"] = None,
2180
+ removal_policy: typing.Optional[_aws_cdk_ceddda9d.RemovalPolicy] = None,
2181
+ workflow_timeout: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
2182
+ log_group_data_protection: typing.Optional[typing.Union["LogGroupDataProtectionProps", typing.Dict[builtins.str, typing.Any]]] = None,
2183
+ metric_namespace: typing.Optional[builtins.str] = None,
2184
+ metric_service_name: typing.Optional[builtins.str] = None,
2185
+ ) -> None:
2186
+ '''(experimental) Initializes the adapter.
2187
+
2188
+ :param scope: Scope to use in relation to the CDK hierarchy.
2189
+ :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.
2190
+ :param enable_observability: (experimental) Enable logging and tracing for all supporting resource. Default: false
2191
+ :param encryption_key: (experimental) KMS key to be used. Default: A new key would be created
2192
+ :param eventbridge_broker: (experimental) Optional EventBridge broker for publishing custom events during processing. If not provided, no custom events will be sent out.
2193
+ :param ingress_adapter: (experimental) Adapter that defines how the document processing workflow is triggered. Default: QueuedS3Adapter
2194
+ :param network: (experimental) Resources that can run inside a VPC will follow the provided network configuration. Default: resources will run outside of a VPC
2195
+ :param removal_policy: (experimental) Removal policy for created resources (bucket, table, queue). Default: RemovalPolicy.DESTROY
2196
+ :param workflow_timeout: (experimental) Maximum execution time for the Step Functions workflow. Default: Duration.minutes(30)
2197
+ :param log_group_data_protection: (experimental) Data protection related configuration. Default: a new KMS key would be generated
2198
+ :param metric_namespace: (experimental) Business metric namespace. Default: would be defined per use case
2199
+ :param metric_service_name: (experimental) Business metric service name dimension. Default: would be defined per use case
2200
+
2201
+ :stability: experimental
2202
+ '''
2203
+ if __debug__:
2204
+ type_hints = typing.get_type_hints(_typecheckingstub__17f7e7f35ea8e49cf6ded248435aa1e1dcf416e61c549f3e7b74baad3ac399e7)
2205
+ check_type(argname="argument scope", value=scope, expected_type=type_hints["scope"])
2206
+ props = BaseDocumentProcessingProps(
2207
+ document_processing_table=document_processing_table,
2208
+ enable_observability=enable_observability,
2209
+ encryption_key=encryption_key,
2210
+ eventbridge_broker=eventbridge_broker,
2211
+ ingress_adapter=ingress_adapter,
2212
+ network=network,
2213
+ removal_policy=removal_policy,
2214
+ workflow_timeout=workflow_timeout,
2215
+ log_group_data_protection=log_group_data_protection,
2216
+ metric_namespace=metric_namespace,
2217
+ metric_service_name=metric_service_name,
2218
+ )
2219
+
2220
+ return typing.cast(None, jsii.invoke(self, "init", [scope, props]))
2221
+
2222
+ # Adding a "__jsii_proxy_class__(): typing.Type" function to the interface
2223
+ typing.cast(typing.Any, IAdapter).__jsii_proxy_class__ = lambda : _IAdapterProxy
2224
+
2225
+
2226
+ @jsii.interface(jsii_type="@cdklabs/cdk-appmod-catalog-blueprints.IObservable")
2227
+ class IObservable(typing_extensions.Protocol):
2228
+ '''(experimental) Interface providing configuration parameters for constructs that support Observability.
2229
+
2230
+ :stability: experimental
2231
+ '''
2232
+
2233
+ @builtins.property
2234
+ @jsii.member(jsii_name="logGroupDataProtection")
2235
+ def log_group_data_protection(self) -> "LogGroupDataProtectionProps":
2236
+ '''
2237
+ :stability: experimental
2238
+ '''
2239
+ ...
2240
+
2241
+ @builtins.property
2242
+ @jsii.member(jsii_name="metricNamespace")
2243
+ def metric_namespace(self) -> builtins.str:
2244
+ '''
2245
+ :stability: experimental
2246
+ '''
2247
+ ...
2248
+
2249
+ @builtins.property
2250
+ @jsii.member(jsii_name="metricServiceName")
2251
+ def metric_service_name(self) -> builtins.str:
2252
+ '''
2253
+ :stability: experimental
2254
+ '''
2255
+ ...
2256
+
2257
+ @jsii.member(jsii_name="metrics")
2258
+ def metrics(self) -> typing.List[_aws_cdk_aws_cloudwatch_ceddda9d.IMetric]:
2259
+ '''
2260
+ :stability: experimental
2261
+ '''
2262
+ ...
2263
+
2264
+
2265
+ class _IObservableProxy:
2266
+ '''(experimental) Interface providing configuration parameters for constructs that support Observability.
2267
+
2268
+ :stability: experimental
2269
+ '''
2270
+
2271
+ __jsii_type__: typing.ClassVar[str] = "@cdklabs/cdk-appmod-catalog-blueprints.IObservable"
2272
+
2273
+ @builtins.property
2274
+ @jsii.member(jsii_name="logGroupDataProtection")
2275
+ def log_group_data_protection(self) -> "LogGroupDataProtectionProps":
2276
+ '''
2277
+ :stability: experimental
2278
+ '''
2279
+ return typing.cast("LogGroupDataProtectionProps", jsii.get(self, "logGroupDataProtection"))
2280
+
2281
+ @builtins.property
2282
+ @jsii.member(jsii_name="metricNamespace")
2283
+ def metric_namespace(self) -> builtins.str:
2284
+ '''
2285
+ :stability: experimental
2286
+ '''
2287
+ return typing.cast(builtins.str, jsii.get(self, "metricNamespace"))
2288
+
2289
+ @builtins.property
2290
+ @jsii.member(jsii_name="metricServiceName")
2291
+ def metric_service_name(self) -> builtins.str:
2292
+ '''
2293
+ :stability: experimental
2294
+ '''
2295
+ return typing.cast(builtins.str, jsii.get(self, "metricServiceName"))
2296
+
2297
+ @jsii.member(jsii_name="metrics")
2298
+ def metrics(self) -> typing.List[_aws_cdk_aws_cloudwatch_ceddda9d.IMetric]:
2299
+ '''
2300
+ :stability: experimental
2301
+ '''
2302
+ return typing.cast(typing.List[_aws_cdk_aws_cloudwatch_ceddda9d.IMetric], jsii.invoke(self, "metrics", []))
2303
+
2304
+ # Adding a "__jsii_proxy_class__(): typing.Type" function to the interface
2305
+ typing.cast(typing.Any, IObservable).__jsii_proxy_class__ = lambda : _IObservableProxy
2306
+
2307
+
2308
+ class LambdaIamUtils(
2309
+ metaclass=jsii.JSIIMeta,
2310
+ jsii_type="@cdklabs/cdk-appmod-catalog-blueprints.LambdaIamUtils",
2311
+ ):
2312
+ '''(experimental) Utility class for creating secure Lambda IAM policy statements with minimal permissions.
2313
+
2314
+ :stability: experimental
2315
+ '''
2316
+
2317
+ def __init__(self) -> None:
2318
+ '''
2319
+ :stability: experimental
2320
+ '''
2321
+ jsii.create(self.__class__, self, [])
2322
+
2323
+ @jsii.member(jsii_name="createDynamoDbPolicyStatement")
2324
+ @builtins.classmethod
2325
+ def create_dynamo_db_policy_statement(
2326
+ cls,
2327
+ table_arn: builtins.str,
2328
+ actions: typing.Optional[typing.Sequence[builtins.str]] = None,
2329
+ ) -> _aws_cdk_aws_iam_ceddda9d.PolicyStatement:
2330
+ '''(experimental) Creates a policy statement for DynamoDB table access.
2331
+
2332
+ :param table_arn: The ARN of the DynamoDB table.
2333
+ :param actions: The DynamoDB actions to allow.
2334
+
2335
+ :return: PolicyStatement for DynamoDB access
2336
+
2337
+ :stability: experimental
2338
+ '''
2339
+ if __debug__:
2340
+ type_hints = typing.get_type_hints(_typecheckingstub__8fea74c9846ad0c5bdddcbfe10063247cb7bcf58aac91e0be80d1226246784e4)
2341
+ check_type(argname="argument table_arn", value=table_arn, expected_type=type_hints["table_arn"])
2342
+ check_type(argname="argument actions", value=actions, expected_type=type_hints["actions"])
2343
+ return typing.cast(_aws_cdk_aws_iam_ceddda9d.PolicyStatement, jsii.sinvoke(cls, "createDynamoDbPolicyStatement", [table_arn, actions]))
2344
+
2345
+ @jsii.member(jsii_name="createKmsPolicyStatement")
2346
+ @builtins.classmethod
2347
+ def create_kms_policy_statement(
2348
+ cls,
2349
+ key_arn: builtins.str,
2350
+ actions: typing.Optional[typing.Sequence[builtins.str]] = None,
2351
+ ) -> _aws_cdk_aws_iam_ceddda9d.PolicyStatement:
2352
+ '''(experimental) Creates a policy statement for KMS key access.
2353
+
2354
+ :param key_arn: The ARN of the KMS key.
2355
+ :param actions: The KMS actions to allow.
2356
+
2357
+ :return: PolicyStatement for KMS access
2358
+
2359
+ :stability: experimental
2360
+ '''
2361
+ if __debug__:
2068
2362
  type_hints = typing.get_type_hints(_typecheckingstub__ef86294be8c776ba98bebc269fab82304f75649efab35cf030d999168ba5d690)
2069
2363
  check_type(argname="argument key_arn", value=key_arn, expected_type=type_hints["key_arn"])
2070
2364
  check_type(argname="argument actions", value=actions, expected_type=type_hints["actions"])
@@ -3056,22 +3350,366 @@ class PowertoolsConfig(
3056
3350
  return typing.cast(typing.Mapping[builtins.str, builtins.str], jsii.sinvoke(cls, "generateDefaultLambdaConfig", [enable_observability, metrics_namespace, service_name]))
3057
3351
 
3058
3352
 
3059
- @jsii.implements(_aws_cdk_ceddda9d.IPropertyInjector)
3060
- class StateMachineObservabilityPropertyInjector(
3353
+ @jsii.implements(IAdapter)
3354
+ class QueuedS3Adapter(
3061
3355
  metaclass=jsii.JSIIMeta,
3062
- jsii_type="@cdklabs/cdk-appmod-catalog-blueprints.StateMachineObservabilityPropertyInjector",
3356
+ jsii_type="@cdklabs/cdk-appmod-catalog-blueprints.QueuedS3Adapter",
3063
3357
  ):
3064
- '''
3358
+ '''(experimental) This adapter allows the intelligent document processing workflow to be triggered by files that are uploaded into a S3 Bucket.
3359
+
3065
3360
  :stability: experimental
3066
3361
  '''
3067
3362
 
3068
3363
  def __init__(
3069
3364
  self,
3070
3365
  *,
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,
3073
- ) -> None:
3074
- '''
3366
+ bucket: typing.Optional[_aws_cdk_aws_s3_ceddda9d.Bucket] = None,
3367
+ dlq_max_receive_count: typing.Optional[jsii.Number] = None,
3368
+ failed_prefix: typing.Optional[builtins.str] = None,
3369
+ processed_prefix: typing.Optional[builtins.str] = None,
3370
+ queue_visibility_timeout: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
3371
+ raw_prefix: typing.Optional[builtins.str] = None,
3372
+ ) -> None:
3373
+ '''
3374
+ :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
3375
+ :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
3376
+ :param failed_prefix: (experimental) S3 prefix where the files that failed processing would be stored. Default: "failed/"
3377
+ :param processed_prefix: (experimental) S3 prefix where the processed files would be stored. Default: "processed/"
3378
+ :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)
3379
+ :param raw_prefix: (experimental) S3 prefix where the raw files would be stored. This serves as the trigger point for processing Default: "raw/"
3380
+
3381
+ :stability: experimental
3382
+ '''
3383
+ adapter_props = QueuedS3AdapterProps(
3384
+ bucket=bucket,
3385
+ dlq_max_receive_count=dlq_max_receive_count,
3386
+ failed_prefix=failed_prefix,
3387
+ processed_prefix=processed_prefix,
3388
+ queue_visibility_timeout=queue_visibility_timeout,
3389
+ raw_prefix=raw_prefix,
3390
+ )
3391
+
3392
+ jsii.create(self.__class__, self, [adapter_props])
3393
+
3394
+ @jsii.member(jsii_name="createFailedChain")
3395
+ def create_failed_chain(
3396
+ self,
3397
+ scope: _constructs_77d1e7e8.Construct,
3398
+ ) -> _aws_cdk_aws_stepfunctions_ceddda9d.Chain:
3399
+ '''(experimental) Create the adapter specific handler for failed processing.
3400
+
3401
+ :param scope: -
3402
+
3403
+ :stability: experimental
3404
+ '''
3405
+ if __debug__:
3406
+ type_hints = typing.get_type_hints(_typecheckingstub__b95daf862a9819daa9b25cecfc08214dc429ef07ac6de3920b5dea59e01616eb)
3407
+ check_type(argname="argument scope", value=scope, expected_type=type_hints["scope"])
3408
+ return typing.cast(_aws_cdk_aws_stepfunctions_ceddda9d.Chain, jsii.invoke(self, "createFailedChain", [scope]))
3409
+
3410
+ @jsii.member(jsii_name="createIngressTrigger")
3411
+ def create_ingress_trigger(
3412
+ self,
3413
+ scope: _constructs_77d1e7e8.Construct,
3414
+ state_machine: _aws_cdk_aws_stepfunctions_ceddda9d.StateMachine,
3415
+ *,
3416
+ document_processing_table: typing.Optional[_aws_cdk_aws_dynamodb_ceddda9d.Table] = None,
3417
+ enable_observability: typing.Optional[builtins.bool] = None,
3418
+ encryption_key: typing.Optional[_aws_cdk_aws_kms_ceddda9d.Key] = None,
3419
+ eventbridge_broker: typing.Optional[EventbridgeBroker] = None,
3420
+ ingress_adapter: typing.Optional[IAdapter] = None,
3421
+ network: typing.Optional[Network] = None,
3422
+ removal_policy: typing.Optional[_aws_cdk_ceddda9d.RemovalPolicy] = None,
3423
+ workflow_timeout: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
3424
+ log_group_data_protection: typing.Optional[typing.Union[LogGroupDataProtectionProps, typing.Dict[builtins.str, typing.Any]]] = None,
3425
+ metric_namespace: typing.Optional[builtins.str] = None,
3426
+ metric_service_name: typing.Optional[builtins.str] = None,
3427
+ ) -> typing.Mapping[builtins.str, typing.Any]:
3428
+ '''(experimental) Create resources that would receive the data and trigger the workflow.
3429
+
3430
+ Important: resource created should trigger the state machine
3431
+
3432
+ :param scope: -
3433
+ :param state_machine: -
3434
+ :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.
3435
+ :param enable_observability: (experimental) Enable logging and tracing for all supporting resource. Default: false
3436
+ :param encryption_key: (experimental) KMS key to be used. Default: A new key would be created
3437
+ :param eventbridge_broker: (experimental) Optional EventBridge broker for publishing custom events during processing. If not provided, no custom events will be sent out.
3438
+ :param ingress_adapter: (experimental) Adapter that defines how the document processing workflow is triggered. Default: QueuedS3Adapter
3439
+ :param network: (experimental) Resources that can run inside a VPC will follow the provided network configuration. Default: resources will run outside of a VPC
3440
+ :param removal_policy: (experimental) Removal policy for created resources (bucket, table, queue). Default: RemovalPolicy.DESTROY
3441
+ :param workflow_timeout: (experimental) Maximum execution time for the Step Functions workflow. Default: Duration.minutes(30)
3442
+ :param log_group_data_protection: (experimental) Data protection related configuration. Default: a new KMS key would be generated
3443
+ :param metric_namespace: (experimental) Business metric namespace. Default: would be defined per use case
3444
+ :param metric_service_name: (experimental) Business metric service name dimension. Default: would be defined per use case
3445
+
3446
+ :stability: experimental
3447
+ '''
3448
+ if __debug__:
3449
+ type_hints = typing.get_type_hints(_typecheckingstub__fb0e9adf74054c1b0a1974cab45642af57cb1651ef8052310a0229dae1eac178)
3450
+ check_type(argname="argument scope", value=scope, expected_type=type_hints["scope"])
3451
+ check_type(argname="argument state_machine", value=state_machine, expected_type=type_hints["state_machine"])
3452
+ props = BaseDocumentProcessingProps(
3453
+ document_processing_table=document_processing_table,
3454
+ enable_observability=enable_observability,
3455
+ encryption_key=encryption_key,
3456
+ eventbridge_broker=eventbridge_broker,
3457
+ ingress_adapter=ingress_adapter,
3458
+ network=network,
3459
+ removal_policy=removal_policy,
3460
+ workflow_timeout=workflow_timeout,
3461
+ log_group_data_protection=log_group_data_protection,
3462
+ metric_namespace=metric_namespace,
3463
+ metric_service_name=metric_service_name,
3464
+ )
3465
+
3466
+ return typing.cast(typing.Mapping[builtins.str, typing.Any], jsii.invoke(self, "createIngressTrigger", [scope, state_machine, props]))
3467
+
3468
+ @jsii.member(jsii_name="createSuccessChain")
3469
+ def create_success_chain(
3470
+ self,
3471
+ scope: _constructs_77d1e7e8.Construct,
3472
+ ) -> _aws_cdk_aws_stepfunctions_ceddda9d.Chain:
3473
+ '''(experimental) Create the adapter specific handler for successful processing.
3474
+
3475
+ :param scope: -
3476
+
3477
+ :stability: experimental
3478
+ '''
3479
+ if __debug__:
3480
+ type_hints = typing.get_type_hints(_typecheckingstub__76aa2fd577ace3b2507bf11a33f4d039ae5ac0af0d5d3edede30c4515a1a0986)
3481
+ check_type(argname="argument scope", value=scope, expected_type=type_hints["scope"])
3482
+ return typing.cast(_aws_cdk_aws_stepfunctions_ceddda9d.Chain, jsii.invoke(self, "createSuccessChain", [scope]))
3483
+
3484
+ @jsii.member(jsii_name="generateAdapterIAMPolicies")
3485
+ def generate_adapter_iam_policies(
3486
+ self,
3487
+ additional_iam_actions: typing.Optional[typing.Sequence[builtins.str]] = None,
3488
+ narrow_actions: typing.Optional[builtins.bool] = None,
3489
+ ) -> typing.List[_aws_cdk_aws_iam_ceddda9d.PolicyStatement]:
3490
+ '''(experimental) Generate IAM statements that can be used by other resources to access the storage.
3491
+
3492
+ :param additional_iam_actions: -
3493
+ :param narrow_actions: -
3494
+
3495
+ :stability: experimental
3496
+ '''
3497
+ if __debug__:
3498
+ type_hints = typing.get_type_hints(_typecheckingstub__308867c51abfbbc08d0fba9125db9b86eddda969dc95de8546e6f8cb242ee8a9)
3499
+ check_type(argname="argument additional_iam_actions", value=additional_iam_actions, expected_type=type_hints["additional_iam_actions"])
3500
+ check_type(argname="argument narrow_actions", value=narrow_actions, expected_type=type_hints["narrow_actions"])
3501
+ return typing.cast(typing.List[_aws_cdk_aws_iam_ceddda9d.PolicyStatement], jsii.invoke(self, "generateAdapterIAMPolicies", [additional_iam_actions, narrow_actions]))
3502
+
3503
+ @jsii.member(jsii_name="init")
3504
+ def init(
3505
+ self,
3506
+ scope: _constructs_77d1e7e8.Construct,
3507
+ *,
3508
+ document_processing_table: typing.Optional[_aws_cdk_aws_dynamodb_ceddda9d.Table] = None,
3509
+ enable_observability: typing.Optional[builtins.bool] = None,
3510
+ encryption_key: typing.Optional[_aws_cdk_aws_kms_ceddda9d.Key] = None,
3511
+ eventbridge_broker: typing.Optional[EventbridgeBroker] = None,
3512
+ ingress_adapter: typing.Optional[IAdapter] = None,
3513
+ network: typing.Optional[Network] = None,
3514
+ removal_policy: typing.Optional[_aws_cdk_ceddda9d.RemovalPolicy] = None,
3515
+ workflow_timeout: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
3516
+ log_group_data_protection: typing.Optional[typing.Union[LogGroupDataProtectionProps, typing.Dict[builtins.str, typing.Any]]] = None,
3517
+ metric_namespace: typing.Optional[builtins.str] = None,
3518
+ metric_service_name: typing.Optional[builtins.str] = None,
3519
+ ) -> None:
3520
+ '''(experimental) Initializes the adapter.
3521
+
3522
+ :param scope: -
3523
+ :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
+ :param enable_observability: (experimental) Enable logging and tracing for all supporting resource. Default: false
3525
+ :param encryption_key: (experimental) KMS key to be used. Default: A new key would be created
3526
+ :param eventbridge_broker: (experimental) Optional EventBridge broker for publishing custom events during processing. If not provided, no custom events will be sent out.
3527
+ :param ingress_adapter: (experimental) Adapter that defines how the document processing workflow is triggered. Default: QueuedS3Adapter
3528
+ :param network: (experimental) Resources that can run inside a VPC will follow the provided network configuration. Default: resources will run outside of a VPC
3529
+ :param removal_policy: (experimental) Removal policy for created resources (bucket, table, queue). Default: RemovalPolicy.DESTROY
3530
+ :param workflow_timeout: (experimental) Maximum execution time for the Step Functions workflow. Default: Duration.minutes(30)
3531
+ :param log_group_data_protection: (experimental) Data protection related configuration. Default: a new KMS key would be generated
3532
+ :param metric_namespace: (experimental) Business metric namespace. Default: would be defined per use case
3533
+ :param metric_service_name: (experimental) Business metric service name dimension. Default: would be defined per use case
3534
+
3535
+ :stability: experimental
3536
+ '''
3537
+ if __debug__:
3538
+ type_hints = typing.get_type_hints(_typecheckingstub__3fe79d0c4a3a771012bc95cea6a690155ea89fa70073f87564e65aad5cdfdb64)
3539
+ check_type(argname="argument scope", value=scope, expected_type=type_hints["scope"])
3540
+ props = BaseDocumentProcessingProps(
3541
+ document_processing_table=document_processing_table,
3542
+ enable_observability=enable_observability,
3543
+ encryption_key=encryption_key,
3544
+ eventbridge_broker=eventbridge_broker,
3545
+ ingress_adapter=ingress_adapter,
3546
+ network=network,
3547
+ removal_policy=removal_policy,
3548
+ workflow_timeout=workflow_timeout,
3549
+ log_group_data_protection=log_group_data_protection,
3550
+ metric_namespace=metric_namespace,
3551
+ metric_service_name=metric_service_name,
3552
+ )
3553
+
3554
+ return typing.cast(None, jsii.invoke(self, "init", [scope, props]))
3555
+
3556
+
3557
+ @jsii.data_type(
3558
+ jsii_type="@cdklabs/cdk-appmod-catalog-blueprints.QueuedS3AdapterProps",
3559
+ jsii_struct_bases=[],
3560
+ name_mapping={
3561
+ "bucket": "bucket",
3562
+ "dlq_max_receive_count": "dlqMaxReceiveCount",
3563
+ "failed_prefix": "failedPrefix",
3564
+ "processed_prefix": "processedPrefix",
3565
+ "queue_visibility_timeout": "queueVisibilityTimeout",
3566
+ "raw_prefix": "rawPrefix",
3567
+ },
3568
+ )
3569
+ class QueuedS3AdapterProps:
3570
+ def __init__(
3571
+ self,
3572
+ *,
3573
+ bucket: typing.Optional[_aws_cdk_aws_s3_ceddda9d.Bucket] = None,
3574
+ dlq_max_receive_count: typing.Optional[jsii.Number] = None,
3575
+ failed_prefix: typing.Optional[builtins.str] = None,
3576
+ processed_prefix: typing.Optional[builtins.str] = None,
3577
+ queue_visibility_timeout: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
3578
+ raw_prefix: typing.Optional[builtins.str] = None,
3579
+ ) -> None:
3580
+ '''(experimental) Props for the Queued S3 Adapter.
3581
+
3582
+ :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
3583
+ :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
3584
+ :param failed_prefix: (experimental) S3 prefix where the files that failed processing would be stored. Default: "failed/"
3585
+ :param processed_prefix: (experimental) S3 prefix where the processed files would be stored. Default: "processed/"
3586
+ :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)
3587
+ :param raw_prefix: (experimental) S3 prefix where the raw files would be stored. This serves as the trigger point for processing Default: "raw/"
3588
+
3589
+ :stability: experimental
3590
+ '''
3591
+ if __debug__:
3592
+ type_hints = typing.get_type_hints(_typecheckingstub__c2db7ec0d4b3e93062e1f20f29f9821e5a0fd526ecf05f9ccaa6db663fb1e8de)
3593
+ check_type(argname="argument bucket", value=bucket, expected_type=type_hints["bucket"])
3594
+ check_type(argname="argument dlq_max_receive_count", value=dlq_max_receive_count, expected_type=type_hints["dlq_max_receive_count"])
3595
+ check_type(argname="argument failed_prefix", value=failed_prefix, expected_type=type_hints["failed_prefix"])
3596
+ check_type(argname="argument processed_prefix", value=processed_prefix, expected_type=type_hints["processed_prefix"])
3597
+ check_type(argname="argument queue_visibility_timeout", value=queue_visibility_timeout, expected_type=type_hints["queue_visibility_timeout"])
3598
+ check_type(argname="argument raw_prefix", value=raw_prefix, expected_type=type_hints["raw_prefix"])
3599
+ self._values: typing.Dict[builtins.str, typing.Any] = {}
3600
+ if bucket is not None:
3601
+ self._values["bucket"] = bucket
3602
+ if dlq_max_receive_count is not None:
3603
+ self._values["dlq_max_receive_count"] = dlq_max_receive_count
3604
+ if failed_prefix is not None:
3605
+ self._values["failed_prefix"] = failed_prefix
3606
+ if processed_prefix is not None:
3607
+ self._values["processed_prefix"] = processed_prefix
3608
+ if queue_visibility_timeout is not None:
3609
+ self._values["queue_visibility_timeout"] = queue_visibility_timeout
3610
+ if raw_prefix is not None:
3611
+ self._values["raw_prefix"] = raw_prefix
3612
+
3613
+ @builtins.property
3614
+ def bucket(self) -> typing.Optional[_aws_cdk_aws_s3_ceddda9d.Bucket]:
3615
+ '''(experimental) S3 bucket for document storage with organized prefixes (raw/, processed/, failed/).
3616
+
3617
+ If not provided, a new bucket will be created with auto-delete enabled based on removalPolicy.
3618
+
3619
+ :default: create a new bucket
3620
+
3621
+ :stability: experimental
3622
+ '''
3623
+ result = self._values.get("bucket")
3624
+ return typing.cast(typing.Optional[_aws_cdk_aws_s3_ceddda9d.Bucket], result)
3625
+
3626
+ @builtins.property
3627
+ def dlq_max_receive_count(self) -> typing.Optional[jsii.Number]:
3628
+ '''(experimental) The number of times a message can be unsuccessfully dequeued before being moved to the dead-letter queue.
3629
+
3630
+ :default: 5
3631
+
3632
+ :stability: experimental
3633
+ '''
3634
+ result = self._values.get("dlq_max_receive_count")
3635
+ return typing.cast(typing.Optional[jsii.Number], result)
3636
+
3637
+ @builtins.property
3638
+ def failed_prefix(self) -> typing.Optional[builtins.str]:
3639
+ '''(experimental) S3 prefix where the files that failed processing would be stored.
3640
+
3641
+ :default: "failed/"
3642
+
3643
+ :stability: experimental
3644
+ '''
3645
+ result = self._values.get("failed_prefix")
3646
+ return typing.cast(typing.Optional[builtins.str], result)
3647
+
3648
+ @builtins.property
3649
+ def processed_prefix(self) -> typing.Optional[builtins.str]:
3650
+ '''(experimental) S3 prefix where the processed files would be stored.
3651
+
3652
+ :default: "processed/"
3653
+
3654
+ :stability: experimental
3655
+ '''
3656
+ result = self._values.get("processed_prefix")
3657
+ return typing.cast(typing.Optional[builtins.str], result)
3658
+
3659
+ @builtins.property
3660
+ def queue_visibility_timeout(self) -> typing.Optional[_aws_cdk_ceddda9d.Duration]:
3661
+ '''(experimental) SQS queue visibility timeout for processing messages.
3662
+
3663
+ Should be longer than expected processing time to prevent duplicate processing.
3664
+
3665
+ :default: Duration.seconds(300)
3666
+
3667
+ :stability: experimental
3668
+ '''
3669
+ result = self._values.get("queue_visibility_timeout")
3670
+ return typing.cast(typing.Optional[_aws_cdk_ceddda9d.Duration], result)
3671
+
3672
+ @builtins.property
3673
+ def raw_prefix(self) -> typing.Optional[builtins.str]:
3674
+ '''(experimental) S3 prefix where the raw files would be stored.
3675
+
3676
+ This serves as the trigger point for processing
3677
+
3678
+ :default: "raw/"
3679
+
3680
+ :stability: experimental
3681
+ '''
3682
+ result = self._values.get("raw_prefix")
3683
+ return typing.cast(typing.Optional[builtins.str], result)
3684
+
3685
+ def __eq__(self, rhs: typing.Any) -> builtins.bool:
3686
+ return isinstance(rhs, self.__class__) and rhs._values == self._values
3687
+
3688
+ def __ne__(self, rhs: typing.Any) -> builtins.bool:
3689
+ return not (rhs == self)
3690
+
3691
+ def __repr__(self) -> str:
3692
+ return "QueuedS3AdapterProps(%s)" % ", ".join(
3693
+ k + "=" + repr(v) for k, v in self._values.items()
3694
+ )
3695
+
3696
+
3697
+ @jsii.implements(_aws_cdk_ceddda9d.IPropertyInjector)
3698
+ class StateMachineObservabilityPropertyInjector(
3699
+ metaclass=jsii.JSIIMeta,
3700
+ jsii_type="@cdklabs/cdk-appmod-catalog-blueprints.StateMachineObservabilityPropertyInjector",
3701
+ ):
3702
+ '''
3703
+ :stability: experimental
3704
+ '''
3705
+
3706
+ def __init__(
3707
+ self,
3708
+ *,
3709
+ data_protection_identifiers: typing.Optional[typing.Sequence[_aws_cdk_aws_logs_ceddda9d.DataIdentifier]] = None,
3710
+ log_group_encryption_key: typing.Optional[_aws_cdk_aws_kms_ceddda9d.Key] = None,
3711
+ ) -> None:
3712
+ '''
3075
3713
  :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
3714
  :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
3077
3715
 
@@ -3167,14 +3805,12 @@ class BaseDocumentProcessing(
3167
3805
  scope: _constructs_77d1e7e8.Construct,
3168
3806
  id: builtins.str,
3169
3807
  *,
3170
- bucket: typing.Optional[_aws_cdk_aws_s3_ceddda9d.Bucket] = None,
3171
- dlq_max_receive_count: typing.Optional[jsii.Number] = None,
3172
3808
  document_processing_table: typing.Optional[_aws_cdk_aws_dynamodb_ceddda9d.Table] = None,
3173
3809
  enable_observability: typing.Optional[builtins.bool] = None,
3174
3810
  encryption_key: typing.Optional[_aws_cdk_aws_kms_ceddda9d.Key] = None,
3175
3811
  eventbridge_broker: typing.Optional[EventbridgeBroker] = None,
3812
+ ingress_adapter: typing.Optional[IAdapter] = None,
3176
3813
  network: typing.Optional[Network] = None,
3177
- queue_visibility_timeout: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
3178
3814
  removal_policy: typing.Optional[_aws_cdk_ceddda9d.RemovalPolicy] = None,
3179
3815
  workflow_timeout: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
3180
3816
  log_group_data_protection: typing.Optional[typing.Union[LogGroupDataProtectionProps, typing.Dict[builtins.str, typing.Any]]] = None,
@@ -3188,14 +3824,12 @@ class BaseDocumentProcessing(
3188
3824
 
3189
3825
  :param scope: - The scope in which to define this construct.
3190
3826
  :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
3827
  :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
3828
  :param enable_observability: (experimental) Enable logging and tracing for all supporting resource. Default: false
3195
3829
  :param encryption_key: (experimental) KMS key to be used. Default: A new key would be created
3196
3830
  :param eventbridge_broker: (experimental) Optional EventBridge broker for publishing custom events during processing. If not provided, no custom events will be sent out.
3831
+ :param ingress_adapter: (experimental) Adapter that defines how the document processing workflow is triggered. Default: QueuedS3Adapter
3197
3832
  :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
3833
  :param removal_policy: (experimental) Removal policy for created resources (bucket, table, queue). Default: RemovalPolicy.DESTROY
3200
3834
  :param workflow_timeout: (experimental) Maximum execution time for the Step Functions workflow. Default: Duration.minutes(30)
3201
3835
  :param log_group_data_protection: (experimental) Data protection related configuration. Default: a new KMS key would be generated
@@ -3209,14 +3843,12 @@ class BaseDocumentProcessing(
3209
3843
  check_type(argname="argument scope", value=scope, expected_type=type_hints["scope"])
3210
3844
  check_type(argname="argument id", value=id, expected_type=type_hints["id"])
3211
3845
  props = BaseDocumentProcessingProps(
3212
- bucket=bucket,
3213
- dlq_max_receive_count=dlq_max_receive_count,
3214
3846
  document_processing_table=document_processing_table,
3215
3847
  enable_observability=enable_observability,
3216
3848
  encryption_key=encryption_key,
3217
3849
  eventbridge_broker=eventbridge_broker,
3850
+ ingress_adapter=ingress_adapter,
3218
3851
  network=network,
3219
- queue_visibility_timeout=queue_visibility_timeout,
3220
3852
  removal_policy=removal_policy,
3221
3853
  workflow_timeout=workflow_timeout,
3222
3854
  log_group_data_protection=log_group_data_protection,
@@ -3273,21 +3905,6 @@ class BaseDocumentProcessing(
3273
3905
  check_type(argname="argument state_machine_id", value=state_machine_id, expected_type=type_hints["state_machine_id"])
3274
3906
  return typing.cast(_aws_cdk_aws_stepfunctions_ceddda9d.StateMachine, jsii.invoke(self, "handleStateMachineCreation", [state_machine_id]))
3275
3907
 
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
3908
  @jsii.member(jsii_name="metrics")
3292
3909
  def metrics(self) -> typing.List[_aws_cdk_aws_cloudwatch_ceddda9d.IMetric]:
3293
3910
  '''
@@ -3327,24 +3944,6 @@ class BaseDocumentProcessing(
3327
3944
  '''
3328
3945
  ...
3329
3946
 
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
3947
  @builtins.property
3349
3948
  @jsii.member(jsii_name="documentProcessingTable")
3350
3949
  def document_processing_table(self) -> _aws_cdk_aws_dynamodb_ceddda9d.Table:
@@ -3363,6 +3962,15 @@ class BaseDocumentProcessing(
3363
3962
  '''
3364
3963
  return typing.cast(_aws_cdk_aws_kms_ceddda9d.Key, jsii.get(self, "encryptionKey"))
3365
3964
 
3965
+ @builtins.property
3966
+ @jsii.member(jsii_name="ingressAdapter")
3967
+ def ingress_adapter(self) -> IAdapter:
3968
+ '''(experimental) Ingress adapter, responsible for triggering workflow.
3969
+
3970
+ :stability: experimental
3971
+ '''
3972
+ return typing.cast(IAdapter, jsii.get(self, "ingressAdapter"))
3973
+
3366
3974
  @builtins.property
3367
3975
  @jsii.member(jsii_name="logGroupDataProtection")
3368
3976
  def log_group_data_protection(self) -> LogGroupDataProtectionProps:
@@ -3392,24 +4000,6 @@ class BaseDocumentProcessing(
3392
4000
  '''
3393
4001
  return typing.cast(builtins.str, jsii.get(self, "metricServiceName"))
3394
4002
 
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
4003
 
3414
4004
  class _BaseDocumentProcessingProxy(BaseDocumentProcessing):
3415
4005
  @jsii.member(jsii_name="classificationStep")
@@ -3483,14 +4073,12 @@ typing.cast(typing.Any, BaseDocumentProcessing).__jsii_proxy_class__ = lambda :
3483
4073
  "log_group_data_protection": "logGroupDataProtection",
3484
4074
  "metric_namespace": "metricNamespace",
3485
4075
  "metric_service_name": "metricServiceName",
3486
- "bucket": "bucket",
3487
- "dlq_max_receive_count": "dlqMaxReceiveCount",
3488
4076
  "document_processing_table": "documentProcessingTable",
3489
4077
  "enable_observability": "enableObservability",
3490
4078
  "encryption_key": "encryptionKey",
3491
4079
  "eventbridge_broker": "eventbridgeBroker",
4080
+ "ingress_adapter": "ingressAdapter",
3492
4081
  "network": "network",
3493
- "queue_visibility_timeout": "queueVisibilityTimeout",
3494
4082
  "removal_policy": "removalPolicy",
3495
4083
  "workflow_timeout": "workflowTimeout",
3496
4084
  },
@@ -3502,14 +4090,12 @@ class BaseDocumentProcessingProps(ObservableProps):
3502
4090
  log_group_data_protection: typing.Optional[typing.Union[LogGroupDataProtectionProps, typing.Dict[builtins.str, typing.Any]]] = None,
3503
4091
  metric_namespace: typing.Optional[builtins.str] = None,
3504
4092
  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
4093
  document_processing_table: typing.Optional[_aws_cdk_aws_dynamodb_ceddda9d.Table] = None,
3508
4094
  enable_observability: typing.Optional[builtins.bool] = None,
3509
4095
  encryption_key: typing.Optional[_aws_cdk_aws_kms_ceddda9d.Key] = None,
3510
4096
  eventbridge_broker: typing.Optional[EventbridgeBroker] = None,
4097
+ ingress_adapter: typing.Optional[IAdapter] = None,
3511
4098
  network: typing.Optional[Network] = None,
3512
- queue_visibility_timeout: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
3513
4099
  removal_policy: typing.Optional[_aws_cdk_ceddda9d.RemovalPolicy] = None,
3514
4100
  workflow_timeout: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
3515
4101
  ) -> None:
@@ -3518,14 +4104,12 @@ class BaseDocumentProcessingProps(ObservableProps):
3518
4104
  :param log_group_data_protection: (experimental) Data protection related configuration. Default: a new KMS key would be generated
3519
4105
  :param metric_namespace: (experimental) Business metric namespace. Default: would be defined per use case
3520
4106
  :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
4107
  :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
4108
  :param enable_observability: (experimental) Enable logging and tracing for all supporting resource. Default: false
3525
4109
  :param encryption_key: (experimental) KMS key to be used. Default: A new key would be created
3526
4110
  :param eventbridge_broker: (experimental) Optional EventBridge broker for publishing custom events during processing. If not provided, no custom events will be sent out.
4111
+ :param ingress_adapter: (experimental) Adapter that defines how the document processing workflow is triggered. Default: QueuedS3Adapter
3527
4112
  :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
4113
  :param removal_policy: (experimental) Removal policy for created resources (bucket, table, queue). Default: RemovalPolicy.DESTROY
3530
4114
  :param workflow_timeout: (experimental) Maximum execution time for the Step Functions workflow. Default: Duration.minutes(30)
3531
4115
 
@@ -3538,14 +4122,12 @@ class BaseDocumentProcessingProps(ObservableProps):
3538
4122
  check_type(argname="argument log_group_data_protection", value=log_group_data_protection, expected_type=type_hints["log_group_data_protection"])
3539
4123
  check_type(argname="argument metric_namespace", value=metric_namespace, expected_type=type_hints["metric_namespace"])
3540
4124
  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
4125
  check_type(argname="argument document_processing_table", value=document_processing_table, expected_type=type_hints["document_processing_table"])
3544
4126
  check_type(argname="argument enable_observability", value=enable_observability, expected_type=type_hints["enable_observability"])
3545
4127
  check_type(argname="argument encryption_key", value=encryption_key, expected_type=type_hints["encryption_key"])
3546
4128
  check_type(argname="argument eventbridge_broker", value=eventbridge_broker, expected_type=type_hints["eventbridge_broker"])
4129
+ check_type(argname="argument ingress_adapter", value=ingress_adapter, expected_type=type_hints["ingress_adapter"])
3547
4130
  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
4131
  check_type(argname="argument removal_policy", value=removal_policy, expected_type=type_hints["removal_policy"])
3550
4132
  check_type(argname="argument workflow_timeout", value=workflow_timeout, expected_type=type_hints["workflow_timeout"])
3551
4133
  self._values: typing.Dict[builtins.str, typing.Any] = {}
@@ -3555,10 +4137,6 @@ class BaseDocumentProcessingProps(ObservableProps):
3555
4137
  self._values["metric_namespace"] = metric_namespace
3556
4138
  if metric_service_name is not None:
3557
4139
  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
4140
  if document_processing_table is not None:
3563
4141
  self._values["document_processing_table"] = document_processing_table
3564
4142
  if enable_observability is not None:
@@ -3567,10 +4145,10 @@ class BaseDocumentProcessingProps(ObservableProps):
3567
4145
  self._values["encryption_key"] = encryption_key
3568
4146
  if eventbridge_broker is not None:
3569
4147
  self._values["eventbridge_broker"] = eventbridge_broker
4148
+ if ingress_adapter is not None:
4149
+ self._values["ingress_adapter"] = ingress_adapter
3570
4150
  if network is not None:
3571
4151
  self._values["network"] = network
3572
- if queue_visibility_timeout is not None:
3573
- self._values["queue_visibility_timeout"] = queue_visibility_timeout
3574
4152
  if removal_policy is not None:
3575
4153
  self._values["removal_policy"] = removal_policy
3576
4154
  if workflow_timeout is not None:
@@ -3609,28 +4187,6 @@ class BaseDocumentProcessingProps(ObservableProps):
3609
4187
  result = self._values.get("metric_service_name")
3610
4188
  return typing.cast(typing.Optional[builtins.str], result)
3611
4189
 
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
4190
  @builtins.property
3635
4191
  def document_processing_table(
3636
4192
  self,
@@ -3678,28 +4234,26 @@ class BaseDocumentProcessingProps(ObservableProps):
3678
4234
  return typing.cast(typing.Optional[EventbridgeBroker], result)
3679
4235
 
3680
4236
  @builtins.property
3681
- def network(self) -> typing.Optional[Network]:
3682
- '''(experimental) Resources that can run inside a VPC will follow the provided network configuration.
4237
+ def ingress_adapter(self) -> typing.Optional[IAdapter]:
4238
+ '''(experimental) Adapter that defines how the document processing workflow is triggered.
3683
4239
 
3684
- :default: resources will run outside of a VPC
4240
+ :default: QueuedS3Adapter
3685
4241
 
3686
4242
  :stability: experimental
3687
4243
  '''
3688
- result = self._values.get("network")
3689
- return typing.cast(typing.Optional[Network], result)
4244
+ result = self._values.get("ingress_adapter")
4245
+ return typing.cast(typing.Optional[IAdapter], result)
3690
4246
 
3691
4247
  @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.
4248
+ def network(self) -> typing.Optional[Network]:
4249
+ '''(experimental) Resources that can run inside a VPC will follow the provided network configuration.
3696
4250
 
3697
- :default: Duration.seconds(300)
4251
+ :default: resources will run outside of a VPC
3698
4252
 
3699
4253
  :stability: experimental
3700
4254
  '''
3701
- result = self._values.get("queue_visibility_timeout")
3702
- return typing.cast(typing.Optional[_aws_cdk_ceddda9d.Duration], result)
4255
+ result = self._values.get("network")
4256
+ return typing.cast(typing.Optional[Network], result)
3703
4257
 
3704
4258
  @builtins.property
3705
4259
  def removal_policy(self) -> typing.Optional[_aws_cdk_ceddda9d.RemovalPolicy]:
@@ -3801,14 +4355,12 @@ class BedrockDocumentProcessing(
3801
4355
  processing_prompt: typing.Optional[builtins.str] = None,
3802
4356
  step_timeouts: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
3803
4357
  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
4358
  document_processing_table: typing.Optional[_aws_cdk_aws_dynamodb_ceddda9d.Table] = None,
3807
4359
  enable_observability: typing.Optional[builtins.bool] = None,
3808
4360
  encryption_key: typing.Optional[_aws_cdk_aws_kms_ceddda9d.Key] = None,
3809
4361
  eventbridge_broker: typing.Optional[EventbridgeBroker] = None,
4362
+ ingress_adapter: typing.Optional[IAdapter] = None,
3810
4363
  network: typing.Optional[Network] = None,
3811
- queue_visibility_timeout: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
3812
4364
  removal_policy: typing.Optional[_aws_cdk_ceddda9d.RemovalPolicy] = None,
3813
4365
  workflow_timeout: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
3814
4366
  log_group_data_protection: typing.Optional[typing.Union[LogGroupDataProtectionProps, typing.Dict[builtins.str, typing.Any]]] = None,
@@ -3832,14 +4384,12 @@ class BedrockDocumentProcessing(
3832
4384
  :param processing_prompt: (experimental) Custom prompt template for document extraction. Must include placeholder for document content and classification result. Default: DEFAULT_EXTRACTION_PROMPT
3833
4385
  :param step_timeouts: (experimental) Timeout for individual Step Functions tasks (classification, extraction, etc.). Default: Duration.minutes(5)
3834
4386
  :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
4387
  :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
4388
  :param enable_observability: (experimental) Enable logging and tracing for all supporting resource. Default: false
3839
4389
  :param encryption_key: (experimental) KMS key to be used. Default: A new key would be created
3840
4390
  :param eventbridge_broker: (experimental) Optional EventBridge broker for publishing custom events during processing. If not provided, no custom events will be sent out.
4391
+ :param ingress_adapter: (experimental) Adapter that defines how the document processing workflow is triggered. Default: QueuedS3Adapter
3841
4392
  :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
4393
  :param removal_policy: (experimental) Removal policy for created resources (bucket, table, queue). Default: RemovalPolicy.DESTROY
3844
4394
  :param workflow_timeout: (experimental) Maximum execution time for the Step Functions workflow. Default: Duration.minutes(30)
3845
4395
  :param log_group_data_protection: (experimental) Data protection related configuration. Default: a new KMS key would be generated
@@ -3862,14 +4412,12 @@ class BedrockDocumentProcessing(
3862
4412
  processing_prompt=processing_prompt,
3863
4413
  step_timeouts=step_timeouts,
3864
4414
  use_cross_region_inference=use_cross_region_inference,
3865
- bucket=bucket,
3866
- dlq_max_receive_count=dlq_max_receive_count,
3867
4415
  document_processing_table=document_processing_table,
3868
4416
  enable_observability=enable_observability,
3869
4417
  encryption_key=encryption_key,
3870
4418
  eventbridge_broker=eventbridge_broker,
4419
+ ingress_adapter=ingress_adapter,
3871
4420
  network=network,
3872
- queue_visibility_timeout=queue_visibility_timeout,
3873
4421
  removal_policy=removal_policy,
3874
4422
  workflow_timeout=workflow_timeout,
3875
4423
  log_group_data_protection=log_group_data_protection,
@@ -4032,14 +4580,12 @@ class BedrockDocumentProcessing(
4032
4580
  "log_group_data_protection": "logGroupDataProtection",
4033
4581
  "metric_namespace": "metricNamespace",
4034
4582
  "metric_service_name": "metricServiceName",
4035
- "bucket": "bucket",
4036
- "dlq_max_receive_count": "dlqMaxReceiveCount",
4037
4583
  "document_processing_table": "documentProcessingTable",
4038
4584
  "enable_observability": "enableObservability",
4039
4585
  "encryption_key": "encryptionKey",
4040
4586
  "eventbridge_broker": "eventbridgeBroker",
4587
+ "ingress_adapter": "ingressAdapter",
4041
4588
  "network": "network",
4042
- "queue_visibility_timeout": "queueVisibilityTimeout",
4043
4589
  "removal_policy": "removalPolicy",
4044
4590
  "workflow_timeout": "workflowTimeout",
4045
4591
  "classification_model_id": "classificationModelId",
@@ -4060,14 +4606,12 @@ class BedrockDocumentProcessingProps(BaseDocumentProcessingProps):
4060
4606
  log_group_data_protection: typing.Optional[typing.Union[LogGroupDataProtectionProps, typing.Dict[builtins.str, typing.Any]]] = None,
4061
4607
  metric_namespace: typing.Optional[builtins.str] = None,
4062
4608
  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
4609
  document_processing_table: typing.Optional[_aws_cdk_aws_dynamodb_ceddda9d.Table] = None,
4066
4610
  enable_observability: typing.Optional[builtins.bool] = None,
4067
4611
  encryption_key: typing.Optional[_aws_cdk_aws_kms_ceddda9d.Key] = None,
4068
4612
  eventbridge_broker: typing.Optional[EventbridgeBroker] = None,
4613
+ ingress_adapter: typing.Optional[IAdapter] = None,
4069
4614
  network: typing.Optional[Network] = None,
4070
- queue_visibility_timeout: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
4071
4615
  removal_policy: typing.Optional[_aws_cdk_ceddda9d.RemovalPolicy] = None,
4072
4616
  workflow_timeout: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
4073
4617
  classification_model_id: typing.Optional[_aws_cdk_aws_bedrock_ceddda9d.FoundationModelIdentifier] = None,
@@ -4087,14 +4631,12 @@ class BedrockDocumentProcessingProps(BaseDocumentProcessingProps):
4087
4631
  :param log_group_data_protection: (experimental) Data protection related configuration. Default: a new KMS key would be generated
4088
4632
  :param metric_namespace: (experimental) Business metric namespace. Default: would be defined per use case
4089
4633
  :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
4634
  :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
4635
  :param enable_observability: (experimental) Enable logging and tracing for all supporting resource. Default: false
4094
4636
  :param encryption_key: (experimental) KMS key to be used. Default: A new key would be created
4095
4637
  :param eventbridge_broker: (experimental) Optional EventBridge broker for publishing custom events during processing. If not provided, no custom events will be sent out.
4638
+ :param ingress_adapter: (experimental) Adapter that defines how the document processing workflow is triggered. Default: QueuedS3Adapter
4096
4639
  :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
4640
  :param removal_policy: (experimental) Removal policy for created resources (bucket, table, queue). Default: RemovalPolicy.DESTROY
4099
4641
  :param workflow_timeout: (experimental) Maximum execution time for the Step Functions workflow. Default: Duration.minutes(30)
4100
4642
  :param classification_model_id: (experimental) Bedrock foundation model for document classification step. Default: FoundationModelIdentifier.ANTHROPIC_CLAUDE_3_7_SONNET_20250219_V1_0
@@ -4116,14 +4658,12 @@ class BedrockDocumentProcessingProps(BaseDocumentProcessingProps):
4116
4658
  check_type(argname="argument log_group_data_protection", value=log_group_data_protection, expected_type=type_hints["log_group_data_protection"])
4117
4659
  check_type(argname="argument metric_namespace", value=metric_namespace, expected_type=type_hints["metric_namespace"])
4118
4660
  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
4661
  check_type(argname="argument document_processing_table", value=document_processing_table, expected_type=type_hints["document_processing_table"])
4122
4662
  check_type(argname="argument enable_observability", value=enable_observability, expected_type=type_hints["enable_observability"])
4123
4663
  check_type(argname="argument encryption_key", value=encryption_key, expected_type=type_hints["encryption_key"])
4124
4664
  check_type(argname="argument eventbridge_broker", value=eventbridge_broker, expected_type=type_hints["eventbridge_broker"])
4665
+ check_type(argname="argument ingress_adapter", value=ingress_adapter, expected_type=type_hints["ingress_adapter"])
4125
4666
  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
4667
  check_type(argname="argument removal_policy", value=removal_policy, expected_type=type_hints["removal_policy"])
4128
4668
  check_type(argname="argument workflow_timeout", value=workflow_timeout, expected_type=type_hints["workflow_timeout"])
4129
4669
  check_type(argname="argument classification_model_id", value=classification_model_id, expected_type=type_hints["classification_model_id"])
@@ -4142,10 +4682,6 @@ class BedrockDocumentProcessingProps(BaseDocumentProcessingProps):
4142
4682
  self._values["metric_namespace"] = metric_namespace
4143
4683
  if metric_service_name is not None:
4144
4684
  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
4685
  if document_processing_table is not None:
4150
4686
  self._values["document_processing_table"] = document_processing_table
4151
4687
  if enable_observability is not None:
@@ -4154,10 +4690,10 @@ class BedrockDocumentProcessingProps(BaseDocumentProcessingProps):
4154
4690
  self._values["encryption_key"] = encryption_key
4155
4691
  if eventbridge_broker is not None:
4156
4692
  self._values["eventbridge_broker"] = eventbridge_broker
4693
+ if ingress_adapter is not None:
4694
+ self._values["ingress_adapter"] = ingress_adapter
4157
4695
  if network is not None:
4158
4696
  self._values["network"] = network
4159
- if queue_visibility_timeout is not None:
4160
- self._values["queue_visibility_timeout"] = queue_visibility_timeout
4161
4697
  if removal_policy is not None:
4162
4698
  self._values["removal_policy"] = removal_policy
4163
4699
  if workflow_timeout is not None:
@@ -4214,28 +4750,6 @@ class BedrockDocumentProcessingProps(BaseDocumentProcessingProps):
4214
4750
  result = self._values.get("metric_service_name")
4215
4751
  return typing.cast(typing.Optional[builtins.str], result)
4216
4752
 
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
4753
  @builtins.property
4240
4754
  def document_processing_table(
4241
4755
  self,
@@ -4283,28 +4797,26 @@ class BedrockDocumentProcessingProps(BaseDocumentProcessingProps):
4283
4797
  return typing.cast(typing.Optional[EventbridgeBroker], result)
4284
4798
 
4285
4799
  @builtins.property
4286
- def network(self) -> typing.Optional[Network]:
4287
- '''(experimental) Resources that can run inside a VPC will follow the provided network configuration.
4800
+ def ingress_adapter(self) -> typing.Optional[IAdapter]:
4801
+ '''(experimental) Adapter that defines how the document processing workflow is triggered.
4288
4802
 
4289
- :default: resources will run outside of a VPC
4803
+ :default: QueuedS3Adapter
4290
4804
 
4291
4805
  :stability: experimental
4292
4806
  '''
4293
- result = self._values.get("network")
4294
- return typing.cast(typing.Optional[Network], result)
4807
+ result = self._values.get("ingress_adapter")
4808
+ return typing.cast(typing.Optional[IAdapter], result)
4295
4809
 
4296
4810
  @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.
4811
+ def network(self) -> typing.Optional[Network]:
4812
+ '''(experimental) Resources that can run inside a VPC will follow the provided network configuration.
4301
4813
 
4302
- :default: Duration.seconds(300)
4814
+ :default: resources will run outside of a VPC
4303
4815
 
4304
4816
  :stability: experimental
4305
4817
  '''
4306
- result = self._values.get("queue_visibility_timeout")
4307
- return typing.cast(typing.Optional[_aws_cdk_ceddda9d.Duration], result)
4818
+ result = self._values.get("network")
4819
+ return typing.cast(typing.Optional[Network], result)
4308
4820
 
4309
4821
  @builtins.property
4310
4822
  def removal_policy(self) -> typing.Optional[_aws_cdk_ceddda9d.RemovalPolicy]:
@@ -4481,14 +4993,12 @@ class AgenticDocumentProcessing(
4481
4993
  processing_prompt: typing.Optional[builtins.str] = None,
4482
4994
  step_timeouts: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
4483
4995
  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
4996
  document_processing_table: typing.Optional[_aws_cdk_aws_dynamodb_ceddda9d.Table] = None,
4487
4997
  enable_observability: typing.Optional[builtins.bool] = None,
4488
4998
  encryption_key: typing.Optional[_aws_cdk_aws_kms_ceddda9d.Key] = None,
4489
4999
  eventbridge_broker: typing.Optional[EventbridgeBroker] = None,
5000
+ ingress_adapter: typing.Optional[IAdapter] = None,
4490
5001
  network: typing.Optional[Network] = None,
4491
- queue_visibility_timeout: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
4492
5002
  removal_policy: typing.Optional[_aws_cdk_ceddda9d.RemovalPolicy] = None,
4493
5003
  workflow_timeout: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
4494
5004
  log_group_data_protection: typing.Optional[typing.Union[LogGroupDataProtectionProps, typing.Dict[builtins.str, typing.Any]]] = None,
@@ -4508,14 +5018,12 @@ class AgenticDocumentProcessing(
4508
5018
  :param processing_prompt: (experimental) Custom prompt template for document extraction. Must include placeholder for document content and classification result. Default: DEFAULT_EXTRACTION_PROMPT
4509
5019
  :param step_timeouts: (experimental) Timeout for individual Step Functions tasks (classification, extraction, etc.). Default: Duration.minutes(5)
4510
5020
  :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
5021
  :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
5022
  :param enable_observability: (experimental) Enable logging and tracing for all supporting resource. Default: false
4515
5023
  :param encryption_key: (experimental) KMS key to be used. Default: A new key would be created
4516
5024
  :param eventbridge_broker: (experimental) Optional EventBridge broker for publishing custom events during processing. If not provided, no custom events will be sent out.
5025
+ :param ingress_adapter: (experimental) Adapter that defines how the document processing workflow is triggered. Default: QueuedS3Adapter
4517
5026
  :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
5027
  :param removal_policy: (experimental) Removal policy for created resources (bucket, table, queue). Default: RemovalPolicy.DESTROY
4520
5028
  :param workflow_timeout: (experimental) Maximum execution time for the Step Functions workflow. Default: Duration.minutes(30)
4521
5029
  :param log_group_data_protection: (experimental) Data protection related configuration. Default: a new KMS key would be generated
@@ -4539,14 +5047,12 @@ class AgenticDocumentProcessing(
4539
5047
  processing_prompt=processing_prompt,
4540
5048
  step_timeouts=step_timeouts,
4541
5049
  use_cross_region_inference=use_cross_region_inference,
4542
- bucket=bucket,
4543
- dlq_max_receive_count=dlq_max_receive_count,
4544
5050
  document_processing_table=document_processing_table,
4545
5051
  enable_observability=enable_observability,
4546
5052
  encryption_key=encryption_key,
4547
5053
  eventbridge_broker=eventbridge_broker,
5054
+ ingress_adapter=ingress_adapter,
4548
5055
  network=network,
4549
- queue_visibility_timeout=queue_visibility_timeout,
4550
5056
  removal_policy=removal_policy,
4551
5057
  workflow_timeout=workflow_timeout,
4552
5058
  log_group_data_protection=log_group_data_protection,
@@ -4578,14 +5084,12 @@ class AgenticDocumentProcessing(
4578
5084
  "log_group_data_protection": "logGroupDataProtection",
4579
5085
  "metric_namespace": "metricNamespace",
4580
5086
  "metric_service_name": "metricServiceName",
4581
- "bucket": "bucket",
4582
- "dlq_max_receive_count": "dlqMaxReceiveCount",
4583
5087
  "document_processing_table": "documentProcessingTable",
4584
5088
  "enable_observability": "enableObservability",
4585
5089
  "encryption_key": "encryptionKey",
4586
5090
  "eventbridge_broker": "eventbridgeBroker",
5091
+ "ingress_adapter": "ingressAdapter",
4587
5092
  "network": "network",
4588
- "queue_visibility_timeout": "queueVisibilityTimeout",
4589
5093
  "removal_policy": "removalPolicy",
4590
5094
  "workflow_timeout": "workflowTimeout",
4591
5095
  "classification_model_id": "classificationModelId",
@@ -4607,14 +5111,12 @@ class AgenticDocumentProcessingProps(BedrockDocumentProcessingProps):
4607
5111
  log_group_data_protection: typing.Optional[typing.Union[LogGroupDataProtectionProps, typing.Dict[builtins.str, typing.Any]]] = None,
4608
5112
  metric_namespace: typing.Optional[builtins.str] = None,
4609
5113
  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
5114
  document_processing_table: typing.Optional[_aws_cdk_aws_dynamodb_ceddda9d.Table] = None,
4613
5115
  enable_observability: typing.Optional[builtins.bool] = None,
4614
5116
  encryption_key: typing.Optional[_aws_cdk_aws_kms_ceddda9d.Key] = None,
4615
5117
  eventbridge_broker: typing.Optional[EventbridgeBroker] = None,
5118
+ ingress_adapter: typing.Optional[IAdapter] = None,
4616
5119
  network: typing.Optional[Network] = None,
4617
- queue_visibility_timeout: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
4618
5120
  removal_policy: typing.Optional[_aws_cdk_ceddda9d.RemovalPolicy] = None,
4619
5121
  workflow_timeout: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
4620
5122
  classification_model_id: typing.Optional[_aws_cdk_aws_bedrock_ceddda9d.FoundationModelIdentifier] = None,
@@ -4632,14 +5134,12 @@ class AgenticDocumentProcessingProps(BedrockDocumentProcessingProps):
4632
5134
  :param log_group_data_protection: (experimental) Data protection related configuration. Default: a new KMS key would be generated
4633
5135
  :param metric_namespace: (experimental) Business metric namespace. Default: would be defined per use case
4634
5136
  :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
5137
  :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
5138
  :param enable_observability: (experimental) Enable logging and tracing for all supporting resource. Default: false
4639
5139
  :param encryption_key: (experimental) KMS key to be used. Default: A new key would be created
4640
5140
  :param eventbridge_broker: (experimental) Optional EventBridge broker for publishing custom events during processing. If not provided, no custom events will be sent out.
5141
+ :param ingress_adapter: (experimental) Adapter that defines how the document processing workflow is triggered. Default: QueuedS3Adapter
4641
5142
  :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
5143
  :param removal_policy: (experimental) Removal policy for created resources (bucket, table, queue). Default: RemovalPolicy.DESTROY
4644
5144
  :param workflow_timeout: (experimental) Maximum execution time for the Step Functions workflow. Default: Duration.minutes(30)
4645
5145
  :param classification_model_id: (experimental) Bedrock foundation model for document classification step. Default: FoundationModelIdentifier.ANTHROPIC_CLAUDE_3_7_SONNET_20250219_V1_0
@@ -4664,14 +5164,12 @@ class AgenticDocumentProcessingProps(BedrockDocumentProcessingProps):
4664
5164
  check_type(argname="argument log_group_data_protection", value=log_group_data_protection, expected_type=type_hints["log_group_data_protection"])
4665
5165
  check_type(argname="argument metric_namespace", value=metric_namespace, expected_type=type_hints["metric_namespace"])
4666
5166
  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
5167
  check_type(argname="argument document_processing_table", value=document_processing_table, expected_type=type_hints["document_processing_table"])
4670
5168
  check_type(argname="argument enable_observability", value=enable_observability, expected_type=type_hints["enable_observability"])
4671
5169
  check_type(argname="argument encryption_key", value=encryption_key, expected_type=type_hints["encryption_key"])
4672
5170
  check_type(argname="argument eventbridge_broker", value=eventbridge_broker, expected_type=type_hints["eventbridge_broker"])
5171
+ check_type(argname="argument ingress_adapter", value=ingress_adapter, expected_type=type_hints["ingress_adapter"])
4673
5172
  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
5173
  check_type(argname="argument removal_policy", value=removal_policy, expected_type=type_hints["removal_policy"])
4676
5174
  check_type(argname="argument workflow_timeout", value=workflow_timeout, expected_type=type_hints["workflow_timeout"])
4677
5175
  check_type(argname="argument classification_model_id", value=classification_model_id, expected_type=type_hints["classification_model_id"])
@@ -4691,10 +5189,6 @@ class AgenticDocumentProcessingProps(BedrockDocumentProcessingProps):
4691
5189
  self._values["metric_namespace"] = metric_namespace
4692
5190
  if metric_service_name is not None:
4693
5191
  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
5192
  if document_processing_table is not None:
4699
5193
  self._values["document_processing_table"] = document_processing_table
4700
5194
  if enable_observability is not None:
@@ -4703,10 +5197,10 @@ class AgenticDocumentProcessingProps(BedrockDocumentProcessingProps):
4703
5197
  self._values["encryption_key"] = encryption_key
4704
5198
  if eventbridge_broker is not None:
4705
5199
  self._values["eventbridge_broker"] = eventbridge_broker
5200
+ if ingress_adapter is not None:
5201
+ self._values["ingress_adapter"] = ingress_adapter
4706
5202
  if network is not None:
4707
5203
  self._values["network"] = network
4708
- if queue_visibility_timeout is not None:
4709
- self._values["queue_visibility_timeout"] = queue_visibility_timeout
4710
5204
  if removal_policy is not None:
4711
5205
  self._values["removal_policy"] = removal_policy
4712
5206
  if workflow_timeout is not None:
@@ -4765,28 +5259,6 @@ class AgenticDocumentProcessingProps(BedrockDocumentProcessingProps):
4765
5259
  result = self._values.get("metric_service_name")
4766
5260
  return typing.cast(typing.Optional[builtins.str], result)
4767
5261
 
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
5262
  @builtins.property
4791
5263
  def document_processing_table(
4792
5264
  self,
@@ -4834,28 +5306,26 @@ class AgenticDocumentProcessingProps(BedrockDocumentProcessingProps):
4834
5306
  return typing.cast(typing.Optional[EventbridgeBroker], result)
4835
5307
 
4836
5308
  @builtins.property
4837
- def network(self) -> typing.Optional[Network]:
4838
- '''(experimental) Resources that can run inside a VPC will follow the provided network configuration.
5309
+ def ingress_adapter(self) -> typing.Optional[IAdapter]:
5310
+ '''(experimental) Adapter that defines how the document processing workflow is triggered.
4839
5311
 
4840
- :default: resources will run outside of a VPC
5312
+ :default: QueuedS3Adapter
4841
5313
 
4842
5314
  :stability: experimental
4843
5315
  '''
4844
- result = self._values.get("network")
4845
- return typing.cast(typing.Optional[Network], result)
5316
+ result = self._values.get("ingress_adapter")
5317
+ return typing.cast(typing.Optional[IAdapter], result)
4846
5318
 
4847
5319
  @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.
5320
+ def network(self) -> typing.Optional[Network]:
5321
+ '''(experimental) Resources that can run inside a VPC will follow the provided network configuration.
4852
5322
 
4853
- :default: Duration.seconds(300)
5323
+ :default: resources will run outside of a VPC
4854
5324
 
4855
5325
  :stability: experimental
4856
5326
  '''
4857
- result = self._values.get("queue_visibility_timeout")
4858
- return typing.cast(typing.Optional[_aws_cdk_ceddda9d.Duration], result)
5327
+ result = self._values.get("network")
5328
+ return typing.cast(typing.Optional[Network], result)
4859
5329
 
4860
5330
  @builtins.property
4861
5331
  def removal_policy(self) -> typing.Optional[_aws_cdk_ceddda9d.RemovalPolicy]:
@@ -5034,14 +5504,16 @@ __all__ = [
5034
5504
  "DataLoaderProps",
5035
5505
  "DatabaseConfig",
5036
5506
  "DatabaseEngine",
5507
+ "DefaultDocumentProcessingConfig",
5508
+ "DefaultObservabilityConfig",
5037
5509
  "DefaultRuntimes",
5038
- "DocumentProcessingPrefix",
5039
5510
  "EventbridgeBroker",
5040
5511
  "EventbridgeBrokerProps",
5041
5512
  "FileInput",
5042
5513
  "FileType",
5043
5514
  "Frontend",
5044
5515
  "FrontendProps",
5516
+ "IAdapter",
5045
5517
  "IObservable",
5046
5518
  "LambdaIamUtils",
5047
5519
  "LambdaIamUtilsStackInfo",
@@ -5053,6 +5525,8 @@ __all__ = [
5053
5525
  "NetworkProps",
5054
5526
  "ObservableProps",
5055
5527
  "PowertoolsConfig",
5528
+ "QueuedS3Adapter",
5529
+ "QueuedS3AdapterProps",
5056
5530
  "StateMachineObservabilityPropertyInjector",
5057
5531
  ]
5058
5532
 
@@ -5108,6 +5582,7 @@ def _typecheckingstub__e1a82500ee072f393cd9a2ada2f9a3434219c7a51186f26fbba3061bd
5108
5582
  *,
5109
5583
  agent_system_prompt: typing.Optional[builtins.str] = None,
5110
5584
  lambda_layers: typing.Optional[typing.Sequence[_aws_cdk_aws_lambda_ceddda9d.LayerVersion]] = None,
5585
+ tools_bucket: typing.Optional[_aws_cdk_aws_s3_ceddda9d.Bucket] = None,
5111
5586
  tools_location: typing.Optional[typing.Sequence[builtins.str]] = None,
5112
5587
  ) -> None:
5113
5588
  """Type checking stubs"""
@@ -5251,6 +5726,62 @@ def _typecheckingstub__2648a6f2c6f02177f5b324264b7de549aa23b0c1d93c8d6cccbc307a8
5251
5726
  """Type checking stubs"""
5252
5727
  pass
5253
5728
 
5729
+ def _typecheckingstub__5998f6c7e16512d92cd00097e77d737333304685208eb36a522c156f8378a9e7(
5730
+ scope: _constructs_77d1e7e8.Construct,
5731
+ ) -> None:
5732
+ """Type checking stubs"""
5733
+ pass
5734
+
5735
+ def _typecheckingstub__b61e74ddd8982f4b30ae59307c9fb3adaff26122ddc7f5faabc2cc8e1e2da034(
5736
+ scope: _constructs_77d1e7e8.Construct,
5737
+ state_machine: _aws_cdk_aws_stepfunctions_ceddda9d.StateMachine,
5738
+ *,
5739
+ document_processing_table: typing.Optional[_aws_cdk_aws_dynamodb_ceddda9d.Table] = None,
5740
+ enable_observability: typing.Optional[builtins.bool] = None,
5741
+ encryption_key: typing.Optional[_aws_cdk_aws_kms_ceddda9d.Key] = None,
5742
+ eventbridge_broker: typing.Optional[EventbridgeBroker] = None,
5743
+ ingress_adapter: typing.Optional[IAdapter] = None,
5744
+ network: typing.Optional[Network] = None,
5745
+ removal_policy: typing.Optional[_aws_cdk_ceddda9d.RemovalPolicy] = None,
5746
+ workflow_timeout: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
5747
+ log_group_data_protection: typing.Optional[typing.Union[LogGroupDataProtectionProps, typing.Dict[builtins.str, typing.Any]]] = None,
5748
+ metric_namespace: typing.Optional[builtins.str] = None,
5749
+ metric_service_name: typing.Optional[builtins.str] = None,
5750
+ ) -> None:
5751
+ """Type checking stubs"""
5752
+ pass
5753
+
5754
+ def _typecheckingstub__cd0aad7a5879633fca8d89cbf92e8f5a13e31615116036f29a82a58c1bb4727d(
5755
+ scope: _constructs_77d1e7e8.Construct,
5756
+ ) -> None:
5757
+ """Type checking stubs"""
5758
+ pass
5759
+
5760
+ def _typecheckingstub__82a45114a0ff76d4b9d091edd6674d4e762dc5ca19631d61579cf1aa47e30b5e(
5761
+ additional_iam_actions: typing.Optional[typing.Sequence[builtins.str]] = None,
5762
+ narrow_actions: typing.Optional[builtins.bool] = None,
5763
+ ) -> None:
5764
+ """Type checking stubs"""
5765
+ pass
5766
+
5767
+ def _typecheckingstub__17f7e7f35ea8e49cf6ded248435aa1e1dcf416e61c549f3e7b74baad3ac399e7(
5768
+ scope: _constructs_77d1e7e8.Construct,
5769
+ *,
5770
+ document_processing_table: typing.Optional[_aws_cdk_aws_dynamodb_ceddda9d.Table] = None,
5771
+ enable_observability: typing.Optional[builtins.bool] = None,
5772
+ encryption_key: typing.Optional[_aws_cdk_aws_kms_ceddda9d.Key] = None,
5773
+ eventbridge_broker: typing.Optional[EventbridgeBroker] = None,
5774
+ ingress_adapter: typing.Optional[IAdapter] = None,
5775
+ network: typing.Optional[Network] = None,
5776
+ removal_policy: typing.Optional[_aws_cdk_ceddda9d.RemovalPolicy] = None,
5777
+ workflow_timeout: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
5778
+ log_group_data_protection: typing.Optional[typing.Union[LogGroupDataProtectionProps, typing.Dict[builtins.str, typing.Any]]] = None,
5779
+ metric_namespace: typing.Optional[builtins.str] = None,
5780
+ metric_service_name: typing.Optional[builtins.str] = None,
5781
+ ) -> None:
5782
+ """Type checking stubs"""
5783
+ pass
5784
+
5254
5785
  def _typecheckingstub__8fea74c9846ad0c5bdddcbfe10063247cb7bcf58aac91e0be80d1226246784e4(
5255
5786
  table_arn: builtins.str,
5256
5787
  actions: typing.Optional[typing.Sequence[builtins.str]] = None,
@@ -5414,6 +5945,74 @@ def _typecheckingstub__e065c545d4fce5c4fc2579c3efea8203f50b6d3c8b39aa1595ea3577d
5414
5945
  """Type checking stubs"""
5415
5946
  pass
5416
5947
 
5948
+ def _typecheckingstub__b95daf862a9819daa9b25cecfc08214dc429ef07ac6de3920b5dea59e01616eb(
5949
+ scope: _constructs_77d1e7e8.Construct,
5950
+ ) -> None:
5951
+ """Type checking stubs"""
5952
+ pass
5953
+
5954
+ def _typecheckingstub__fb0e9adf74054c1b0a1974cab45642af57cb1651ef8052310a0229dae1eac178(
5955
+ scope: _constructs_77d1e7e8.Construct,
5956
+ state_machine: _aws_cdk_aws_stepfunctions_ceddda9d.StateMachine,
5957
+ *,
5958
+ document_processing_table: typing.Optional[_aws_cdk_aws_dynamodb_ceddda9d.Table] = None,
5959
+ enable_observability: typing.Optional[builtins.bool] = None,
5960
+ encryption_key: typing.Optional[_aws_cdk_aws_kms_ceddda9d.Key] = None,
5961
+ eventbridge_broker: typing.Optional[EventbridgeBroker] = None,
5962
+ ingress_adapter: typing.Optional[IAdapter] = None,
5963
+ network: typing.Optional[Network] = None,
5964
+ removal_policy: typing.Optional[_aws_cdk_ceddda9d.RemovalPolicy] = None,
5965
+ workflow_timeout: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
5966
+ log_group_data_protection: typing.Optional[typing.Union[LogGroupDataProtectionProps, typing.Dict[builtins.str, typing.Any]]] = None,
5967
+ metric_namespace: typing.Optional[builtins.str] = None,
5968
+ metric_service_name: typing.Optional[builtins.str] = None,
5969
+ ) -> None:
5970
+ """Type checking stubs"""
5971
+ pass
5972
+
5973
+ def _typecheckingstub__76aa2fd577ace3b2507bf11a33f4d039ae5ac0af0d5d3edede30c4515a1a0986(
5974
+ scope: _constructs_77d1e7e8.Construct,
5975
+ ) -> None:
5976
+ """Type checking stubs"""
5977
+ pass
5978
+
5979
+ def _typecheckingstub__308867c51abfbbc08d0fba9125db9b86eddda969dc95de8546e6f8cb242ee8a9(
5980
+ additional_iam_actions: typing.Optional[typing.Sequence[builtins.str]] = None,
5981
+ narrow_actions: typing.Optional[builtins.bool] = None,
5982
+ ) -> None:
5983
+ """Type checking stubs"""
5984
+ pass
5985
+
5986
+ def _typecheckingstub__3fe79d0c4a3a771012bc95cea6a690155ea89fa70073f87564e65aad5cdfdb64(
5987
+ scope: _constructs_77d1e7e8.Construct,
5988
+ *,
5989
+ document_processing_table: typing.Optional[_aws_cdk_aws_dynamodb_ceddda9d.Table] = None,
5990
+ enable_observability: typing.Optional[builtins.bool] = None,
5991
+ encryption_key: typing.Optional[_aws_cdk_aws_kms_ceddda9d.Key] = None,
5992
+ eventbridge_broker: typing.Optional[EventbridgeBroker] = None,
5993
+ ingress_adapter: typing.Optional[IAdapter] = None,
5994
+ network: typing.Optional[Network] = None,
5995
+ removal_policy: typing.Optional[_aws_cdk_ceddda9d.RemovalPolicy] = None,
5996
+ workflow_timeout: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
5997
+ log_group_data_protection: typing.Optional[typing.Union[LogGroupDataProtectionProps, typing.Dict[builtins.str, typing.Any]]] = None,
5998
+ metric_namespace: typing.Optional[builtins.str] = None,
5999
+ metric_service_name: typing.Optional[builtins.str] = None,
6000
+ ) -> None:
6001
+ """Type checking stubs"""
6002
+ pass
6003
+
6004
+ def _typecheckingstub__c2db7ec0d4b3e93062e1f20f29f9821e5a0fd526ecf05f9ccaa6db663fb1e8de(
6005
+ *,
6006
+ bucket: typing.Optional[_aws_cdk_aws_s3_ceddda9d.Bucket] = None,
6007
+ dlq_max_receive_count: typing.Optional[jsii.Number] = None,
6008
+ failed_prefix: typing.Optional[builtins.str] = None,
6009
+ processed_prefix: typing.Optional[builtins.str] = None,
6010
+ queue_visibility_timeout: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
6011
+ raw_prefix: typing.Optional[builtins.str] = None,
6012
+ ) -> None:
6013
+ """Type checking stubs"""
6014
+ pass
6015
+
5417
6016
  def _typecheckingstub__011b55520774139b52c951d9cc59273f686e377b5415ee42a57650da571d43e7(
5418
6017
  original_props: typing.Any,
5419
6018
  *,
@@ -5427,14 +6026,12 @@ def _typecheckingstub__117c249a26f3e7532983afc9123fadff3e20effcc69408df0f45a03eb
5427
6026
  scope: _constructs_77d1e7e8.Construct,
5428
6027
  id: builtins.str,
5429
6028
  *,
5430
- bucket: typing.Optional[_aws_cdk_aws_s3_ceddda9d.Bucket] = None,
5431
- dlq_max_receive_count: typing.Optional[jsii.Number] = None,
5432
6029
  document_processing_table: typing.Optional[_aws_cdk_aws_dynamodb_ceddda9d.Table] = None,
5433
6030
  enable_observability: typing.Optional[builtins.bool] = None,
5434
6031
  encryption_key: typing.Optional[_aws_cdk_aws_kms_ceddda9d.Key] = None,
5435
6032
  eventbridge_broker: typing.Optional[EventbridgeBroker] = None,
6033
+ ingress_adapter: typing.Optional[IAdapter] = None,
5436
6034
  network: typing.Optional[Network] = None,
5437
- queue_visibility_timeout: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
5438
6035
  removal_policy: typing.Optional[_aws_cdk_ceddda9d.RemovalPolicy] = None,
5439
6036
  workflow_timeout: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
5440
6037
  log_group_data_protection: typing.Optional[typing.Union[LogGroupDataProtectionProps, typing.Dict[builtins.str, typing.Any]]] = None,
@@ -5450,25 +6047,17 @@ def _typecheckingstub__900aa9de379313a2a9a3e24a2901f803dec0a30dde90b7255d9f180e2
5450
6047
  """Type checking stubs"""
5451
6048
  pass
5452
6049
 
5453
- def _typecheckingstub__51565b317b75c58d9a9fb26bd3a0b7c471bf8844bfd0cc94dd43d1850d7ab957(
5454
- state_machine: _aws_cdk_aws_stepfunctions_ceddda9d.StateMachine,
5455
- ) -> None:
5456
- """Type checking stubs"""
5457
- pass
5458
-
5459
6050
  def _typecheckingstub__75e07bce24d48571be58cad69f751b10a17a738fdb9db601acdc689ff1e6da22(
5460
6051
  *,
5461
6052
  log_group_data_protection: typing.Optional[typing.Union[LogGroupDataProtectionProps, typing.Dict[builtins.str, typing.Any]]] = None,
5462
6053
  metric_namespace: typing.Optional[builtins.str] = None,
5463
6054
  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
6055
  document_processing_table: typing.Optional[_aws_cdk_aws_dynamodb_ceddda9d.Table] = None,
5467
6056
  enable_observability: typing.Optional[builtins.bool] = None,
5468
6057
  encryption_key: typing.Optional[_aws_cdk_aws_kms_ceddda9d.Key] = None,
5469
6058
  eventbridge_broker: typing.Optional[EventbridgeBroker] = None,
6059
+ ingress_adapter: typing.Optional[IAdapter] = None,
5470
6060
  network: typing.Optional[Network] = None,
5471
- queue_visibility_timeout: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
5472
6061
  removal_policy: typing.Optional[_aws_cdk_ceddda9d.RemovalPolicy] = None,
5473
6062
  workflow_timeout: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
5474
6063
  ) -> None:
@@ -5488,14 +6077,12 @@ def _typecheckingstub__7393f9c6b2af93f7d8668b32cec54ba8c77259644ab01f57b3fbd50c7
5488
6077
  processing_prompt: typing.Optional[builtins.str] = None,
5489
6078
  step_timeouts: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
5490
6079
  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
6080
  document_processing_table: typing.Optional[_aws_cdk_aws_dynamodb_ceddda9d.Table] = None,
5494
6081
  enable_observability: typing.Optional[builtins.bool] = None,
5495
6082
  encryption_key: typing.Optional[_aws_cdk_aws_kms_ceddda9d.Key] = None,
5496
6083
  eventbridge_broker: typing.Optional[EventbridgeBroker] = None,
6084
+ ingress_adapter: typing.Optional[IAdapter] = None,
5497
6085
  network: typing.Optional[Network] = None,
5498
- queue_visibility_timeout: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
5499
6086
  removal_policy: typing.Optional[_aws_cdk_ceddda9d.RemovalPolicy] = None,
5500
6087
  workflow_timeout: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
5501
6088
  log_group_data_protection: typing.Optional[typing.Union[LogGroupDataProtectionProps, typing.Dict[builtins.str, typing.Any]]] = None,
@@ -5517,14 +6104,12 @@ def _typecheckingstub__9606a6418d69bde20176ec33b27eaa22c0e0cdb6b105d382e9d038566
5517
6104
  log_group_data_protection: typing.Optional[typing.Union[LogGroupDataProtectionProps, typing.Dict[builtins.str, typing.Any]]] = None,
5518
6105
  metric_namespace: typing.Optional[builtins.str] = None,
5519
6106
  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
6107
  document_processing_table: typing.Optional[_aws_cdk_aws_dynamodb_ceddda9d.Table] = None,
5523
6108
  enable_observability: typing.Optional[builtins.bool] = None,
5524
6109
  encryption_key: typing.Optional[_aws_cdk_aws_kms_ceddda9d.Key] = None,
5525
6110
  eventbridge_broker: typing.Optional[EventbridgeBroker] = None,
6111
+ ingress_adapter: typing.Optional[IAdapter] = None,
5526
6112
  network: typing.Optional[Network] = None,
5527
- queue_visibility_timeout: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
5528
6113
  removal_policy: typing.Optional[_aws_cdk_ceddda9d.RemovalPolicy] = None,
5529
6114
  workflow_timeout: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
5530
6115
  classification_model_id: typing.Optional[_aws_cdk_aws_bedrock_ceddda9d.FoundationModelIdentifier] = None,
@@ -5554,14 +6139,12 @@ def _typecheckingstub__b7f396236f637ec7234d81b355cf773497392b537455f3d888c4b7170
5554
6139
  processing_prompt: typing.Optional[builtins.str] = None,
5555
6140
  step_timeouts: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
5556
6141
  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
6142
  document_processing_table: typing.Optional[_aws_cdk_aws_dynamodb_ceddda9d.Table] = None,
5560
6143
  enable_observability: typing.Optional[builtins.bool] = None,
5561
6144
  encryption_key: typing.Optional[_aws_cdk_aws_kms_ceddda9d.Key] = None,
5562
6145
  eventbridge_broker: typing.Optional[EventbridgeBroker] = None,
6146
+ ingress_adapter: typing.Optional[IAdapter] = None,
5563
6147
  network: typing.Optional[Network] = None,
5564
- queue_visibility_timeout: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
5565
6148
  removal_policy: typing.Optional[_aws_cdk_ceddda9d.RemovalPolicy] = None,
5566
6149
  workflow_timeout: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
5567
6150
  log_group_data_protection: typing.Optional[typing.Union[LogGroupDataProtectionProps, typing.Dict[builtins.str, typing.Any]]] = None,
@@ -5576,14 +6159,12 @@ def _typecheckingstub__da9ccab0035a06d18b5aa3f2de69201b3bbd6e30f7707a291977a0e4f
5576
6159
  log_group_data_protection: typing.Optional[typing.Union[LogGroupDataProtectionProps, typing.Dict[builtins.str, typing.Any]]] = None,
5577
6160
  metric_namespace: typing.Optional[builtins.str] = None,
5578
6161
  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
6162
  document_processing_table: typing.Optional[_aws_cdk_aws_dynamodb_ceddda9d.Table] = None,
5582
6163
  enable_observability: typing.Optional[builtins.bool] = None,
5583
6164
  encryption_key: typing.Optional[_aws_cdk_aws_kms_ceddda9d.Key] = None,
5584
6165
  eventbridge_broker: typing.Optional[EventbridgeBroker] = None,
6166
+ ingress_adapter: typing.Optional[IAdapter] = None,
5585
6167
  network: typing.Optional[Network] = None,
5586
- queue_visibility_timeout: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
5587
6168
  removal_policy: typing.Optional[_aws_cdk_ceddda9d.RemovalPolicy] = None,
5588
6169
  workflow_timeout: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
5589
6170
  classification_model_id: typing.Optional[_aws_cdk_aws_bedrock_ceddda9d.FoundationModelIdentifier] = None,
@@ -5599,3 +6180,6 @@ def _typecheckingstub__da9ccab0035a06d18b5aa3f2de69201b3bbd6e30f7707a291977a0e4f
5599
6180
  ) -> None:
5600
6181
  """Type checking stubs"""
5601
6182
  pass
6183
+
6184
+ for cls in [IAdapter, IObservable]:
6185
+ typing.cast(typing.Any, cls).__protocol_attrs__ = typing.cast(typing.Any, cls).__protocol_attrs__ - set(['__jsii_proxy_class__', '__jsii_type__'])