UNPKG

@aws-cdk/aws-bedrock-agentcore-alpha

Version:

The CDK Construct Library for Amazon Bedrock

90 lines 11 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.AgentRuntimeArtifact = void 0; const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti"); const assets = require("aws-cdk-lib/aws-ecr-assets"); const helpers_internal_1 = require("aws-cdk-lib/core/lib/helpers-internal"); const validation_helpers_1 = require("./validation-helpers"); /** * Abstract base class for agent runtime artifacts. * Provides methods to reference container images from ECR repositories or local assets. */ class AgentRuntimeArtifact { static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.AgentRuntimeArtifact", version: "2.227.0-alpha.0" }; /** * Reference an image in an ECR repository */ static fromEcrRepository(repository, tag = 'latest') { return new EcrImage(repository, tag); } /** * Reference an agent runtime artifact that's constructed directly from sources on disk * @param directory The directory where the Dockerfile is stored * @param options The options to further configure the selected image */ static fromAsset(directory, options = {}) { return new AssetImage(directory, options); } } exports.AgentRuntimeArtifact = AgentRuntimeArtifact; class EcrImage extends AgentRuntimeArtifact { repository; tag; bound = false; constructor(repository, tag) { super(); this.repository = repository; this.tag = tag; } bind(_scope, runtime) { // Handle permissions (only once) if (!this.bound && runtime.role) { this.repository.grantPull(runtime.role); this.bound = true; } } _render() { // Return container configuration directly as expected by the runtime // The runtime wraps this in containerConfiguration return { containerUri: this.repository.repositoryUriForTag(this.tag), }; } } class AssetImage extends AgentRuntimeArtifact { directory; options; asset; bound = false; constructor(directory, options = {}) { super(); this.directory = directory; this.options = options; } bind(scope, runtime) { // Create the asset if not already created if (!this.asset) { const hash = (0, helpers_internal_1.md5hash)(this.directory); this.asset = new assets.DockerImageAsset(scope, `AgentRuntimeArtifact${hash}`, { directory: this.directory, ...this.options, }); } // Grant permissions (only once) if (!this.bound) { this.asset.repository.grantPull(runtime.role); this.bound = true; } } _render() { if (!this.asset) { throw new validation_helpers_1.ValidationError('Asset not initialized. Call bind() before _render()'); } // Return container configuration directly as expected by the runtime // The runtime wraps this in containerConfiguration return { containerUri: this.asset.imageUri, }; } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVudGltZS1hcnRpZmFjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInJ1bnRpbWUtYXJ0aWZhY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQWNBLHFEQUFxRDtBQUVyRCw0RUFBZ0U7QUFHaEUsNkRBQXVEO0FBRXZEOzs7R0FHRztBQUNILE1BQXNCLG9CQUFvQjs7SUFDeEM7O09BRUc7SUFDSSxNQUFNLENBQUMsaUJBQWlCLENBQUMsVUFBMkIsRUFBRSxNQUFjLFFBQVE7UUFDakYsT0FBTyxJQUFJLFFBQVEsQ0FBQyxVQUFVLEVBQUUsR0FBRyxDQUFDLENBQUM7S0FDdEM7SUFFRDs7OztPQUlHO0lBQ0ksTUFBTSxDQUFDLFNBQVMsQ0FBQyxTQUFpQixFQUFFLFVBQTBDLEVBQUU7UUFDckYsT0FBTyxJQUFJLFVBQVUsQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUM7S0FDM0M7O0FBZkgsb0RBMkJDO0FBRUQsTUFBTSxRQUFTLFNBQVEsb0JBQW9CO0lBR1o7SUFBOEM7SUFGbkUsS0FBSyxHQUFHLEtBQUssQ0FBQztJQUV0QixZQUE2QixVQUEyQixFQUFtQixHQUFXO1FBQ3BGLEtBQUssRUFBRSxDQUFDO1FBRG1CLGVBQVUsR0FBVixVQUFVLENBQWlCO1FBQW1CLFFBQUcsR0FBSCxHQUFHLENBQVE7S0FFckY7SUFFTSxJQUFJLENBQUMsTUFBaUIsRUFBRSxPQUFnQjtRQUM3QyxpQ0FBaUM7UUFDakMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2hDLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN4QyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztRQUNwQixDQUFDO0tBQ0Y7SUFFTSxPQUFPO1FBQ1oscUVBQXFFO1FBQ3JFLG1EQUFtRDtRQUNuRCxPQUFPO1lBQ0wsWUFBWSxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQztTQUNyRCxDQUFDO0tBQ1Y7Q0FDRjtBQUVELE1BQU0sVUFBVyxTQUFRLG9CQUFvQjtJQUlkO0lBQW9DO0lBSHpELEtBQUssQ0FBMkI7SUFDaEMsS0FBSyxHQUFHLEtBQUssQ0FBQztJQUV0QixZQUE2QixTQUFpQixFQUFtQixVQUEwQyxFQUFFO1FBQzNHLEtBQUssRUFBRSxDQUFDO1FBRG1CLGNBQVMsR0FBVCxTQUFTLENBQVE7UUFBbUIsWUFBTyxHQUFQLE9BQU8sQ0FBcUM7S0FFNUc7SUFFTSxJQUFJLENBQUMsS0FBZ0IsRUFBRSxPQUFnQjtRQUM1QywwQ0FBMEM7UUFDMUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNoQixNQUFNLElBQUksR0FBRyxJQUFBLDBCQUFPLEVBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ3JDLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxNQUFNLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxFQUFFLHVCQUF1QixJQUFJLEVBQUUsRUFBRTtnQkFDN0UsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTO2dCQUN6QixHQUFHLElBQUksQ0FBQyxPQUFPO2FBQ2hCLENBQUMsQ0FBQztRQUNMLENBQUM7UUFFRCxnQ0FBZ0M7UUFDaEMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNoQixJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzlDLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1FBQ3BCLENBQUM7S0FDRjtJQUVNLE9BQU87UUFDWixJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ2hCLE1BQU0sSUFBSSxvQ0FBZSxDQUFDLHFEQUFxRCxDQUFDLENBQUM7UUFDbkYsQ0FBQztRQUVELHFFQUFxRTtRQUNyRSxtREFBbUQ7UUFDbkQsT0FBTztZQUNMLFlBQVksRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVE7U0FDM0IsQ0FBQztLQUNWO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqICBDb3B5cmlnaHQgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKS4gWW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZVxuICogIHdpdGggdGhlIExpY2Vuc2UuIEEgY29weSBvZiB0aGUgTGljZW5zZSBpcyBsb2NhdGVkIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiAgb3IgaW4gdGhlICdsaWNlbnNlJyBmaWxlIGFjY29tcGFueWluZyB0aGlzIGZpbGUuIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAnQVMgSVMnIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVNcbiAqICBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBleHByZXNzIG9yIGltcGxpZWQuIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9uc1xuICogIGFuZCBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQgKiBhcyBlY3IgZnJvbSAnYXdzLWNkay1saWIvYXdzLWVjcic7XG5pbXBvcnQgKiBhcyBhc3NldHMgZnJvbSAnYXdzLWNkay1saWIvYXdzLWVjci1hc3NldHMnO1xuaW1wb3J0IHsgQ2ZuUnVudGltZSB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1iZWRyb2NrYWdlbnRjb3JlJztcbmltcG9ydCB7IG1kNWhhc2ggfSBmcm9tICdhd3MtY2RrLWxpYi9jb3JlL2xpYi9oZWxwZXJzLWludGVybmFsJztcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHsgUnVudGltZSB9IGZyb20gJy4vcnVudGltZSc7XG5pbXBvcnQgeyBWYWxpZGF0aW9uRXJyb3IgfSBmcm9tICcuL3ZhbGlkYXRpb24taGVscGVycyc7XG5cbi8qKlxuICogQWJzdHJhY3QgYmFzZSBjbGFzcyBmb3IgYWdlbnQgcnVudGltZSBhcnRpZmFjdHMuXG4gKiBQcm92aWRlcyBtZXRob2RzIHRvIHJlZmVyZW5jZSBjb250YWluZXIgaW1hZ2VzIGZyb20gRUNSIHJlcG9zaXRvcmllcyBvciBsb2NhbCBhc3NldHMuXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBZ2VudFJ1bnRpbWVBcnRpZmFjdCB7XG4gIC8qKlxuICAgKiBSZWZlcmVuY2UgYW4gaW1hZ2UgaW4gYW4gRUNSIHJlcG9zaXRvcnlcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbUVjclJlcG9zaXRvcnkocmVwb3NpdG9yeTogZWNyLklSZXBvc2l0b3J5LCB0YWc6IHN0cmluZyA9ICdsYXRlc3QnKTogQWdlbnRSdW50aW1lQXJ0aWZhY3Qge1xuICAgIHJldHVybiBuZXcgRWNySW1hZ2UocmVwb3NpdG9yeSwgdGFnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWZlcmVuY2UgYW4gYWdlbnQgcnVudGltZSBhcnRpZmFjdCB0aGF0J3MgY29uc3RydWN0ZWQgZGlyZWN0bHkgZnJvbSBzb3VyY2VzIG9uIGRpc2tcbiAgICogQHBhcmFtIGRpcmVjdG9yeSBUaGUgZGlyZWN0b3J5IHdoZXJlIHRoZSBEb2NrZXJmaWxlIGlzIHN0b3JlZFxuICAgKiBAcGFyYW0gb3B0aW9ucyBUaGUgb3B0aW9ucyB0byBmdXJ0aGVyIGNvbmZpZ3VyZSB0aGUgc2VsZWN0ZWQgaW1hZ2VcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbUFzc2V0KGRpcmVjdG9yeTogc3RyaW5nLCBvcHRpb25zOiBhc3NldHMuRG9ja2VySW1hZ2VBc3NldE9wdGlvbnMgPSB7fSk6IEFnZW50UnVudGltZUFydGlmYWN0IHtcbiAgICByZXR1cm4gbmV3IEFzc2V0SW1hZ2UoZGlyZWN0b3J5LCBvcHRpb25zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxsZWQgd2hlbiB0aGUgaW1hZ2UgaXMgdXNlZCBieSBhIFJ1bnRpbWUgdG8gaGFuZGxlIHNpZGUgZWZmZWN0cyBsaWtlIHBlcm1pc3Npb25zXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgYmluZChzY29wZTogQ29uc3RydWN0LCBydW50aW1lOiBSdW50aW1lKTogdm9pZDtcblxuICAvKipcbiAgICogUmVuZGVyIHRoZSBhcnRpZmFjdCBjb25maWd1cmF0aW9uIGZvciBDbG91ZEZvcm1hdGlvblxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCBfcmVuZGVyKCk6IENmblJ1bnRpbWUuQWdlbnRSdW50aW1lQXJ0aWZhY3RQcm9wZXJ0eTtcbn1cblxuY2xhc3MgRWNySW1hZ2UgZXh0ZW5kcyBBZ2VudFJ1bnRpbWVBcnRpZmFjdCB7XG4gIHByaXZhdGUgYm91bmQgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHJlcG9zaXRvcnk6IGVjci5JUmVwb3NpdG9yeSwgcHJpdmF0ZSByZWFkb25seSB0YWc6IHN0cmluZykge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICBwdWJsaWMgYmluZChfc2NvcGU6IENvbnN0cnVjdCwgcnVudGltZTogUnVudGltZSk6IHZvaWQge1xuICAgIC8vIEhhbmRsZSBwZXJtaXNzaW9ucyAob25seSBvbmNlKVxuICAgIGlmICghdGhpcy5ib3VuZCAmJiBydW50aW1lLnJvbGUpIHtcbiAgICAgIHRoaXMucmVwb3NpdG9yeS5ncmFudFB1bGwocnVudGltZS5yb2xlKTtcbiAgICAgIHRoaXMuYm91bmQgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBfcmVuZGVyKCk6IENmblJ1bnRpbWUuQWdlbnRSdW50aW1lQXJ0aWZhY3RQcm9wZXJ0eSB7XG4gICAgLy8gUmV0dXJuIGNvbnRhaW5lciBjb25maWd1cmF0aW9uIGRpcmVjdGx5IGFzIGV4cGVjdGVkIGJ5IHRoZSBydW50aW1lXG4gICAgLy8gVGhlIHJ1bnRpbWUgd3JhcHMgdGhpcyBpbiBjb250YWluZXJDb25maWd1cmF0aW9uXG4gICAgcmV0dXJuIHtcbiAgICAgIGNvbnRhaW5lclVyaTogdGhpcy5yZXBvc2l0b3J5LnJlcG9zaXRvcnlVcmlGb3JUYWcodGhpcy50YWcpLFxuICAgIH0gYXMgYW55O1xuICB9XG59XG5cbmNsYXNzIEFzc2V0SW1hZ2UgZXh0ZW5kcyBBZ2VudFJ1bnRpbWVBcnRpZmFjdCB7XG4gIHByaXZhdGUgYXNzZXQ/OiBhc3NldHMuRG9ja2VySW1hZ2VBc3NldDtcbiAgcHJpdmF0ZSBib3VuZCA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgZGlyZWN0b3J5OiBzdHJpbmcsIHByaXZhdGUgcmVhZG9ubHkgb3B0aW9uczogYXNzZXRzLkRvY2tlckltYWdlQXNzZXRPcHRpb25zID0ge30pIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgcHVibGljIGJpbmQoc2NvcGU6IENvbnN0cnVjdCwgcnVudGltZTogUnVudGltZSk6IHZvaWQge1xuICAgIC8vIENyZWF0ZSB0aGUgYXNzZXQgaWYgbm90IGFscmVhZHkgY3JlYXRlZFxuICAgIGlmICghdGhpcy5hc3NldCkge1xuICAgICAgY29uc3QgaGFzaCA9IG1kNWhhc2godGhpcy5kaXJlY3RvcnkpO1xuICAgICAgdGhpcy5hc3NldCA9IG5ldyBhc3NldHMuRG9ja2VySW1hZ2VBc3NldChzY29wZSwgYEFnZW50UnVudGltZUFydGlmYWN0JHtoYXNofWAsIHtcbiAgICAgICAgZGlyZWN0b3J5OiB0aGlzLmRpcmVjdG9yeSxcbiAgICAgICAgLi4udGhpcy5vcHRpb25zLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gR3JhbnQgcGVybWlzc2lvbnMgKG9ubHkgb25jZSlcbiAgICBpZiAoIXRoaXMuYm91bmQpIHtcbiAgICAgIHRoaXMuYXNzZXQucmVwb3NpdG9yeS5ncmFudFB1bGwocnVudGltZS5yb2xlKTtcbiAgICAgIHRoaXMuYm91bmQgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBfcmVuZGVyKCk6IENmblJ1bnRpbWUuQWdlbnRSdW50aW1lQXJ0aWZhY3RQcm9wZXJ0eSB7XG4gICAgaWYgKCF0aGlzLmFzc2V0KSB7XG4gICAgICB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKCdBc3NldCBub3QgaW5pdGlhbGl6ZWQuIENhbGwgYmluZCgpIGJlZm9yZSBfcmVuZGVyKCknKTtcbiAgICB9XG5cbiAgICAvLyBSZXR1cm4gY29udGFpbmVyIGNvbmZpZ3VyYXRpb24gZGlyZWN0bHkgYXMgZXhwZWN0ZWQgYnkgdGhlIHJ1bnRpbWVcbiAgICAvLyBUaGUgcnVudGltZSB3cmFwcyB0aGlzIGluIGNvbnRhaW5lckNvbmZpZ3VyYXRpb25cbiAgICByZXR1cm4ge1xuICAgICAgY29udGFpbmVyVXJpOiB0aGlzLmFzc2V0LmltYWdlVXJpLFxuICAgIH0gYXMgYW55O1xuICB9XG59XG4iXX0=