얼굴로 인식한 사용자 정보를 Personalize에 사용자(User)로 등록합니다.
Personalize의 사용자(User)에 대한 메타 정보는 USER_ID, GENDER, EMOTION 로 구성됩니다.
{
"type": "record",
"name": "Users",
"namespace": "com.amazonaws.personalize.schema",
"fields": [
{
"name": "USER_ID",
"type": "string"
},
{
"name": "GENDER",
"type": "string",
"categorical": true
},
{
"name": "EMOTION",
"type": "string",
"categorical": true
}
],
"version": "1.0"
}
lambda-createUser에서는 DynamoDB에 기존에 이미 등록된 사용자가 있는지 확인하여 없는 경우에 Personalize에 사용자(User)로 등록합니다. 등록할 때에는 putUsers를 사용합니다.
let queryParams = {
TableName: userTableName,
KeyConditionExpression: "USER_ID = :userId",
ExpressionAttributeValues: {
":userId": userId
}
};
let dynamoQuery = await dynamo.query(queryParams).promise();
if (!dynamoQuery.Count) {
// Personalize
var params = {
datasetArn: datasetArn,
users: [{
userId: userId,
properties: {
"GENDER": gender,
"EMOTION": emotion
}
}]
};
await personalizeevents.putUsers(params).promise();
}
CDK stack에서는 아래와 같이 사용자 스키마로 사용자 데이터셋을 정의합니다.
const userSchema = new personalize.CfnSchema(this, 'UserSchema', {
name: 'image-recommender-user-schema',
schema: userSchemaJson,
});
const userDataset = new personalize.CfnDataset(this, 'UserDataset', {
datasetGroupArn: datasetGroup.attrDatasetGroupArn,
datasetType: 'Users',
name: 'image-recommender-user-dataset',
schemaArn: userSchema.attrSchemaArn,
});