aws-cdk-lib
Version:
Version 2 of the AWS Cloud Development Kit library
2 lines (1 loc) • 10.6 kB
JavaScript
;var __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},__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};Object.defineProperty(exports,"__esModule",{value:!0}),exports.OnlineEvaluationConfig=void 0;var jsiiDeprecationWarnings=()=>{var tmp=require("../../../.warnings.jsii.js");return jsiiDeprecationWarnings=()=>tmp,tmp};const JSII_RTTI_SYMBOL_1=Symbol.for("jsii.rtti");var online_evaluation_base_1=()=>{var tmp=require("./online-evaluation-base");return online_evaluation_base_1=()=>tmp,tmp},perms_1=()=>{var tmp=require("./perms");return perms_1=()=>tmp,tmp},validation_helpers_1=()=>{var tmp=require("./validation-helpers");return validation_helpers_1=()=>tmp,tmp},bedrockagentcore=()=>{var tmp=require("../../../aws-bedrockagentcore");return bedrockagentcore=()=>tmp,tmp},iam=()=>{var tmp=require("../../../aws-iam");return iam=()=>tmp,tmp},core_1=()=>{var tmp=require("../../../core");return core_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};let OnlineEvaluationConfig=(()=>{let _classDecorators=[prop_injectable_1().propertyInjectable],_classDescriptor,_classExtraInitializers=[],_classThis,_classSuper=online_evaluation_base_1().OnlineEvaluationBase;var OnlineEvaluationConfig2=class extends _classSuper{static{_classThis=this}static{const _metadata=typeof Symbol=="function"&&Symbol.metadata?Object.create(_classSuper[Symbol.metadata]??null):void 0;__esDecorate(null,_classDescriptor={value:_classThis},_classDecorators,{kind:"class",name:_classThis.name,metadata:_metadata},null,_classExtraInitializers),OnlineEvaluationConfig2=_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.OnlineEvaluationConfig",version:"2.257.0"};static PROPERTY_INJECTION_ID="aws-cdk-lib.aws-bedrockagentcore.OnlineEvaluationConfig";static fromOnlineEvaluationConfigId(scope,id,onlineEvaluationConfigId){const stack=core_1().Stack.of(scope),configArn=core_1().Arn.format({service:"bedrock-agentcore",resource:"online-evaluation-config",resourceName:onlineEvaluationConfigId},stack);return OnlineEvaluationConfig2.fromOnlineEvaluationConfigAttributes(scope,id,{onlineEvaluationConfigArn:configArn,onlineEvaluationConfigId,onlineEvaluationConfigName:onlineEvaluationConfigId})}static fromOnlineEvaluationConfigArn(scope,id,onlineEvaluationConfigArn){const configId=core_1().Arn.split(onlineEvaluationConfigArn,core_1().ArnFormat.SLASH_RESOURCE_NAME).resourceName;return OnlineEvaluationConfig2.fromOnlineEvaluationConfigAttributes(scope,id,{onlineEvaluationConfigArn,onlineEvaluationConfigId:configId,onlineEvaluationConfigName:configId})}static fromOnlineEvaluationConfigAttributes(scope,id,attrs){try{jsiiDeprecationWarnings().aws_cdk_lib_aws_bedrockagentcore_OnlineEvaluationConfigAttributes(attrs)}catch(error){throw process.env.JSII_DEBUG!=="1"&&error.name==="DeprecationError"&&Error.captureStackTrace(error,this.fromOnlineEvaluationConfigAttributes),error}class Import extends online_evaluation_base_1().OnlineEvaluationBase{onlineEvaluationConfigArn=attrs.onlineEvaluationConfigArn;onlineEvaluationConfigId=attrs.onlineEvaluationConfigId;onlineEvaluationConfigName=attrs.onlineEvaluationConfigName;executionRole=attrs.executionRoleArn?iam().Role.fromRoleArn(scope,`${id}Role`,attrs.executionRoleArn):void 0;status=void 0;executionStatus=void 0;createdAt=void 0;updatedAt=void 0;grantPrincipal;constructor(s,i){super(s,i),this.grantPrincipal=this.executionRole??new(iam()).UnknownPrincipal({resource:this})}}return new Import(scope,id)}onlineEvaluationConfigArn;onlineEvaluationConfigId;onlineEvaluationConfigName;executionRole;status;executionStatus;createdAt;updatedAt;grantPrincipal;constructor(scope,id,props){super(scope,id,{physicalName:props.onlineEvaluationConfigName});try{jsiiDeprecationWarnings().aws_cdk_lib_aws_bedrockagentcore_OnlineEvaluationConfigProps(props)}catch(error){throw process.env.JSII_DEBUG!=="1"&&error.name==="DeprecationError"&&Error.captureStackTrace(error,OnlineEvaluationConfig2),error}(0,metadata_resource_1().addConstructMetadata)(this,props),(0,validation_helpers_1().throwIfInvalid)(validation_helpers_1().validateConfigName,props.onlineEvaluationConfigName,this),(0,validation_helpers_1().throwIfInvalid)(validation_helpers_1().validateDescription,props.description,this),(0,validation_helpers_1().throwIfInvalid)(validation_helpers_1().validateEvaluators,props.evaluators,this),(0,validation_helpers_1().throwIfInvalid)(validation_helpers_1().validateSamplingPercentage,props.samplingPercentage,this),(0,validation_helpers_1().throwIfInvalid)(validation_helpers_1().validateFilters,props.filters,this),(0,validation_helpers_1().throwIfInvalid)(validation_helpers_1().validateSessionTimeout,props.sessionTimeout?.toMinutes(),this),props.tags&&(0,validation_helpers_1().throwIfInvalid)(validation_helpers_1().validateEvaluationTags,props.tags,this),this.onlineEvaluationConfigName=this.physicalName,this.executionRole=props.executionRole??this.createExecutionRole(props.dataSource),this.grantPrincipal=this.executionRole;const resource=new(bedrockagentcore()).CfnOnlineEvaluationConfig(this,"Resource",{onlineEvaluationConfigName:this.physicalName,evaluators:props.evaluators.map(e=>e.bind()),dataSourceConfig:props.dataSource.bind(),evaluationExecutionRoleArn:this.executionRole.roleArn,rule:this.buildRuleConfig(props),description:props.description,executionStatus:props.executionStatus?.value,tags:props.tags&&Object.keys(props.tags).length>0?Object.entries(props.tags).map(([key,value])=>({key,value})):void 0});this.executionRole instanceof iam().Role&&this.executionRole.node.defaultChild&&resource.node.addDependency(this.executionRole),this.onlineEvaluationConfigArn=resource.attrOnlineEvaluationConfigArn,this.onlineEvaluationConfigId=resource.attrOnlineEvaluationConfigId,this.status=resource.attrStatus,this.executionStatus=resource.executionStatus,this.createdAt=resource.attrCreatedAt,this.updatedAt=resource.attrUpdatedAt}createExecutionRole(dataSource){const stack=core_1().Stack.of(this),role=new(iam()).Role(this,"ExecutionRole",{assumedBy:new(iam()).ServicePrincipal("bedrock-agentcore.amazonaws.com",{conditions:{StringEquals:{"aws:SourceAccount":stack.account,"aws:ResourceAccount":stack.account},ArnLike:{"aws:SourceArn":[core_1().Arn.format({service:"bedrock-agentcore",resource:"evaluator",resourceName:"*"},stack),core_1().Arn.format({service:"bedrock-agentcore",resource:"online-evaluation-config",resourceName:"*"},stack)]}}}),description:"Execution role for Bedrock AgentCore Online Evaluation"}),logGroupArns=[...dataSource.cloudWatchLogsConfig.logGroupNames,"aws/spans"].flatMap(name=>[core_1().Arn.format({service:"logs",resource:"log-group",resourceName:name,arnFormat:core_1().ArnFormat.COLON_RESOURCE_NAME},stack),core_1().Arn.format({service:"logs",resource:"log-group",resourceName:`${name}:*`,arnFormat:core_1().ArnFormat.COLON_RESOURCE_NAME},stack)]);return role.addToPolicy(new(iam()).PolicyStatement({sid:"CloudWatchLogDescribeStatement",actions:perms_1().EVALUATION_CLOUDWATCH_LOGS_DESCRIBE_PERMS,resources:["*"]})),role.addToPolicy(new(iam()).PolicyStatement({sid:"CloudWatchLogQueryStatement",actions:perms_1().EVALUATION_CLOUDWATCH_LOGS_QUERY_PERMS,resources:logGroupArns})),role.addToPolicy(new(iam()).PolicyStatement({sid:"CloudWatchLogWriteStatement",actions:perms_1().EVALUATION_CLOUDWATCH_LOGS_WRITE_PERMS,resources:[core_1().Arn.format({service:"logs",resource:"log-group",resourceName:"/aws/bedrock-agentcore/evaluations/*",arnFormat:core_1().ArnFormat.COLON_RESOURCE_NAME},stack)]})),role.addToPolicy(new(iam()).PolicyStatement({sid:"CloudWatchIndexPolicyStatement",actions:perms_1().EVALUATION_CLOUDWATCH_INDEX_POLICY_PERMS,resources:[core_1().Arn.format({service:"logs",resource:"log-group",resourceName:"aws/spans",arnFormat:core_1().ArnFormat.COLON_RESOURCE_NAME},stack),core_1().Arn.format({service:"logs",resource:"log-group",resourceName:"aws/spans:*",arnFormat:core_1().ArnFormat.COLON_RESOURCE_NAME},stack)]})),role.addToPolicy(new(iam()).PolicyStatement({sid:"BedrockInvokeStatement",actions:perms_1().EVALUATION_BEDROCK_MODEL_PERMS,resources:[`arn:${core_1().Aws.PARTITION}:bedrock:*::foundation-model/*`,core_1().Arn.format({service:"bedrock",resource:"inference-profile",resourceName:"*",region:"*"},stack)]})),role}buildRuleConfig(props){return{samplingConfig:{samplingPercentage:props.samplingPercentage??10},sessionConfig:{sessionTimeoutMinutes:props.sessionTimeout?.toMinutes()??15},...props.filters&&props.filters.length>0?{filters:props.filters.map(filter=>({key:filter.key,operator:filter.operator.value,value:filter.value._bind()}))}:{}}}static{__runInitializers(_classThis,_classExtraInitializers)}};return OnlineEvaluationConfig2=_classThis})();exports.OnlineEvaluationConfig=OnlineEvaluationConfig;