@aws-cdk/aws-bedrock-agentcore-alpha 2.221.0-alpha.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/.eslintrc.js +4 -0
- package/.jsii +12000 -0
- package/.jsii.tabl.json.gz +0 -0
- package/.warnings.jsii.js +183 -0
- package/LICENSE +201 -0
- package/NOTICE +2 -0
- package/README.md +796 -0
- package/agentcore/index.d.ts +11 -0
- package/agentcore/index.js +36 -0
- package/agentcore/network/network-configuration.d.ts +152 -0
- package/agentcore/network/network-configuration.js +234 -0
- package/agentcore/runtime/perms.d.ts +67 -0
- package/agentcore/runtime/perms.js +101 -0
- package/agentcore/runtime/runtime-artifact.d.ts +42 -0
- package/agentcore/runtime/runtime-artifact.js +90 -0
- package/agentcore/runtime/runtime-authorizer-configuration.d.ts +62 -0
- package/agentcore/runtime/runtime-authorizer-configuration.js +165 -0
- package/agentcore/runtime/runtime-base.d.ts +309 -0
- package/agentcore/runtime/runtime-base.js +207 -0
- package/agentcore/runtime/runtime-endpoint-base.d.ts +130 -0
- package/agentcore/runtime/runtime-endpoint-base.js +31 -0
- package/agentcore/runtime/runtime-endpoint.d.ts +182 -0
- package/agentcore/runtime/runtime-endpoint.js +372 -0
- package/agentcore/runtime/runtime.d.ts +230 -0
- package/agentcore/runtime/runtime.js +590 -0
- package/agentcore/runtime/types.d.ts +16 -0
- package/agentcore/runtime/types.js +21 -0
- package/agentcore/runtime/validation-helpers.d.ts +37 -0
- package/agentcore/runtime/validation-helpers.js +85 -0
- package/agentcore/tools/browser.d.ts +519 -0
- package/agentcore/tools/browser.js +641 -0
- package/agentcore/tools/code-interpreter.d.ts +447 -0
- package/agentcore/tools/code-interpreter.js +553 -0
- package/agentcore/tools/perms.d.ts +74 -0
- package/agentcore/tools/perms.js +122 -0
- package/agentcore/tools/validation-helpers.d.ts +37 -0
- package/agentcore/tools/validation-helpers.js +85 -0
- package/jest.config.js +2 -0
- package/lib/index.d.ts +1 -0
- package/lib/index.js +22 -0
- package/package.json +122 -0
- package/rosetta/_generated.ts-fixture +6 -0
- package/rosetta/default.ts-fixture +19 -0
|
@@ -0,0 +1,372 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
|
|
3
|
+
function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; }
|
|
4
|
+
var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
|
|
5
|
+
var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;
|
|
6
|
+
var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});
|
|
7
|
+
var _, done = false;
|
|
8
|
+
for (var i = decorators.length - 1; i >= 0; i--) {
|
|
9
|
+
var context = {};
|
|
10
|
+
for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p];
|
|
11
|
+
for (var p in contextIn.access) context.access[p] = contextIn.access[p];
|
|
12
|
+
context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); };
|
|
13
|
+
var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);
|
|
14
|
+
if (kind === "accessor") {
|
|
15
|
+
if (result === void 0) continue;
|
|
16
|
+
if (result === null || typeof result !== "object") throw new TypeError("Object expected");
|
|
17
|
+
if (_ = accept(result.get)) descriptor.get = _;
|
|
18
|
+
if (_ = accept(result.set)) descriptor.set = _;
|
|
19
|
+
if (_ = accept(result.init)) initializers.unshift(_);
|
|
20
|
+
}
|
|
21
|
+
else if (_ = accept(result)) {
|
|
22
|
+
if (kind === "field") initializers.unshift(_);
|
|
23
|
+
else descriptor[key] = _;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
if (target) Object.defineProperty(target, contextIn.name, descriptor);
|
|
27
|
+
done = true;
|
|
28
|
+
};
|
|
29
|
+
var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {
|
|
30
|
+
var useValue = arguments.length > 2;
|
|
31
|
+
for (var i = 0; i < initializers.length; i++) {
|
|
32
|
+
value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
|
|
33
|
+
}
|
|
34
|
+
return useValue ? value : void 0;
|
|
35
|
+
};
|
|
36
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
37
|
+
exports.RuntimeEndpoint = void 0;
|
|
38
|
+
const jsiiDeprecationWarnings = require("../../.warnings.jsii.js");
|
|
39
|
+
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
|
|
40
|
+
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
41
|
+
const bedrockagentcore = require("aws-cdk-lib/aws-bedrockagentcore");
|
|
42
|
+
const metadata_resource_1 = require("aws-cdk-lib/core/lib/metadata-resource");
|
|
43
|
+
const prop_injectable_1 = require("aws-cdk-lib/core/lib/prop-injectable");
|
|
44
|
+
const runtime_endpoint_base_1 = require("./runtime-endpoint-base");
|
|
45
|
+
const validation_helpers_1 = require("./validation-helpers");
|
|
46
|
+
/******************************************************************************
|
|
47
|
+
* Class
|
|
48
|
+
*****************************************************************************/
|
|
49
|
+
/**
|
|
50
|
+
* Bedrock Agent Core Runtime Endpoint
|
|
51
|
+
* Provides a stable endpoint for invoking agent runtimes with versioning support
|
|
52
|
+
*
|
|
53
|
+
* @resource AWS::BedrockAgentCore::RuntimeEndpoint
|
|
54
|
+
* @see https://docs.aws.amazon.com/bedrock-agentcore/latest/devguide/runtime-endpoint.html
|
|
55
|
+
*/
|
|
56
|
+
let RuntimeEndpoint = (() => {
|
|
57
|
+
let _classDecorators = [prop_injectable_1.propertyInjectable];
|
|
58
|
+
let _classDescriptor;
|
|
59
|
+
let _classExtraInitializers = [];
|
|
60
|
+
let _classThis;
|
|
61
|
+
let _classSuper = runtime_endpoint_base_1.RuntimeEndpointBase;
|
|
62
|
+
var RuntimeEndpoint = class extends _classSuper {
|
|
63
|
+
static { _classThis = this; }
|
|
64
|
+
static {
|
|
65
|
+
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
|
|
66
|
+
__esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
|
|
67
|
+
RuntimeEndpoint = _classThis = _classDescriptor.value;
|
|
68
|
+
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
69
|
+
}
|
|
70
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.RuntimeEndpoint", version: "2.221.0-alpha.0" };
|
|
71
|
+
/** Uniquely identifies this class. */
|
|
72
|
+
static PROPERTY_INJECTION_ID = '@aws-cdk.aws-bedrock-agentcore-alpha.RuntimeEndpoint';
|
|
73
|
+
/**
|
|
74
|
+
* Import an existing Agent Runtime Endpoint using attributes
|
|
75
|
+
* This allows you to reference an Agent Runtime Endpoint that was created outside of CDK
|
|
76
|
+
*
|
|
77
|
+
* @param scope The construct scope
|
|
78
|
+
* @param id The construct id
|
|
79
|
+
* @param attrs The attributes of the existing Agent Runtime Endpoint
|
|
80
|
+
* @returns An IRuntimeEndpoint instance representing the imported endpoint
|
|
81
|
+
*/
|
|
82
|
+
static fromRuntimeEndpointAttributes(scope, id, attrs) {
|
|
83
|
+
try {
|
|
84
|
+
jsiiDeprecationWarnings._aws_cdk_aws_bedrock_agentcore_alpha_RuntimeEndpointAttributes(attrs);
|
|
85
|
+
}
|
|
86
|
+
catch (error) {
|
|
87
|
+
if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
|
|
88
|
+
Error.captureStackTrace(error, this.fromRuntimeEndpointAttributes);
|
|
89
|
+
}
|
|
90
|
+
throw error;
|
|
91
|
+
}
|
|
92
|
+
class ImportedBedrockAgentRuntimeEndpoint extends runtime_endpoint_base_1.RuntimeEndpointBase {
|
|
93
|
+
agentRuntimeEndpointArn = attrs.agentRuntimeEndpointArn;
|
|
94
|
+
endpointName = attrs.endpointName;
|
|
95
|
+
agentRuntimeArn = attrs.agentRuntimeArn;
|
|
96
|
+
description = attrs.description;
|
|
97
|
+
status = attrs.status;
|
|
98
|
+
liveVersion = attrs.liveVersion;
|
|
99
|
+
targetVersion = attrs.targetVersion;
|
|
100
|
+
createdAt = attrs.createdAt;
|
|
101
|
+
endpointId = attrs.endpointId;
|
|
102
|
+
lastUpdatedAt = attrs.lastUpdatedAt;
|
|
103
|
+
}
|
|
104
|
+
return new ImportedBedrockAgentRuntimeEndpoint(scope, id);
|
|
105
|
+
}
|
|
106
|
+
// Properties from base interface
|
|
107
|
+
/**
|
|
108
|
+
* The ARN of the agent runtime endpoint
|
|
109
|
+
* @attribute
|
|
110
|
+
* @returns a token representing the ARN of this agent runtime endpoint
|
|
111
|
+
*/
|
|
112
|
+
agentRuntimeEndpointArn;
|
|
113
|
+
/**
|
|
114
|
+
* The name of the endpoint
|
|
115
|
+
* @attribute
|
|
116
|
+
* @returns a token representing the name of this endpoint
|
|
117
|
+
*/
|
|
118
|
+
endpointName;
|
|
119
|
+
/**
|
|
120
|
+
* The ARN of the agent runtime associated with this endpoint
|
|
121
|
+
* @attribute
|
|
122
|
+
* @returns a token representing the ARN of the agent runtime
|
|
123
|
+
*/
|
|
124
|
+
agentRuntimeArn;
|
|
125
|
+
/**
|
|
126
|
+
* The status of the endpoint
|
|
127
|
+
* @attribute
|
|
128
|
+
* @returns a token representing the status of this endpoint
|
|
129
|
+
*/
|
|
130
|
+
status;
|
|
131
|
+
/**
|
|
132
|
+
* The live version of the endpoint
|
|
133
|
+
* @attribute
|
|
134
|
+
* @returns a token representing the live version of this endpoint
|
|
135
|
+
*/
|
|
136
|
+
liveVersion;
|
|
137
|
+
/**
|
|
138
|
+
* The target version of the endpoint
|
|
139
|
+
* @attribute
|
|
140
|
+
* @returns a token representing the target version of this endpoint
|
|
141
|
+
*/
|
|
142
|
+
targetVersion;
|
|
143
|
+
/**
|
|
144
|
+
* The timestamp when the endpoint was created
|
|
145
|
+
* @attribute
|
|
146
|
+
* @returns a token representing the creation timestamp of this endpoint
|
|
147
|
+
*/
|
|
148
|
+
createdAt;
|
|
149
|
+
/**
|
|
150
|
+
* Optional description for the endpoint
|
|
151
|
+
*/
|
|
152
|
+
description;
|
|
153
|
+
/**
|
|
154
|
+
* The unique identifier of the runtime endpoint
|
|
155
|
+
* @attribute
|
|
156
|
+
* @returns a token representing the ID of this endpoint
|
|
157
|
+
*/
|
|
158
|
+
endpointId;
|
|
159
|
+
/**
|
|
160
|
+
* The ID of the agent runtime associated with this endpoint
|
|
161
|
+
*/
|
|
162
|
+
agentRuntimeId;
|
|
163
|
+
/**
|
|
164
|
+
* The version of the agent runtime used by this endpoint
|
|
165
|
+
*/
|
|
166
|
+
agentRuntimeVersion;
|
|
167
|
+
/**
|
|
168
|
+
* When this endpoint was last updated
|
|
169
|
+
* @attribute
|
|
170
|
+
* @returns a token representing the last update timestamp of this endpoint
|
|
171
|
+
*/
|
|
172
|
+
lastUpdatedAt;
|
|
173
|
+
endpointResource;
|
|
174
|
+
constructor(scope, id, props) {
|
|
175
|
+
super(scope, id);
|
|
176
|
+
try {
|
|
177
|
+
jsiiDeprecationWarnings._aws_cdk_aws_bedrock_agentcore_alpha_RuntimeEndpointProps(props);
|
|
178
|
+
}
|
|
179
|
+
catch (error) {
|
|
180
|
+
if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
|
|
181
|
+
Error.captureStackTrace(error, RuntimeEndpoint);
|
|
182
|
+
}
|
|
183
|
+
throw error;
|
|
184
|
+
}
|
|
185
|
+
// CDK Analytics Telemetry
|
|
186
|
+
(0, metadata_resource_1.addConstructMetadata)(this, props);
|
|
187
|
+
// Set and validate properties immediately
|
|
188
|
+
this.endpointName = props.endpointName;
|
|
189
|
+
this.validateEndpointName();
|
|
190
|
+
this.agentRuntimeId = props.agentRuntimeId;
|
|
191
|
+
this.validateAgentRuntimeId();
|
|
192
|
+
this.agentRuntimeVersion = props.agentRuntimeVersion ?? '1';
|
|
193
|
+
this.validateAgentRuntimeVersion();
|
|
194
|
+
this.description = props.description;
|
|
195
|
+
if (this.description) {
|
|
196
|
+
this.validateDescription();
|
|
197
|
+
}
|
|
198
|
+
if (props.tags) {
|
|
199
|
+
this.validateTags(props.tags);
|
|
200
|
+
}
|
|
201
|
+
const cfnProps = {
|
|
202
|
+
name: this.endpointName,
|
|
203
|
+
agentRuntimeId: aws_cdk_lib_1.Lazy.string({
|
|
204
|
+
produce: () => this.renderAgentRuntimeId(),
|
|
205
|
+
}),
|
|
206
|
+
agentRuntimeVersion: aws_cdk_lib_1.Lazy.string({
|
|
207
|
+
produce: () => this.renderAgentRuntimeVersion(),
|
|
208
|
+
}),
|
|
209
|
+
description: aws_cdk_lib_1.Lazy.string({
|
|
210
|
+
produce: () => this.renderDescription(),
|
|
211
|
+
}),
|
|
212
|
+
tags: props.tags ?? {},
|
|
213
|
+
};
|
|
214
|
+
this.endpointResource = new bedrockagentcore.CfnRuntimeEndpoint(this, 'Resource', cfnProps);
|
|
215
|
+
this.endpointId = this.endpointResource.attrId;
|
|
216
|
+
this.agentRuntimeEndpointArn = this.endpointResource.attrAgentRuntimeEndpointArn;
|
|
217
|
+
this.agentRuntimeArn = this.endpointResource.attrAgentRuntimeArn;
|
|
218
|
+
this.status = this.endpointResource.attrStatus;
|
|
219
|
+
this.liveVersion = this.endpointResource.attrLiveVersion;
|
|
220
|
+
this.targetVersion = this.endpointResource.attrTargetVersion;
|
|
221
|
+
this.createdAt = this.endpointResource.attrCreatedAt;
|
|
222
|
+
this.lastUpdatedAt = this.endpointResource.attrLastUpdatedAt;
|
|
223
|
+
}
|
|
224
|
+
/**
|
|
225
|
+
* Renders the agent runtime ID for CloudFormation
|
|
226
|
+
* @internal
|
|
227
|
+
*/
|
|
228
|
+
renderAgentRuntimeId() {
|
|
229
|
+
return this.agentRuntimeId;
|
|
230
|
+
}
|
|
231
|
+
/**
|
|
232
|
+
* Renders the agent runtime version for CloudFormation
|
|
233
|
+
* @internal
|
|
234
|
+
*/
|
|
235
|
+
renderAgentRuntimeVersion() {
|
|
236
|
+
return this.agentRuntimeVersion;
|
|
237
|
+
}
|
|
238
|
+
/**
|
|
239
|
+
* Renders the description for CloudFormation
|
|
240
|
+
* @internal
|
|
241
|
+
*/
|
|
242
|
+
renderDescription() {
|
|
243
|
+
return this.description;
|
|
244
|
+
}
|
|
245
|
+
/**
|
|
246
|
+
* Validates the endpoint name format
|
|
247
|
+
* Pattern: ^[a-zA-Z][a-zA-Z0-9_]{0,47}$
|
|
248
|
+
* @throws Error if validation fails
|
|
249
|
+
*/
|
|
250
|
+
validateEndpointName() {
|
|
251
|
+
// Skip validation if the name contains CDK tokens (unresolved values)
|
|
252
|
+
if (aws_cdk_lib_1.Token.isUnresolved(this.endpointName)) {
|
|
253
|
+
return;
|
|
254
|
+
}
|
|
255
|
+
// Validate length
|
|
256
|
+
const lengthErrors = (0, validation_helpers_1.validateStringField)({
|
|
257
|
+
value: this.endpointName,
|
|
258
|
+
fieldName: 'Endpoint name',
|
|
259
|
+
minLength: 1,
|
|
260
|
+
maxLength: 48,
|
|
261
|
+
});
|
|
262
|
+
// Validate pattern
|
|
263
|
+
const patternErrors = (0, validation_helpers_1.validateFieldPattern)(this.endpointName, 'Endpoint name', /^[a-zA-Z][a-zA-Z0-9_]{0,47}$/, 'Endpoint name must start with a letter and contain only letters, numbers, and underscores');
|
|
264
|
+
// Combine and throw if any errors
|
|
265
|
+
const allErrors = [...lengthErrors, ...patternErrors];
|
|
266
|
+
if (allErrors.length > 0) {
|
|
267
|
+
throw new validation_helpers_1.ValidationError(allErrors.join('\n'));
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
/**
|
|
271
|
+
* Validates the description format
|
|
272
|
+
* Must be between 1 and 256 characters (per CloudFormation specification)
|
|
273
|
+
* @throws Error if validation fails
|
|
274
|
+
*/
|
|
275
|
+
validateDescription() {
|
|
276
|
+
if (aws_cdk_lib_1.Token.isUnresolved(this.description)) {
|
|
277
|
+
return;
|
|
278
|
+
}
|
|
279
|
+
if (this.description) {
|
|
280
|
+
const errors = (0, validation_helpers_1.validateStringField)({
|
|
281
|
+
value: this.description,
|
|
282
|
+
fieldName: 'Description',
|
|
283
|
+
minLength: 1,
|
|
284
|
+
maxLength: 256,
|
|
285
|
+
});
|
|
286
|
+
if (errors.length > 0) {
|
|
287
|
+
throw new validation_helpers_1.ValidationError(errors.join('\n'));
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
/**
|
|
292
|
+
* Validates the agent runtime ID format
|
|
293
|
+
* Pattern: ^[a-zA-Z][a-zA-Z0-9_]{0,99}-[a-zA-Z0-9]{10}$
|
|
294
|
+
* @throws Error if validation fails
|
|
295
|
+
*/
|
|
296
|
+
validateAgentRuntimeId() {
|
|
297
|
+
// Skip validation if the ID contains CDK tokens (unresolved values)
|
|
298
|
+
if (aws_cdk_lib_1.Token.isUnresolved(this.agentRuntimeId)) {
|
|
299
|
+
return;
|
|
300
|
+
}
|
|
301
|
+
// Validate pattern only (no length validation per AWS specs)
|
|
302
|
+
const patternErrors = (0, validation_helpers_1.validateFieldPattern)(this.agentRuntimeId, 'Agent runtime ID', /^[a-zA-Z][a-zA-Z0-9_]{0,99}-[a-zA-Z0-9]{10}$/, 'Agent runtime ID must start with a letter, followed by up to 99 alphanumeric or underscore characters, then a hyphen, and exactly 10 alphanumeric characters');
|
|
303
|
+
if (patternErrors.length > 0) {
|
|
304
|
+
throw new validation_helpers_1.ValidationError(patternErrors.join('\n'));
|
|
305
|
+
}
|
|
306
|
+
}
|
|
307
|
+
/**
|
|
308
|
+
* Validates the agent runtime version format
|
|
309
|
+
* Pattern: ^([1-9][0-9]{0,4})$
|
|
310
|
+
* @throws Error if validation fails
|
|
311
|
+
*/
|
|
312
|
+
validateAgentRuntimeVersion() {
|
|
313
|
+
if (aws_cdk_lib_1.Token.isUnresolved(this.agentRuntimeVersion)) {
|
|
314
|
+
return;
|
|
315
|
+
}
|
|
316
|
+
// Validate pattern only (no length validation per AWS specs)
|
|
317
|
+
const patternErrors = (0, validation_helpers_1.validateFieldPattern)(this.agentRuntimeVersion, 'Agent runtime version', /^[1-9]\d{0,4}$/, 'Agent runtime version must be a number between 1 and 99999');
|
|
318
|
+
if (patternErrors.length > 0) {
|
|
319
|
+
throw new validation_helpers_1.ValidationError(patternErrors.join('\n'));
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
/**
|
|
323
|
+
* Validates the tags format
|
|
324
|
+
* @param tags The tags object to validate
|
|
325
|
+
* @throws Error if validation fails
|
|
326
|
+
*/
|
|
327
|
+
validateTags(tags) {
|
|
328
|
+
for (const [key, value] of Object.entries(tags)) {
|
|
329
|
+
if (aws_cdk_lib_1.Token.isUnresolved(key) || aws_cdk_lib_1.Token.isUnresolved(value)) {
|
|
330
|
+
continue;
|
|
331
|
+
}
|
|
332
|
+
// Validate tag key length
|
|
333
|
+
const keyLengthErrors = (0, validation_helpers_1.validateStringField)({
|
|
334
|
+
value: key,
|
|
335
|
+
fieldName: `Tag key "${key}"`,
|
|
336
|
+
minLength: 1,
|
|
337
|
+
maxLength: 256,
|
|
338
|
+
});
|
|
339
|
+
// Validate tag key pattern
|
|
340
|
+
const keyPatternErrors = (0, validation_helpers_1.validateFieldPattern)(key, `Tag key "${key}"`, /^[a-zA-Z0-9\s._:/=+@-]*$/, `Tag key "${key}" can only contain letters (a-z, A-Z), numbers (0-9), spaces, and special characters (._:/=+@-)`);
|
|
341
|
+
// Combine key errors and throw if any
|
|
342
|
+
const keyErrors = [...keyLengthErrors, ...keyPatternErrors];
|
|
343
|
+
if (keyErrors.length > 0) {
|
|
344
|
+
throw new validation_helpers_1.ValidationError(keyErrors.join('\n'));
|
|
345
|
+
}
|
|
346
|
+
if (value === undefined || value === null) {
|
|
347
|
+
throw new validation_helpers_1.ValidationError(`Tag value for key "${key}" cannot be null or undefined`);
|
|
348
|
+
}
|
|
349
|
+
// Validate tag value length
|
|
350
|
+
const valueLengthErrors = (0, validation_helpers_1.validateStringField)({
|
|
351
|
+
value: value,
|
|
352
|
+
fieldName: `Tag value for key "${key}"`,
|
|
353
|
+
minLength: 0,
|
|
354
|
+
maxLength: 256,
|
|
355
|
+
});
|
|
356
|
+
// Validate tag value pattern
|
|
357
|
+
const valuePatternErrors = (0, validation_helpers_1.validateFieldPattern)(value, `Tag value for key "${key}"`, /^[a-zA-Z0-9\s._:/=+@-]*$/, `Tag value for key "${key}" can only contain letters (a-z, A-Z), numbers (0-9), spaces, and special characters (._:/=+@-)`);
|
|
358
|
+
// Combine value errors and throw if any
|
|
359
|
+
const valueErrors = [...valueLengthErrors, ...valuePatternErrors];
|
|
360
|
+
if (valueErrors.length > 0) {
|
|
361
|
+
throw new validation_helpers_1.ValidationError(valueErrors.join('\n'));
|
|
362
|
+
}
|
|
363
|
+
}
|
|
364
|
+
}
|
|
365
|
+
static {
|
|
366
|
+
__runInitializers(_classThis, _classExtraInitializers);
|
|
367
|
+
}
|
|
368
|
+
};
|
|
369
|
+
return RuntimeEndpoint = _classThis;
|
|
370
|
+
})();
|
|
371
|
+
exports.RuntimeEndpoint = RuntimeEndpoint;
|
|
372
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVudGltZS1lbmRwb2ludC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInJ1bnRpbWUtZW5kcG9pbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsNkNBQTBDO0FBQzFDLHFFQUFxRTtBQUNyRSw4RUFBOEU7QUFDOUUsMEVBQTBFO0FBRTFFLG1FQUEyRztBQUMzRyw2REFBa0c7QUFpRGxHOzsrRUFFK0U7QUFFL0U7Ozs7OztHQU1HO0lBRVUsZUFBZTs0QkFEM0Isb0NBQWtCOzs7O3NCQUNrQiwyQ0FBbUI7K0JBQTNCLFNBQVEsV0FBbUI7Ozs7WUFBeEQsNktBd1ZDOzs7OztRQXZWQyxzQ0FBc0M7UUFDL0IsTUFBTSxDQUFVLHFCQUFxQixHQUFXLHNEQUFzRCxDQUFDO1FBRTlHOzs7Ozs7OztXQVFHO1FBQ0ksTUFBTSxDQUFDLDZCQUE2QixDQUN6QyxLQUFnQixFQUNoQixFQUFVLEVBQ1YsS0FBZ0M7Ozs7Ozs7Ozs7WUFFaEMsTUFBTSxtQ0FBb0MsU0FBUSwyQ0FBbUI7Z0JBQ25ELHVCQUF1QixHQUFHLEtBQUssQ0FBQyx1QkFBdUIsQ0FBQztnQkFDeEQsWUFBWSxHQUFHLEtBQUssQ0FBQyxZQUFZLENBQUM7Z0JBQ2xDLGVBQWUsR0FBRyxLQUFLLENBQUMsZUFBZSxDQUFDO2dCQUN4QyxXQUFXLEdBQUcsS0FBSyxDQUFDLFdBQVcsQ0FBQztnQkFDaEMsTUFBTSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUM7Z0JBQ3RCLFdBQVcsR0FBRyxLQUFLLENBQUMsV0FBVyxDQUFDO2dCQUNoQyxhQUFhLEdBQUcsS0FBSyxDQUFDLGFBQWEsQ0FBQztnQkFDcEMsU0FBUyxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUM7Z0JBQzVCLFVBQVUsR0FBRyxLQUFLLENBQUMsVUFBVSxDQUFDO2dCQUM5QixhQUFhLEdBQUcsS0FBSyxDQUFDLGFBQWEsQ0FBQzthQUNyRDtZQUVELE9BQU8sSUFB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MENBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUb2tlbiwgTGF6eSB9IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCAqIGFzIGJlZHJvY2thZ2VudGNvcmUgZnJvbSAnYXdzLWNkay1saWIvYXdzLWJlZHJvY2thZ2VudGNvcmUnO1xuaW1wb3J0IHsgYWRkQ29uc3RydWN0TWV0YWRhdGEgfSBmcm9tICdhd3MtY2RrLWxpYi9jb3JlL2xpYi9tZXRhZGF0YS1yZXNvdXJjZSc7XG5pbXBvcnQgeyBwcm9wZXJ0eUluamVjdGFibGUgfSBmcm9tICdhd3MtY2RrLWxpYi9jb3JlL2xpYi9wcm9wLWluamVjdGFibGUnO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgeyBSdW50aW1lRW5kcG9pbnRCYXNlLCBJUnVudGltZUVuZHBvaW50LCBSdW50aW1lRW5kcG9pbnRBdHRyaWJ1dGVzIH0gZnJvbSAnLi9ydW50aW1lLWVuZHBvaW50LWJhc2UnO1xuaW1wb3J0IHsgdmFsaWRhdGVTdHJpbmdGaWVsZCwgdmFsaWRhdGVGaWVsZFBhdHRlcm4sIFZhbGlkYXRpb25FcnJvciB9IGZyb20gJy4vdmFsaWRhdGlvbi1oZWxwZXJzJztcblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByb3BzXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgY3JlYXRpbmcgYSBCZWRyb2NrIEFnZW50IENvcmUgUnVudGltZSBFbmRwb2ludCByZXNvdXJjZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJ1bnRpbWVFbmRwb2ludFByb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBhZ2VudCBydW50aW1lIGVuZHBvaW50XG4gICAqIFZhbGlkIGNoYXJhY3RlcnMgYXJlIGEteiwgQS1aLCAwLTksIF8gKHVuZGVyc2NvcmUpXG4gICAqIE11c3Qgc3RhcnQgd2l0aCBhIGxldHRlciBhbmQgY2FuIGJlIHVwIHRvIDQ4IGNoYXJhY3RlcnMgbG9uZ1xuICAgKiBQYXR0ZXJuOiBeW2EtekEtWl1bYS16QS1aMC05X117MCw0N30kXG4gICAqL1xuICByZWFkb25seSBlbmRwb2ludE5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIElEIG9mIHRoZSBhZ2VudCBydW50aW1lIHRvIGFzc29jaWF0ZSB3aXRoIHRoaXMgZW5kcG9pbnRcbiAgICogVGhpcyBpcyB0aGUgdW5pcXVlIGlkZW50aWZpZXIgb2YgdGhlIHJ1bnRpbWUgcmVzb3VyY2VcbiAgICogUGF0dGVybjogXlthLXpBLVpdW2EtekEtWjAtOV9dezAsOTl9LVthLXpBLVowLTldezEwfSRcbiAgICovXG4gIHJlYWRvbmx5IGFnZW50UnVudGltZUlkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSB2ZXJzaW9uIG9mIHRoZSBhZ2VudCBydW50aW1lIHRvIHVzZSBmb3IgdGhpcyBlbmRwb2ludFxuICAgKiBJZiBub3Qgc3BlY2lmaWVkLCB0aGUgZW5kcG9pbnQgd2lsbCBwb2ludCB0byB2ZXJzaW9uIFwiMVwiIG9mIHRoZSBydW50aW1lLlxuICAgKiBQYXR0ZXJuOiBeKFsxLTldWzAtOV17MCw0fSkkXG4gICAqIEBkZWZhdWx0IFwiMVwiXG4gICAqL1xuICByZWFkb25seSBhZ2VudFJ1bnRpbWVWZXJzaW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBPcHRpb25hbCBkZXNjcmlwdGlvbiBmb3IgdGhlIGFnZW50IHJ1bnRpbWUgZW5kcG9pbnRcbiAgICogTGVuZ3RoIE1pbmltdW06IDEgLCAgTWF4aW11bTogMjU2XG4gICAqIEBkZWZhdWx0IC0gTm8gZGVzY3JpcHRpb25cbiAgICovXG4gIHJlYWRvbmx5IGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUYWdzIGZvciB0aGUgYWdlbnQgcnVudGltZSBlbmRwb2ludFxuICAgKiBBIGxpc3Qgb2Yga2V5OnZhbHVlIHBhaXJzIG9mIHRhZ3MgdG8gYXBwbHkgdG8gdGhpcyBSdW50aW1lRW5kcG9pbnQgcmVzb3VyY2VcbiAgICogUGF0dGVybjogXlthLXpBLVowLTlcXHMuXzovPStALV0qJFxuICAgKiBAZGVmYXVsdCB7fSAtIG5vIHRhZ3NcbiAgICovXG4gIHJlYWRvbmx5IHRhZ3M/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9O1xufVxuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2xhc3NcbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuLyoqXG4gKiBCZWRyb2NrIEFnZW50IENvcmUgUnVudGltZSBFbmRwb2ludFxuICogUHJvdmlkZXMgYSBzdGFibGUgZW5kcG9pbnQgZm9yIGludm9raW5nIGFnZW50IHJ1bnRpbWVzIHdpdGggdmVyc2lvbmluZyBzdXBwb3J0XG4gKlxuICogQHJlc291cmNlIEFXUzo6QmVkcm9ja0FnZW50Q29yZTo6UnVudGltZUVuZHBvaW50XG4gKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9iZWRyb2NrLWFnZW50Y29yZS9sYXRlc3QvZGV2Z3VpZGUvcnVudGltZS1lbmRwb2ludC5odG1sXG4gKi9cbkBwcm9wZXJ0eUluamVjdGFibGVcbmV4cG9ydCBjbGFzcyBSdW50aW1lRW5kcG9pbnQgZXh0ZW5kcyBSdW50aW1lRW5kcG9pbnRCYXNlIHtcbiAgLyoqIFVuaXF1ZWx5IGlkZW50aWZpZXMgdGhpcyBjbGFzcy4gKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBQUk9QRVJUWV9JTkpFQ1RJT05fSUQ6IHN0cmluZyA9ICdAYXdzLWNkay5hd3MtYmVkcm9jay1hZ2VudGNvcmUtYWxwaGEuUnVudGltZUVuZHBvaW50JztcblxuICAvKipcbiAgICogSW1wb3J0IGFuIGV4aXN0aW5nIEFnZW50IFJ1bnRpbWUgRW5kcG9pbnQgdXNpbmcgYXR0cmlidXRlc1xuICAgKiBUaGlzIGFsbG93cyB5b3UgdG8gcmVmZXJlbmNlIGFuIEFnZW50IFJ1bnRpbWUgRW5kcG9pbnQgdGhhdCB3YXMgY3JlYXRlZCBvdXRzaWRlIG9mIENES1xuICAgKlxuICAgKiBAcGFyYW0gc2NvcGUgVGhlIGNvbnN0cnVjdCBzY29wZVxuICAgKiBAcGFyYW0gaWQgVGhlIGNvbnN0cnVjdCBpZFxuICAgKiBAcGFyYW0gYXR0cnMgVGhlIGF0dHJpYnV0ZXMgb2YgdGhlIGV4aXN0aW5nIEFnZW50IFJ1bnRpbWUgRW5kcG9pbnRcbiAgICogQHJldHVybnMgQW4gSVJ1bnRpbWVFbmRwb2ludCBpbnN0YW5jZSByZXByZXNlbnRpbmcgdGhlIGltcG9ydGVkIGVuZHBvaW50XG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21SdW50aW1lRW5kcG9pbnRBdHRyaWJ1dGVzKFxuICAgIHNjb3BlOiBDb25zdHJ1Y3QsXG4gICAgaWQ6IHN0cmluZyxcbiAgICBhdHRyczogUnVudGltZUVuZHBvaW50QXR0cmlidXRlcyxcbiAgKTogSVJ1bnRpbWVFbmRwb2ludCB7XG4gICAgY2xhc3MgSW1wb3J0ZWRCZWRyb2NrQWdlbnRSdW50aW1lRW5kcG9pbnQgZXh0ZW5kcyBSdW50aW1lRW5kcG9pbnRCYXNlIHtcbiAgICAgIHB1YmxpYyByZWFkb25seSBhZ2VudFJ1bnRpbWVFbmRwb2ludEFybiA9IGF0dHJzLmFnZW50UnVudGltZUVuZHBvaW50QXJuO1xuICAgICAgcHVibGljIHJlYWRvbmx5IGVuZHBvaW50TmFtZSA9IGF0dHJzLmVuZHBvaW50TmFtZTtcbiAgICAgIHB1YmxpYyByZWFkb25seSBhZ2VudFJ1bnRpbWVBcm4gPSBhdHRycy5hZ2VudFJ1bnRpbWVBcm47XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgZGVzY3JpcHRpb24gPSBhdHRycy5kZXNjcmlwdGlvbjtcbiAgICAgIHB1YmxpYyByZWFkb25seSBzdGF0dXMgPSBhdHRycy5zdGF0dXM7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgbGl2ZVZlcnNpb24gPSBhdHRycy5saXZlVmVyc2lvbjtcbiAgICAgIHB1YmxpYyByZWFkb25seSB0YXJnZXRWZXJzaW9uID0gYXR0cnMudGFyZ2V0VmVyc2lvbjtcbiAgICAgIHB1YmxpYyByZWFkb25seSBjcmVhdGVkQXQgPSBhdHRycy5jcmVhdGVkQXQ7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgZW5kcG9pbnRJZCA9IGF0dHJzLmVuZHBvaW50SWQ7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgbGFzdFVwZGF0ZWRBdCA9IGF0dHJzLmxhc3RVcGRhdGVkQXQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBJbXBvcnRlZEJlZHJvY2tBZ2VudFJ1bnRpbWVFbmRwb2ludChzY29wZSwgaWQpO1xuICB9XG5cbiAgLy8gUHJvcGVydGllcyBmcm9tIGJhc2UgaW50ZXJmYWNlXG4gIC8qKlxuICAgKiBUaGUgQVJOIG9mIHRoZSBhZ2VudCBydW50aW1lIGVuZHBvaW50XG4gICAqIEBhdHRyaWJ1dGVcbiAgICogQHJldHVybnMgYSB0b2tlbiByZXByZXNlbnRpbmcgdGhlIEFSTiBvZiB0aGlzIGFnZW50IHJ1bnRpbWUgZW5kcG9pbnRcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBhZ2VudFJ1bnRpbWVFbmRwb2ludEFybjogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIGVuZHBvaW50XG4gICAqIEBhdHRyaWJ1dGVcbiAgICogQHJldHVybnMgYSB0b2tlbiByZXByZXNlbnRpbmcgdGhlIG5hbWUgb2YgdGhpcyBlbmRwb2ludFxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGVuZHBvaW50TmFtZTogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIEFSTiBvZiB0aGUgYWdlbnQgcnVudGltZSBhc3NvY2lhdGVkIHdpdGggdGhpcyBlbmRwb2ludFxuICAgKiBAYXR0cmlidXRlXG4gICAqIEByZXR1cm5zIGEgdG9rZW4gcmVwcmVzZW50aW5nIHRoZSBBUk4gb2YgdGhlIGFnZW50IHJ1bnRpbWVcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBhZ2VudFJ1bnRpbWVBcm46IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBzdGF0dXMgb2YgdGhlIGVuZHBvaW50XG4gICAqIEBhdHRyaWJ1dGVcbiAgICogQHJldHVybnMgYSB0b2tlbiByZXByZXNlbnRpbmcgdGhlIHN0YXR1cyBvZiB0aGlzIGVuZHBvaW50XG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgc3RhdHVzPzogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIGxpdmUgdmVyc2lvbiBvZiB0aGUgZW5kcG9pbnRcbiAgICogQGF0dHJpYnV0ZVxuICAgKiBAcmV0dXJucyBhIHRva2VuIHJlcHJlc2VudGluZyB0aGUgbGl2ZSB2ZXJzaW9uIG9mIHRoaXMgZW5kcG9pbnRcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBsaXZlVmVyc2lvbj86IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSB0YXJnZXQgdmVyc2lvbiBvZiB0aGUgZW5kcG9pbnRcbiAgICogQGF0dHJpYnV0ZVxuICAgKiBAcmV0dXJucyBhIHRva2VuIHJlcHJlc2VudGluZyB0aGUgdGFyZ2V0IHZlcnNpb24gb2YgdGhpcyBlbmRwb2ludFxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHRhcmdldFZlcnNpb24/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgdGltZXN0YW1wIHdoZW4gdGhlIGVuZHBvaW50IHdhcyBjcmVhdGVkXG4gICAqIEBhdHRyaWJ1dGVcbiAgICogQHJldHVybnMgYSB0b2tlbiByZXByZXNlbnRpbmcgdGhlIGNyZWF0aW9uIHRpbWVzdGFtcCBvZiB0aGlzIGVuZHBvaW50XG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgY3JlYXRlZEF0Pzogc3RyaW5nO1xuICAvKipcbiAgICogT3B0aW9uYWwgZGVzY3JpcHRpb24gZm9yIHRoZSBlbmRwb2ludFxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIHVuaXF1ZSBpZGVudGlmaWVyIG9mIHRoZSBydW50aW1lIGVuZHBvaW50XG4gICAqIEBhdHRyaWJ1dGVcbiAgICogQHJldHVybnMgYSB0b2tlbiByZXByZXNlbnRpbmcgdGhlIElEIG9mIHRoaXMgZW5kcG9pbnRcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBlbmRwb2ludElkOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgSUQgb2YgdGhlIGFnZW50IHJ1bnRpbWUgYXNzb2NpYXRlZCB3aXRoIHRoaXMgZW5kcG9pbnRcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBhZ2VudFJ1bnRpbWVJZDogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIHZlcnNpb24gb2YgdGhlIGFnZW50IHJ1bnRpbWUgdXNlZCBieSB0aGlzIGVuZHBvaW50XG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgYWdlbnRSdW50aW1lVmVyc2lvbjogc3RyaW5nO1xuICAvKipcbiAgICogV2hlbiB0aGlzIGVuZHBvaW50IHdhcyBsYXN0IHVwZGF0ZWRcbiAgICogQGF0dHJpYnV0ZVxuICAgKiBAcmV0dXJucyBhIHRva2VuIHJlcHJlc2VudGluZyB0aGUgbGFzdCB1cGRhdGUgdGltZXN0YW1wIG9mIHRoaXMgZW5kcG9pbnRcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBsYXN0VXBkYXRlZEF0Pzogc3RyaW5nO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgZW5kcG9pbnRSZXNvdXJjZTogYmVkcm9ja2FnZW50Y29yZS5DZm5SdW50aW1lRW5kcG9pbnQ7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IFJ1bnRpbWVFbmRwb2ludFByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIC8vIENESyBBbmFseXRpY3MgVGVsZW1ldHJ5XG4gICAgYWRkQ29uc3RydWN0TWV0YWRhdGEodGhpcywgcHJvcHMpO1xuXG4gICAgLy8gU2V0IGFuZCB2YWxpZGF0ZSBwcm9wZXJ0aWVzIGltbWVkaWF0ZWx5XG4gICAgdGhpcy5lbmRwb2ludE5hbWUgPSBwcm9wcy5lbmRwb2ludE5hbWU7XG4gICAgdGhpcy52YWxpZGF0ZUVuZHBvaW50TmFtZSgpO1xuXG4gICAgdGhpcy5hZ2VudFJ1bnRpbWVJZCA9IHByb3BzLmFnZW50UnVudGltZUlkO1xuICAgIHRoaXMudmFsaWRhdGVBZ2VudFJ1bnRpbWVJZCgpO1xuXG4gICAgdGhpcy5hZ2VudFJ1bnRpbWVWZXJzaW9uID0gcHJvcHMuYWdlbnRSdW50aW1lVmVyc2lvbiA/PyAnMSc7XG4gICAgdGhpcy52YWxpZGF0ZUFnZW50UnVudGltZVZlcnNpb24oKTtcblxuICAgIHRoaXMuZGVzY3JpcHRpb24gPSBwcm9wcy5kZXNjcmlwdGlvbjtcbiAgICBpZiAodGhpcy5kZXNjcmlwdGlvbikge1xuICAgICAgdGhpcy52YWxpZGF0ZURlc2NyaXB0aW9uKCk7XG4gICAgfVxuXG4gICAgaWYgKHByb3BzLnRhZ3MpIHtcbiAgICAgIHRoaXMudmFsaWRhdGVUYWdzKHByb3BzLnRhZ3MpO1xuICAgIH1cblxuICAgIGNvbnN0IGNmblByb3BzOiBiZWRyb2NrYWdlbnRjb3JlLkNmblJ1bnRpbWVFbmRwb2ludFByb3BzID0ge1xuICAgICAgbmFtZTogdGhpcy5lbmRwb2ludE5hbWUsXG4gICAgICBhZ2VudFJ1bnRpbWVJZDogTGF6eS5zdHJpbmcoe1xuICAgICAgICBwcm9kdWNlOiAoKSA9PiB0aGlzLnJlbmRlckFnZW50UnVudGltZUlkKCksXG4gICAgICB9KSxcbiAgICAgIGFnZW50UnVudGltZVZlcnNpb246IExhenkuc3RyaW5nKHtcbiAgICAgICAgcHJvZHVjZTogKCkgPT4gdGhpcy5yZW5kZXJBZ2VudFJ1bnRpbWVWZXJzaW9uKCksXG4gICAgICB9KSxcbiAgICAgIGRlc2NyaXB0aW9uOiBMYXp5LnN0cmluZyh7XG4gICAgICAgIHByb2R1Y2U6ICgpID0+IHRoaXMucmVuZGVyRGVzY3JpcHRpb24oKSxcbiAgICAgIH0pLFxuICAgICAgdGFnczogcHJvcHMudGFncyA/PyB7fSxcbiAgICB9O1xuXG4gICAgdGhpcy5lbmRwb2ludFJlc291cmNlID0gbmV3IGJlZHJvY2thZ2VudGNvcmUuQ2ZuUnVudGltZUVuZHBvaW50KHRoaXMsICdSZXNvdXJjZScsIGNmblByb3BzKTtcblxuICAgIHRoaXMuZW5kcG9pbnRJZCA9IHRoaXMuZW5kcG9pbnRSZXNvdXJjZS5hdHRySWQ7XG4gICAgdGhpcy5hZ2VudFJ1bnRpbWVFbmRwb2ludEFybiA9IHRoaXMuZW5kcG9pbnRSZXNvdXJjZS5hdHRyQWdlbnRSdW50aW1lRW5kcG9pbnRBcm47XG4gICAgdGhpcy5hZ2VudFJ1bnRpbWVBcm4gPSB0aGlzLmVuZHBvaW50UmVzb3VyY2UuYXR0ckFnZW50UnVudGltZUFybjtcbiAgICB0aGlzLnN0YXR1cyA9IHRoaXMuZW5kcG9pbnRSZXNvdXJjZS5hdHRyU3RhdHVzO1xuICAgIHRoaXMubGl2ZVZlcnNpb24gPSB0aGlzLmVuZHBvaW50UmVzb3VyY2UuYXR0ckxpdmVWZXJzaW9uO1xuICAgIHRoaXMudGFyZ2V0VmVyc2lvbiA9IHRoaXMuZW5kcG9pbnRSZXNvdXJjZS5hdHRyVGFyZ2V0VmVyc2lvbjtcbiAgICB0aGlzLmNyZWF0ZWRBdCA9IHRoaXMuZW5kcG9pbnRSZXNvdXJjZS5hdHRyQ3JlYXRlZEF0O1xuICAgIHRoaXMubGFzdFVwZGF0ZWRBdCA9IHRoaXMuZW5kcG9pbnRSZXNvdXJjZS5hdHRyTGFzdFVwZGF0ZWRBdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW5kZXJzIHRoZSBhZ2VudCBydW50aW1lIElEIGZvciBDbG91ZEZvcm1hdGlvblxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHByaXZhdGUgcmVuZGVyQWdlbnRSdW50aW1lSWQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5hZ2VudFJ1bnRpbWVJZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW5kZXJzIHRoZSBhZ2VudCBydW50aW1lIHZlcnNpb24gZm9yIENsb3VkRm9ybWF0aW9uXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHJpdmF0ZSByZW5kZXJBZ2VudFJ1bnRpbWVWZXJzaW9uKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuYWdlbnRSdW50aW1lVmVyc2lvbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW5kZXJzIHRoZSBkZXNjcmlwdGlvbiBmb3IgQ2xvdWRGb3JtYXRpb25cbiAgICogQGludGVybmFsXG4gICAqL1xuICBwcml2YXRlIHJlbmRlckRlc2NyaXB0aW9uKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuZGVzY3JpcHRpb247XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGVzIHRoZSBlbmRwb2ludCBuYW1lIGZvcm1hdFxuICAgKiBQYXR0ZXJuOiBeW2EtekEtWl1bYS16QS1aMC05X117MCw0N30kXG4gICAqIEB0aHJvd3MgRXJyb3IgaWYgdmFsaWRhdGlvbiBmYWlsc1xuICAgKi9cbiAgcHJpdmF0ZSB2YWxpZGF0ZUVuZHBvaW50TmFtZSgpOiB2b2lkIHtcbiAgICAvLyBTa2lwIHZhbGlkYXRpb24gaWYgdGhlIG5hbWUgY29udGFpbnMgQ0RLIHRva2VucyAodW5yZXNvbHZlZCB2YWx1ZXMpXG4gICAgaWYgKFRva2VuLmlzVW5yZXNvbHZlZCh0aGlzLmVuZHBvaW50TmFtZSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBWYWxpZGF0ZSBsZW5ndGhcbiAgICBjb25zdCBsZW5ndGhFcnJvcnMgPSB2YWxpZGF0ZVN0cmluZ0ZpZWxkKHtcbiAgICAgIHZhbHVlOiB0aGlzLmVuZHBvaW50TmFtZSxcbiAgICAgIGZpZWxkTmFtZTogJ0VuZHBvaW50IG5hbWUnLFxuICAgICAgbWluTGVuZ3RoOiAxLFxuICAgICAgbWF4TGVuZ3RoOiA0OCxcbiAgICB9KTtcblxuICAgIC8vIFZhbGlkYXRlIHBhdHRlcm5cbiAgICBjb25zdCBwYXR0ZXJuRXJyb3JzID0gdmFsaWRhdGVGaWVsZFBhdHRlcm4oXG4gICAgICB0aGlzLmVuZHBvaW50TmFtZSxcbiAgICAgICdFbmRwb2ludCBuYW1lJyxcbiAgICAgIC9eW2EtekEtWl1bYS16QS1aMC05X117MCw0N30kLyxcbiAgICAgICdFbmRwb2ludCBuYW1lIG11c3Qgc3RhcnQgd2l0aCBhIGxldHRlciBhbmQgY29udGFpbiBvbmx5IGxldHRlcnMsIG51bWJlcnMsIGFuZCB1bmRlcnNjb3JlcycsXG4gICAgKTtcblxuICAgIC8vIENvbWJpbmUgYW5kIHRocm93IGlmIGFueSBlcnJvcnNcbiAgICBjb25zdCBhbGxFcnJvcnMgPSBbLi4ubGVuZ3RoRXJyb3JzLCAuLi5wYXR0ZXJuRXJyb3JzXTtcbiAgICBpZiAoYWxsRXJyb3JzLmxlbmd0aCA+IDApIHtcbiAgICAgIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoYWxsRXJyb3JzLmpvaW4oJ1xcbicpKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGVzIHRoZSBkZXNjcmlwdGlvbiBmb3JtYXRcbiAgICogTXVzdCBiZSBiZXR3ZWVuIDEgYW5kIDI1NiBjaGFyYWN0ZXJzIChwZXIgQ2xvdWRGb3JtYXRpb24gc3BlY2lmaWNhdGlvbilcbiAgICogQHRocm93cyBFcnJvciBpZiB2YWxpZGF0aW9uIGZhaWxzXG4gICAqL1xuICBwcml2YXRlIHZhbGlkYXRlRGVzY3JpcHRpb24oKTogdm9pZCB7XG4gICAgaWYgKFRva2VuLmlzVW5yZXNvbHZlZCh0aGlzLmRlc2NyaXB0aW9uKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmRlc2NyaXB0aW9uKSB7XG4gICAgICBjb25zdCBlcnJvcnMgPSB2YWxpZGF0ZVN0cmluZ0ZpZWxkKHtcbiAgICAgICAgdmFsdWU6IHRoaXMuZGVzY3JpcHRpb24sXG4gICAgICAgIGZpZWxkTmFtZTogJ0Rlc2NyaXB0aW9uJyxcbiAgICAgICAgbWluTGVuZ3RoOiAxLFxuICAgICAgICBtYXhMZW5ndGg6IDI1NixcbiAgICAgIH0pO1xuXG4gICAgICBpZiAoZXJyb3JzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcihlcnJvcnMuam9pbignXFxuJykpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZXMgdGhlIGFnZW50IHJ1bnRpbWUgSUQgZm9ybWF0XG4gICAqIFBhdHRlcm46IF5bYS16QS1aXVthLXpBLVowLTlfXXswLDk5fS1bYS16QS1aMC05XXsxMH0kXG4gICAqIEB0aHJvd3MgRXJyb3IgaWYgdmFsaWRhdGlvbiBmYWlsc1xuICAgKi9cbiAgcHJpdmF0ZSB2YWxpZGF0ZUFnZW50UnVudGltZUlkKCk6IHZvaWQge1xuICAgIC8vIFNraXAgdmFsaWRhdGlvbiBpZiB0aGUgSUQgY29udGFpbnMgQ0RLIHRva2VucyAodW5yZXNvbHZlZCB2YWx1ZXMpXG4gICAgaWYgKFRva2VuLmlzVW5yZXNvbHZlZCh0aGlzLmFnZW50UnVudGltZUlkKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIFZhbGlkYXRlIHBhdHRlcm4gb25seSAobm8gbGVuZ3RoIHZhbGlkYXRpb24gcGVyIEFXUyBzcGVjcylcbiAgICBjb25zdCBwYXR0ZXJuRXJyb3JzID0gdmFsaWRhdGVGaWVsZFBhdHRlcm4oXG4gICAgICB0aGlzLmFnZW50UnVudGltZUlkLFxuICAgICAgJ0FnZW50IHJ1bnRpbWUgSUQnLFxuICAgICAgL15bYS16QS1aXVthLXpBLVowLTlfXXswLDk5fS1bYS16QS1aMC05XXsxMH0kLyxcbiAgICAgICdBZ2VudCBydW50aW1lIElEIG11c3Qgc3RhcnQgd2l0aCBhIGxldHRlciwgZm9sbG93ZWQgYnkgdXAgdG8gOTkgYWxwaGFudW1lcmljIG9yIHVuZGVyc2NvcmUgY2hhcmFjdGVycywgdGhlbiBhIGh5cGhlbiwgYW5kIGV4YWN0bHkgMTAgYWxwaGFudW1lcmljIGNoYXJhY3RlcnMnLFxuICAgICk7XG5cbiAgICBpZiAocGF0dGVybkVycm9ycy5sZW5ndGggPiAwKSB7XG4gICAgICB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKHBhdHRlcm5FcnJvcnMuam9pbignXFxuJykpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZXMgdGhlIGFnZW50IHJ1bnRpbWUgdmVyc2lvbiBmb3JtYXRcbiAgICogUGF0dGVybjogXihbMS05XVswLTldezAsNH0pJFxuICAgKiBAdGhyb3dzIEVycm9yIGlmIHZhbGlkYXRpb24gZmFpbHNcbiAgICovXG4gIHByaXZhdGUgdmFsaWRhdGVBZ2VudFJ1bnRpbWVWZXJzaW9uKCk6IHZvaWQge1xuICAgIGlmIChUb2tlbi5pc1VucmVzb2x2ZWQodGhpcy5hZ2VudFJ1bnRpbWVWZXJzaW9uKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIFZhbGlkYXRlIHBhdHRlcm4gb25seSAobm8gbGVuZ3RoIHZhbGlkYXRpb24gcGVyIEFXUyBzcGVjcylcbiAgICBjb25zdCBwYXR0ZXJuRXJyb3JzID0gdmFsaWRhdGVGaWVsZFBhdHRlcm4oXG4gICAgICB0aGlzLmFnZW50UnVudGltZVZlcnNpb24sXG4gICAgICAnQWdlbnQgcnVudGltZSB2ZXJzaW9uJyxcbiAgICAgIC9eWzEtOV1cXGR7MCw0fSQvLFxuICAgICAgJ0FnZW50IHJ1bnRpbWUgdmVyc2lvbiBtdXN0IGJlIGEgbnVtYmVyIGJldHdlZW4gMSBhbmQgOTk5OTknLFxuICAgICk7XG5cbiAgICBpZiAocGF0dGVybkVycm9ycy5sZW5ndGggPiAwKSB7XG4gICAgICB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKHBhdHRlcm5FcnJvcnMuam9pbignXFxuJykpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZXMgdGhlIHRhZ3MgZm9ybWF0XG4gICAqIEBwYXJhbSB0YWdzIFRoZSB0YWdzIG9iamVjdCB0byB2YWxpZGF0ZVxuICAgKiBAdGhyb3dzIEVycm9yIGlmIHZhbGlkYXRpb24gZmFpbHNcbiAgICovXG4gIHByaXZhdGUgdmFsaWRhdGVUYWdzKHRhZ3M6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0pOiB2b2lkIHtcbiAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyh0YWdzKSkge1xuICAgICAgaWYgKFRva2VuLmlzVW5yZXNvbHZlZChrZXkpIHx8IFRva2VuLmlzVW5yZXNvbHZlZCh2YWx1ZSkpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIC8vIFZhbGlkYXRlIHRhZyBrZXkgbGVuZ3RoXG4gICAgICBjb25zdCBrZXlMZW5ndGhFcnJvcnMgPSB2YWxpZGF0ZVN0cmluZ0ZpZWxkKHtcbiAgICAgICAgdmFsdWU6IGtleSxcbiAgICAgICAgZmllbGROYW1lOiBgVGFnIGtleSBcIiR7a2V5fVwiYCxcbiAgICAgICAgbWluTGVuZ3RoOiAxLFxuICAgICAgICBtYXhMZW5ndGg6IDI1NixcbiAgICAgIH0pO1xuXG4gICAgICAvLyBWYWxpZGF0ZSB0YWcga2V5IHBhdHRlcm5cbiAgICAgIGNvbnN0IGtleVBhdHRlcm5FcnJvcnMgPSB2YWxpZGF0ZUZpZWxkUGF0dGVybihcbiAgICAgICAga2V5LFxuICAgICAgICBgVGFnIGtleSBcIiR7a2V5fVwiYCxcbiAgICAgICAgL15bYS16QS1aMC05XFxzLl86Lz0rQC1dKiQvLFxuICAgICAgICBgVGFnIGtleSBcIiR7a2V5fVwiIGNhbiBvbmx5IGNvbnRhaW4gbGV0dGVycyAoYS16LCBBLVopLCBudW1iZXJzICgwLTkpLCBzcGFjZXMsIGFuZCBzcGVjaWFsIGNoYXJhY3RlcnMgKC5fOi89K0AtKWAsXG4gICAgICApO1xuXG4gICAgICAvLyBDb21iaW5lIGtleSBlcnJvcnMgYW5kIHRocm93IGlmIGFueVxuICAgICAgY29uc3Qga2V5RXJyb3JzID0gWy4uLmtleUxlbmd0aEVycm9ycywgLi4ua2V5UGF0dGVybkVycm9yc107XG4gICAgICBpZiAoa2V5RXJyb3JzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcihrZXlFcnJvcnMuam9pbignXFxuJykpO1xuICAgICAgfVxuXG4gICAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZSA9PT0gbnVsbCkge1xuICAgICAgICB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKGBUYWcgdmFsdWUgZm9yIGtleSBcIiR7a2V5fVwiIGNhbm5vdCBiZSBudWxsIG9yIHVuZGVmaW5lZGApO1xuICAgICAgfVxuXG4gICAgICAvLyBWYWxpZGF0ZSB0YWcgdmFsdWUgbGVuZ3RoXG4gICAgICBjb25zdCB2YWx1ZUxlbmd0aEVycm9ycyA9IHZhbGlkYXRlU3RyaW5nRmllbGQoe1xuICAgICAgICB2YWx1ZTogdmFsdWUsXG4gICAgICAgIGZpZWxkTmFtZTogYFRhZyB2YWx1ZSBmb3Iga2V5IFwiJHtrZXl9XCJgLFxuICAgICAgICBtaW5MZW5ndGg6IDAsXG4gICAgICAgIG1heExlbmd0aDogMjU2LFxuICAgICAgfSk7XG5cbiAgICAgIC8vIFZhbGlkYXRlIHRhZyB2YWx1ZSBwYXR0ZXJuXG4gICAgICBjb25zdCB2YWx1ZVBhdHRlcm5FcnJvcnMgPSB2YWxpZGF0ZUZpZWxkUGF0dGVybihcbiAgICAgICAgdmFsdWUsXG4gICAgICAgIGBUYWcgdmFsdWUgZm9yIGtleSBcIiR7a2V5fVwiYCxcbiAgICAgICAgL15bYS16QS1aMC05XFxzLl86Lz0rQC1dKiQvLFxuICAgICAgICBgVGFnIHZhbHVlIGZvciBrZXkgXCIke2tleX1cIiBjYW4gb25seSBjb250YWluIGxldHRlcnMgKGEteiwgQS1aKSwgbnVtYmVycyAoMC05KSwgc3BhY2VzLCBhbmQgc3BlY2lhbCBjaGFyYWN0ZXJzICguXzovPStALSlgLFxuICAgICAgKTtcblxuICAgICAgLy8gQ29tYmluZSB2YWx1ZSBlcnJvcnMgYW5kIHRocm93IGlmIGFueVxuICAgICAgY29uc3QgdmFsdWVFcnJvcnMgPSBbLi4udmFsdWVMZW5ndGhFcnJvcnMsIC4uLnZhbHVlUGF0dGVybkVycm9yc107XG4gICAgICBpZiAodmFsdWVFcnJvcnMubGVuZ3RoID4gMCkge1xuICAgICAgICB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKHZhbHVlRXJyb3JzLmpvaW4oJ1xcbicpKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,230 @@
|
|
|
1
|
+
import * as iam from 'aws-cdk-lib/aws-iam';
|
|
2
|
+
import { Construct } from 'constructs';
|
|
3
|
+
import { AgentRuntimeArtifact } from './runtime-artifact';
|
|
4
|
+
import { RuntimeAuthorizerConfiguration } from './runtime-authorizer-configuration';
|
|
5
|
+
import { RuntimeBase, IBedrockAgentRuntime, AgentRuntimeAttributes } from './runtime-base';
|
|
6
|
+
import { RuntimeEndpoint } from './runtime-endpoint';
|
|
7
|
+
import { RuntimeNetworkConfiguration } from '../network/network-configuration';
|
|
8
|
+
import { ProtocolType } from './types';
|
|
9
|
+
/******************************************************************************
|
|
10
|
+
* Props
|
|
11
|
+
*****************************************************************************/
|
|
12
|
+
/**
|
|
13
|
+
* Properties for creating a Bedrock Agent Core Runtime resource
|
|
14
|
+
*/
|
|
15
|
+
export interface RuntimeProps {
|
|
16
|
+
/**
|
|
17
|
+
* The name of the agent runtime
|
|
18
|
+
* Valid characters are a-z, A-Z, 0-9, _ (underscore)
|
|
19
|
+
* Must start with a letter and can be up to 48 characters long
|
|
20
|
+
* Pattern: ^[a-zA-Z][a-zA-Z0-9_]{0,47}$
|
|
21
|
+
*/
|
|
22
|
+
readonly runtimeName: string;
|
|
23
|
+
/**
|
|
24
|
+
* The artifact configuration for the agent runtime
|
|
25
|
+
* Contains the container configuration with ECR URI
|
|
26
|
+
*/
|
|
27
|
+
readonly agentRuntimeArtifact: AgentRuntimeArtifact;
|
|
28
|
+
/**
|
|
29
|
+
* The IAM role that provides permissions for the agent runtime
|
|
30
|
+
* If not provided, a role will be created automatically
|
|
31
|
+
* @default - A new role will be created
|
|
32
|
+
*/
|
|
33
|
+
readonly executionRole?: iam.IRole;
|
|
34
|
+
/**
|
|
35
|
+
* Network configuration for the agent runtime
|
|
36
|
+
* @default - RuntimeNetworkConfiguration.usingPublicNetwork()
|
|
37
|
+
*/
|
|
38
|
+
readonly networkConfiguration?: RuntimeNetworkConfiguration;
|
|
39
|
+
/**
|
|
40
|
+
* Optional description for the agent runtime
|
|
41
|
+
* @default - No description
|
|
42
|
+
* Length Minimum: 1 , Maximum: 1200
|
|
43
|
+
*/
|
|
44
|
+
readonly description?: string;
|
|
45
|
+
/**
|
|
46
|
+
* Protocol configuration for the agent runtime
|
|
47
|
+
* @default - ProtocolType.HTTP
|
|
48
|
+
*/
|
|
49
|
+
readonly protocolConfiguration?: ProtocolType;
|
|
50
|
+
/**
|
|
51
|
+
* Environment variables for the agent runtime
|
|
52
|
+
* - Maximum 50 environment variables
|
|
53
|
+
* - Key: Must be 1-100 characters, start with letter or underscore, contain only letters, numbers, and underscores
|
|
54
|
+
* - Value: Must be 0-2048 characters (per CloudFormation specification)
|
|
55
|
+
* @default - No environment variables
|
|
56
|
+
*/
|
|
57
|
+
readonly environmentVariables?: {
|
|
58
|
+
[key: string]: string;
|
|
59
|
+
};
|
|
60
|
+
/**
|
|
61
|
+
* Authorizer configuration for the agent runtime
|
|
62
|
+
* Use RuntimeAuthorizerConfiguration static methods to create the configuration
|
|
63
|
+
* @default - RuntimeAuthorizerConfiguration.iam() (IAM authentication)
|
|
64
|
+
*/
|
|
65
|
+
readonly authorizerConfiguration?: RuntimeAuthorizerConfiguration;
|
|
66
|
+
/**
|
|
67
|
+
* Tags for the agent runtime
|
|
68
|
+
* A list of key:value pairs of tags to apply to this Runtime resource
|
|
69
|
+
* @default {} - no tags
|
|
70
|
+
*/
|
|
71
|
+
readonly tags?: {
|
|
72
|
+
[key: string]: string;
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Options for adding an endpoint to the runtime
|
|
77
|
+
*/
|
|
78
|
+
export interface AddEndpointOptions {
|
|
79
|
+
/**
|
|
80
|
+
* Description for the endpoint, Must be between 1 and 1200 characters
|
|
81
|
+
* @default - No description
|
|
82
|
+
*/
|
|
83
|
+
readonly description?: string;
|
|
84
|
+
/**
|
|
85
|
+
* Override the runtime version for this endpoint
|
|
86
|
+
* @default 1
|
|
87
|
+
*/
|
|
88
|
+
readonly version?: string;
|
|
89
|
+
}
|
|
90
|
+
/******************************************************************************
|
|
91
|
+
* Class
|
|
92
|
+
*****************************************************************************/
|
|
93
|
+
/**
|
|
94
|
+
* Bedrock Agent Core Runtime
|
|
95
|
+
* Enables running containerized agents with specific network configurations,
|
|
96
|
+
* security settings, and runtime artifacts.
|
|
97
|
+
*
|
|
98
|
+
* @resource AWS::BedrockAgentCore::Runtime
|
|
99
|
+
* @see https://docs.aws.amazon.com/bedrock-agentcore/latest/devguide/runtime.html
|
|
100
|
+
*/
|
|
101
|
+
export declare class Runtime extends RuntimeBase {
|
|
102
|
+
/** Uniquely identifies this class. */
|
|
103
|
+
static readonly PROPERTY_INJECTION_ID: string;
|
|
104
|
+
/**
|
|
105
|
+
* Import an existing Agent Runtime using attributes
|
|
106
|
+
* This allows you to reference an Agent Runtime that was created outside of CDK
|
|
107
|
+
*
|
|
108
|
+
* @param scope The construct scope
|
|
109
|
+
* @param id The construct id
|
|
110
|
+
* @param attrs The attributes of the existing Agent Runtime
|
|
111
|
+
* @returns An IBedrockAgentRuntime instance representing the imported runtime
|
|
112
|
+
*/
|
|
113
|
+
static fromAgentRuntimeAttributes(scope: Construct, id: string, attrs: AgentRuntimeAttributes): IBedrockAgentRuntime;
|
|
114
|
+
/**
|
|
115
|
+
* The ARN of the agent runtime
|
|
116
|
+
* @attribute
|
|
117
|
+
* @returns a token representing the ARN of this agent runtime
|
|
118
|
+
*/
|
|
119
|
+
readonly agentRuntimeArn: string;
|
|
120
|
+
/**
|
|
121
|
+
* The unique identifier of the agent runtime
|
|
122
|
+
* @attribute
|
|
123
|
+
* @returns a token representing the ID of this agent runtime
|
|
124
|
+
*/
|
|
125
|
+
readonly agentRuntimeId: string;
|
|
126
|
+
/**
|
|
127
|
+
* The name of the agent runtime
|
|
128
|
+
* @attribute
|
|
129
|
+
* @returns a token representing the name of this agent runtime
|
|
130
|
+
*/
|
|
131
|
+
readonly agentRuntimeName: string;
|
|
132
|
+
readonly role: iam.IRole;
|
|
133
|
+
/**
|
|
134
|
+
* The version of the agent runtime
|
|
135
|
+
* @attribute
|
|
136
|
+
* @returns a token representing the version of this agent runtime
|
|
137
|
+
*/
|
|
138
|
+
readonly agentRuntimeVersion?: string;
|
|
139
|
+
/**
|
|
140
|
+
* The status of the agent runtime
|
|
141
|
+
* @attribute
|
|
142
|
+
* @returns a token representing the status of this agent runtime
|
|
143
|
+
*/
|
|
144
|
+
readonly agentStatus?: string;
|
|
145
|
+
/**
|
|
146
|
+
* Optional description for the agent runtime
|
|
147
|
+
*/
|
|
148
|
+
readonly description?: string;
|
|
149
|
+
/**
|
|
150
|
+
* The timestamp when the agent runtime was created
|
|
151
|
+
* @attribute
|
|
152
|
+
* @returns a token representing the creation timestamp of this agent runtime
|
|
153
|
+
*/
|
|
154
|
+
readonly createdAt?: string;
|
|
155
|
+
/**
|
|
156
|
+
* The timestamp when the agent runtime was last updated
|
|
157
|
+
* @attribute
|
|
158
|
+
* @returns a token representing the last update timestamp of this agent runtime
|
|
159
|
+
*/
|
|
160
|
+
readonly lastUpdatedAt?: string;
|
|
161
|
+
readonly grantPrincipal: iam.IPrincipal;
|
|
162
|
+
private readonly runtimeResource;
|
|
163
|
+
/**
|
|
164
|
+
* The artifact configuration for the agent runtime
|
|
165
|
+
*/
|
|
166
|
+
readonly agentRuntimeArtifact: AgentRuntimeArtifact;
|
|
167
|
+
private readonly networkConfiguration;
|
|
168
|
+
private readonly protocolConfiguration;
|
|
169
|
+
private readonly authorizerConfiguration?;
|
|
170
|
+
constructor(scope: Construct, id: string, props: RuntimeProps);
|
|
171
|
+
/**
|
|
172
|
+
* Renders the environment variables for CloudFormation
|
|
173
|
+
* @internal
|
|
174
|
+
*/
|
|
175
|
+
private renderEnvironmentVariables;
|
|
176
|
+
/**
|
|
177
|
+
* Creates an execution role for the agent runtime with proper permissions
|
|
178
|
+
* Based on: https://docs.aws.amazon.com/bedrock-agentcore/latest/devguide/runtime-permissions.html
|
|
179
|
+
*/
|
|
180
|
+
private createExecutionRole;
|
|
181
|
+
/**
|
|
182
|
+
* Renders the artifact configuration for CloudFormation
|
|
183
|
+
* @internal
|
|
184
|
+
*/
|
|
185
|
+
private renderAgentRuntimeArtifact;
|
|
186
|
+
/**
|
|
187
|
+
* Validates the runtime name format
|
|
188
|
+
* Pattern: ^[a-zA-Z][a-zA-Z0-9_]{0,47}$
|
|
189
|
+
* @throws Error if validation fails
|
|
190
|
+
*/
|
|
191
|
+
private validateRuntimeName;
|
|
192
|
+
/**
|
|
193
|
+
* Validates the description format
|
|
194
|
+
* Must be between 1 and 1200 characters (per CloudFormation specification)
|
|
195
|
+
* @throws Error if validation fails
|
|
196
|
+
*/
|
|
197
|
+
private validateDescription;
|
|
198
|
+
/**
|
|
199
|
+
* Validates environment variables
|
|
200
|
+
* - Maximum 50 entries
|
|
201
|
+
* - Key: 1-100 characters
|
|
202
|
+
* - Value: 0-2048 characters (per CloudFormation specification)
|
|
203
|
+
* @throws Error if validation fails
|
|
204
|
+
*/
|
|
205
|
+
private validateEnvironmentVariables;
|
|
206
|
+
/**
|
|
207
|
+
* Validates the tags format
|
|
208
|
+
* @param tags The tags object to validate
|
|
209
|
+
* @throws Error if validation fails
|
|
210
|
+
*/
|
|
211
|
+
private validateTags;
|
|
212
|
+
/**
|
|
213
|
+
* Validates the container URI format
|
|
214
|
+
*/
|
|
215
|
+
private validateContainerUri;
|
|
216
|
+
/**
|
|
217
|
+
* Validates the IAM role ARN format and structure
|
|
218
|
+
* @throws Error if validation fails
|
|
219
|
+
*/
|
|
220
|
+
private validateRoleArn;
|
|
221
|
+
/**
|
|
222
|
+
* Add an endpoint to this runtime
|
|
223
|
+
* This is a convenience method that creates a RuntimeEndpoint associated with this runtime
|
|
224
|
+
*
|
|
225
|
+
* @param endpointName The name of the endpoint
|
|
226
|
+
* @param options Optional configuration for the endpoint
|
|
227
|
+
* @returns The created RuntimeEndpoint
|
|
228
|
+
*/
|
|
229
|
+
addEndpoint(endpointName: string, options?: AddEndpointOptions): RuntimeEndpoint;
|
|
230
|
+
}
|