UNPKG

aws-cdk-lib

Version:

Version 2 of the AWS Cloud Development Kit library

8 lines (7 loc) 21.9 kB
"use strict";var __runInitializers=exports&&exports.__runInitializers||function(thisArg,initializers,value){for(var useValue=arguments.length>2,i=0;i<initializers.length;i++)value=useValue?initializers[i].call(thisArg,value):initializers[i].call(thisArg);return useValue?value:void 0},__esDecorate=exports&&exports.__esDecorate||function(ctor,descriptorIn,decorators,contextIn,initializers,extraInitializers){function accept(f){if(f!==void 0&&typeof f!="function")throw new TypeError("Function expected");return f}for(var kind=contextIn.kind,key=kind==="getter"?"get":kind==="setter"?"set":"value",target=!descriptorIn&&ctor?contextIn.static?ctor:ctor.prototype:null,descriptor=descriptorIn||(target?Object.getOwnPropertyDescriptor(target,contextIn.name):{}),_,done=!1,i=decorators.length-1;i>=0;i--){var context={};for(var p in contextIn)context[p]=p==="access"?{}:contextIn[p];for(var p in contextIn.access)context.access[p]=contextIn.access[p];context.addInitializer=function(f){if(done)throw new TypeError("Cannot add initializers after decoration has completed");extraInitializers.push(accept(f||null))};var result=(0,decorators[i])(kind==="accessor"?{get:descriptor.get,set:descriptor.set}:descriptor[key],context);if(kind==="accessor"){if(result===void 0)continue;if(result===null||typeof result!="object")throw new TypeError("Object expected");(_=accept(result.get))&&(descriptor.get=_),(_=accept(result.set))&&(descriptor.set=_),(_=accept(result.init))&&initializers.unshift(_)}else(_=accept(result))&&(kind==="field"?initializers.unshift(_):descriptor[key]=_)}target&&Object.defineProperty(target,contextIn.name,descriptor),done=!0};Object.defineProperty(exports,"__esModule",{value:!0}),exports.Runtime=void 0;var jsiiDeprecationWarnings=()=>{var tmp=require("../../../.warnings.jsii.js");return jsiiDeprecationWarnings=()=>tmp,tmp};const JSII_RTTI_SYMBOL_1=Symbol.for("jsii.rtti");var observability_1=()=>{var tmp=require("./observability");return observability_1=()=>tmp,tmp},perms_1=()=>{var tmp=require("./perms");return perms_1=()=>tmp,tmp},runtime_base_1=()=>{var tmp=require("./runtime-base");return runtime_base_1=()=>tmp,tmp},runtime_endpoint_1=()=>{var tmp=require("./runtime-endpoint");return runtime_endpoint_1=()=>tmp,tmp},types_1=()=>{var tmp=require("./types");return types_1=()=>tmp,tmp},bedrockagentcore=()=>{var tmp=require("../../../aws-bedrockagentcore");return bedrockagentcore=()=>tmp,tmp},ec2=()=>{var tmp=require("../../../aws-ec2");return ec2=()=>tmp,tmp},iam=()=>{var tmp=require("../../../aws-iam");return iam=()=>tmp,tmp},core_1=()=>{var tmp=require("../../../core");return core_1=()=>tmp,tmp},errors_1=()=>{var tmp=require("../../../core/lib/errors");return errors_1=()=>tmp,tmp},helpers_internal_1=()=>{var tmp=require("../../../core/lib/helpers-internal");return helpers_internal_1=()=>tmp,tmp},metadata_resource_1=()=>{var tmp=require("../../../core/lib/metadata-resource");return metadata_resource_1=()=>tmp,tmp},prop_injectable_1=()=>{var tmp=require("../../../core/lib/prop-injectable");return prop_injectable_1=()=>tmp,tmp},validation_helpers_1=()=>{var tmp=require("../common/validation-helpers");return validation_helpers_1=()=>tmp,tmp},network_configuration_1=()=>{var tmp=require("../network/network-configuration");return network_configuration_1=()=>tmp,tmp};const LIFECYCLE_MIN_TIMEOUT=core_1().Duration.seconds(60),LIFECYCLE_MAX_LIFETIME=core_1().Duration.seconds(28800);let Runtime=(()=>{let _classDecorators=[prop_injectable_1().propertyInjectable],_classDescriptor,_classExtraInitializers=[],_classThis,_classSuper=runtime_base_1().RuntimeBase,_instanceExtraInitializers=[],_addEndpoint_decorators;var Runtime2=class extends _classSuper{static{_classThis=this}static{const _metadata=typeof Symbol=="function"&&Symbol.metadata?Object.create(_classSuper[Symbol.metadata]??null):void 0;_addEndpoint_decorators=[(0,metadata_resource_1().MethodMetadata)()],__esDecorate(this,null,_addEndpoint_decorators,{kind:"method",name:"addEndpoint",static:!1,private:!1,access:{has:obj=>"addEndpoint"in obj,get:obj=>obj.addEndpoint},metadata:_metadata},null,_instanceExtraInitializers),__esDecorate(null,_classDescriptor={value:_classThis},_classDecorators,{kind:"class",name:_classThis.name,metadata:_metadata},null,_classExtraInitializers),Runtime2=_classThis=_classDescriptor.value,_metadata&&Object.defineProperty(_classThis,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:_metadata})}static[JSII_RTTI_SYMBOL_1]={fqn:"aws-cdk-lib.aws_bedrockagentcore.Runtime",version:"2.257.0"};static PROPERTY_INJECTION_ID="aws-cdk-lib.aws-bedrockagentcore.Runtime";static fromAgentRuntimeAttributes(scope,id,attrs){try{jsiiDeprecationWarnings().aws_cdk_lib_aws_bedrockagentcore_AgentRuntimeAttributes(attrs)}catch(error){throw process.env.JSII_DEBUG!=="1"&&error.name==="DeprecationError"&&Error.captureStackTrace(error,this.fromAgentRuntimeAttributes),error}class ImportedBedrockAgentRuntime extends runtime_base_1().RuntimeBase{agentRuntimeArn=attrs.agentRuntimeArn;agentRuntimeId=attrs.agentRuntimeId;agentRuntimeName=attrs.agentRuntimeName;agentRuntimeVersion=attrs.agentRuntimeVersion;agentStatus=attrs.agentStatus;description=attrs.description;createdAt=attrs.createdAt;lastUpdatedAt=attrs.lastUpdatedAt;role;grantPrincipal;constructor(s,i){super(s,i),this.role=iam().Role.fromRoleArn(this,"Role",attrs.roleArn),this.grantPrincipal=this.role,attrs.securityGroups&&(this._connections=new(ec2()).Connections({securityGroups:attrs.securityGroups}))}}return new ImportedBedrockAgentRuntime(scope,id)}agentRuntimeArn=__runInitializers(this,_instanceExtraInitializers);agentRuntimeId;agentRuntimeName;role;agentRuntimeVersion;agentStatus;description;createdAt;lastUpdatedAt;grantPrincipal;runtimeResource;agentRuntimeArtifact;networkConfiguration;protocolConfiguration;authorizerConfiguration;lifecycleConfiguration;constructor(scope,id,props){super(scope,id,{physicalName:props.runtimeName??core_1().Lazy.string({produce:()=>core_1().Names.uniqueResourceName(this,{maxLength:48})})});try{jsiiDeprecationWarnings().aws_cdk_lib_aws_bedrockagentcore_RuntimeProps(props)}catch(error){throw process.env.JSII_DEBUG!=="1"&&error.name==="DeprecationError"&&Error.captureStackTrace(error,Runtime2),error}(0,metadata_resource_1().addConstructMetadata)(this,props),this.agentRuntimeName=this.physicalName,this.validateRuntimeName(),this.description=props.description,this.description&&this.validateDescription(),props.environmentVariables&&this.validateEnvironmentVariables(props.environmentVariables),props.tags&&this.validateTags(props.tags),props.requestHeaderConfiguration&&this.validateRequestHeaderConfiguration(props.requestHeaderConfiguration),this.lifecycleConfiguration=props.lifecycleConfiguration?{idleRuntimeSessionTimeout:props.lifecycleConfiguration?.idleRuntimeSessionTimeout,maxLifetime:props.lifecycleConfiguration?.maxLifetime}:void 0,this.lifecycleConfiguration&&this.validateLifecycleConfiguration(this.lifecycleConfiguration),props.executionRole?(this.role=props.executionRole,core_1().Token.isUnresolved(props.executionRole.roleArn)||this.validateRoleArn(props.executionRole.roleArn)):this.role=new(iam()).Role(this,"ExecutionRole",{assumedBy:new(iam()).ServicePrincipal("bedrock-agentcore.amazonaws.com",{conditions:{StringEquals:{"aws:SourceAccount":core_1().Stack.of(this).account},ArnLike:{"aws:SourceArn":core_1().Arn.format({service:"bedrock-agentcore",resource:"runtime",resourceName:`${this.agentRuntimeName}*`},core_1().Stack.of(this))}}}),description:"Execution role for Bedrock Agent Core Runtime",maxSessionDuration:core_1().Duration.hours(8)}),this.addExecutionRolePermissions(),this.grantPrincipal=this.role,this.agentRuntimeArtifact=props.agentRuntimeArtifact,this.networkConfiguration=props.networkConfiguration??network_configuration_1().RuntimeNetworkConfiguration.usingPublicNetwork(),this.networkConfiguration.connections&&(this._connections=this.networkConfiguration.connections),this.protocolConfiguration=props.protocolConfiguration??types_1().ProtocolType.HTTP,this.authorizerConfiguration=props.authorizerConfiguration;const cfnProps={agentRuntimeName:this.agentRuntimeName,roleArn:this.role.roleArn,agentRuntimeArtifact:core_1().Lazy.any({produce:()=>this.renderAgentRuntimeArtifact()}),networkConfiguration:core_1().Lazy.any({produce:()=>this.networkConfiguration._render(this._connections)}),protocolConfiguration:core_1().Lazy.string({produce:()=>this.protocolConfiguration.value}),description:props.description,environmentVariables:core_1().Lazy.any({produce:()=>this.renderEnvironmentVariables(props.environmentVariables)}),tags:props.tags??{},lifecycleConfiguration:this.renderLifecycleConfiguration()};props.requestHeaderConfiguration&&(cfnProps.requestHeaderConfiguration=this.renderRequestHeaderConfiguration(props.requestHeaderConfiguration)),props.authorizerConfiguration&&(cfnProps.authorizerConfiguration=core_1().Lazy.any({produce:()=>this.authorizerConfiguration._render()})),this.runtimeResource=new(bedrockagentcore()).CfnRuntime(this,"Resource",cfnProps),this.runtimeResource.node.addDependency(this.role),this.agentRuntimeId=this.runtimeResource.attrAgentRuntimeId,this.agentRuntimeArn=this.runtimeResource.attrAgentRuntimeArn,this.agentStatus=this.runtimeResource.attrStatus,this.agentRuntimeVersion=this.runtimeResource.attrAgentRuntimeVersion,this.createdAt=this.runtimeResource.attrCreatedAt,this.lastUpdatedAt=this.runtimeResource.attrLastUpdatedAt,props.tracingEnabled&&(0,observability_1().configureTracingDelivery)(this,this.agentRuntimeArn),props.loggingConfigs&&props.loggingConfigs.length>0&&(0,observability_1().configureLoggingDelivery)(this,this.agentRuntimeArn,props.loggingConfigs)}renderEnvironmentVariables(envVars){if(!(!envVars||Object.keys(envVars).length===0))return envVars}addExecutionRolePermissions(){const region=core_1().Stack.of(this).region,account=core_1().Stack.of(this).account;this.role.addToPrincipalPolicy(new(iam()).PolicyStatement({sid:"LogGroupAccess",effect:iam().Effect.ALLOW,actions:perms_1().RUNTIME_LOGS_GROUP_ACTIONS,resources:[`arn:${core_1().Stack.of(this).partition}:logs:${region}:${account}:log-group:/aws/bedrock-agentcore/runtimes/*`]})),this.role.addToPrincipalPolicy(new(iam()).PolicyStatement({sid:"DescribeLogGroups",effect:iam().Effect.ALLOW,actions:perms_1().RUNTIME_LOGS_DESCRIBE_ACTIONS,resources:[`arn:${core_1().Stack.of(this).partition}:logs:${region}:${account}:log-group:*`]})),this.role.addToPrincipalPolicy(new(iam()).PolicyStatement({sid:"LogStreamAccess",effect:iam().Effect.ALLOW,actions:perms_1().RUNTIME_LOGS_STREAM_ACTIONS,resources:[`arn:${core_1().Stack.of(this).partition}:logs:${region}:${account}:log-group:/aws/bedrock-agentcore/runtimes/*:log-stream:*`]})),this.role.addToPrincipalPolicy(new(iam()).PolicyStatement({sid:"XRayAccess",effect:iam().Effect.ALLOW,actions:perms_1().RUNTIME_XRAY_ACTIONS,resources:["*"]})),this.role.addToPrincipalPolicy(new(iam()).PolicyStatement({sid:"CloudWatchMetrics",effect:iam().Effect.ALLOW,actions:perms_1().RUNTIME_CLOUDWATCH_METRICS_ACTIONS,resources:["*"],conditions:{StringEquals:{"cloudwatch:namespace":perms_1().RUNTIME_CLOUDWATCH_NAMESPACE}}})),this.role.addToPrincipalPolicy(new(iam()).PolicyStatement({sid:"GetAgentAccessToken",effect:iam().Effect.ALLOW,actions:perms_1().RUNTIME_WORKLOAD_IDENTITY_ACTIONS,resources:[`arn:${core_1().Stack.of(this).partition}:bedrock-agentcore:${region}:${account}:workload-identity-directory/default`,`arn:${core_1().Stack.of(this).partition}:bedrock-agentcore:${region}:${account}:workload-identity-directory/default/workload-identity/*`]}))}renderAgentRuntimeArtifact(){this.agentRuntimeArtifact.bind(this,this);const config=this.agentRuntimeArtifact._render();if(config.code)return{codeConfiguration:{code:config.code,runtime:config.runtime,entryPoint:config.entryPoint}};{const containerUri=config.containerUri;return containerUri&&this.validateContainerUri(containerUri),{containerConfiguration:{containerUri}}}}renderRequestHeaderConfiguration(requestHeaderConfiguration){if(requestHeaderConfiguration?.allowlistedHeaders)return{requestHeaderAllowlist:requestHeaderConfiguration.allowlistedHeaders}}renderLifecycleConfiguration(){return{idleRuntimeSessionTimeout:this.lifecycleConfiguration?.idleRuntimeSessionTimeout?.toSeconds(),maxLifetime:this.lifecycleConfiguration?.maxLifetime?.toSeconds()}}validateRequestHeaderConfiguration(requestHeaderConfiguration){const allErrors=[];if(requestHeaderConfiguration.allowlistedHeaders){(requestHeaderConfiguration.allowlistedHeaders.length<1||requestHeaderConfiguration.allowlistedHeaders.length>20)&&allErrors.push("Request header allow list contain between 1 and 20 headers");for(const header of requestHeaderConfiguration.allowlistedHeaders){const lengthErrors=(0,validation_helpers_1().validateStringFieldLength)({value:header,fieldName:"Request header",minLength:1,maxLength:256});allErrors.push(...lengthErrors);const patternErrors=(0,validation_helpers_1().validateFieldPattern)(header,"Request header",/(Authorization|X-Amzn-Bedrock-AgentCore-Runtime-Custom-[a-zA-Z0-9-]+)/,"Request header must contain only letters, numbers, and hyphens");allErrors.push(...patternErrors)}}if(allErrors.length>0)throw new(errors_1()).ValidationError((0,helpers_internal_1().lit)`InvalidRequestHeaderConfiguration`,allErrors.join(` `),this)}validateLifecycleConfiguration(lifecycleConfiguration){if(lifecycleConfiguration.idleRuntimeSessionTimeout&&!lifecycleConfiguration.idleRuntimeSessionTimeout.isUnresolved()&&(lifecycleConfiguration.idleRuntimeSessionTimeout.toSeconds()<LIFECYCLE_MIN_TIMEOUT.toSeconds()||lifecycleConfiguration.idleRuntimeSessionTimeout.toSeconds()>LIFECYCLE_MAX_LIFETIME.toSeconds()))throw new(errors_1()).ValidationError((0,helpers_internal_1().lit)`InvalidIdleRuntimeSessionTimeout`,`Idle runtime session timeout must be between ${LIFECYCLE_MIN_TIMEOUT.toSeconds()} seconds and ${LIFECYCLE_MAX_LIFETIME.toSeconds()} seconds`,this);if(lifecycleConfiguration.maxLifetime&&!lifecycleConfiguration.maxLifetime.isUnresolved()&&(lifecycleConfiguration.maxLifetime.toSeconds()<LIFECYCLE_MIN_TIMEOUT.toSeconds()||lifecycleConfiguration.maxLifetime.toSeconds()>LIFECYCLE_MAX_LIFETIME.toSeconds()))throw new(errors_1()).ValidationError((0,helpers_internal_1().lit)`InvalidMaxLifetime`,`Maximum lifetime must be between ${LIFECYCLE_MIN_TIMEOUT.toSeconds()} seconds and ${LIFECYCLE_MAX_LIFETIME.toSeconds()} seconds`,this)}validateRuntimeName(){if(core_1().Token.isUnresolved(this.agentRuntimeName))return;const lengthErrors=(0,validation_helpers_1().validateStringFieldLength)({value:this.agentRuntimeName,fieldName:"Runtime name",minLength:1,maxLength:48}),patternErrors=(0,validation_helpers_1().validateFieldPattern)(this.agentRuntimeName,"Runtime name",/^[a-zA-Z][a-zA-Z0-9_]{0,47}$/,"Runtime name must start with a letter and contain only letters, numbers, and underscores"),allErrors=[...lengthErrors,...patternErrors];if(allErrors.length>0)throw new(errors_1()).ValidationError((0,helpers_internal_1().lit)`InvalidRuntimeName`,allErrors.join(` `),this)}validateDescription(){if(!core_1().Token.isUnresolved(this.description)&&this.description){const errors=(0,validation_helpers_1().validateStringFieldLength)({value:this.description,fieldName:"Description",minLength:1,maxLength:1200});if(errors.length>0)throw new(errors_1()).ValidationError((0,helpers_internal_1().lit)`InvalidDescription`,errors.join(` `),this)}}validateEnvironmentVariables(envVars){const entries=Object.entries(envVars);if(entries.length>50)throw new(errors_1()).ValidationError((0,helpers_internal_1().lit)`TooManyEnvironmentVariables`,`Too many environment variables: ${entries.length}. Maximum allowed is 50`,this);for(const[key,value]of entries){if(core_1().Token.isUnresolved(key)||core_1().Token.isUnresolved(value))continue;const lengthErrors=(0,validation_helpers_1().validateStringFieldLength)({value:key,fieldName:`Environment variable key '${key}'`,minLength:1,maxLength:100}),patternErrors=(0,validation_helpers_1().validateFieldPattern)(key,`Environment variable key '${key}'`,/^[a-zA-Z_][a-zA-Z0-9_]*$/,`Environment variable key '${key}' must start with a letter or underscore and contain only letters, numbers, and underscores`),allErrors=[...lengthErrors,...patternErrors];if(allErrors.length>0)throw new(errors_1()).ValidationError((0,helpers_internal_1().lit)`InvalidEnvironmentVariableKey`,allErrors.join(` `),this);if(value.length>2048)throw new(errors_1()).ValidationError((0,helpers_internal_1().lit)`InvalidEnvironmentVariableValue`,`Invalid environment variable value length for key '${key}': ${value.length} characters. Values must not exceed 2048 characters`,this)}}validateTags(tags){for(const[key,value]of Object.entries(tags)){if(core_1().Token.isUnresolved(key)||core_1().Token.isUnresolved(value))continue;const keyLengthErrors=(0,validation_helpers_1().validateStringFieldLength)({value:key,fieldName:`Tag key "${key}"`,minLength:1,maxLength:256});if(key.toLowerCase().startsWith("aws:"))throw new(errors_1()).ValidationError((0,helpers_internal_1().lit)`InvalidTagKey`,`Tag key "${key}" cannot start with "aws:" as this prefix is reserved by AWS`,this);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 (._:/=+@-)`),keyErrors=[...keyLengthErrors,...keyPatternErrors];if(keyErrors.length>0)throw new(errors_1()).ValidationError((0,helpers_internal_1().lit)`InvalidTagKey`,keyErrors.join(` `),this);if(value==null)throw new(errors_1()).ValidationError((0,helpers_internal_1().lit)`NullTagValue`,`Tag value for key "${key}" cannot be null or undefined`,this);const valueLengthErrors=(0,validation_helpers_1().validateStringFieldLength)({value,fieldName:`Tag value for key "${key}"`,minLength:0,maxLength:256}),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 (._:/=+@-)`),valueErrors=[...valueLengthErrors,...valuePatternErrors];if(valueErrors.length>0)throw new(errors_1()).ValidationError((0,helpers_internal_1().lit)`InvalidTagValue`,valueErrors.join(` `),this)}}validateContainerUri(uri){if(core_1().Token.isUnresolved(uri)){core_1().Annotations.of(this).addInfo("Container URI validation skipped as it contains unresolved CDK tokens. The URI will be validated at deployment time.");return}if(!/^\d{12}\.dkr\.ecr\.([a-z0-9-]+)\.amazonaws\.com\/((?:[a-z0-9]+(?:[._-][a-z0-9]+)*\/)*[a-z0-9]+(?:[._-][a-z0-9]+)*)([:@]\S+)$/.test(uri))throw new(errors_1()).ValidationError((0,helpers_internal_1().lit)`InvalidContainerUri`,`Invalid container URI format: ${uri}. Must be a valid ECR URI (e.g., 123456789012.dkr.ecr.us-west-2.amazonaws.com/my-agent:latest)`,this)}validateRoleArn(roleArn){if(!/^arn:[a-z\-]+:iam::\d{12}:role\/[a-zA-Z0-9+=,.@\-_\/]+$/.test(roleArn))throw new(errors_1()).ValidationError((0,helpers_internal_1().lit)`InvalidRoleArnFormat`,`Invalid IAM role ARN format: ${roleArn}. Expected format: arn:<partition>:iam::<account-id>:role/<role-name> or arn:<partition>:iam::<account-id>:role/<path>/<role-name>`,this);const arnComponents=core_1().Arn.split(roleArn,core_1().ArnFormat.SLASH_RESOURCE_NAME);if(arnComponents.service!=="iam")throw new(errors_1()).ValidationError((0,helpers_internal_1().lit)`InvalidRoleArnService`,`Invalid service in ARN: ${arnComponents.service}. Expected 'iam' for IAM role ARN.`,this);const accountId=arnComponents.account;if(!accountId||!/^\d{12}$/.test(accountId))throw new(errors_1()).ValidationError((0,helpers_internal_1().lit)`InvalidRoleArnAccountId`,`Invalid AWS account ID in role ARN: ${accountId}. Must be a 12-digit number.`,this);const resource=arnComponents.resource,resourceName=arnComponents.resourceName;if(resource!=="role")throw new(errors_1()).ValidationError((0,helpers_internal_1().lit)`InvalidRoleArnResourceType`,`Invalid resource type in ARN: ${resource}. Expected 'role' for IAM role ARN.`,this);if(resourceName){const rolePathParts=resourceName.split("/"),roleName=rolePathParts[rolePathParts.length-1];if(roleName.length>64)throw new(errors_1()).ValidationError((0,helpers_internal_1().lit)`RoleNameTooLong`,`Role name exceeds maximum length of 64 characters: ${roleName}`,this)}else throw new(errors_1()).ValidationError((0,helpers_internal_1().lit)`MissingRoleName`,"Role name is missing in the ARN",this);const stackAccount=core_1().Stack.of(this).account;!core_1().Token.isUnresolved(stackAccount)&&accountId!==stackAccount&&core_1().Annotations.of(this).addWarning(`IAM role is from a different account (${accountId}) than the stack account (${stackAccount}). Ensure cross-account permissions are properly configured.`);const region=arnComponents.region,stackRegion=core_1().Stack.of(this).region;region&&region!==""&&region!==stackRegion&&!core_1().Token.isUnresolved(stackRegion)&&core_1().Annotations.of(this).addWarning(`IAM role ARN contains a region (${region}) that doesn't match the stack region (${stackRegion}). IAM is a global service, so this might be intentional.`)}addEndpoint(endpointName,options){try{jsiiDeprecationWarnings().aws_cdk_lib_aws_bedrockagentcore_AddEndpointOptions(options)}catch(error){throw process.env.JSII_DEBUG!=="1"&&error.name==="DeprecationError"&&Error.captureStackTrace(error,this.addEndpoint),error}const endpoint=new(runtime_endpoint_1()).RuntimeEndpoint(this,`Endpoint${endpointName}`,{endpointName,agentRuntimeId:this.agentRuntimeId,agentRuntimeVersion:options?.version??this.agentRuntimeVersion??"1",description:options?.description});return endpoint.node.addDependency(this.runtimeResource),endpoint}static{__runInitializers(_classThis,_classExtraInitializers)}};return Runtime2=_classThis})();exports.Runtime=Runtime;