

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Création d'une attribution métrique Amazon Personalize
<a name="creating-metric-attribution"></a>

**Important**  
 Une fois que vous avez créé une attribution de métrique et enregistré des événements ou importé des données en masse incrémentielles, vous devrez payer un certain CloudWatch coût mensuel par métrique. Pour plus d'informations sur CloudWatch les tarifs, consultez la page de [ CloudWatch tarification d'Amazon](https://aws.amazon.com/cloudwatch/pricing/). Pour arrêter d'envoyer des métriques à CloudWatch, [supprimez l'attribution des métriques](deleting-metric-attribution.md). 

Pour commencer à générer des rapports de mesures, vous devez créer une attribution de métrique et importer des données d'interactions. Lorsque vous créez une attribution de métrique, vous spécifiez une liste de types d'événements à signaler. Pour chaque type d'événement, vous spécifiez une fonction qu'Amazon Personalize applique lors de la collecte des données. Les fonctions disponibles incluent `SUM(DatasetType.COLUMN_NAME)` et`SAMPLECOUNT()`. 

 Par exemple, vous avez peut-être une application de streaming vidéo en ligne et souhaitez suivre deux indicateurs : le taux de clics pour les recommandations et la durée totale des films visionnés, chaque vidéo du jeu de données Items incluant un `LENGTH` attribut. Vous créeriez une attribution de métriques et ajouteriez deux métriques, chacune associée à un type d'événement et à une fonction. Le premier peut concerner le type d'`Click`événement avec une `SAMPLECOUNT()` fonction. La seconde peut concerner le type d'`Watch`événement avec une `SUM(Items.LENGTH)` fonction. 

Vous pouvez appliquer `SUM()` des fonctions uniquement aux colonnes numériques des éléments et aux ensembles de données d'interactions entre éléments. Pour appliquer une `SUM()` fonction à une colonne d'un jeu de données Items, vous devez d'abord importer les métadonnées des éléments.

 Vous pouvez créer une attribution métrique à l'aide de la console Amazon Personalize ou AWS des SDK. AWS Command Line Interface

**Topics**
+ [Création d'une attribution métrique (console)](#create-metric-attribution-console)
+ [Création d'une attribution métrique (AWS CLI)](#create-metric-attribution-cli)
+ [Création d'une attribution métrique (AWS SDKs)](#create-metric-attribution-sdk)

## Création d'une attribution métrique (console)
<a name="create-metric-attribution-console"></a>

 Pour créer une attribution métrique à l'aide de la console Amazon Personalize, accédez à la page **d'attribution métrique** et choisissez **Create metric attribution**. Lorsque vous créez une attribution de métrique, vous spécifiez un chemin de compartiment Amazon S3 facultatif, votre rôle de service Amazon Personalize IAM et une liste de métriques sur lesquelles établir des rapports. 

 Lorsque vous créez une tâche d'importation d'un ensemble de données Item interactions avec la console Amazon Personalize, vous avez la possibilité de créer une attribution de métriques dans un nouvel onglet. Vous pouvez ensuite retourner à la tâche d'importation pour la terminer. Si vous êtes déjà sur la page **Configurer l'attribution des métriques**, vous pouvez passer à l'étape 4. 

**Pour créer une attribution métrique**

1. Ouvrez la console Amazon Personalize [https://console.aws.amazon.com/personalize/chez](https://console.aws.amazon.com/personalize/home) vous et connectez-vous à votre compte. 

1. Choisissez votre groupe de jeux de données.

1. Dans le volet de navigation, sous **Ressources personnalisées**, sélectionnez **Attribution métrique**.

1. Dans **Détails de l'attribution métrique**, choisissez **Créer une attribution métrique**.

1. Sur la page **Configurer l'attribution des métriques**, nommez l'attribution des métriques.

1. Si vous souhaitez publier des métriques sur Amazon S3 pour le **chemin de sortie des données Amazon S3**, entrez le compartiment Amazon S3 de destination. Cela permet de publier des métriques chaque fois que vous créez une tâche d'importation de jeu de données. Utilisez la syntaxe suivante :

   **s3://amzn-s3-demo-bucket/<folder> path>**

1. Si vous utilisez AWS KMS pour le chiffrement, pour l'**ARN de la clé KMS**, entrez le nom de ressource Amazon (ARN) de la AWS KMS clé. Vous devez autoriser Amazon Personalize et votre rôle de service Amazon Personalize IAM à utiliser votre clé. Pour de plus amples informations, veuillez consulter [Autoriser Amazon Personalize à utiliser votre AWS KMS clé](granting-personalize-key-access.md).

1. Dans le **rôle IAM**, choisissez de créer un nouveau rôle de service ou d'utiliser un rôle existant. Le rôle que vous choisissez doit disposer `PutMetricData` d'autorisations pour CloudWatch. Si vous souhaitez publier sur Amazon S3, le rôle doit disposer d'`PutObject`autorisations pour votre compartiment Amazon S3. 

   Pour utiliser le rôle que vous avez créé dans[Création d'un rôle IAM pour Amazon Personalize](set-up-required-permissions.md#set-up-create-role-with-permissions), vous devrez peut-être ajouter des politiques pour CloudWatch Amazon S3.

   Pour des exemples de politiques, voir [Donner à Amazon Personalize l'accès à CloudWatch](metric-attribution-requirements.md#metric-attribution-cw-permissions) et[Donner à Amazon Personalize l'accès à votre compartiment Amazon S3](metric-attribution-requirements.md#metric-attribution-s3-permissions).

1. Choisissez **Suivant**.

1. Sur la page **Définir les attributs des métriques**, choisissez comment définir les métriques. Choisissez **Créer des attributs métriques** pour utiliser l'outil de création. Choisissez **Input metric attributes** pour saisir les métriques au format JSON.
   + Si vous choisissez **Créer des attributs de métrique**, pour chaque métrique, indiquez un nom, un type d'événement et choisissez une fonction. Pour les `SUM()` fonctions, choisissez le nom de la colonne. Choisissez **Ajouter un attribut de métrique** pour ajouter des métriques supplémentaires. 
   + Si vous choisissez **Attributs de métrique en entrée**, entrez chaque métrique au format JSON. Ce qui suit montre comment formater une métrique.

     ```
     {
         "EventType": "watch",
         "MetricName": "MinutesWatchedTracker", 
         "MetricMathExpression": "SUM(Items.LENGTH)"
     }
     ```

1. Choisissez **Suivant**.

1. Sur la **page Réviser et créer**, passez en revue les détails de la nouvelle attribution de métriques. Pour effectuer des modifications, sélectionnez **Précédent**. Pour créer l'attribution métrique, choisissez **Create**. Lorsque l'attribution des métriques est active, vous pouvez commencer à importer des données et consulter les résultats. Pour plus d'informations sur l'affichage des résultats, consultez[Affichage de graphiques de données métriques dans CloudWatch](metric-attribution-results-cloudwatch.md). Pour plus d'informations sur la publication des résultats sur Amazon S3, consultez[Publication de rapports d'attribution de métriques sur Amazon S3](metric-attribution-results-s3.md).

## Création d'une attribution métrique (AWS CLI)
<a name="create-metric-attribution-cli"></a>

 Le code suivant montre comment créer une attribution métrique avec le AWS Command Line Interface. Le rôle que vous spécifiez doit disposer `PutMetricData` d'autorisations CloudWatch et, en cas de publication sur Amazon S3, `PutObject` d'autorisations pour votre compartiment Amazon S3. Pour utiliser le rôle que vous avez créé dans[Création d'un rôle IAM pour Amazon Personalize](set-up-required-permissions.md#set-up-create-role-with-permissions), vous devrez peut-être ajouter des politiques pour CloudWatch Amazon S3. Pour des exemples de politiques, voir [Donner à Amazon Personalize l'accès à CloudWatch](metric-attribution-requirements.md#metric-attribution-cw-permissions) et[Donner à Amazon Personalize l'accès à votre compartiment Amazon S3](metric-attribution-requirements.md#metric-attribution-s3-permissions). 

 Pour chaque métrique, spécifiez un nom, un type d'événement et une expression (une fonction). Les fonctions disponibles incluent `SUM(DatasetType.COLUMN_NAME)` et`SAMPLECOUNT()`. Pour les fonctions SUM (), spécifiez le type de jeu de données et le nom de colonne. Par exemple, `SUM(Items.LENGTH)`. Pour plus d'informations sur chaque paramètre, consultez[CreateMetricAttribution](API_CreateMetricAttribution.md). 

```
aws personalize create-metric-attribution \
--name metric attribution name \
--dataset-group-arn dataset group arn \
--metrics-output-config "{\"roleArn\": \"Amazon Personalize service role ARN\", \"s3DataDestination\":{\"kmsKeyArn\":\"kms key ARN\",\"path\":\"s3://amzn-s3-demo-bucket/folder-name/\"}}" \
--metrics "[{
  \"eventType\": \"event type\",
  \"expression\": \"SUM(DatasetType.COLUMN_NAME)\",
  \"metricName\": \"metric name\"
}]"
```

## Création d'une attribution métrique (AWS SDKs)
<a name="create-metric-attribution-sdk"></a>

 Le code suivant montre comment créer une attribution métrique avec le SDK pour Python (Boto3). Le rôle que vous spécifiez doit disposer `PutMetricData` d'autorisations CloudWatch et, en cas de publication sur Amazon S3, `PutObject` d'autorisations pour votre compartiment Amazon S3. Pour utiliser le rôle que vous avez créé dans[Création d'un rôle IAM pour Amazon Personalize](set-up-required-permissions.md#set-up-create-role-with-permissions), vous devrez peut-être ajouter des politiques pour CloudWatch Amazon S3. Pour des exemples de politiques, voir [Donner à Amazon Personalize l'accès à CloudWatch](metric-attribution-requirements.md#metric-attribution-cw-permissions) et[Donner à Amazon Personalize l'accès à votre compartiment Amazon S3](metric-attribution-requirements.md#metric-attribution-s3-permissions). 

 Pour chaque métrique, spécifiez un nom, un type d'événement et une expression (une fonction). Les fonctions disponibles incluent `SUM(DatasetType.COLUMN_NAME)` et`SAMPLECOUNT()`. Pour les fonctions SUM (), spécifiez le type de jeu de données et le nom de colonne. Par exemple, `SUM(Items.LENGTH)`. Pour plus d'informations sur chaque paramètre, consultez[CreateMetricAttribution](API_CreateMetricAttribution.md). 

------
#### [ SDK for Python (Boto3) ]

```
import boto3

personalize = boto3.client('personalize')

metricsList = [{ 
      "eventType": "event type",
      "expression": "SUM(DatasetType.COLUMN_NAME)",
      "metricName": "metric name"
}]

outputConfig = {
  "roleArn": "Amazon Personalize service role ARN", 
  "s3DataDestination": {
    "kmsKeyArn": "key ARN", 
    "path": "s3://amzn-s3-demo-bucket/<folder>"
  }
}
response = personalize.create_metric_attribution(
  name = 'metric attribution name',
  datasetGroupArn = 'dataset group arn',
  metricsOutputConfig = outputConfig,
  metrics = metricsList
)

metric_attribution_arn = response['metricAttributionArn']

print ('Metric attribution ARN: ' + metric_attribution_arn)

description = personalize.describe_metric_attribution(
    metricAttributionArn = metric_attribution_arn)['metricAttribution']

print('Name: ' + description['name'])
print('ARN: ' + description['metricAttributionArn'])
print('Status: ' + description['status'])
```

------
#### [ SDK for Java 2.x ]

```
public static String createMetricAttribution(PersonalizeClient personalizeClient,
                                             String eventType,
                                             String expression,
                                             String metricName,
                                             String metricAttributionName,
                                             String roleArn,
                                             String s3Path,
                                             String kmsKeyArn,
                                             String datasetGroupArn) {
    String metricAttributionArn = "";

    try {

        MetricAttribute attribute = MetricAttribute.builder()
                .eventType(eventType)
                .expression(expression)
                .metricName(metricName)
                .build();

        ArrayList<MetricAttribute> metricAttributes = new ArrayList<>();
        metricAttributes.add(attribute);

        S3DataConfig s3DataDestination = S3DataConfig.builder()
                .kmsKeyArn(kmsKeyArn)
                .path(s3Path)
                .build();

        MetricAttributionOutput outputConfig = MetricAttributionOutput.builder()
                .roleArn(roleArn)
                .s3DataDestination(s3DataDestination)
                .build();

        CreateMetricAttributionRequest createMetricAttributionRequest = CreateMetricAttributionRequest.builder()
                .name(metricAttributionName)
                .datasetGroupArn(datasetGroupArn)
                .metrics(metricAttributes)
                .metricsOutputConfig(outputConfig)
                .build();
        CreateMetricAttributionResponse createMetricAttributionResponse = personalizeClient.createMetricAttribution(createMetricAttributionRequest);

        metricAttributionArn = createMetricAttributionResponse.metricAttributionArn();
        System.out.println("Metric attribution ARN: " + metricAttributionArn);
        return metricAttributionArn;
    } catch (PersonalizeException e) {
        System.out.println(e.awsErrorDetails().errorMessage());
    }
    return "";
}
```

------
#### [ SDK for JavaScript v3 ]

```
// Get service clients and commands using ES6 syntax.
import { CreateMetricAttributionCommand, PersonalizeClient } from
  "@aws-sdk/client-personalize";
  
// create personalizeClient
const personalizeClient = new PersonalizeClient({
  region: "REGION"
});

// set the metric attribution param
export const createMetricAttributionParam = {
  name: "METRIC_ATTRIBUTION_NAME",            /* required */
  datasetGroupArn: "DATASET_GROUP_ARN",       /* required */
  metricsOutputConfig: {
    roleArn: "ROLE_ARN",                      /* required */
    s3DataDestination: {                
      kmsKeyArn: "KEY_ARN",                                                      /* optional */
      path: "s3://amzn-s3-demo-bucket/<folderName>/",    /* optional */
    },
  },
  metrics: [                        
    {
      eventType: "EVENT_TYPE",                      /* required for each metric */
      expression: "SUM(DatasetType.COLUMN_NAME)",   /* required for each metric */
      metricName: "METRIC_NAME",                    /* required for each metric */
    }
  ]
};

export const run = async () => {
  try {
    const response = await personalizeClient.send(
      new CreateMetricAttributionCommand(createMetricAttributionParam)
    );
    console.log("Success", response);
    return response; // For unit tests.
  } catch (err) {
    console.log("Error", err);
  }
};
run();
```

------