我配置了一个 Evidently 项目,其中包含一项功能并准备了一项实验,其中我定义了一个自定义指标。问题很简单:我只是无法明显地记录任何事件。我就是不明白,出了什么问题。
此时我已经简化了故障排除,并且我正在使用命令行将事件发送到 Evidently:
aws evidently put-project-events \
--project "myprojectname"\
--events '[{"data" : "{\"value\":\"1\", \"userIP\":\"12.345.678.90\"}", "timestamp":"1693156893", "type":"aws.evidently.custom" }]'
结果看起来很成功:
{
"eventResults": [
{
"eventId": "fddbaf08-ad49-40d1-bcaa-aa49f44ea5e1"
}
],
"failedEventCount": 0
}
但是,我的实验似乎无法注册任何事件(对于我的功能的两种变体,事件计数仍然为零,并且不会随着每个脚本运行而增加;而且,一段时间后也不会增加())。
在实验配置中,度量规则如下所示:
{
"entityIdKey": "userIP",
"valueKey": "value",
"eventPattern": {
"userIP": [
{
"exists": true
}
],
"value": [
{
"exists": true
}
]
}
}
我可以看到指标进入了“CloudWatch”->“指标”->“所有指标”,但它们仍然没有出现在 Evidently 的实验中。
我在 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: { "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}
到目前为止,我尝试了以下方法:
有谁知道这里可能出了什么问题,或者是否有我忽略的先决配置?
非常感谢您的时间和建议。
所以我不确定你是否遇到这种情况,但对我来说,这就是事件没有被记录的原因。他们现在是。
对于要记录的指标,需要调用 putProjectEvents a - 在调用valuateFeature后1小时内调用 b - 有一个匹配的entityIdKey
在evaluateFeature中,boto3库强制使用entityId并告诉我它需要是一个字符串。
在 putProjectEvents 调用中,entityIdKey 作为数据参数的一部分作为字符串(在 python 中)传递,因此不强制执行。
在一种情况下,我有一个字符串“6552”,在另一种情况下,我有一个整数 6552。
因此指标没有映射到实验中。
一旦我完成了这些匹配,一切都按预期进行。