AWS CloudWatch Evidently实验无法记录自定义指标事件求助
AWS CloudWatch Evidently实验无事件记录问题排查
问题描述
已配置AWS CloudWatch Evidently项目、功能及包含自定义指标的实验,但Evidently无法记录任何事件。通过CLI及React代码调用evaluate-feature和put-project-events接口均返回成功,但实验中的事件计数始终为0。CloudWatch指标中能看到数据,但Evidently实验内无展示。已尝试多种排查步骤,问题仍未解决,寻求排查方向或解决方案。
CLI命令及返回结果
执行的CLI命令
aws evidently evaluate-feature \ --entity-id "12.345.678.90" \ --feature "SolutionInterest" \ --project "myprojectname" aws evidently put-project-events \ --project "myprojectname"\ --events '[{"data" : "{\"value\":\"1\", \"userIP\":\"12.345.678.90\"}", "timestamp":"1693156893", "type":"aws.evidently.custom" }]'
接口返回结果
{ "details": "{\"experiment\":\"Test\",\"treatment\":\"Variation2\"}", "reason": "EXPERIMENT_RULE_MATCH", "value": { "boolValue": true }, "variation": "Variation2" } { "eventResults": [ { "eventId": "fddbaf08-ad49-40d1-bcaa-aa49f44ea5e1" } ], "failedEventCount": 0 }
实验指标规则配置
{ "entityIdKey": "userIP", "valueKey": "value", "eventPattern": { "userIP": [ { "exists": true } ], "value": [ { "exists": true } ] } }
React代码及控制台返回
React实现代码
import { EvidentlyClient, EvaluateFeatureCommand, PutProjectEventsCommand } from "@aws-sdk/client-evidently"; const eviclient = new EvidentlyClient({ region : 'eu-north-1', endpoint: "https://evidently.eu-north-1.amazonaws.com", credentials : { accessKeyId : 'AKIA2NxxxxxxxxW6P3UL', secretAccessKey : 'fo5hMrufII7eHZxxxxxxxxS/5ZHnXqIFXNXGHt2e' } }); async function evaluate() { const command1 = new EvaluateFeatureCommand({ project: "myprojectname", feature: "SolutionInterest", entityId: "12.345.678.90" }); const command2 = new PutProjectEventsCommand({ project: "myprojectname", events: [ { timestamp: new Date(), type: "aws.evidently.custom", data: JSON.stringify({ "userIP": "12.345.678.90", "value": "1" }) } ] }); let response1 = await eviclient.send(command1); console.log('response1: ' + JSON.stringify(response1)); let response2 = await eviclient.send(command2); console.log('response2: ' + JSON.stringify(response2)); } function App() { evaluate(); return null; }
控制台返回结果
[Log] response1: {"$metadata":{"httpStatusCode":200,"requestId":"f9f35837-4796-4456-925f-97be4afaa240","attempts":1,"totalRetryDelay":0},"details":"{\"experiment\":\"Test4\",\"treatment\":\"Variation2\"}","reason":"EXPERIMENT_RULE_MATCH","value":{"boolValue":true},"variation":"Variation2"} [Log] response2: {"$metadata":{"httpStatusCode":200,"requestId":"fb29f316-85bc-4416-9dcf-920ba98fae57","attempts":1,"totalRetryDelay":0},"eventResults":[{"errorCode":null,"errorMessage":null,"eventId":"434115a0-0e18-4cae-a2fe-c53f8dca117d"}],"failedEventCount":0}
已尝试的排查步骤
- 在其他区域创建项目和实验,问题依旧;
- 使用客户端配置的同一身份创建实验,问题未解决;
- 创建带规则模式和不带规则模式的指标,无差异;
- 尝试给PutProjectEventsCommand的
data参数传递JSON和字符串两种格式,无变化。
排查方向与解决方案
- 验证事件时间范围:确保
put-project-events传递的timestamp在实验的启动时间和结束时间范围内,CLI命令中使用的1693156893需确认是否在实验有效期内,React代码中new Date()生成的时间需实时匹配实验运行时段。 - 检查指标规则与事件数据的匹配性:
- 若指标为数值型,需确保
value字段传递的是数字类型而非字符串(比如将"value": "1"改为"value": 1); - 确认
entityIdKey对应的userIP字段值,与evaluate-feature调用时的entityId完全一致,且格式统一(均为字符串)。
- 若指标为数值型,需确保
- 等待事件处理延迟:Evidently事件统计存在5-10分钟的延迟,发送事件后不要立即查看实验面板,等待足够时间后再刷新验证。
- 查看Evidently日志:在CloudWatch Logs中找到对应项目的日志组(格式为
/aws/evidently/projects/[your-project-name]),检查是否存在事件解析错误、匹配失败等日志信息,定位具体问题。 - 确认实验状态与受众规则:
- 确保实验处于Running状态,而非Draft或Completed;
- 检查实验的受众规则,确认当前
entityId未被过滤(evaluate-feature返回EXPERIMENT_RULE_MATCH已说明匹配,但需再次验证规则逻辑)。
- 验证IAM权限细节:
- 除了
evidently:PutProjectEvents和evidently:EvaluateFeature权限,需确认调用者拥有evidently:PutProjectEvents的资源级权限,允许操作目标项目; - 检查是否存在权限边界或组织策略限制事件向实验的关联。
- 除了
内容的提问来源于stack exchange,提问作者jev
相关产品推荐
相关产品推荐

