@cdklabs/cdk-appmod-catalog-blueprints 1.0.0
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.
- package/.jsii +8644 -0
- package/LICENSE +202 -0
- package/README.md +212 -0
- package/lib/document-processing/agentic-document-processing.d.ts +16 -0
- package/lib/document-processing/agentic-document-processing.js +90 -0
- package/lib/document-processing/base-document-processing.d.ts +189 -0
- package/lib/document-processing/base-document-processing.js +509 -0
- package/lib/document-processing/bedrock-document-processing.d.ts +167 -0
- package/lib/document-processing/bedrock-document-processing.js +297 -0
- package/lib/document-processing/index.d.ts +3 -0
- package/lib/document-processing/index.js +20 -0
- package/lib/document-processing/resources/default-bedrock-invoke/index.py +63 -0
- package/lib/document-processing/resources/default-bedrock-invoke/requirements.txt +4 -0
- package/lib/document-processing/resources/default-doc-retrieval-lambda/index.mjs +92 -0
- package/lib/document-processing/resources/default-doc-retrieval-lambda/package.json +10 -0
- package/lib/document-processing/resources/default-error-handler/index.js +46 -0
- package/lib/document-processing/resources/default-error-handler/package.json +4 -0
- package/lib/document-processing/resources/default-image-processor/classifier.mjs +665 -0
- package/lib/document-processing/resources/default-image-processor/extractors.mjs +465 -0
- package/lib/document-processing/resources/default-image-processor/index.mjs +143 -0
- package/lib/document-processing/resources/default-image-processor/package-lock.json +12 -0
- package/lib/document-processing/resources/default-image-processor/package.json +4 -0
- package/lib/document-processing/resources/default-image-validator/index.mjs +76 -0
- package/lib/document-processing/resources/default-image-validator/package-lock.json +154 -0
- package/lib/document-processing/resources/default-image-validator/package.json +7 -0
- package/lib/document-processing/resources/default-pdf-processor/index.js +46 -0
- package/lib/document-processing/resources/default-pdf-validator/index.js +36 -0
- package/lib/document-processing/resources/default-sqs-consumer/index.py +111 -0
- package/lib/document-processing/resources/default-sqs-consumer/requirements.txt +4 -0
- package/lib/document-processing/resources/default-sqs-consumer/sample_payload.json +20 -0
- package/lib/document-processing/resources/default-sqs-consumer/sample_payload_multi.json +24 -0
- package/lib/document-processing/resources/default-strands-agent/index.py +111 -0
- package/lib/document-processing/resources/default-strands-agent/requirements.txt +6 -0
- package/lib/document-processing/tests/agentic-document-processing-nag.test.d.ts +1 -0
- package/lib/document-processing/tests/agentic-document-processing-nag.test.js +107 -0
- package/lib/document-processing/tests/agentic-document-processing.test.d.ts +1 -0
- package/lib/document-processing/tests/agentic-document-processing.test.js +125 -0
- package/lib/document-processing/tests/bedrock-document-processing-nag.test.d.ts +1 -0
- package/lib/document-processing/tests/bedrock-document-processing-nag.test.js +101 -0
- package/lib/document-processing/tests/bedrock-document-processing.test.d.ts +1 -0
- package/lib/document-processing/tests/bedrock-document-processing.test.js +79 -0
- package/lib/framework/custom-resource/default-runtimes.d.ts +21 -0
- package/lib/framework/custom-resource/default-runtimes.js +34 -0
- package/lib/framework/custom-resource/index.d.ts +1 -0
- package/lib/framework/custom-resource/index.js +18 -0
- package/lib/framework/foundation/access-log.d.ts +69 -0
- package/lib/framework/foundation/access-log.js +121 -0
- package/lib/framework/foundation/eventbridge-broker.d.ts +18 -0
- package/lib/framework/foundation/eventbridge-broker.js +42 -0
- package/lib/framework/foundation/index.d.ts +3 -0
- package/lib/framework/foundation/index.js +20 -0
- package/lib/framework/foundation/network.d.ts +19 -0
- package/lib/framework/foundation/network.js +83 -0
- package/lib/framework/index.d.ts +2 -0
- package/lib/framework/index.js +19 -0
- package/lib/framework/quickstart/base-quickstart.d.ts +30 -0
- package/lib/framework/quickstart/base-quickstart.js +30 -0
- package/lib/index.d.ts +4 -0
- package/lib/index.js +21 -0
- package/lib/tsconfig.tsbuildinfo +1 -0
- package/lib/utilities/cdk-nag-config.d.ts +42 -0
- package/lib/utilities/cdk-nag-config.js +194 -0
- package/lib/utilities/data-loader-lambda/index.py +282 -0
- package/lib/utilities/data-loader-lambda/requirements.txt +3 -0
- package/lib/utilities/data-loader.d.ts +173 -0
- package/lib/utilities/data-loader.js +447 -0
- package/lib/utilities/index.d.ts +3 -0
- package/lib/utilities/index.js +20 -0
- package/lib/utilities/lambda-iam-utils.d.ts +145 -0
- package/lib/utilities/lambda-iam-utils.js +235 -0
- package/lib/utilities/lambda_layers/data-masking/layer-construct.d.ts +42 -0
- package/lib/utilities/lambda_layers/data-masking/layer-construct.js +53 -0
- package/lib/utilities/lambda_layers/data-masking/layer-construct.ts +88 -0
- package/lib/utilities/observability/bedrock-observability.d.ts +18 -0
- package/lib/utilities/observability/bedrock-observability.js +131 -0
- package/lib/utilities/observability/cloudfront-distribution-observability-property-injector.d.ts +6 -0
- package/lib/utilities/observability/cloudfront-distribution-observability-property-injector.js +22 -0
- package/lib/utilities/observability/index.d.ts +6 -0
- package/lib/utilities/observability/index.js +25 -0
- package/lib/utilities/observability/lambda-observability-property-injector.d.ts +8 -0
- package/lib/utilities/observability/lambda-observability-property-injector.js +43 -0
- package/lib/utilities/observability/log-group-data-protection-props.d.ts +19 -0
- package/lib/utilities/observability/log-group-data-protection-props.js +5 -0
- package/lib/utilities/observability/observability.d.ts +83 -0
- package/lib/utilities/observability/observability.js +278 -0
- package/lib/utilities/observability/observable.d.ts +32 -0
- package/lib/utilities/observability/observable.js +3 -0
- package/lib/utilities/observability/powertools-config.d.ts +3 -0
- package/lib/utilities/observability/powertools-config.js +25 -0
- package/lib/utilities/observability/resources/bedrock-manage-logging-configuration/index.py +27 -0
- package/lib/utilities/observability/state-machine-observability-property-injector.d.ts +8 -0
- package/lib/utilities/observability/state-machine-observability-property-injector.js +49 -0
- package/lib/utilities/tests/data-loader-nag.test.d.ts +1 -0
- package/lib/utilities/tests/data-loader-nag.test.js +432 -0
- package/lib/utilities/tests/data-loader.test.d.ts +1 -0
- package/lib/utilities/tests/data-loader.test.js +284 -0
- package/lib/webapp/frontend-construct.d.ts +136 -0
- package/lib/webapp/frontend-construct.js +253 -0
- package/lib/webapp/index.d.ts +1 -0
- package/lib/webapp/index.js +18 -0
- package/lib/webapp/tests/frontend-construct-nag.test.d.ts +1 -0
- package/lib/webapp/tests/frontend-construct-nag.test.js +266 -0
- package/lib/webapp/tests/frontend-construct.test.d.ts +1 -0
- package/lib/webapp/tests/frontend-construct.test.js +385 -0
- package/package.json +183 -0
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
4
|
+
const assertions_1 = require("aws-cdk-lib/assertions");
|
|
5
|
+
const agentic_document_processing_1 = require("../agentic-document-processing");
|
|
6
|
+
describe('AgenticDocumentProcessing', () => {
|
|
7
|
+
let basicStack;
|
|
8
|
+
let crossRegionStack;
|
|
9
|
+
let defaultModelStack;
|
|
10
|
+
let basicTemplate;
|
|
11
|
+
let crossRegionTemplate;
|
|
12
|
+
let defaultModelTemplate;
|
|
13
|
+
beforeAll(() => {
|
|
14
|
+
// Create all stacks and constructs first
|
|
15
|
+
basicStack = new aws_cdk_lib_1.Stack();
|
|
16
|
+
new agentic_document_processing_1.AgenticDocumentProcessing(basicStack, 'BasicTest', {
|
|
17
|
+
processingPrompt: 'Custom processing prompt',
|
|
18
|
+
processingAgentParameters: {
|
|
19
|
+
agentSystemPrompt: 'Test system prompt',
|
|
20
|
+
toolsLocation: ['tool1', 'tool2'],
|
|
21
|
+
},
|
|
22
|
+
});
|
|
23
|
+
crossRegionStack = new aws_cdk_lib_1.Stack();
|
|
24
|
+
new agentic_document_processing_1.AgenticDocumentProcessing(crossRegionStack, 'CrossRegionTest', {
|
|
25
|
+
useCrossRegionInference: true,
|
|
26
|
+
});
|
|
27
|
+
defaultModelStack = new aws_cdk_lib_1.Stack();
|
|
28
|
+
new agentic_document_processing_1.AgenticDocumentProcessing(defaultModelStack, 'DefaultModelTest', {
|
|
29
|
+
useCrossRegionInference: false,
|
|
30
|
+
});
|
|
31
|
+
// Generate templates once after all constructs are created
|
|
32
|
+
basicTemplate = assertions_1.Template.fromStack(basicStack);
|
|
33
|
+
crossRegionTemplate = assertions_1.Template.fromStack(crossRegionStack);
|
|
34
|
+
defaultModelTemplate = assertions_1.Template.fromStack(defaultModelStack);
|
|
35
|
+
});
|
|
36
|
+
test('creates basic infrastructure', () => {
|
|
37
|
+
basicTemplate.hasResourceProperties('AWS::S3::Bucket', {});
|
|
38
|
+
basicTemplate.hasResourceProperties('AWS::Lambda::Function', {
|
|
39
|
+
Runtime: 'python3.13',
|
|
40
|
+
});
|
|
41
|
+
basicTemplate.resourceCountIs('AWS::Lambda::Function', 5);
|
|
42
|
+
});
|
|
43
|
+
test('configures all agent parameters', () => {
|
|
44
|
+
basicTemplate.hasResourceProperties('AWS::Lambda::Function', {
|
|
45
|
+
Environment: {
|
|
46
|
+
Variables: {
|
|
47
|
+
SYSTEM_PROMPT: 'Test system prompt',
|
|
48
|
+
TOOLS_CONFIG: '["tool1","tool2"]',
|
|
49
|
+
PROMPT: 'Custom processing prompt',
|
|
50
|
+
},
|
|
51
|
+
},
|
|
52
|
+
});
|
|
53
|
+
});
|
|
54
|
+
test('inherits bedrock document processing functionality', () => {
|
|
55
|
+
basicTemplate.hasResourceProperties('AWS::S3::Bucket', {});
|
|
56
|
+
basicTemplate.hasResourceProperties('AWS::DynamoDB::Table', {});
|
|
57
|
+
basicTemplate.hasResourceProperties('AWS::SQS::Queue', {});
|
|
58
|
+
basicTemplate.hasResourceProperties('AWS::StepFunctions::StateMachine', {});
|
|
59
|
+
});
|
|
60
|
+
test('creates IAM role with correct permissions', () => {
|
|
61
|
+
basicTemplate.hasResourceProperties('AWS::IAM::Role', {
|
|
62
|
+
AssumeRolePolicyDocument: {
|
|
63
|
+
Statement: [{
|
|
64
|
+
Action: 'sts:AssumeRole',
|
|
65
|
+
Effect: 'Allow',
|
|
66
|
+
Principal: {
|
|
67
|
+
Service: 'lambda.amazonaws.com',
|
|
68
|
+
},
|
|
69
|
+
}],
|
|
70
|
+
},
|
|
71
|
+
});
|
|
72
|
+
basicTemplate.hasResourceProperties('AWS::IAM::Role', {
|
|
73
|
+
Policies: [{
|
|
74
|
+
PolicyDocument: {
|
|
75
|
+
Statement: [
|
|
76
|
+
{
|
|
77
|
+
Effect: 'Allow',
|
|
78
|
+
Action: 's3:GetObject',
|
|
79
|
+
Resource: {
|
|
80
|
+
'Fn::Join': [
|
|
81
|
+
'',
|
|
82
|
+
[
|
|
83
|
+
{ 'Fn::GetAtt': [assertions_1.Match.anyValue(), 'Arn'] },
|
|
84
|
+
'/*',
|
|
85
|
+
],
|
|
86
|
+
],
|
|
87
|
+
},
|
|
88
|
+
},
|
|
89
|
+
{
|
|
90
|
+
Effect: 'Allow',
|
|
91
|
+
Action: ['bedrock:InvokeModel', 'bedrock:InvokeModelWithResponseStream'],
|
|
92
|
+
Resource: assertions_1.Match.anyValue(),
|
|
93
|
+
},
|
|
94
|
+
],
|
|
95
|
+
},
|
|
96
|
+
PolicyName: 'BedrockInvokePolicy',
|
|
97
|
+
}],
|
|
98
|
+
});
|
|
99
|
+
});
|
|
100
|
+
test('configures timeout and memory for processing function', () => {
|
|
101
|
+
basicTemplate.hasResourceProperties('AWS::Lambda::Function', {
|
|
102
|
+
Timeout: 300,
|
|
103
|
+
MemorySize: 1024,
|
|
104
|
+
});
|
|
105
|
+
});
|
|
106
|
+
test('uses cross-region inference when enabled', () => {
|
|
107
|
+
crossRegionTemplate.hasResourceProperties('AWS::Lambda::Function', {
|
|
108
|
+
Environment: {
|
|
109
|
+
Variables: {
|
|
110
|
+
MODEL_ID: 'us.anthropic.claude-3-7-sonnet-20250219-v1:0',
|
|
111
|
+
},
|
|
112
|
+
},
|
|
113
|
+
});
|
|
114
|
+
});
|
|
115
|
+
test('uses default model when cross-region inference is disabled', () => {
|
|
116
|
+
defaultModelTemplate.hasResourceProperties('AWS::Lambda::Function', {
|
|
117
|
+
Environment: {
|
|
118
|
+
Variables: {
|
|
119
|
+
MODEL_ID: 'anthropic.claude-3-7-sonnet-20250219-v1:0',
|
|
120
|
+
},
|
|
121
|
+
},
|
|
122
|
+
});
|
|
123
|
+
});
|
|
124
|
+
});
|
|
125
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdlbnRpYy1kb2N1bWVudC1wcm9jZXNzaW5nLnRlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi91c2UtY2FzZXMvZG9jdW1lbnQtcHJvY2Vzc2luZy90ZXN0cy9hZ2VudGljLWRvY3VtZW50LXByb2Nlc3NpbmcudGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLDZDQUFvQztBQUNwQyx1REFBeUQ7QUFDekQsZ0ZBQTJFO0FBRTNFLFFBQVEsQ0FBQywyQkFBMkIsRUFBRSxHQUFHLEVBQUU7SUFDekMsSUFBSSxVQUFpQixDQUFDO0lBQ3RCLElBQUksZ0JBQXVCLENBQUM7SUFDNUIsSUFBSSxpQkFBd0IsQ0FBQztJQUM3QixJQUFJLGFBQXVCLENBQUM7SUFDNUIsSUFBSSxtQkFBNkIsQ0FBQztJQUNsQyxJQUFJLG9CQUE4QixDQUFDO0lBRW5DLFNBQVMsQ0FBQyxHQUFHLEVBQUU7UUFDYix5Q0FBeUM7UUFDekMsVUFBVSxHQUFHLElBQUksbUJBQUssRUFBRSxDQUFDO1FBQ3pCLElBQUksdURBQXlCLENBQUMsVUFBVSxFQUFFLFdBQVcsRUFBRTtZQUNyRCxnQkFBZ0IsRUFBRSwwQkFBMEI7WUFDNUMseUJBQXlCLEVBQUU7Z0JBQ3pCLGlCQUFpQixFQUFFLG9CQUFvQjtnQkFDdkMsYUFBYSxFQUFFLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQzthQUNsQztTQUNGLENBQUMsQ0FBQztRQUVILGdCQUFnQixHQUFHLElBQUksbUJBQUssRUFBRSxDQUFDO1FBQy9CLElBQUksdURBQXlCLENBQUMsZ0JBQWdCLEVBQUUsaUJBQWlCLEVBQUU7WUFDakUsdUJBQXVCLEVBQUUsSUFBSTtTQUM5QixDQUFDLENBQUM7UUFFSCxpQkFBaUIsR0FBRyxJQUFJLG1CQUFLLEVBQUUsQ0FBQztRQUNoQyxJQUFJLHVEQUF5QixDQUFDLGlCQUFpQixFQUFFLGtCQUFrQixFQUFFO1lBQ25FLHVCQUF1QixFQUFFLEtBQUs7U0FDL0IsQ0FBQyxD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akIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFFSCxJQUFJLENBQUMsMENBQTBDLEVBQUUsR0FBRyxFQUFFO1FBQ3BELG1CQUFtQixDQUFDLHFCQUFxQixDQUFDLHVCQUF1QixFQUFFO1lBQ2pFLFdBQVcsRUFBRTtnQkFDWCxTQUFTLEVBQUU7b0JBQ1QsUUFBUSxFQUFFLDhDQUE4QztpQkFDekQ7YUFDRjtTQUNGLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0lBRUgsSUFBSSxDQUFDLDREQUE0RCxFQUFFLEdBQUcsRUFBRTtRQUN0RSxvQkFBb0IsQ0FBQyxxQkFBcUIsQ0FBQyx1QkFBdUIsRUFBRTtZQUNsRSxXQUFXLEVBQUU7Z0JBQ1gsU0FBUyxFQUFFO29CQUNULFFBQVEsRUFBRSwyQ0FBMkM7aUJBQ3REO2FBQ0Y7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU3RhY2sgfSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgeyBUZW1wbGF0ZSwgTWF0Y2ggfSBmcm9tICdhd3MtY2RrLWxpYi9hc3NlcnRpb25zJztcbmltcG9ydCB7IEFnZW50aWNEb2N1bWVudFByb2Nlc3NpbmcgfSBmcm9tICcuLi9hZ2VudGljLWRvY3VtZW50LXByb2Nlc3NpbmcnO1xuXG5kZXNjcmliZSgnQWdlbnRpY0RvY3VtZW50UHJvY2Vzc2luZycsICgpID0+IHtcbiAgbGV0IGJhc2ljU3RhY2s6IFN0YWNrO1xuICBsZXQgY3Jvc3NSZWdpb25TdGFjazogU3RhY2s7XG4gIGxldCBkZWZhdWx0TW9kZWxTdGFjazogU3RhY2s7XG4gIGxldCBiYXNpY1RlbXBsYXRlOiBUZW1wbGF0ZTtcbiAgbGV0IGNyb3NzUmVnaW9uVGVtcGxhdGU6IFRlbXBsYXRlO1xuICBsZXQgZGVmYXVsdE1vZGVsVGVtcGxhdGU6IFRlbXBsYXRlO1xuXG4gIGJlZm9yZUFsbCgoKSA9PiB7XG4gICAgLy8gQ3JlYXRlIGFsbCBzdGFja3MgYW5kIGNvbnN0cnVjdHMgZmlyc3RcbiAgICBiYXNpY1N0YWNrID0gbmV3IFN0YWNrKCk7XG4gICAgbmV3IEFnZW50aWNEb2N1bWVudFByb2Nlc3NpbmcoYmFzaWNTdGFjaywgJ0Jhc2ljVGVzdCcsIHtcbiAgICAgIHByb2Nlc3NpbmdQcm9tcHQ6ICdDdXN0b20gcHJvY2Vzc2luZyBwcm9tcHQnLFxuICAgICAgcHJvY2Vzc2luZ0FnZW50UGFyYW1ldGVyczoge1xuICAgICAgICBhZ2VudFN5c3RlbVByb21wdDogJ1Rlc3Qgc3lzdGVtIHByb21wdCcsXG4gICAgICAgIHRvb2xzTG9jYXRpb246IFsndG9vbDEnLCAndG9vbDInXSxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICBjcm9zc1JlZ2lvblN0YWNrID0gbmV3IFN0YWNrKCk7XG4gICAgbmV3IEFnZW50aWNEb2N1bWVudFByb2Nlc3NpbmcoY3Jvc3NSZWdpb25TdGFjaywgJ0Nyb3NzUmVnaW9uVGVzdCcsIHtcbiAgICAgIHVzZUNyb3NzUmVnaW9uSW5mZXJlbmNlOiB0cnVlLFxuICAgIH0pO1xuXG4gICAgZGVmYXVsdE1vZGVsU3RhY2sgPSBuZXcgU3RhY2soKTtcbiAgICBuZXcgQWdlbnRpY0RvY3VtZW50UHJvY2Vzc2luZyhkZWZhdWx0TW9kZWxTdGFjaywgJ0RlZmF1bHRNb2RlbFRlc3QnLCB7XG4gICAgICB1c2VDcm9zc1JlZ2lvbkluZmVyZW5jZTogZmFsc2UsXG4gICAgfSk7XG5cbiAgICAvLyBHZW5lcmF0ZSB0ZW1wbGF0ZXMgb25jZSBhZnRlciBhbGwgY29uc3RydWN0cyBhcmUgY3JlYXRlZFxuICAgIGJhc2ljVGVtcGxhdGUgPSBUZW1wbGF0ZS5mcm9tU3RhY2soYmFzaWNTdGFjayk7XG4gICAgY3Jvc3NSZWdpb25UZW1wbGF0ZSA9IFRlbXBsYXRlLmZyb21TdGFjayhjcm9zc1JlZ2lvblN0YWNrKTtcbiAgICBkZWZhdWx0TW9kZWxUZW1wbGF0ZSA9IFRlbXBsYXRlLmZyb21TdGFjayhkZWZhdWx0TW9kZWxTdGFjayk7XG4gIH0pO1xuXG4gIHRlc3QoJ2NyZWF0ZXMgYmFzaWMgaW5mcmFzdHJ1Y3R1cmUnLCAoKSA9PiB7XG4gICAgYmFzaWNUZW1wbGF0ZS5oYXNSZXNvdXJjZVByb3BlcnRpZXMoJ0FXUzo6UzM6OkJ1Y2tldCcsIHt9KTtcbiAgICBiYXNpY1RlbXBsYXRlLmhhc1Jlc291cmNlUHJvcGVydGllcygnQVdTOjpMYW1iZGE6OkZ1bmN0aW9uJywge1xuICAgICAgUnVudGltZTogJ3B5dGhvbjMuMTMnLFxuICAgIH0pO1xuICAgIGJhc2ljVGVtcGxhdGUucmVzb3VyY2VDb3VudElzKCdBV1M6OkxhbWJkYTo6RnVuY3Rpb24nLCA1KTtcbiAgfSk7XG5cbiAgdGVzdCgnY29uZmlndXJlcyBhbGwgYWdlbnQgcGFyYW1ldGVycycsICgpID0+IHtcbiAgICBiYXNpY1RlbXBsYXRlLmhhc1Jlc291cmNlUHJvcGVydGllcygnQVdTOjpMYW1iZGE6OkZ1bmN0aW9uJywge1xuICAgICAgRW52aXJvbm1lbnQ6IHtcbiAgICAgICAgVmFyaWFibGVzOiB7XG4gICAgICAgICAgU1lTVEVNX1BST01QVDogJ1Rlc3Qgc3lzdGVtIHByb21wdCcsXG4gICAgICAgICAgVE9PTFNfQ09ORklHOiAnW1widG9vbDFcIixcInRvb2wyXCJdJyxcbiAgICAgICAgICBQUk9NUFQ6ICdDdXN0b20gcHJvY2Vzc2luZyBwcm9tcHQnLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9KTtcbiAgfSk7XG5cbiAgdGVzdCgnaW5oZXJpdHMgYmVkcm9jayBkb2N1bWVudCBwcm9jZXNzaW5nIGZ1bmN0aW9uYWxpdHknLCAoKSA9PiB7XG4gICAgYmFzaWNUZW1wbGF0ZS5oYXNSZXNvdXJjZVByb3BlcnRpZXMoJ0FXUzo6UzM6OkJ1Y2tldCcsIHt9KTtcbiAgICBiYXNpY1RlbXBsYXRlLmhhc1Jlc291cmNlUHJvcGVydGllcygnQVdTOjpEeW5hbW9EQjo6VGFibGUnLCB7fSk7XG4gICAgYmFzaWNUZW1wbGF0ZS5oYXNSZXNvdXJjZVByb3BlcnRpZXMoJ0FXUzo6U1FTOjpRdWV1ZScsIHt9KTtcbiAgICBiYXNpY1RlbXBsYXRlLmhhc1Jlc291cmNlUHJvcGVydGllcygnQVdTOjpTdGVwRnVuY3Rpb25zOjpTdGF0ZU1hY2hpbmUnLCB7fSk7XG4gIH0pO1xuXG4gIHRlc3QoJ2NyZWF0ZXMgSUFNIHJvbGUgd2l0aCBjb3JyZWN0IHBlcm1pc3Npb25zJywgKCkgPT4ge1xuICAgIGJhc2ljVGVtcGxhdGUuaGFzUmVzb3VyY2VQcm9wZXJ0aWVzKCdBV1M6OklBTTo6Um9sZScsIHtcbiAgICAgIEFzc3VtZVJvbGVQb2xpY3lEb2N1bWVudDoge1xuICAgICAgICBTdGF0ZW1lbnQ6IFt7XG4gICAgICAgICAgQWN0aW9uOiAnc3RzOkFzc3VtZVJvbGUnLFxuICAgICAgICAgIEVmZmVjdDogJ0FsbG93JyxcbiAgICAgICAgICBQcmluY2lwYWw6IHtcbiAgICAgICAgICAgIFNlcnZpY2U6ICdsYW1iZGEuYW1hem9uYXdzLmNvbScsXG4gICAgICAgICAgfSxcbiAgICAgICAgfV0sXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgYmFzaWNUZW1wbGF0ZS5oYXNSZXNvdXJjZVByb3BlcnRpZXMoJ0FXUzo6SUFNOjpSb2xlJywge1xuICAgICAgUG9saWNpZXM6IFt7XG4gICAgICAgIFBvbGljeURvY3VtZW50OiB7XG4gICAgICAgICAgU3RhdGVtZW50OiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIEVmZmVjdDogJ0FsbG93JyxcbiAgICAgICAgICAgICAgQWN0aW9uOiAnczM6R2V0T2JqZWN0JyxcbiAgICAgICAgICAgICAgUmVzb3VyY2U6IHtcbiAgICAgICAgICAgICAgICAnRm46OkpvaW4nOiBbXG4gICAgICAgICAgICAgICAgICAnJyxcbiAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgeyAnRm46OkdldEF0dCc6IFtNYXRjaC5hbnlWYWx1ZSgpLCAnQXJuJ10gfSxcbiAgICAgICAgICAgICAgICAgICAgJy8qJyxcbiAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIEVmZmVjdDogJ0FsbG93JyxcbiAgICAgICAgICAgICAgQWN0aW9uOiBbJ2JlZHJvY2s6SW52b2tlTW9kZWwnLCAnYmVkcm9jazpJbnZva2VNb2RlbFdpdGhSZXNwb25zZVN0cmVhbSddLFxuICAgICAgICAgICAgICBSZXNvdXJjZTogTWF0Y2guYW55VmFsdWUoKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgfSxcbiAgICAgICAgUG9saWN5TmFtZTogJ0JlZHJvY2tJbnZva2VQb2xpY3knLFxuICAgICAgfV0sXG4gICAgfSk7XG4gIH0pO1xuXG4gIHRlc3QoJ2NvbmZpZ3VyZXMgdGltZW91dCBhbmQgbWVtb3J5IGZvciBwcm9jZXNzaW5nIGZ1bmN0aW9uJywgKCkgPT4ge1xuICAgIGJhc2ljVGVtcGxhdGUuaGFzUmVzb3VyY2VQcm9wZXJ0aWVzKCdBV1M6OkxhbWJkYTo6RnVuY3Rpb24nLCB7XG4gICAgICBUaW1lb3V0OiAzMDAsXG4gICAgICBNZW1vcnlTaXplOiAxMDI0LFxuICAgIH0pO1xuICB9KTtcblxuICB0ZXN0KCd1c2VzIGNyb3NzLXJlZ2lvbiBpbmZlcmVuY2Ugd2hlbiBlbmFibGVkJywgKCkgPT4ge1xuICAgIGNyb3NzUmVnaW9uVGVtcGxhdGUuaGFzUmVzb3VyY2VQcm9wZXJ0aWVzKCdBV1M6OkxhbWJkYTo6RnVuY3Rpb24nLCB7XG4gICAgICBFbnZpcm9ubWVudDoge1xuICAgICAgICBWYXJpYWJsZXM6IHtcbiAgICAgICAgICBNT0RFTF9JRDogJ3VzLmFudGhyb3BpYy5jbGF1ZGUtMy03LXNvbm5ldC0yMDI1MDIxOS12MTowJyxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH0pO1xuXG4gIHRlc3QoJ3VzZXMgZGVmYXVsdCBtb2RlbCB3aGVuIGNyb3NzLXJlZ2lvbiBpbmZlcmVuY2UgaXMgZGlzYWJsZWQnLCAoKSA9PiB7XG4gICAgZGVmYXVsdE1vZGVsVGVtcGxhdGUuaGFzUmVzb3VyY2VQcm9wZXJ0aWVzKCdBV1M6OkxhbWJkYTo6RnVuY3Rpb24nLCB7XG4gICAgICBFbnZpcm9ubWVudDoge1xuICAgICAgICBWYXJpYWJsZXM6IHtcbiAgICAgICAgICBNT0RFTF9JRDogJ2FudGhyb3BpYy5jbGF1ZGUtMy03LXNvbm5ldC0yMDI1MDIxOS12MTowJyxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH0pO1xufSk7XG4iXX0=
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
4
|
+
const assertions_1 = require("aws-cdk-lib/assertions");
|
|
5
|
+
const aws_s3_1 = require("aws-cdk-lib/aws-s3");
|
|
6
|
+
const cdk_nag_1 = require("cdk-nag");
|
|
7
|
+
const framework_1 = require("../../framework");
|
|
8
|
+
const eventbridge_broker_1 = require("../../framework/foundation/eventbridge-broker");
|
|
9
|
+
const bedrock_document_processing_1 = require("../bedrock-document-processing");
|
|
10
|
+
// Create app and stack
|
|
11
|
+
const app = new aws_cdk_lib_1.App();
|
|
12
|
+
const stack = new aws_cdk_lib_1.Stack(app, 'TestStack', {
|
|
13
|
+
env: {
|
|
14
|
+
account: '123456789012',
|
|
15
|
+
region: 'us-east-1',
|
|
16
|
+
},
|
|
17
|
+
});
|
|
18
|
+
// Create EventBridge broker
|
|
19
|
+
const broker = new eventbridge_broker_1.EventbridgeBroker(stack, 'IDPBroker', {
|
|
20
|
+
name: 'idp-broker',
|
|
21
|
+
eventSource: 'intelligent-document-processing',
|
|
22
|
+
});
|
|
23
|
+
const accessLog = new framework_1.AccessLog(stack, 'AccessLog');
|
|
24
|
+
// Create S3 bucket for agentic tools
|
|
25
|
+
const bucket = new aws_s3_1.Bucket(stack, 'BedrockDocumentProcessingBucket', {
|
|
26
|
+
serverAccessLogsBucket: accessLog.bucket,
|
|
27
|
+
serverAccessLogsPrefix: accessLog.bucketPrefix,
|
|
28
|
+
enforceSSL: true,
|
|
29
|
+
});
|
|
30
|
+
// Create the main BedrockDocumentProcessing construct
|
|
31
|
+
new bedrock_document_processing_1.BedrockDocumentProcessing(stack, 'BedrockDocumentProcessing', {
|
|
32
|
+
bucket,
|
|
33
|
+
useCrossRegionInference: true,
|
|
34
|
+
eventbridgeBroker: broker,
|
|
35
|
+
enableObservability: true,
|
|
36
|
+
});
|
|
37
|
+
// Suppress CDK-managed BucketNotificationsHandler AWS managed policy
|
|
38
|
+
cdk_nag_1.NagSuppressions.addResourceSuppressionsByPath(stack, '/TestStack/BucketNotificationsHandler050a0587b7544547bf325f094a3db834/Role', [
|
|
39
|
+
{
|
|
40
|
+
id: 'AwsSolutions-IAM4',
|
|
41
|
+
reason: 'CDK-managed BucketNotificationsHandler requires AWSLambdaBasicExecutionRole for S3 event processing',
|
|
42
|
+
appliesTo: ['Policy::arn:<AWS::Partition>:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole'],
|
|
43
|
+
},
|
|
44
|
+
]);
|
|
45
|
+
// Suppress S3 bucket wildcard permissions for Lambda roles
|
|
46
|
+
cdk_nag_1.NagSuppressions.addResourceSuppressions(stack, [
|
|
47
|
+
{
|
|
48
|
+
id: 'AwsSolutions-IAM5',
|
|
49
|
+
reason: 'Lambda functions require wildcard access to S3 bucket objects for document processing',
|
|
50
|
+
appliesTo: ['Resource::<BedrockDocumentProcessingBucketA06CA1E2.Arn>/*'],
|
|
51
|
+
},
|
|
52
|
+
], true);
|
|
53
|
+
// Suppress Bedrock foundation model wildcard permissions
|
|
54
|
+
cdk_nag_1.NagSuppressions.addResourceSuppressions(stack, [
|
|
55
|
+
{
|
|
56
|
+
id: 'AwsSolutions-IAM5',
|
|
57
|
+
reason: 'Cross-region inference requires wildcard region access to Bedrock foundation models',
|
|
58
|
+
appliesTo: ['Resource::arn:aws:bedrock:*::foundation-model/anthropic.claude-3-7-sonnet-20250219-v1:0'],
|
|
59
|
+
},
|
|
60
|
+
], true);
|
|
61
|
+
// Suppress SQSConsumerRole wildcard permissions for Lambda log streams
|
|
62
|
+
cdk_nag_1.NagSuppressions.addResourceSuppressions(stack, [
|
|
63
|
+
{
|
|
64
|
+
id: 'AwsSolutions-IAM5',
|
|
65
|
+
reason: 'Lambda log stream ARN is only known at runtime, wildcard required for CloudWatch Logs access',
|
|
66
|
+
},
|
|
67
|
+
], true);
|
|
68
|
+
// Suppress StateMachineRole wildcard permissions for Lambda invocation
|
|
69
|
+
cdk_nag_1.NagSuppressions.addResourceSuppressionsByPath(stack, '/TestStack/BedrockDocumentProcessing/StateMachineRole/DefaultPolicy', [
|
|
70
|
+
{
|
|
71
|
+
id: 'AwsSolutions-IAM5',
|
|
72
|
+
reason: 'Step Functions requires wildcard permissions to invoke Lambda functions with version-specific ARNs',
|
|
73
|
+
},
|
|
74
|
+
]);
|
|
75
|
+
// Suppress Lambda log group wildcard permissions
|
|
76
|
+
cdk_nag_1.NagSuppressions.addResourceSuppressions(stack, [
|
|
77
|
+
{
|
|
78
|
+
id: 'AwsSolutions-IAM5',
|
|
79
|
+
reason: 'Lambda log stream names are generated at runtime, wildcard required for CloudWatch Logs access',
|
|
80
|
+
},
|
|
81
|
+
], true);
|
|
82
|
+
// Apply CDK Nag checks
|
|
83
|
+
aws_cdk_lib_1.Aspects.of(app).add(new cdk_nag_1.AwsSolutionsChecks({ verbose: true }));
|
|
84
|
+
// Synthesize the stack and check for unsuppressed warnings and errors
|
|
85
|
+
const warnings = assertions_1.Annotations.fromStack(stack).findWarning('*', assertions_1.Match.stringLikeRegexp('AwsSolutions-.*'));
|
|
86
|
+
const errors = assertions_1.Annotations.fromStack(stack).findError('*', assertions_1.Match.stringLikeRegexp('AwsSolutions-.*'));
|
|
87
|
+
// Test: No unsuppressed warnings
|
|
88
|
+
test('No unsuppressed warnings', () => {
|
|
89
|
+
if (warnings.length > 0) {
|
|
90
|
+
console.log('CDK Nag Warnings:', JSON.stringify(warnings, null, 2));
|
|
91
|
+
}
|
|
92
|
+
expect(warnings).toHaveLength(0);
|
|
93
|
+
});
|
|
94
|
+
// Test: No unsuppressed errors
|
|
95
|
+
test('No unsuppressed errors', () => {
|
|
96
|
+
if (errors.length > 0) {
|
|
97
|
+
console.log('CDK Nag Errors:', JSON.stringify(errors, null, 2));
|
|
98
|
+
}
|
|
99
|
+
expect(errors).toHaveLength(0);
|
|
100
|
+
});
|
|
101
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmVkcm9jay1kb2N1bWVudC1wcm9jZXNzaW5nLW5hZy50ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vdXNlLWNhc2VzL2RvY3VtZW50LXByb2Nlc3NpbmcvdGVzdHMvYmVkcm9jay1kb2N1bWVudC1wcm9jZXNzaW5nLW5hZy50ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsNkNBQWtEO0FBQ2xELHVEQUE0RDtBQUM1RCwrQ0FBNEM7QUFDNUMscUNBQThEO0FBQzlELCtDQUE0QztBQUM1QyxzRkFBa0Y7QUFDbEYsZ0ZBQTJFO0FBRTNFLHVCQUF1QjtBQUN2QixNQUFNLEdBQUcsR0FBRyxJQUFJLGlCQUFHLEVBQUUsQ0FBQztBQUN0QixNQUFNLEtBQUssR0FBRyxJQUFJLG1CQUFLLENBQUMsR0FBRyxFQUFFLFdBQVcsRUFBRTtJQUN4QyxHQUFHLEVBQUU7UUFDSCxPQUFPLEVBQUUsY0FBYztRQUN2QixNQUFNLEVBQUUsV0FBVztLQUNwQjtDQUNGLENBQUMsQ0FBQztBQUVILDRCQUE0QjtBQUM1QixNQUFNLE1BQU0sR0FBRyxJQUFJLHNDQUFpQixDQUFDLEtBQUssRUFBRSxXQUFXLEVBQUU7SUFDdkQsSUFBSSxFQUFFLFlBQVk7SUFDbEIsV0FBVyxFQUFFLGlDQUFpQztDQUMvQyxDQUFDLENBQUM7QUFFSCxNQUFNLFNBQVMsR0FBRyxJQUFJLHFCQUFTLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxDQUFDO0FBRXBELHFDQUFxQztBQUNyQyxNQUFNLE1BQU0sR0FBRyxJQUFJLGVBQU0sQ0FBQyxLQUFLLEVBQUUsaUNBQWlDLEVBQUU7SUFDbEUsc0JBQXNCLEVBQUUsU0FBUyxDQUFDLE1BQU07SUFDeEMsc0JBQXNCLEVBQUUsU0FBUyxDQUFDLFlBQVk7SUFDOUMsVUFBVSxFQUFFLElBQUk7Q0FDakIsQ0FBQyxDQUFDO0FBRUgsc0RBQXNEO0FBQ3RELElBQUksdURBQXlCLENBQUMsS0FBSyxFQUFFLDJCQUEyQixF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LENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNsRSxDQUFDO0lBQ0QsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNqQyxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFwcCwgU3RhY2ssIEFzcGVjdHMgfSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgeyBBbm5vdGF0aW9ucywgTWF0Y2ggfSBmcm9tICdhd3MtY2RrLWxpYi9hc3NlcnRpb25zJztcbmltcG9ydCB7IEJ1Y2tldCB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1zMyc7XG5pbXBvcnQgeyBBd3NTb2x1dGlvbnNDaGVja3MsIE5hZ1N1cHByZXNzaW9ucyB9IGZyb20gJ2Nkay1uYWcnO1xuaW1wb3J0IHsgQWNjZXNzTG9nIH0gZnJvbSAnLi4vLi4vZnJhbWV3b3JrJztcbmltcG9ydCB7IEV2ZW50YnJpZGdlQnJva2VyIH0gZnJvbSAnLi4vLi4vZnJhbWV3b3JrL2ZvdW5kYXRpb24vZXZlbnRicmlkZ2UtYnJva2VyJztcbmltcG9ydCB7IEJlZHJvY2tEb2N1bWVudFByb2Nlc3NpbmcgfSBmcm9tICcuLi9iZWRyb2NrLWRvY3VtZW50LXByb2Nlc3NpbmcnO1xuXG4vLyBDcmVhdGUgYXBwIGFuZCBzdGFja1xuY29uc3QgYXBwID0gbmV3IEFwcCgpO1xuY29uc3Qgc3RhY2sgPSBuZXcgU3RhY2soYXBwLCAnVGVzdFN0YWNrJywge1xuICBlbnY6IHtcbiAgICBhY2NvdW50OiAnMTIzNDU2Nzg5MDEyJyxcbiAgICByZWdpb246ICd1cy1lYXN0LTEnLFxuICB9LFxufSk7XG5cbi8vIENyZWF0ZSBFdmVudEJyaWRnZSBicm9rZXJcbmNvbnN0IGJyb2tlciA9IG5ldyBFdmVudGJyaWRnZUJyb2tlcihzdGFjaywgJ0lEUEJyb2tlcicsIHtcbiAgbmFtZTogJ2lkcC1icm9rZXInLFxuICBldmVudFNvdXJjZTogJ2ludGVsbGlnZW50LWRvY3VtZW50LXByb2Nlc3NpbmcnLFxufSk7XG5cbmNvbnN0IGFjY2Vzc0xvZyA9IG5ldyBBY2Nlc3NMb2coc3RhY2ssICdBY2Nlc3NMb2cnKTtcblxuLy8gQ3JlYXRlIFMzIGJ1Y2tldCBmb3IgYWdlbnRpYyB0b29sc1xuY29uc3QgYnVja2V0ID0gbmV3IEJ1Y2tldChzdGFjaywgJ0JlZHJvY2tEb2N1bWVudFByb2Nlc3NpbmdCdWNrZXQnLCB7XG4gIHNlcnZlckFjY2Vzc0xvZ3NCdWNrZXQ6IGFjY2Vzc0xvZy5idWNrZXQsXG4gIHNlcnZlckFjY2Vzc0xvZ3NQcmVmaXg6IGFjY2Vzc0xvZy5idWNrZXRQcmVmaXgsXG4gIGVuZm9yY2VTU0w6IHRydWUsXG59KTtcblxuLy8gQ3JlYXRlIHRoZSBtYWluIEJlZHJvY2tEb2N1bWVudFByb2Nlc3NpbmcgY29uc3RydWN0XG5uZXcgQmVkcm9ja0RvY3VtZW50UHJvY2Vzc2luZyhzdGFjaywgJ0JlZHJvY2tEb2N1bWVudFByb2Nlc3NpbmcnLCB7XG4gIGJ1Y2tldCxcbiAgdXNlQ3Jvc3NSZWdpb25JbmZlcmVuY2U6IHRydWUsXG4gIGV2ZW50YnJpZGdlQnJva2VyOiBicm9rZXIsXG4gIGVuYWJsZU9ic2VydmFiaWxpdHk6IHRydWUsXG59KTtcblxuLy8gU3VwcHJlc3MgQ0RLLW1hbmFnZWQgQnVja2V0Tm90aWZpY2F0aW9uc0hhbmRsZXIgQVdTIG1hbmFnZWQgcG9saWN5XG5OYWdTdXBwcmVzc2lvbnMuYWRkUmVzb3VyY2VTdXBwcmVzc2lvbnNCeVBhdGgoXG4gIHN0YWNrLFxuICAnL1Rlc3RTdGFjay9CdWNrZXROb3RpZmljYXRpb25zSGFuZGxlcjA1MGEwNTg3Yjc1NDQ1NDdiZjMyNWYwOTRhM2RiODM0L1JvbGUnLFxuICBbXG4gICAge1xuICAgICAgaWQ6ICdBd3NTb2x1dGlvbnMtSUFNNCcsXG4gICAgICByZWFzb246ICdDREstbWFuYWdlZCBCdWNrZXROb3RpZmljYXRpb25zSGFuZGxlciByZXF1aXJlcyBBV1NMYW1iZGFCYXNpY0V4ZWN1dGlvblJvbGUgZm9yIFMzIGV2ZW50IHByb2Nlc3NpbmcnLFxuICAgICAgYXBwbGllc1RvOiBbJ1BvbGljeTo6YXJuOjxBV1M6OlBhcnRpdGlvbj46aWFtOjphd3M6cG9saWN5L3NlcnZpY2Utcm9sZS9BV1NMYW1iZGFCYXNpY0V4ZWN1dGlvblJvbGUnXSxcbiAgICB9LFxuICBdLFxuKTtcblxuLy8gU3VwcHJlc3MgUzMgYnVja2V0IHdpbGRjYXJkIHBlcm1pc3Npb25zIGZvciBMYW1iZGEgcm9sZXNcbk5hZ1N1cHByZXNzaW9ucy5hZGRSZXNvdXJjZVN1cHByZXNzaW9ucyhcbiAgc3RhY2ssXG4gIFtcbiAgICB7XG4gICAgICBpZDogJ0F3c1NvbHV0aW9ucy1JQU01JyxcbiAgICAgIHJlYXNvbjogJ0xhbWJkYSBmdW5jdGlvbnMgcmVxdWlyZSB3aWxkY2FyZCBhY2Nlc3MgdG8gUzMgYnVja2V0IG9iamVjdHMgZm9yIGRvY3VtZW50IHByb2Nlc3NpbmcnLFxuICAgICAgYXBwbGllc1RvOiBbJ1Jlc291cmNlOjo8QmVkcm9ja0RvY3VtZW50UHJvY2Vzc2luZ0J1Y2tldEEwNkNBMUUyLkFybj4vKiddLFxuICAgIH0sXG4gIF0sXG4gIHRydWUsXG4pO1xuXG4vLyBTdXBwcmVzcyBCZWRyb2NrIGZvdW5kYXRpb24gbW9kZWwgd2lsZGNhcmQgcGVybWlzc2lvbnNcbk5hZ1N1cHByZXNzaW9ucy5hZGRSZXNvdXJjZVN1cHByZXNzaW9ucyhcbiAgc3RhY2ssXG4gIFtcbiAgICB7XG4gICAgICBpZDogJ0F3c1NvbHV0aW9ucy1JQU01JyxcbiAgICAgIHJlYXNvbjogJ0Nyb3NzLXJlZ2lvbiBpbmZlcmVuY2UgcmVxdWlyZXMgd2lsZGNhcmQgcmVnaW9uIGFjY2VzcyB0byBCZWRyb2NrIGZvdW5kYXRpb24gbW9kZWxzJyxcbiAgICAgIGFwcGxpZXNUbzogWydSZXNvdXJjZTo6YXJuOmF3czpiZWRyb2NrOio6OmZvdW5kYXRpb24tbW9kZWwvYW50aHJvcGljLmNsYXVkZS0zLTctc29ubmV0LTIwMjUwMjE5LXYxOjAnXSxcbiAgICB9LFxuICBdLFxuICB0cnVlLFxuKTtcblxuLy8gU3VwcHJlc3MgU1FTQ29uc3VtZXJSb2xlIHdpbGRjYXJkIHBlcm1pc3Npb25zIGZvciBMYW1iZGEgbG9nIHN0cmVhbXNcbk5hZ1N1cHByZXNzaW9ucy5hZGRSZXNvdXJjZVN1cHByZXNzaW9ucyhcbiAgc3RhY2ssXG4gIFtcbiAgICB7XG4gICAgICBpZDogJ0F3c1NvbHV0aW9ucy1JQU01JyxcbiAgICAgIHJlYXNvbjogJ0xhbWJkYSBsb2cgc3RyZWFtIEFSTiBpcyBvbmx5IGtub3duIGF0IHJ1bnRpbWUsIHdpbGRjYXJkIHJlcXVpcmVkIGZvciBDbG91ZFdhdGNoIExvZ3MgYWNjZXNzJyxcbiAgICB9LFxuICBdLFxuICB0cnVlLFxuKTtcblxuLy8gU3VwcHJlc3MgU3RhdGVNYWNoaW5lUm9sZSB3aWxkY2FyZCBwZXJtaXNzaW9ucyBmb3IgTGFtYmRhIGludm9jYXRpb25cbk5hZ1N1cHByZXNzaW9ucy5hZGRSZXNvdXJjZVN1cHByZXNzaW9uc0J5UGF0aChcbiAgc3RhY2ssXG4gICcvVGVzdFN0YWNrL0JlZHJvY2tEb2N1bWVudFByb2Nlc3NpbmcvU3RhdGVNYWNoaW5lUm9sZS9EZWZhdWx0UG9saWN5JyxcbiAgW1xuICAgIHtcbiAgICAgIGlkOiAnQXdzU29sdXRpb25zLUlBTTUnLFxuICAgICAgcmVhc29uOiAnU3RlcCBGdW5jdGlvbnMgcmVxdWlyZXMgd2lsZGNhcmQgcGVybWlzc2lvbnMgdG8gaW52b2tlIExhbWJkYSBmdW5jdGlvbnMgd2l0aCB2ZXJzaW9uLXNwZWNpZmljIEFSTnMnLFxuICAgIH0sXG4gIF0sXG4pO1xuXG4vLyBTdXBwcmVzcyBMYW1iZGEgbG9nIGdyb3VwIHdpbGRjYXJkIHBlcm1pc3Npb25zXG5OYWdTdXBwcmVzc2lvbnMuYWRkUmVzb3VyY2VTdXBwcmVzc2lvbnMoXG4gIHN0YWNrLFxuICBbXG4gICAge1xuICAgICAgaWQ6ICdBd3NTb2x1dGlvbnMtSUFNNScsXG4gICAgICByZWFzb246ICdMYW1iZGEgbG9nIHN0cmVhbSBuYW1lcyBhcmUgZ2VuZXJhdGVkIGF0IHJ1bnRpbWUsIHdpbGRjYXJkIHJlcXVpcmVkIGZvciBDbG91ZFdhdGNoIExvZ3MgYWNjZXNzJyxcbiAgICB9LFxuICBdLFxuICB0cnVlLFxuKTtcblxuLy8gQXBwbHkgQ0RLIE5hZyBjaGVja3NcbkFzcGVjdHMub2YoYXBwKS5hZGQobmV3IEF3c1NvbHV0aW9uc0NoZWNrcyh7IHZlcmJvc2U6IHRydWUgfSkpO1xuXG4vLyBTeW50aGVzaXplIHRoZSBzdGFjayBhbmQgY2hlY2sgZm9yIHVuc3VwcHJlc3NlZCB3YXJuaW5ncyBhbmQgZXJyb3JzXG5jb25zdCB3YXJuaW5ncyA9IEFubm90YXRpb25zLmZyb21TdGFjayhzdGFjaykuZmluZFdhcm5pbmcoJyonLCBNYXRjaC5zdHJpbmdMaWtlUmVnZXhwKCdBd3NTb2x1dGlvbnMtLionKSk7XG5jb25zdCBlcnJvcnMgPSBBbm5vdGF0aW9ucy5mcm9tU3RhY2soc3RhY2spLmZpbmRFcnJvcignKicsIE1hdGNoLnN0cmluZ0xpa2VSZWdleHAoJ0F3c1NvbHV0aW9ucy0uKicpKTtcblxuLy8gVGVzdDogTm8gdW5zdXBwcmVzc2VkIHdhcm5pbmdzXG50ZXN0KCdObyB1bnN1cHByZXNzZWQgd2FybmluZ3MnLCAoKSA9PiB7XG4gIGlmICh3YXJuaW5ncy5sZW5ndGggPiAwKSB7XG4gICAgY29uc29sZS5sb2coJ0NESyBOYWcgV2FybmluZ3M6JywgSlNPTi5zdHJpbmdpZnkod2FybmluZ3MsIG51bGwsIDIpKTtcbiAgfVxuICBleHBlY3Qod2FybmluZ3MpLnRvSGF2ZUxlbmd0aCgwKTtcbn0pO1xuXG4vLyBUZXN0OiBObyB1bnN1cHByZXNzZWQgZXJyb3JzXG50ZXN0KCdObyB1bnN1cHByZXNzZWQgZXJyb3JzJywgKCkgPT4ge1xuICBpZiAoZXJyb3JzLmxlbmd0aCA+IDApIHtcbiAgICBjb25zb2xlLmxvZygnQ0RLIE5hZyBFcnJvcnM6JywgSlNPTi5zdHJpbmdpZnkoZXJyb3JzLCBudWxsLCAyKSk7XG4gIH1cbiAgZXhwZWN0KGVycm9ycykudG9IYXZlTGVuZ3RoKDApO1xufSk7XG4iXX0=
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
4
|
+
const assertions_1 = require("aws-cdk-lib/assertions");
|
|
5
|
+
const aws_bedrock_1 = require("aws-cdk-lib/aws-bedrock");
|
|
6
|
+
const bedrock_document_processing_1 = require("../bedrock-document-processing");
|
|
7
|
+
describe('BedrockDocumentProcessing', () => {
|
|
8
|
+
let defaultStack;
|
|
9
|
+
let customStack;
|
|
10
|
+
let crossRegionStack;
|
|
11
|
+
let defaultTemplate;
|
|
12
|
+
let customTemplate;
|
|
13
|
+
let crossRegionTemplate;
|
|
14
|
+
beforeAll(() => {
|
|
15
|
+
// Create all stacks and constructs first
|
|
16
|
+
defaultStack = new aws_cdk_lib_1.Stack();
|
|
17
|
+
new bedrock_document_processing_1.BedrockDocumentProcessing(defaultStack, 'DefaultTest', {});
|
|
18
|
+
customStack = new aws_cdk_lib_1.Stack();
|
|
19
|
+
new bedrock_document_processing_1.BedrockDocumentProcessing(customStack, 'CustomTest', {
|
|
20
|
+
classificationModelId: aws_bedrock_1.FoundationModelIdentifier.ANTHROPIC_CLAUDE_3_HAIKU_20240307_V1_0,
|
|
21
|
+
useCrossRegionInference: false,
|
|
22
|
+
});
|
|
23
|
+
crossRegionStack = new aws_cdk_lib_1.Stack();
|
|
24
|
+
new bedrock_document_processing_1.BedrockDocumentProcessing(crossRegionStack, 'CrossRegionTest', {
|
|
25
|
+
useCrossRegionInference: true,
|
|
26
|
+
crossRegionInferencePrefix: bedrock_document_processing_1.BedrockCrossRegionInferencePrefix.EU,
|
|
27
|
+
});
|
|
28
|
+
// Generate templates once after all constructs are created
|
|
29
|
+
defaultTemplate = assertions_1.Template.fromStack(defaultStack);
|
|
30
|
+
customTemplate = assertions_1.Template.fromStack(customStack);
|
|
31
|
+
crossRegionTemplate = assertions_1.Template.fromStack(crossRegionStack);
|
|
32
|
+
});
|
|
33
|
+
test('creates basic infrastructure', () => {
|
|
34
|
+
defaultTemplate.hasResourceProperties('AWS::S3::Bucket', {});
|
|
35
|
+
defaultTemplate.hasResourceProperties('AWS::SQS::Queue', {});
|
|
36
|
+
defaultTemplate.hasResourceProperties('AWS::DynamoDB::Table', { BillingMode: 'PAY_PER_REQUEST' });
|
|
37
|
+
defaultTemplate.hasResourceProperties('AWS::StepFunctions::StateMachine', {});
|
|
38
|
+
defaultTemplate.resourceCountIs('AWS::Lambda::Function', 5);
|
|
39
|
+
});
|
|
40
|
+
test('uses default model with cross-region prefix disabled', () => {
|
|
41
|
+
defaultTemplate.hasResourceProperties('AWS::Lambda::Function', {
|
|
42
|
+
Environment: {
|
|
43
|
+
Variables: {
|
|
44
|
+
MODEL_ID: 'anthropic.claude-3-7-sonnet-20250219-v1:0',
|
|
45
|
+
},
|
|
46
|
+
},
|
|
47
|
+
});
|
|
48
|
+
});
|
|
49
|
+
test('uses custom model without cross-region prefix', () => {
|
|
50
|
+
customTemplate.hasResourceProperties('AWS::Lambda::Function', {
|
|
51
|
+
Environment: {
|
|
52
|
+
Variables: {
|
|
53
|
+
MODEL_ID: 'anthropic.claude-3-haiku-20240307-v1:0',
|
|
54
|
+
},
|
|
55
|
+
},
|
|
56
|
+
});
|
|
57
|
+
});
|
|
58
|
+
test('configures custom cross-region prefix', () => {
|
|
59
|
+
crossRegionTemplate.hasResourceProperties('AWS::Lambda::Function', {
|
|
60
|
+
Environment: {
|
|
61
|
+
Variables: {
|
|
62
|
+
MODEL_ID: 'eu.anthropic.claude-3-7-sonnet-20250219-v1:0',
|
|
63
|
+
},
|
|
64
|
+
},
|
|
65
|
+
});
|
|
66
|
+
});
|
|
67
|
+
test('creates bedrock permissions', () => {
|
|
68
|
+
defaultTemplate.hasResourceProperties('AWS::IAM::Role', {
|
|
69
|
+
AssumeRolePolicyDocument: {
|
|
70
|
+
Statement: [{
|
|
71
|
+
Action: 'sts:AssumeRole',
|
|
72
|
+
Effect: 'Allow',
|
|
73
|
+
Principal: { Service: 'lambda.amazonaws.com' },
|
|
74
|
+
}],
|
|
75
|
+
},
|
|
76
|
+
});
|
|
77
|
+
});
|
|
78
|
+
});
|
|
79
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmVkcm9jay1kb2N1bWVudC1wcm9jZXNzaW5nLnRlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi91c2UtY2FzZXMvZG9jdW1lbnQtcHJvY2Vzc2luZy90ZXN0cy9iZWRyb2NrLWRvY3VtZW50LXByb2Nlc3NpbmcudGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLDZDQUFvQztBQUNwQyx1REFBa0Q7QUFDbEQseURBQW9FO0FBQ3BFLGdGQUE4RztBQUU5RyxRQUFRLENBQUMsMkJBQTJCLEVBQUUsR0FBRyxFQUFFO0lBQ3pDLElBQUksWUFBbUIsQ0FBQztJQUN4QixJQUFJLFdBQWtCLENBQUM7SUFDdkIsSUFBSSxnQkFBdUIsQ0FBQztJQUM1QixJQUFJLGVBQXlCLENBQUM7SUFDOUIsSUFBSSxjQUF3QixDQUFDO0lBQzdCLElBQUksbUJBQTZCLENBQUM7SUFFbEMsU0FBUyxDQUFDLEdBQUcsRUFBRTtRQUNiLHlDQUF5QztRQUN6QyxZQUFZLEdBQUcsSUFBSSxtQkFBSyxFQUFFLENBQUM7UUFDM0IsSUFBSSx1REFBeUIsQ0FBQyxZQUFZLEVBQUUsYUFBYSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRS9ELFdBQVcsR0FBRyxJQUFJLG1CQUFLLEVBQUUsQ0FBQztRQUMxQixJQUFJLHVEQUF5QixDQUFDLFdBQVcsRUFBRSxZQUFZLEVBQUU7WUFDdkQscUJBQXFCLEVBQUUsdUNBQXlCLENBQUMsc0NBQXNDO1lBQ3ZGLHVCQUF1QixFQUFFLEtBQUs7U0FDL0IsQ0FBQyxDQUFDO1FBRUgsZ0JBQWdCLEdBQUcsSUFBSSxtQkFBSyxFQUFFLENBQUM7UUFDL0IsSUFBSSx1REFBeUIsQ0FBQyxnQkFBZ0IsRUFBRSxpQkFBaUIsRUFBRTtZQUNqRSx1QkFBdUIsRUFBRSxJQUFJO1lBQzdCLDBCQUEwQixFQUFFLCtEQUFpQyxDQUFDLEVBQUU7U0FDakUsQ0FBQyxDQUFDO1FBRUgsMkRBQTJEO1FBQzNELGVBQWUsR0FBRyxxQkFBUSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUNuRCxjQUFjLEdBQUcscUJBQVEsQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDakQsbUJBQW1CLEdBQUcscUJBQVEsQ0FBQyxTQUFTLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUM3RCxDQUFDLENBQUMsQ0FBQztJQUVILElBQUksQ0FBQyw4QkFBOEIsRUFBRSxHQUFHLEVBQUU7UUFDeEMsZUFBZSxDQUFDLHFCQUFxQixDQUFDLGlCQUFpQixFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQzdELGVBQWUsQ0FBQyxxQkFBcUIsQ0FBQyxpQkFBaUIsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUM3RCxlQUFlLENBQUMscUJBQXFCLENBQUMsc0JBQXNCLEVBQUUsRUFBRSxXQUFXLEVBQUUsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDO1FBQ2xHLGVBQWUsQ0FBQyxxQkFBcUIsQ0FBQyxrQ0FBa0MsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUM5RSxlQUFlLENBQUMsZUFBZSxDQUFDLHVCQUF1QixFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzlELENBQUMsQ0FBQyxDQUFDO0lBRUgsSUFBSSxDQUFDLHNEQUFzRCxFQUFFLEdBQUcsRUFBRTtRQUNoRSxlQUFlLENBQUMscUJBQXFCLENBQUMsdUJBQXVCLEVBQUU7WUFDN0QsV0FBVyxFQUFFO2dCQUNYLFNBQVMsRUFBRTtvQkFDVCxRQUFRLEVBQUUsMkNBQTJDO2lCQUN0RDthQUNGO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFFSCxJQUFJLENBQUMsK0NBQStDLEVBQUUsR0FBRyxFQUFFO1FBQ3pELGNBQWMsQ0FBQyxxQkFBcUIsQ0FBQyx1QkFBdUIsRUFBRTtZQUM1RCxXQUFXLEVBQUU7Z0JBQ1gsU0FBUyxFQUFFO29CQUNULFFBQVEsRUFBRSx3Q0FBd0M7aUJBQ25EO2FBQ0Y7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztJQUVILElBQUksQ0FBQyx1Q0FBdUMsRUFBRSxHQUFHLEVBQUU7UUFDakQsbUJBQW1CLENBQUMscUJBQXFCLENBQUMsdUJBQXVCLEVBQUU7WUFDakUsV0FBVyxFQUFFO2dCQUNYLFNBQVMsRUFBRTtvQkFDVCxRQUFRLEVBQUUsOENBQThDO2lCQUN6RDthQUNGO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFFSCxJQUFJLENBQUMsNkJBQTZCLEVBQUUsR0FBRyxFQUFFO1FBQ3ZDLGVBQWUsQ0FBQyxxQkFBcUIsQ0FBQyxnQkFBZ0IsRUFBRTtZQUN0RCx3QkFBd0IsRUFBRTtnQkFDeEIsU0FBUyxFQUFFLENBQUM7d0JBQ1YsTUFBTSxFQUFFLGdCQUFnQjt3QkFDeEIsTUFBTSxFQUFFLE9BQU87d0JBQ2YsU0FBUyxFQUFFLEVBQUUsT0FBTyxFQUFFLHNCQUFzQixFQUFFO3FCQUMvQyxDQUFDO2FBQ0g7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU3RhY2sgfSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgeyBUZW1wbGF0ZSB9IGZyb20gJ2F3cy1jZGstbGliL2Fzc2VydGlvbnMnO1xuaW1wb3J0IHsgRm91bmRhdGlvbk1vZGVsSWRlbnRpZmllciB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1iZWRyb2NrJztcbmltcG9ydCB7IEJlZHJvY2tDcm9zc1JlZ2lvbkluZmVyZW5jZVByZWZpeCwgQmVkcm9ja0RvY3VtZW50UHJvY2Vzc2luZyB9IGZyb20gJy4uL2JlZHJvY2stZG9jdW1lbnQtcHJvY2Vzc2luZyc7XG5cbmRlc2NyaWJlKCdCZWRyb2NrRG9jdW1lbnRQcm9jZXNzaW5nJywgKCkgPT4ge1xuICBsZXQgZGVmYXVsdFN0YWNrOiBTdGFjaztcbiAgbGV0IGN1c3RvbVN0YWNrOiBTdGFjaztcbiAgbGV0IGNyb3NzUmVnaW9uU3RhY2s6IFN0YWNrO1xuICBsZXQgZGVmYXVsdFRlbXBsYXRlOiBUZW1wbGF0ZTtcbiAgbGV0IGN1c3RvbVRlbXBsYXRlOiBUZW1wbGF0ZTtcbiAgbGV0IGNyb3NzUmVnaW9uVGVtcGxhdGU6IFRlbXBsYXRlO1xuXG4gIGJlZm9yZUFsbCgoKSA9PiB7XG4gICAgLy8gQ3JlYXRlIGFsbCBzdGFja3MgYW5kIGNvbnN0cnVjdHMgZmlyc3RcbiAgICBkZWZhdWx0U3RhY2sgPSBuZXcgU3RhY2soKTtcbiAgICBuZXcgQmVkcm9ja0RvY3VtZW50UHJvY2Vzc2luZyhkZWZhdWx0U3RhY2ssICdEZWZhdWx0VGVzdCcsIHt9KTtcblxuICAgIGN1c3RvbVN0YWNrID0gbmV3IFN0YWNrKCk7XG4gICAgbmV3IEJlZHJvY2tEb2N1bWVudFByb2Nlc3NpbmcoY3VzdG9tU3RhY2ssICdDdXN0b21UZXN0Jywge1xuICAgICAgY2xhc3NpZmljYXRpb25Nb2RlbElkOiBGb3VuZGF0aW9uTW9kZWxJZGVudGlmaWVyLkFOVEhST1BJQ19DTEFVREVfM19IQUlLVV8yMDI0MDMwN19WMV8wLFxuICAgICAgdXNlQ3Jvc3NSZWdpb25JbmZlcmVuY2U6IGZhbHNlLFxuICAgIH0pO1xuXG4gICAgY3Jvc3NSZWdpb25TdGFjayA9IG5ldyBTdGFjaygpO1xuICAgIG5ldyBCZWRyb2NrRG9jdW1lbnRQcm9jZXNzaW5nKGNyb3NzUmVnaW9uU3RhY2ssICdDcm9zc1JlZ2lvblRlc3QnLCB7XG4gICAgICB1c2VDcm9zc1JlZ2lvbkluZmVyZW5jZTogdHJ1ZSxcbiAgICAgIGNyb3NzUmVnaW9uSW5mZXJlbmNlUHJlZml4OiBCZWRyb2NrQ3Jvc3NSZWdpb25JbmZlcmVuY2VQcmVmaXguRVUsXG4gICAgfSk7XG5cbiAgICAvLyBHZW5lcmF0ZSB0ZW1wbGF0ZXMgb25jZSBhZnRlciBhbGwgY29uc3RydWN0cyBhcmUgY3JlYXRlZFxuICAgIGRlZmF1bHRUZW1wbGF0ZSA9IFRlbXBsYXRlLmZyb21TdGFjayhkZWZhdWx0U3RhY2spO1xuICAgIGN1c3RvbVRlbXBsYXRlID0gVGVtcGxhdGUuZnJvbVN0YWNrKGN1c3RvbVN0YWNrKTtcbiAgICBjcm9zc1JlZ2lvblRlbXBsYXRlID0gVGVtcGxhdGUuZnJvbVN0YWNrKGNyb3NzUmVnaW9uU3RhY2spO1xuICB9KTtcblxuICB0ZXN0KCdjcmVhdGVzIGJhc2ljIGluZnJhc3RydWN0dXJlJywgKCkgPT4ge1xuICAgIGRlZmF1bHRUZW1wbGF0ZS5oYXNSZXNvdXJjZVByb3BlcnRpZXMoJ0FXUzo6UzM6OkJ1Y2tldCcsIHt9KTtcbiAgICBkZWZhdWx0VGVtcGxhdGUuaGFzUmVzb3VyY2VQcm9wZXJ0aWVzKCdBV1M6OlNRUzo6UXVldWUnLCB7fSk7XG4gICAgZGVmYXVsdFRlbXBsYXRlLmhhc1Jlc291cmNlUHJvcGVydGllcygnQVdTOjpEeW5hbW9EQjo6VGFibGUnLCB7IEJpbGxpbmdNb2RlOiAnUEFZX1BFUl9SRVFVRVNUJyB9KTtcbiAgICBkZWZhdWx0VGVtcGxhdGUuaGFzUmVzb3VyY2VQcm9wZXJ0aWVzKCdBV1M6OlN0ZXBGdW5jdGlvbnM6OlN0YXRlTWFjaGluZScsIHt9KTtcbiAgICBkZWZhdWx0VGVtcGxhdGUucmVzb3VyY2VDb3VudElzKCdBV1M6OkxhbWJkYTo6RnVuY3Rpb24nLCA1KTtcbiAgfSk7XG5cbiAgdGVzdCgndXNlcyBkZWZhdWx0IG1vZGVsIHdpdGggY3Jvc3MtcmVnaW9uIHByZWZpeCBkaXNhYmxlZCcsICgpID0+IHtcbiAgICBkZWZhdWx0VGVtcGxhdGUuaGFzUmVzb3VyY2VQcm9wZXJ0aWVzKCdBV1M6OkxhbWJkYTo6RnVuY3Rpb24nLCB7XG4gICAgICBFbnZpcm9ubWVudDoge1xuICAgICAgICBWYXJpYWJsZXM6IHtcbiAgICAgICAgICBNT0RFTF9JRDogJ2FudGhyb3BpYy5jbGF1ZGUtMy03LXNvbm5ldC0yMDI1MDIxOS12MTowJyxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH0pO1xuXG4gIHRlc3QoJ3VzZXMgY3VzdG9tIG1vZGVsIHdpdGhvdXQgY3Jvc3MtcmVnaW9uIHByZWZpeCcsICgpID0+IHtcbiAgICBjdXN0b21UZW1wbGF0ZS5oYXNSZXNvdXJjZVByb3BlcnRpZXMoJ0FXUzo6TGFtYmRhOjpGdW5jdGlvbicsIHtcbiAgICAgIEVudmlyb25tZW50OiB7XG4gICAgICAgIFZhcmlhYmxlczoge1xuICAgICAgICAgIE1PREVMX0lEOiAnYW50aHJvcGljLmNsYXVkZS0zLWhhaWt1LTIwMjQwMzA3LXYxOjAnLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9KTtcbiAgfSk7XG5cbiAgdGVzdCgnY29uZmlndXJlcyBjdXN0b20gY3Jvc3MtcmVnaW9uIHByZWZpeCcsICgpID0+IHtcbiAgICBjcm9zc1JlZ2lvblRlbXBsYXRlLmhhc1Jlc291cmNlUHJvcGVydGllcygnQVdTOjpMYW1iZGE6OkZ1bmN0aW9uJywge1xuICAgICAgRW52aXJvbm1lbnQ6IHtcbiAgICAgICAgVmFyaWFibGVzOiB7XG4gICAgICAgICAgTU9ERUxfSUQ6ICdldS5hbnRocm9waWMuY2xhdWRlLTMtNy1zb25uZXQtMjAyNTAyMTktdjE6MCcsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0pO1xuICB9KTtcblxuICB0ZXN0KCdjcmVhdGVzIGJlZHJvY2sgcGVybWlzc2lvbnMnLCAoKSA9PiB7XG4gICAgZGVmYXVsdFRlbXBsYXRlLmhhc1Jlc291cmNlUHJvcGVydGllcygnQVdTOjpJQU06OlJvbGUnLCB7XG4gICAgICBBc3N1bWVSb2xlUG9saWN5RG9jdW1lbnQ6IHtcbiAgICAgICAgU3RhdGVtZW50OiBbe1xuICAgICAgICAgIEFjdGlvbjogJ3N0czpBc3N1bWVSb2xlJyxcbiAgICAgICAgICBFZmZlY3Q6ICdBbGxvdycsXG4gICAgICAgICAgUHJpbmNpcGFsOiB7IFNlcnZpY2U6ICdsYW1iZGEuYW1hem9uYXdzLmNvbScgfSxcbiAgICAgICAgfV0sXG4gICAgICB9LFxuICAgIH0pO1xuICB9KTtcbn0pO1xuIl19
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { BundlingOptions } from '@aws-cdk/aws-lambda-python-alpha';
|
|
2
|
+
import { Runtime } from 'aws-cdk-lib/aws-lambda';
|
|
3
|
+
/**
|
|
4
|
+
* Contains default runtimes that would be referenced
|
|
5
|
+
* by Lambda functions in the various use cases. Updating of
|
|
6
|
+
* Runtime versions should be done here.
|
|
7
|
+
*/
|
|
8
|
+
export declare class DefaultRuntimes {
|
|
9
|
+
/**
|
|
10
|
+
* Default runtime for all Lambda functions in the use cases.
|
|
11
|
+
*/
|
|
12
|
+
static readonly NODEJS: Runtime;
|
|
13
|
+
/**
|
|
14
|
+
* Default runtime for Python based Lambda functions.
|
|
15
|
+
*/
|
|
16
|
+
static readonly PYTHON: Runtime;
|
|
17
|
+
/**
|
|
18
|
+
* Default bundling arguments for Python function
|
|
19
|
+
*/
|
|
20
|
+
static readonly PYTHON_FUNCTION_BUNDLING: BundlingOptions;
|
|
21
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var _a, _b;
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.DefaultRuntimes = void 0;
|
|
5
|
+
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
|
|
6
|
+
const aws_lambda_1 = require("aws-cdk-lib/aws-lambda");
|
|
7
|
+
/**
|
|
8
|
+
* Contains default runtimes that would be referenced
|
|
9
|
+
* by Lambda functions in the various use cases. Updating of
|
|
10
|
+
* Runtime versions should be done here.
|
|
11
|
+
*/
|
|
12
|
+
class DefaultRuntimes {
|
|
13
|
+
}
|
|
14
|
+
exports.DefaultRuntimes = DefaultRuntimes;
|
|
15
|
+
_a = DefaultRuntimes, _b = JSII_RTTI_SYMBOL_1;
|
|
16
|
+
DefaultRuntimes[_b] = { fqn: "@cdklabs/cdk-appmod-catalog-blueprints.DefaultRuntimes", version: "1.0.0" };
|
|
17
|
+
/**
|
|
18
|
+
* Default runtime for all Lambda functions in the use cases.
|
|
19
|
+
*/
|
|
20
|
+
DefaultRuntimes.NODEJS = aws_lambda_1.Runtime.NODEJS_22_X;
|
|
21
|
+
/**
|
|
22
|
+
* Default runtime for Python based Lambda functions.
|
|
23
|
+
*/
|
|
24
|
+
DefaultRuntimes.PYTHON = aws_lambda_1.Runtime.PYTHON_3_13;
|
|
25
|
+
/**
|
|
26
|
+
* Default bundling arguments for Python function
|
|
27
|
+
*/
|
|
28
|
+
DefaultRuntimes.PYTHON_FUNCTION_BUNDLING = {
|
|
29
|
+
buildArgs: {
|
|
30
|
+
'--platform': 'linux/amd64',
|
|
31
|
+
},
|
|
32
|
+
image: _a.PYTHON.bundlingImage,
|
|
33
|
+
};
|
|
34
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdC1ydW50aW1lcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3VzZS1jYXNlcy9mcmFtZXdvcmsvY3VzdG9tLXJlc291cmNlL2RlZmF1bHQtcnVudGltZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFHQSx1REFBaUQ7QUFFakQ7Ozs7R0FJRztBQUNILE1BQWEsZUFBZTs7QUFBNUIsMENBcUJDOzs7QUFuQkM7O0tBRUs7QUFDa0Isc0JBQU0sR0FBRyxvQkFBTyxDQUFDLFdBQVcsQUFBdEIsQ0FBdUI7QUFFcEQ7O0dBRUc7QUFDb0Isc0JBQU0sR0FBRyxvQkFBTyxDQUFDLFdBQVcsQUFBdEIsQ0FBdUI7QUFFcEQ7O0dBRUc7QUFDb0Isd0NBQXdCLEdBQW9CO0lBQ2pFLFNBQVMsRUFBRTtRQUNULFlBQVksRUFBRSxhQUFhO0tBQzVCO0lBQ0QsS0FBSyxFQUFFLEVBQUksQ0FBQyxNQUFNLENBQUMsYUFBYTtDQUNqQyxBQUw4QyxDQUs3QyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcbmltcG9ydCB7IEJ1bmRsaW5nT3B0aW9ucyB9IGZyb20gJ0Bhd3MtY2RrL2F3cy1sYW1iZGEtcHl0aG9uLWFscGhhJztcbmltcG9ydCB7IFJ1bnRpbWUgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtbGFtYmRhJztcblxuLyoqXG4gKiBDb250YWlucyBkZWZhdWx0IHJ1bnRpbWVzIHRoYXQgd291bGQgYmUgcmVmZXJlbmNlZFxuICogYnkgTGFtYmRhIGZ1bmN0aW9ucyBpbiB0aGUgdmFyaW91cyB1c2UgY2FzZXMuIFVwZGF0aW5nIG9mXG4gKiBSdW50aW1lIHZlcnNpb25zIHNob3VsZCBiZSBkb25lIGhlcmUuXG4gKi9cbmV4cG9ydCBjbGFzcyBEZWZhdWx0UnVudGltZXMge1xuXG4gIC8qKlxuICAgICAqIERlZmF1bHQgcnVudGltZSBmb3IgYWxsIExhbWJkYSBmdW5jdGlvbnMgaW4gdGhlIHVzZSBjYXNlcy5cbiAgICAgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBOT0RFSlMgPSBSdW50aW1lLk5PREVKU18yMl9YO1xuXG4gIC8qKlxuICAgKiBEZWZhdWx0IHJ1bnRpbWUgZm9yIFB5dGhvbiBiYXNlZCBMYW1iZGEgZnVuY3Rpb25zLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBQWVRIT04gPSBSdW50aW1lLlBZVEhPTl8zXzEzO1xuXG4gIC8qKlxuICAgKiBEZWZhdWx0IGJ1bmRsaW5nIGFyZ3VtZW50cyBmb3IgUHl0aG9uIGZ1bmN0aW9uXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFBZVEhPTl9GVU5DVElPTl9CVU5ETElORzogQnVuZGxpbmdPcHRpb25zID0ge1xuICAgIGJ1aWxkQXJnczoge1xuICAgICAgJy0tcGxhdGZvcm0nOiAnbGludXgvYW1kNjQnLFxuICAgIH0sXG4gICAgaW1hZ2U6IHRoaXMuUFlUSE9OLmJ1bmRsaW5nSW1hZ2UsXG4gIH07XG59Il19
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './default-runtimes';
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./default-runtimes"), exports);
|
|
18
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi91c2UtY2FzZXMvZnJhbWV3b3JrL2N1c3RvbS1yZXNvdXJjZS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEscURBQW1DIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9kZWZhdWx0LXJ1bnRpbWVzJzsiXX0=
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import * as s3 from 'aws-cdk-lib/aws-s3';
|
|
2
|
+
import { Construct } from 'constructs';
|
|
3
|
+
/**
|
|
4
|
+
* Configuration options for the AccessLog construct
|
|
5
|
+
*/
|
|
6
|
+
export interface AccessLogProps {
|
|
7
|
+
/**
|
|
8
|
+
* The name of the S3 bucket for access logs
|
|
9
|
+
* @default 'access-logs'
|
|
10
|
+
*/
|
|
11
|
+
readonly bucketName?: string;
|
|
12
|
+
/**
|
|
13
|
+
* Lifecycle rules for the access logs
|
|
14
|
+
* @default Transition to IA after 30 days, delete after 90 days
|
|
15
|
+
*/
|
|
16
|
+
readonly lifecycleRules?: s3.LifecycleRule[];
|
|
17
|
+
/**
|
|
18
|
+
* Whether to enable versioning on the access logs bucket
|
|
19
|
+
* @default false
|
|
20
|
+
*/
|
|
21
|
+
readonly versioned?: boolean;
|
|
22
|
+
/**
|
|
23
|
+
* Custom bucket prefix for organizing access logs
|
|
24
|
+
* @default 'access-logs'
|
|
25
|
+
*/
|
|
26
|
+
readonly bucketPrefix?: string;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* AccessLog construct that provides a centralized S3 bucket for storing access logs.
|
|
30
|
+
* This construct creates a secure S3 bucket with appropriate policies for AWS services
|
|
31
|
+
* to deliver access logs.
|
|
32
|
+
*
|
|
33
|
+
* Usage:
|
|
34
|
+
*
|
|
35
|
+
* const accessLog = new AccessLog(this, 'AccessLog');
|
|
36
|
+
* const bucket = accessLog.bucket;
|
|
37
|
+
* const bucketName = accessLog.bucketName;
|
|
38
|
+
*/
|
|
39
|
+
export declare class AccessLog extends Construct {
|
|
40
|
+
/**
|
|
41
|
+
* The S3 bucket for storing access logs
|
|
42
|
+
*/
|
|
43
|
+
readonly bucket: s3.Bucket;
|
|
44
|
+
/**
|
|
45
|
+
* The name of the S3 bucket
|
|
46
|
+
*/
|
|
47
|
+
readonly bucketName: string;
|
|
48
|
+
/**
|
|
49
|
+
* The bucket prefix used for organizing access logs
|
|
50
|
+
*/
|
|
51
|
+
readonly bucketPrefix: string;
|
|
52
|
+
constructor(scope: Construct, id: string, props?: AccessLogProps);
|
|
53
|
+
/**
|
|
54
|
+
* Get the S3 bucket path for a specific service's access logs
|
|
55
|
+
*
|
|
56
|
+
* @param serviceName The name of the service (e.g., 'alb', 'cloudfront', 's3')
|
|
57
|
+
* @param resourceName Optional resource name for further organization
|
|
58
|
+
* @returns The S3 path for the service's access logs
|
|
59
|
+
*/
|
|
60
|
+
getLogPath(serviceName: string, resourceName?: string): string;
|
|
61
|
+
/**
|
|
62
|
+
* Get the S3 URI for a specific service's access logs
|
|
63
|
+
*
|
|
64
|
+
* @param serviceName The name of the service (e.g., 'alb', 'cloudfront', 's3')
|
|
65
|
+
* @param resourceName Optional resource name for further organization
|
|
66
|
+
* @returns The S3 URI for the service's access logs
|
|
67
|
+
*/
|
|
68
|
+
getLogUri(serviceName: string, resourceName?: string): string;
|
|
69
|
+
}
|