@composurecdk/bedrock 0.10.1
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/LICENSE +21 -0
- package/README.md +115 -0
- package/dist/commonjs/grants.d.ts +27 -0
- package/dist/commonjs/grants.d.ts.map +1 -0
- package/dist/commonjs/grants.js +42 -0
- package/dist/commonjs/grants.js.map +1 -0
- package/dist/commonjs/index.d.ts +8 -0
- package/dist/commonjs/index.d.ts.map +1 -0
- package/dist/commonjs/index.js +18 -0
- package/dist/commonjs/index.js.map +1 -0
- package/dist/commonjs/inference-profile.d.ts +88 -0
- package/dist/commonjs/inference-profile.d.ts.map +1 -0
- package/dist/commonjs/inference-profile.js +125 -0
- package/dist/commonjs/inference-profile.js.map +1 -0
- package/dist/commonjs/inference-target.d.ts +41 -0
- package/dist/commonjs/inference-target.d.ts.map +1 -0
- package/dist/commonjs/inference-target.js +104 -0
- package/dist/commonjs/inference-target.js.map +1 -0
- package/dist/commonjs/model-alarm-builder.d.ts +67 -0
- package/dist/commonjs/model-alarm-builder.d.ts.map +1 -0
- package/dist/commonjs/model-alarm-builder.js +58 -0
- package/dist/commonjs/model-alarm-builder.js.map +1 -0
- package/dist/commonjs/model-alarm-config.d.ts +83 -0
- package/dist/commonjs/model-alarm-config.d.ts.map +1 -0
- package/dist/commonjs/model-alarm-config.js +3 -0
- package/dist/commonjs/model-alarm-config.js.map +1 -0
- package/dist/commonjs/model-alarm-defaults.d.ts +22 -0
- package/dist/commonjs/model-alarm-defaults.d.ts.map +1 -0
- package/dist/commonjs/model-alarm-defaults.js +30 -0
- package/dist/commonjs/model-alarm-defaults.js.map +1 -0
- package/dist/commonjs/model-alarms.d.ts +20 -0
- package/dist/commonjs/model-alarms.d.ts.map +1 -0
- package/dist/commonjs/model-alarms.js +115 -0
- package/dist/commonjs/model-alarms.js.map +1 -0
- package/dist/commonjs/package.json +3 -0
- package/dist/esm/grants.d.ts +27 -0
- package/dist/esm/grants.d.ts.map +1 -0
- package/dist/esm/grants.js +39 -0
- package/dist/esm/grants.js.map +1 -0
- package/dist/esm/index.d.ts +8 -0
- package/dist/esm/index.d.ts.map +1 -0
- package/dist/esm/index.js +7 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/inference-profile.d.ts +88 -0
- package/dist/esm/inference-profile.d.ts.map +1 -0
- package/dist/esm/inference-profile.js +121 -0
- package/dist/esm/inference-profile.js.map +1 -0
- package/dist/esm/inference-target.d.ts +41 -0
- package/dist/esm/inference-target.d.ts.map +1 -0
- package/dist/esm/inference-target.js +98 -0
- package/dist/esm/inference-target.js.map +1 -0
- package/dist/esm/model-alarm-builder.d.ts +67 -0
- package/dist/esm/model-alarm-builder.d.ts.map +1 -0
- package/dist/esm/model-alarm-builder.js +55 -0
- package/dist/esm/model-alarm-builder.js.map +1 -0
- package/dist/esm/model-alarm-config.d.ts +83 -0
- package/dist/esm/model-alarm-config.d.ts.map +1 -0
- package/dist/esm/model-alarm-config.js +2 -0
- package/dist/esm/model-alarm-config.js.map +1 -0
- package/dist/esm/model-alarm-defaults.d.ts +22 -0
- package/dist/esm/model-alarm-defaults.d.ts.map +1 -0
- package/dist/esm/model-alarm-defaults.js +27 -0
- package/dist/esm/model-alarm-defaults.js.map +1 -0
- package/dist/esm/model-alarms.d.ts +20 -0
- package/dist/esm/model-alarms.d.ts.map +1 -0
- package/dist/esm/model-alarms.js +111 -0
- package/dist/esm/model-alarms.js.map +1 -0
- package/dist/esm/package.json +3 -0
- package/package.json +87 -0
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
import { Duration } from "aws-cdk-lib";
|
|
2
|
+
import { ComparisonOperator, Metric } from "aws-cdk-lib/aws-cloudwatch";
|
|
3
|
+
import { resolveAlarmConfig, resolveAlarmThresholdBasis } from "@composurecdk/cloudwatch";
|
|
4
|
+
import { isInferenceProfile } from "./inference-target.js";
|
|
5
|
+
import { MODEL_ALARM_DEFAULTS } from "./model-alarm-defaults.js";
|
|
6
|
+
const PERIOD = Duration.minutes(1);
|
|
7
|
+
/** Returns the `AWS/Bedrock` metrics for `target`. */
|
|
8
|
+
export function modelMetrics(target) {
|
|
9
|
+
const modelId = isInferenceProfile(target) ? target.profileId : target.modelId;
|
|
10
|
+
return {
|
|
11
|
+
modelId,
|
|
12
|
+
metric: (metricName, options) => new Metric({
|
|
13
|
+
namespace: "AWS/Bedrock",
|
|
14
|
+
metricName,
|
|
15
|
+
dimensionsMap: { ModelId: modelId },
|
|
16
|
+
period: PERIOD,
|
|
17
|
+
...options,
|
|
18
|
+
}),
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
const THRESHOLD_ALARMS = {
|
|
22
|
+
invocationThrottles: {
|
|
23
|
+
metricName: "InvocationThrottles",
|
|
24
|
+
statistic: "Sum",
|
|
25
|
+
defaults: MODEL_ALARM_DEFAULTS.invocationThrottles,
|
|
26
|
+
describe: (id, t) => `Bedrock is throttling requests to ${id}; the account's quota for the model is exhausted. ` +
|
|
27
|
+
`Threshold: > ${String(t)} per minute.`,
|
|
28
|
+
},
|
|
29
|
+
invocationServerErrors: {
|
|
30
|
+
metricName: "InvocationServerErrors",
|
|
31
|
+
statistic: "Sum",
|
|
32
|
+
defaults: MODEL_ALARM_DEFAULTS.invocationServerErrors,
|
|
33
|
+
describe: (id, t) => `Bedrock is returning server errors for ${id}. Threshold: > ${String(t)} per minute.`,
|
|
34
|
+
},
|
|
35
|
+
invocationClientErrors: {
|
|
36
|
+
metricName: "InvocationClientErrors",
|
|
37
|
+
statistic: "Sum",
|
|
38
|
+
defaults: MODEL_ALARM_DEFAULTS.invocationClientErrors,
|
|
39
|
+
describe: (id, t) => `Requests to ${id} are failing with client errors, such as AccessDenied or validation ` +
|
|
40
|
+
`errors. Threshold: > ${String(t)} per minute.`,
|
|
41
|
+
},
|
|
42
|
+
invocationLatency: {
|
|
43
|
+
metricName: "InvocationLatency",
|
|
44
|
+
statistic: "p90",
|
|
45
|
+
describe: (id, t) => `p90 invocation latency for ${id} exceeds ${String(t)} ms.`,
|
|
46
|
+
},
|
|
47
|
+
timeToFirstToken: {
|
|
48
|
+
metricName: "TimeToFirstToken",
|
|
49
|
+
statistic: "p90",
|
|
50
|
+
describe: (id, t) => `p90 time to first token for ${id} exceeds ${String(t)} ms.`,
|
|
51
|
+
},
|
|
52
|
+
};
|
|
53
|
+
function toDefinition(key, metric, cfg, description) {
|
|
54
|
+
return {
|
|
55
|
+
key,
|
|
56
|
+
alarmName: cfg.alarmName,
|
|
57
|
+
metric,
|
|
58
|
+
threshold: cfg.threshold,
|
|
59
|
+
comparisonOperator: ComparisonOperator.GREATER_THAN_THRESHOLD,
|
|
60
|
+
evaluationPeriods: cfg.evaluationPeriods,
|
|
61
|
+
datapointsToAlarm: cfg.datapointsToAlarm,
|
|
62
|
+
treatMissingData: cfg.treatMissingData,
|
|
63
|
+
description,
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
function quotaAlarm(scope, metrics, config) {
|
|
67
|
+
if (!config)
|
|
68
|
+
return [];
|
|
69
|
+
const quota = resolveAlarmThresholdBasis({
|
|
70
|
+
scope,
|
|
71
|
+
value: config.quota,
|
|
72
|
+
resolve: (q) => q,
|
|
73
|
+
warningId: "@composurecdk/bedrock:token-tpm-quota-alarm",
|
|
74
|
+
alarmLabel: "Bedrock estimated TPM quota usage",
|
|
75
|
+
suppressHint: "recommendedAlarms({ estimatedTpmQuotaUsage: false })",
|
|
76
|
+
});
|
|
77
|
+
if (quota === undefined)
|
|
78
|
+
return [];
|
|
79
|
+
const percent = config.thresholdPercent ?? MODEL_ALARM_DEFAULTS.estimatedTpmQuotaUsage.thresholdPercent;
|
|
80
|
+
if (!(quota > 0)) {
|
|
81
|
+
throw new Error(`estimatedTpmQuotaUsage: quota must be a positive number, got ${String(quota)}.`);
|
|
82
|
+
}
|
|
83
|
+
if (!(percent > 0 && percent <= 1)) {
|
|
84
|
+
throw new Error(`estimatedTpmQuotaUsage: thresholdPercent must be in (0, 1], got ${String(percent)}.`);
|
|
85
|
+
}
|
|
86
|
+
const cfg = resolveAlarmConfig({ ...config, threshold: Math.floor(quota * percent) }, { ...MODEL_ALARM_DEFAULTS.optIn, threshold: 0 });
|
|
87
|
+
return [
|
|
88
|
+
toDefinition("estimatedTpmQuotaUsage", metrics.metric("EstimatedTPMQuotaUsage", { statistic: "Maximum" }), cfg, `Estimated token usage for ${metrics.modelId} exceeds ${String(percent * 100)}% of the ` +
|
|
89
|
+
`${String(quota)} tokens-per-minute quota.`),
|
|
90
|
+
];
|
|
91
|
+
}
|
|
92
|
+
/** Resolves the recommended alarm configuration for a model's metrics. */
|
|
93
|
+
export function resolveModelAlarmDefinitions(scope, metrics, config) {
|
|
94
|
+
if (config?.enabled === false)
|
|
95
|
+
return [];
|
|
96
|
+
const definitions = Object.entries(THRESHOLD_ALARMS).flatMap(([key, spec]) => {
|
|
97
|
+
const userConfig = config?.[key];
|
|
98
|
+
if (userConfig === false || (userConfig === undefined && !spec.defaults))
|
|
99
|
+
return [];
|
|
100
|
+
if (!spec.defaults && userConfig?.threshold === undefined) {
|
|
101
|
+
throw new Error(`The "${key}" alarm has no default threshold. Supply one, e.g. ` +
|
|
102
|
+
`recommendedAlarms({ ${key}: { threshold: … } }).`);
|
|
103
|
+
}
|
|
104
|
+
const cfg = resolveAlarmConfig(userConfig, spec.defaults ?? { ...MODEL_ALARM_DEFAULTS.optIn, threshold: 0 });
|
|
105
|
+
return [
|
|
106
|
+
toDefinition(key, metrics.metric(spec.metricName, { statistic: spec.statistic }), cfg, spec.describe(metrics.modelId, cfg.threshold)),
|
|
107
|
+
];
|
|
108
|
+
});
|
|
109
|
+
return [...definitions, ...quotaAlarm(scope, metrics, config?.estimatedTpmQuotaUsage)];
|
|
110
|
+
}
|
|
111
|
+
//# sourceMappingURL=model-alarms.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model-alarms.js","sourceRoot":"","sources":["../../src/model-alarms.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@composurecdk/bedrock",
|
|
3
|
+
"version": "0.10.1",
|
|
4
|
+
"description": "Composable Amazon Bedrock model access: cross-Region inference profiles, invocation grants and alarms",
|
|
5
|
+
"repository": {
|
|
6
|
+
"type": "git",
|
|
7
|
+
"url": "git+https://github.com/laazyj/composureCDK.git",
|
|
8
|
+
"directory": "packages/bedrock"
|
|
9
|
+
},
|
|
10
|
+
"files": [
|
|
11
|
+
"dist",
|
|
12
|
+
"README.md",
|
|
13
|
+
"LICENSE"
|
|
14
|
+
],
|
|
15
|
+
"scripts": {
|
|
16
|
+
"lint": "eslint .",
|
|
17
|
+
"clean": "rm -rf dist .tshy .tshy-build",
|
|
18
|
+
"build": "tshy",
|
|
19
|
+
"typecheck": "tsc --noEmit",
|
|
20
|
+
"check:exports": "attw --pack . --profile node16 && publint",
|
|
21
|
+
"test": "vitest run",
|
|
22
|
+
"test:watch": "vitest"
|
|
23
|
+
},
|
|
24
|
+
"keywords": [
|
|
25
|
+
"aws",
|
|
26
|
+
"cdk",
|
|
27
|
+
"aws-cdk",
|
|
28
|
+
"infrastructure-as-code",
|
|
29
|
+
"iac",
|
|
30
|
+
"composurecdk",
|
|
31
|
+
"bedrock",
|
|
32
|
+
"generative-ai",
|
|
33
|
+
"inference-profile",
|
|
34
|
+
"llm"
|
|
35
|
+
],
|
|
36
|
+
"author": "Jason Duffett (https://github.com/laazyj)",
|
|
37
|
+
"license": "MIT",
|
|
38
|
+
"publishConfig": {
|
|
39
|
+
"access": "public"
|
|
40
|
+
},
|
|
41
|
+
"type": "module",
|
|
42
|
+
"engines": {
|
|
43
|
+
"node": ">=20"
|
|
44
|
+
},
|
|
45
|
+
"tshy": {
|
|
46
|
+
"exports": {
|
|
47
|
+
"./package.json": "./package.json",
|
|
48
|
+
".": "./src/index.ts"
|
|
49
|
+
}
|
|
50
|
+
},
|
|
51
|
+
"peerDependencies": {
|
|
52
|
+
"@composurecdk/cloudformation": "^0.10.0",
|
|
53
|
+
"@composurecdk/cloudwatch": "^0.10.0",
|
|
54
|
+
"@composurecdk/core": "^0.10.0",
|
|
55
|
+
"aws-cdk-lib": "^2.138.0",
|
|
56
|
+
"constructs": "^10.0.0"
|
|
57
|
+
},
|
|
58
|
+
"devDependencies": {
|
|
59
|
+
"@composurecdk/cdk-testing": "*",
|
|
60
|
+
"@types/node": "^26.6.1",
|
|
61
|
+
"aws-cdk-lib": "^2.269.0",
|
|
62
|
+
"constructs": "^10.8.1",
|
|
63
|
+
"typescript": "^6.0.3",
|
|
64
|
+
"vitest": "^5.0.0"
|
|
65
|
+
},
|
|
66
|
+
"exports": {
|
|
67
|
+
"./package.json": "./package.json",
|
|
68
|
+
".": {
|
|
69
|
+
"import": {
|
|
70
|
+
"types": "./dist/esm/index.d.ts",
|
|
71
|
+
"default": "./dist/esm/index.js"
|
|
72
|
+
},
|
|
73
|
+
"require": {
|
|
74
|
+
"types": "./dist/commonjs/index.d.ts",
|
|
75
|
+
"default": "./dist/commonjs/index.js"
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
},
|
|
79
|
+
"main": "./dist/commonjs/index.js",
|
|
80
|
+
"types": "./dist/commonjs/index.d.ts",
|
|
81
|
+
"module": "./dist/esm/index.js",
|
|
82
|
+
"nx": {
|
|
83
|
+
"tags": [
|
|
84
|
+
"scope:lib"
|
|
85
|
+
]
|
|
86
|
+
}
|
|
87
|
+
}
|