

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.

# Surveillance et suivi de l’utilisation d’Amazon Q Developer
<a name="monitoring-overview"></a>

La surveillance joue un rôle important dans le maintien de la fiabilité, de la disponibilité et des performances d'Amazon Q Developer et de vos autres AWS solutions. AWS fournit les outils et fonctionnalités de surveillance suivants pour surveiller et enregistrer l'activité des développeurs Amazon Q :
+  *AWS CloudTrail*capture les appels d'API et les événements associés effectués par vous ou en votre nom Compte AWS et transmet les fichiers journaux à un compartiment Amazon Simple Storage Service (Amazon S3) que vous spécifiez. Vous pouvez identifier les utilisateurs et les comptes appelés AWS, l'adresse IP source à partir de laquelle les appels ont été effectués et la date des appels. Pour de plus amples informations, veuillez consulter [Journalisation des appels d'API Amazon Q Developer à l'aide de AWS CloudTrail](logging-using-cloudtrail.md).
+ *Amazon CloudWatch* surveille vos AWS ressources et les applications que vous utilisez AWS en temps réel. Vous pouvez collecter et suivre les métriques, créer des tableaux de bord personnalisés, et définir des alarmes qui vous informent ou prennent des mesures lorsqu’une métrique spécifique atteint un seuil que vous spécifiez. Par exemple, vous pouvez avoir le CloudWatch suivi du nombre de fois qu'Amazon Q a été invoqué sur votre compte ou du nombre d'utilisateurs actifs par jour. Pour de plus amples informations, veuillez consulter [Surveillance d'Amazon Q Developer avec Amazon CloudWatch](monitoring-cloudwatch.md).

Amazon Q Developer inclut également les fonctionnalités suivantes pour vous aider à suivre et à enregistrer l’activité des utilisateurs dans Amazon Q :
+  *Un tableau de bord* vous montre les métriques d’activité utilisateur agrégées des abonnés à Amazon Q Developer Pro. Pour de plus amples informations, veuillez consulter [Affichage de l’activité des utilisateurs d’Amazon Q Developer sur le tableau de bord](dashboard.md).
+  *Les rapports d’activité des utilisateurs* vous indiquent ce que font les utilisateurs individuels sur Amazon Q. Pour plus d’informations, consultez [Affichage de l’activité d’utilisateurs spécifiques dans Amazon Q Developer](q-admin-user-telemetry.md).
+  *Les journaux d’invite* vous fournissent un enregistrement de toutes les demandes que les utilisateurs saisissent dans le chat Amazon Q dans leur environnement de développement intégré (IDE). Pour de plus amples informations, veuillez consulter [Journalisation des invites des utilisateurs dans Amazon Q Developer](q-admin-prompt-logging.md).

# Journalisation des appels d'API Amazon Q Developer à l'aide de AWS CloudTrail
<a name="logging-using-cloudtrail"></a>

Amazon Q Developer Pro est intégré à AWS CloudTrail un service qui fournit un enregistrement des actions entreprises par un utilisateur, un rôle ou un Service AWS dans Amazon Q. CloudTrail capture tous les appels d'API pour Amazon Q sous forme d'événements. Ces captures incluent les appels de la console Amazon Q et les appels de code vers les opérations d’API Amazon Q. Si vous créez un suivi, vous pouvez activer la diffusion continue des CloudTrail événements vers un compartiment Amazon S3, y compris les événements pour Amazon Q. Si vous ne configurez pas de suivi, vous pouvez toujours consulter les événements les plus récents dans la CloudTrail console dans **Historique des événements**. À l'aide des informations collectées par CloudTrail, vous pouvez déterminer la demande envoyée à Amazon Q, l'adresse IP à partir de laquelle la demande a été faite, l'auteur de la demande, la date à laquelle elle a été faite, ainsi que des informations supplémentaires.

Pour plus d'informations CloudTrail, consultez le [guide de AWS CloudTrail l'utilisateur](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/).

## Informations pour les développeurs Amazon Q dans CloudTrail
<a name="q-developer-info-in-cloudtrail"></a>

CloudTrail est activé sur votre compte Compte AWS lorsque vous créez le compte. Lorsqu'une activité a lieu dans Amazon Q Developer, elle est enregistrée dans un CloudTrail événement avec d'autres Service AWS événements dans **l'historique** des événements. Vous pouvez consulter, rechercher et télécharger les événements récents dans votre Compte AWS. Pour plus d'informations, consultez la section [Affichage des événements avec l'historique des CloudTrail événements](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/view-cloudtrail-events.html) dans le *guide de AWS CloudTrail l'utilisateur*.

Pour un enregistrement continu des événements de votre site Compte AWS, y compris des événements pour Amazon Q, créez un parcours. Un *suivi* permet CloudTrail de fournir des fichiers journaux à un compartiment Amazon S3. Par défaut, lorsque vous créez un journal d’activité dans la console, il s’applique à toutes les régions Régions AWS. Le journal enregistre les événements de toutes les régions de la AWS partition et transmet les fichiers journaux au compartiment Amazon S3 que vous spécifiez. En outre, vous pouvez en configurer d'autres Services AWS pour analyser plus en détail les données d'événements collectées dans les CloudTrail journaux et agir en conséquence. Pour plus d’informations, consultez les rubriques suivantes dans le *AWS CloudTrail Guide de l’utilisateur* :
+  [Présentation de la création d’un journal d’activité](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-create-and-update-a-trail.html) 
+  [CloudTrail services et intégrations pris en charge](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-aws-service-specific-topics.html#cloudtrail-aws-service-specific-topics-integrations) 
+  [Configuration des notifications Amazon SNS pour CloudTrail](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/getting_notifications_top_level.html) 
+  [Réception de fichiers CloudTrail journaux provenant de plusieurs régions](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/receive-cloudtrail-log-files-from-multiple-regions.html) 
+  [Réception de fichiers CloudTrail journaux provenant de plusieurs comptes](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-receive-logs-from-multiple-accounts.html) 

Toutes les actions d'Amazon Q Developer sont enregistrées CloudTrail et génèrent des entrées dans les fichiers CloudTrail journaux.

Chaque événement ou entrée de journal contient des informations sur la personne ayant initié la demande. Les informations relatives à l’identité permettent de déterminer les éléments suivants :
+ Si la demande a été faite avec les informations d'identification de l'utilisateur root ou Gestion des identités et des accès AWS (IAM)
+ Si la demande a été effectuée avec des informations d’identification de sécurité temporaires pour un rôle ou un utilisateur fédéré
+ Si la demande a été faite par un autre Service AWS

Pour plus d'informations, consultez l'[élément CloudTrail UserIdentity](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-event-reference-user-identity.html) dans le guide de l'*AWS CloudTrail utilisateur*.

## Présentation des entrées des fichiers journaux Amazon Q Developer
<a name="understanding-q-developer-entries"></a>

Un suivi est une configuration qui permet de transmettre des événements sous forme de fichiers journaux à un compartiment Amazon S3 que vous spécifiez. CloudTrail les fichiers journaux contiennent une ou plusieurs entrées de journal. Un événement représente une demande unique provenant de n'importe quelle source et inclut des informations sur l'action demandée, la date et l'heure de l'action, les paramètres de la demande, etc. CloudTrail les fichiers journaux ne constituent pas une trace ordonnée des appels d'API publics, ils n'apparaissent donc pas dans un ordre spécifique.

Amazon Q Developer effectue également des appels d’API avec un paramètre `dryRun` pour vérifier que vous disposez des autorisations nécessaires afin d’effectuer l’action, sans réellement effectuer la demande. Les appels adressés à Amazon Q Developer APIs avec le `dryRun` paramètre sont capturés sous forme d'événements et enregistrés `"dryRun" : true` dans un CloudTrail journal `requestParameters` sur le terrain.

L'exemple suivant montre une entrée de CloudTrail journal illustrant l'`SendMessage`action.

```
{
    "eventVersion": "1.08",
    "userIdentity": {
        "type": "AssumedRole",
        "principalId": "AROAXD12ABCDEF3G4HI5J:aws-user",
        "arn": "arn:aws:sts::123456789012:assumed-role/PowerUser/aws-user",
        "accountId": "123456789012",
        "accessKeyId": "ASIAAB12CDEFG34HIJK",
        "sessionContext": {
            "sessionIssuer": {
                "type": "Role",
                "principalId": "AROAXD12ABCDEF3G4HI5J",
                "arn": "arn:aws:iam::123456789012:role/PowerUser",
                "accountId": "123456789012",
                "userName": "PowerUser"
            },
            "webIdFederationData": {},
            "attributes": {
                "creationDate": "2023-11-28T10:00:00Z",
                "mfaAuthenticated": "false"
            }
        }
    },
    "eventTime": "2023-11-28T10:00:00Z",
    "eventSource": "q.amazonaws.com",
    "eventName": "SendMessage",
    "awsRegion": "us-east-1",
    "sourceIPAddress": "123.456.789.012",
    "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/115.0",
    "requestParameters": {
        "Origin": "https://conversational-experience-worker.widget.console.aws.amazon.com",
        "conversationId": "a298ec0d-0a49-4d2e-92bd-7d6e629b4619",
        "source": "CONSOLE",
        "conversationToken": "***",
        "utterance": "***"
    },
    "responseElements": {
        "result": {
            "content": {
                "text": {
                    "body": "***",
                    "references": []
                }
            },
            "format": "PLAINTEXT",
            "intents": {},
            "type": "TEXT"
        },
        "Access-Control-Expose-Headers": "x-amzn-RequestId,x-amzn-ErrorType,x-amzn-ErrorMessage,Date",
        "metadata": {
            "conversationExpirationTime": "2024-02-25T19:31:38Z",
            "conversationId": "a298ec0d-0a49-4d2e-92bd-7d6e629b4619",
            "conversationToken": "***",
            "utteranceId": "3b87b46f-04a9-41ef-b8fe-8abf52d2c053"
        },
        "resultCode": "LLM"
    },
    "additionalEventData": {
        "quickAction": "dev"
    },
    "requestID": "19b3c30e-906e-4b7f-b5c3-509f67248655",
    "eventID": "a552c487-7d97-403a-8ec4-d49539c7a03d",
    "readOnly": false,
    "eventType": "AwsApiCall",
    "managementEvent": true,
    "recipientAccountId": "123456789012",
    "eventCategory": "Management"
}
```

L'exemple suivant montre une entrée de CloudTrail journal illustrant l'`PassRequest`action.

```
{
    "eventVersion": "1.09",
    "userIdentity": {
        "type": "AssumedRole",
        "principalId": "AIDA6ON6E4XEGIEXAMPLE",
        "arn": "arn:aws:iam::555555555555:user/Mary",
        "accountId": "555555555555",
        "accessKeyId": "AKIAIOSFODNN7EXAMPLE",
        "sessionContext": {
            "sessionIssuer": {
            "type": "Role",
            "principalId": "AIDA6ON6E4XEGIEXAMPLE",
            "arn": "arn:aws:iam::555555555555:user/Mary",
            "accountId": "555555555555",
            "userName": "Mary"
    
        },
        "attributes": {
            "creationDate": "2024-04-10T20:03:01Z",
            "mfaAuthenticated": "false"
        },
        "invokedBy": "q.amazonaws.com"
    },
    "eventTime": "2024-04-10T20:04:42Z",
    "eventSource": "q.amazonaws.com",
    "eventName": "PassRequest",
    "awsRegion": "us-east-1",
    "sourceIPAddress": "q.amazonaws.com",
    "userAgent": "q.amazonaws.com",
    "requestParameters": null,
    "responseElements": null,
    "requestID": "2d528c76-329e-410b-9516-EXAMPLE565dc",
    "eventID": "ba0801a1-87ec-4d26-be87-EXAMPLE75bbb",
    "readOnly": false,
    "eventType": "AwsApiCall",
    "managementEvent": true,
    "recipientAccountId": "555555555555",
    "eventCategory": "Management"
}
```

L'exemple suivant montre une entrée de CloudTrail journal qui montre qu'Amazon Q appelle l'`s3:ListBuckets`action en votre nom.

```
{
    "eventVersion": "1.09",
    "userIdentity": {
        "type": "AssumedRole",
        "principalId": "AIDA6ON6E4XEGIEXAMPLE",
        "arn": "arn:aws:iam::555555555555:user/Paulo",
        "accountId": "555555555555",
        "accessKeyId": "AKIAIOSFODNN7EXAMPLE",
        "sessionContext": {
            "sessionIssuer": {
                "type": "Role",
                "principalId": "AIDA6ON6E4XEGIEXAMPLE",
                "arn": "arn:aws:iam::555555555555:user/Paulo",
                "accountId": "555555555555",
                "userName": "Paulo"
            },
            "attributes": {
                "creationDate": "2024-04-10T14:06:08Z",
                "mfaAuthenticated": "false"
            }
        },
        "invokedBy": "q.amazonaws.com"
    },
    "eventTime": "2024-04-10T14:07:55Z",
    "eventSource": "s3.amazonaws.com",
    "eventName": "ListBuckets",
    "awsRegion": "us-east-1",
    "sourceIPAddress": "q.amazonaws.com",
    "userAgent": "q.amazonaws.com",
    "requestParameters": {
        "Host": "s3.amazonaws.com"
    },
    "responseElements": null,
    "additionalEventData": {
        "SignatureVersion": "SigV4",
        "CipherSuite": "ECDHE-RSA-AES128-GCM-SHA256",
        "bytesTransferredIn": 0,
        "AuthenticationMethod": "AuthHeader",
        "x-amz-id-2": "ExampleRequestId123456789",
        "bytesTransferredOut": 4054
    },
    "requestID": "ecd94349-b36f-44bf-b6f5-EXAMPLE9c463",
    "eventID": "2939ba50-1d26-4a5a-83bd-EXAMPLE85850",
    "readOnly": true,
    "eventType": "AwsApiCall",
    "managementEvent": true,
    "recipientAccountId": "555555555555",
    "vpcEndpointId": "vpce-EXAMPLE1234",
    "eventCategory": "Management"
}
```

# Surveillance d'Amazon Q Developer avec Amazon CloudWatch
<a name="monitoring-cloudwatch"></a>

**Note**  
Les métriques présentées ici concernent uniquement l’utilisation d’[Amazon Q dans votre IDE](q-in-IDE.md).

Vous pouvez surveiller l'utilisation d'Amazon Q Developer CloudWatch, qui collecte les données brutes et les traite en indicateurs lisibles en temps quasi réel. Ces statistiques sont conservées pendant 15 mois, ce qui vous permet d’accéder aux informations historiques et d’avoir une meilleure perspective sur les performances d’Amazon Q. Vous pouvez également définir des alarmes qui surveillent certains seuils et envoient des notifications ou prennent des mesures lorsque ces seuils sont atteints. Pour plus d'informations, consultez le [guide de CloudWatch l'utilisateur Amazon](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/).

Le service Amazon Q Developer établit un rapport sur les métriques suivantes dans l’espace de noms `AWS/Q`.


| Dimensions | Métrique | Cas d’utilisation ou explication | 
| --- | --- | --- | 
|  Nombre  |  Invocations  |  Vous souhaitez déterminer le nombre d’invocations qui ont été comptabilisées au fil du temps.  | 
|  UserCount  |  DailyActiveUserTrend  |  Vous souhaitez déterminer le nombre d’utilisateurs actifs par jour.  | 
|  SubscriptionUserCount  |  SubscriptionCount  |  Vous souhaitez déterminer le nombre d’utilisateurs ayant un abonnement payant.  | 
|  UniqueUserCount  |  MonthlyActiveUniqueUsers  |  Vous souhaitez déterminer le nombre d’utilisateurs actifs au cours d’un mois donné.  | 
|  ProgrammingLanguage, SuggestionState, CompletionType  |  GeneratedLineCount  |  Vous souhaitez déterminer le nombre de lignes générées par Amazon Q Developer.  | 
|  ProgrammingLanguage, SuggestionState, CompletionType  |  SuggestionReferenceCount  |  Vous souhaitez déterminer le nombre de déclencheurs de recommandation avec références qui ont eu lieu.  | 
|  ProgrammingLanguage  |  CodeScanCount  |  Vous souhaitez déterminer le nombre de scans de code effectués.  | 
|  ProgrammingLanguage  |  TotalCharacterCount  |  Le nombre de caractères de votre fichier, y compris toutes les suggestions d’Amazon Q Developer.  | 
|  ProgrammingLanguage  |  CodeWhispererCharacterCount  |  Le nombre de caractères générés par Amazon Q Developer.  | 

Pour agréger les invocations, utilisez la statistique Sum.

Pour agréger DailyActiveUserTrend, utilisez la statistique Sum et utilisez « 1 jour » comme période.

Pour agréger SubscriptionCount, utilisez la statistique Sum.

Pour agréger, MonthlyActiveUniqueUsers utilisez la statistique Sum et utilisez « 30 jours » comme période.

# Identification des actions effectuées par des utilisateurs spécifiques avec Amazon CloudWatch Logs
<a name="monitoring-telemetry"></a>

Il est possible d’obtenir des statistiques au niveau de l’utilisateur sur votre utilisation d’Amazon Q Developer. Pour déterminer quel utilisateur a effectué une action particulière, recherchez les événements appelés SendTelemetryEvent et examinez le type d'objet JSON SendTelemetryEventRequest qu'ils contiennent. Dans cet objet, le schéma apparaît comme suit.

**Astuce**  
Vous pouvez également générer l’activité de chaque utilisateur dans Amazon Q Developer dans un rapport au format CSV. Pour de plus amples informations, veuillez consulter [Affichage de l’activité d’utilisateurs spécifiques dans Amazon Q Developer](q-admin-user-telemetry.md).

```
http://json-schema.org/draft-07/schema#",
    "definitions": {
        "ProgrammingLanguage": {
            "type": "object",
            "properties": {
                "languageName": {
                    "type": "string",
                    "enum": [
                        "python",
                        "javascript",
                        "java",
                        "csharp",
                        "typescript",
                        "c",
                        "cpp",
                        "go",
                        "kotlin",
                        "php",
                        "ruby",
                        "rust",
                        "scala",
                        "shell",
                        "sql",
                        "json",
                        "yaml",
                        "vue",
                        "tf",
                        "tsx",
                        "jsx",
                        "plaintext"
                    ],
                    "description": "Programming Languages supported by Q"
                }
            }
        },
        "Dimension": {
            "type": "object",
            "properties": {
                "name": {
                    "type": "string",
                    "description": "must match ^[-a-zA-Z0-9._]*$ and be between 1 and 255 characters"
                },
                "value": {
                    "type": "string",
                    "description": "must match ^[-a-zA-Z0-9._]*$ and be between 1 and 1024 characters"
                }
            }
        }
    },
    "telemetryEvents": {
        "UserTriggerDecisionEvent": {
            "type": "object",
            "properties": {
                "sessionId": {
                    "type": "string",
                    "description": "UUID for the session"
                },
                "requestId": {
                    "type": "string",
                    "description": "UUID for the request"
                },
                "customizationArn": {
                    "type": "string",
                    "description": "ARN of the customization matching pattern: ^arn:[-.a-z0-9]{1,63}:codewhisperer:([-.a-z0-9]{0,63}:){2}([a-zA-Z0-9-_:/]){1,1023}$"
                },
                "programmingLanguage": {
                    "$ref": "#/definitions/ProgrammingLanguage"
                },
                "completionType": {
                    "type": "string",
                    "enum": [
                        "BLOCK",
                        "LINE"
                    ]
                },
                "suggestionState": {
                    "type": "string",
                    "enum": [
                        "ACCEPT",
                        "REJECT",
                        "DISCARD",
                        "EMPTY"
                    ]
                },
                "recommendationLatencyMilliseconds": {
                    "type": "number"
                },
                "timestamp": {
                    "type": "string",
                    "description": "datetime, example: Jul 23, 2024, 12:11:02 AM"
                },
                "triggerToResponseLatencyMilliseconds": {
                    "type": "number"
                },
                "suggestionReferenceCount": {
                    "type": "integer"
                },
                "generatedLine": {
                    "type": "integer"
                },
                "numberOfRecommendations": {
                    "type": "integer"
                }
            },
            "required": [
                "sessionId",
                "requestId",
                "programmingLanguage",
                "completionType",
                "suggestionState",
                "recommendationLatencyMilliseconds",
                "timestamp"
            ]
        },
        "CodeCoverageEvent": {
            "type": "object",
            "properties": {
                "customizationArn": {
                    "type": "string",
                    "description": "ARN of the customization matching pattern: ^arn:[-.a-z0-9]{1,63}:codewhisperer:([-.a-z0-9]{0,63}:){2}([a-zA-Z0-9-_:/]){1,1023}$"
                },
                "programmingLanguage": {
                    "$ref": "#/definitions/ProgrammingLanguage"
                },
                "acceptedCharacterCount": {
                    "type": "integer"
                },
                "totalCharacterCount": {
                    "type": "integer"
                },
                "timestamp": {
                    "type": "string",
                    "description": "datetime, example: Jul 23, 2024, 12:11:02 AM"
                },
                "unmodifiedAcceptedCharacterCount": {
                    "type": "integer"
                }
            },
            "required": [
                "programmingLanguage",
                "acceptedCharacterCount",
                "totalCharacterCount",
                "timestamp"
            ]
        },
        "UserModificationEvent": {
            "type": "object",
            "properties": {
                "sessionId": {
                    "type": "string",
                    "description": "UUID for the session"
                },
                "requestId": {
                    "type": "string",
                    "description": "UUID for the request"
                },
                "programmingLanguage": {
                    "$ref": "#/definitions/ProgrammingLanguage"
                },
                "modificationPercentage": {
                    "type": "number",
                    "description": "This is the percentage of AI generated code which has been modified by the user"
                },
                "customizationArn": {
                    "type": "string",
                    "description": "ARN of the customization matching pattern: ^arn:[-.a-z0-9]{1,63}:codewhisperer:([-.a-z0-9]{0,63}:){2}([a-zA-Z0-9-_:/]){1,1023}$"
                },
                "timestamp": {
                    "type": "string",
                    "description": "datetime, example: Jul 23, 2024, 12:11:02 AM"
                }
            },
            "required": [
                "sessionId",
                "requestId",
                "programmingLanguage",
                "modificationPercentage",
                "timestamp"
            ]
        },
        "CodeScanEvent": {
            "type": "object",
            "properties": {
                "programmingLanguage": {
                    "$ref": "#/definitions/ProgrammingLanguage"
                },
                "codeScanJobId": {
                    "type": "string"
                },
                "timestamp": {
                    "type": "string",
                    "description": "datetime, example: Jul 23, 2024, 12:11:02 AM"
                },
                "codeAnalysisScope": {
                    "type": "string",
                    "enum": [
                        "FILE",
                        "PROJECT"
                    ]
                }
            },
            "required": [
                "programmingLanguage",
                "codeScanJobId",
                "timestamp"
            ]
        },
        "CodeScanRemediationsEvent": {
            "type": "object",
            "properties": {
                "programmingLanguage": {
                    "$ref": "#/definitions/ProgrammingLanguage"
                },
                "CodeScanRemediationsEventType": {
                    "type": "string",
                    "enum": [
                        "CODESCAN_ISSUE_HOVER",
                        "CODESCAN_ISSUE_APPLY_FIX",
                        "CODESCAN_ISSUE_VIEW_DETAILS"
                    ]
                },
                "timestamp": {
                    "type": "string",
                    "description": "datetime, example: Jul 23, 2024, 12:11:02 AM"
                },
                "detectorId": {
                    "type": "string"
                },
                "findingId": {
                    "type": "string"
                },
                "ruleId": {
                    "type": "string"
                },
                "component": {
                    "type": "string"
                },
                "reason": {
                    "type": "string"
                },
                "result": {
                    "type": "string"
                },
                "includesFix": {
                    "type": "boolean"
                }
            }
        },
        "MetricData": {
            "type": "object",
            "properties": {
                "metricName": {
                    "type": "string",
                    "description": "must match pattern ^[-a-zA-Z0-9._]*$ and be between 1 and 1024 characters"
                },
                "metricValue": {
                    "type": "number"
                },
                "timestamp": {
                    "type": "string",
                    "description": "datetime, example: Jul 23, 2024, 12:11:02 AM"
                },
                "product": {
                    "type": "string",
                    "description": "must match pattern ^[-a-zA-Z0-9._]*$ and be between 1 and 128 characters"
                },
                "dimensions": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/Dimension"
                    },
                    "description": "maximum size of 30"
                }
            },
            "required": [
                "metricName",
                "metricValue",
                "timestamp",
                "product"
            ]
        },
        "ChatAddMessageEvent": {
            "type": "object",
            "properties": {
                "conversationId": {
                    "type": "string",
                    "description": "ID which represents a multi-turn conversation, length between 1 and 128"
                },
                "messageId": {
                    "type": "string",
                    "description": "Unique identifier for the chat message"
                },
                "customizationArn": {
                    "type": "string",
                    "description": "ARN of the customization matching pattern: ^arn:[-.a-z0-9]{1,63}:codewhisperer:([-.a-z0-9]{0,63}:){2}([a-zA-Z0-9-_:/]){1,1023}$"
                },
                "userIntent": {
                    "type": "string",
                    "enum": [
                        "SUGGEST_ALTERNATE_IMPLEMENTATION",
                        "APPLY_COMMON_BEST_PRACTICES",
                        "IMPROVE_CODE",
                        "SHOW_EXAMPLES",
                        "CITE_SOURCES",
                        "EXPLAIN_LINE_BY_LINE",
                        "EXPLAIN_CODE_SELECTION",
                        "GENERATE_CLOUDFORMATION_TEMPLATE"
                    ]
                },
                "hasCodeSnippet": {
                    "type": "boolean"
                },
                "programmingLanguage": {
                    "$ref": "#/definitions/ProgrammingLanguage"
                },
                "activeEditorTotalCharacters": {
                    "type": "integer"
                },
                "timeToFirstChunkMilliseconds": {
                    "type": "number"
                },
                "timeBetweenChunks": {
                    "type": "array",
                    "items": {
                        "type": "number"
                    },
                    "description": "maximum size of 100"
                },
                "fullResponselatency": {
                    "type": "number"
                },
                "requestLength": {
                    "type": "integer"
                },
                "responseLength": {
                    "type": "integer"
                },
                "numberOfCodeBlocks": {
                    "type": "integer"
                },
                "hasProjectLevelContext": {
                    "type": "boolean"
                }
            },
            "required": [
                "conversationId",
                "messageId"
            ]
        },
        "ChatInteractWithMessageEvent": {
            "type": "object",
            "properties": {
                "conversationId": {
                    "type": "string",
                    "description": "ID which represents a multi-turn conversation, length between 1 and 128"
                },
                "messageId": {
                    "type": "string",
                    "description": "Unique identifier for the chat message"
                },
                "customizationArn": {
                    "type": "string",
                    "description": "ARN of the customization matching pattern: ^arn:[-.a-z0-9]{1,63}:codewhisperer:([-.a-z0-9]{0,63}:){2}([a-zA-Z0-9-_:/]){1,1023}$"
                },
                "interactionType": {
                    "type": "string",
                    "enum": [
                        "INSERT_AT_CURSOR",
                        "COPY_SNIPPET",
                        "COPY",
                        "CLICK_LINK",
                        "CLICK_BODY_LINK",
                        "CLICK_FOLLOW_UP",
                        "HOVER_REFERENCE",
                        "UPVOTE",
                        "DOWNVOTE"
                    ],
                    "description": "Chat Message Interaction Type"
                },
                "interactionTarget": {
                    "type": "string",
                    "description": "Target of message interaction"
                },
                "acceptedCharacterCount": {
                    "type": "integer"
                },
                "acceptedLineCount": {
                    "type": "integer"
                },
                "acceptedSnippetHasReference": {
                    "type": "boolean"
                },
                "hasProjectLevelContext": {
                    "type": "boolean"
                }
            },
            "required": [
                "conversationId",
                "messageId"
            ]
        },
        "ChatUserModificationEvent": {
            "type": "object",
            "properties": {
                "conversationId": {
                    "type": "string",
                    "description": "ID which represents a multi-turn conversation, length between 1 and 128"
                },
                "customizationArn": {
                    "type": "string",
                    "description": "ARN of the customization matching pattern: ^arn:[-.a-z0-9]{1,63}:codewhisperer:([-.a-z0-9]{0,63}:){2}([a-zA-Z0-9-_:/]){1,1023}$"
                },
                "messageId": {
                    "type": "string",
                    "description": "Unique identifier for the chat message"
                },
                "programmingLanguage": {
                    "$ref": "#/definitions/ProgrammingLanguage"
                },
                "modificationPercentage": {
                    "type": "number",
                    "description": "This is the percentage of AI generated code which has been modified by the user"
                },
                "hasProjectLevelContext": {
                    "type": "boolean"
                }
            },
            "required": [
                "conversationId",
                "messageId",
                "modificationPercentage"
            ]
        },
        "SuggestionState": {
            "type": "string",
            "enum": [
                "ACCEPT",
                "REJECT",
                "DISCARD",
                "EMPTY"
            ]
        },
        "TerminalUserInteractionEvent": {
            "type": "object",
            "properties": {
                "terminalUserInteractionEventType": {
                    "type": "string",
                    "enum": [
                        "CODEWHISPERER_TERMINAL_TRANSLATION_ACTION",
                        "CODEWHISPERER_TERMINAL_COMPLETION_INSERTED"
                    ],
                    "description": "Terminal User Interaction Event Type"
                },
                "terminal": {
                    "type": "string"
                },
                "terminalVersion": {
                    "type": "string"
                },
                "shell": {
                    "type": "string"
                },
                "shellVersion": {
                    "type": "string"
                },
                "duration": {
                    "type": "integer"
                },
                "timeToSuggestion": {
                    "type": "integer"
                },
                "isCompletionAccepted": {
                    "type": "boolean"
                },
                "cliToolCommand": {
                    "type": "string"
                }
            }
        },
        "FeatureDevEvent": {
            "type": "object",
            "properties": {
                "conversationId": {
                    "type": "string",
                    "description": "ID which represents a multi-turn conversation, length between 1 and 128"
                }
            },
            "required": [
                "conversationId"
            ]
        }
    },
    "SendTelemetryEventRequest": {
        "type": "object",
        "properties": {
            "clientToken": {
                "type": "string",
                "description": "The client's authentication token"
            },
            "telemetryEvent": {
                "properties": {
                    "oneOf": [
                        {
                            "_comment": "This event is emitted when a user accepts or rejects an inline code suggestion",
                            "$ref": "#/definitions/userTriggerDecisionEvent"
                        },
                        {
                            "_comment": "This event is emitted every five minutes. It details how much code is written by inline code suggestion and in total during that period",
                            "$ref": "#/definitions/codeCoverageEvent"
                        },
                        {
                            "_comment": "This event is emitted when a code snippet from inline code suggestion has been edited by a user. It details the percentage of that code snippet modified by the user",
                            "$ref": "#/definitions/userModificationEvent"
                        },
                        {
                            "_comment": "This field is emitted when a security scan is requested by a user",
                            "$ref": "#/definitions/codeScanEvent"
                        },
                        {
                            "_comment": "This field is emitted when a security scan recommended remediation is accepted by a user",
                            "$ref": "#/definitions/codeScanRemediationsEvent"
                        },
                        {
                            "_comment": "This event is deprecated but may still occur in telemetry. Do not use this.",
                            "$ref": "#/definitions/metricData"
                        },
                        {
                            "_comment": "This event is emitted when Q adds an AI generated message to the chat window",
                            "$ref": "#/definitions/chatAddMessageEvent"
                        },
                        {
                            "_comment": "This event is emitted when a user interacts with a chat message",
                            "$ref": "#/definitions/chatInteractWithMessageEvent"
                        },
                        {
                            "_comment": "This event is emitted when a user modifies a code snippet sourced from chat. It gives a percentage of the code snippet which has been modified",
                            "$ref": "#/definitions/chatUserModificationEvent"
                        },
                        {
                            "_comment": "This event is emitted when a user interacts with a terminal suggestion",
                            "$ref": "#/definitions/terminalUserInteractionEvent"
                        },
                        {
                            "_comment": "This event is emitted when a user first prompts the /dev feature.",
                            "$ref": "#/definitions/featureDevEvent"
                        }
                    ]
                }
            },
            "optOutPreference": {
                "type": "string",
                "enum": [
                    "OPTIN",
                    "OPTOUT"
                ],
                "description": "OPTOUT and telemetry is only provided to the account of purchasing enterprise, OPTIN and telemetry may also be used for product improvement"
            },
            "userContext": {
                "type": "object",
                "properties": {
                    "ideCategory": {
                        "type": "string",
                        "enum": [
                            "JETBRAINS",
                            "VSCODE",
                            "CLI",
                            "JUPYTER_MD",
                            "JUPYTER_SM"
                        ]
                    },
                    "operatingSystem": {
                        "type": "string",
                        "description": "The operating system being used"
                    },
                    "product": {
                        "type": "string",
                        "description": "The name of the product being used"
                    },
                    "clientId": {
                        "type": "string",
                        "description": "A UUID representing the individual client being used"
                    },
                    "ideVersion": {
                        "type": "string",
                        "description": "The version of the Q plugin"
                    }
                },
                "required": [
                    "ideCategory",
                    "operatingSystem",
                    "product",
                    "clientId",
                    "ideVersion"
                ]
            },
            "profileArn": {
                "type": "string",
                "description": "The arn of the Q Profile used to configure individual user accounts."
```

Notez que a SendTelemetryEvent peut contenir l'un des nombreux événements de télémétrie. Chacun d’entre eux décrit une interaction spécifique au sein de l’environnement de développement.

Une description plus détaillée de chaque événement apparaît ci-dessous.

## UserTriggerDecisionEvent
<a name="monitoring-telemetry-user-trigger"></a>

Cet événement est déclenché lorsqu’un utilisateur interagit avec une suggestion faite par Amazon Q. Il indique si la suggestion a été acceptée, rejetée ou modifiée, ainsi que les métadonnées pertinentes.
+ `completionType` : si la saisie semi-automatique était un bloc ou une ligne.
+ `suggestionState` : si l’utilisateur a accepté, rejeté ou écarté la suggestion.

## CodeScanEvent
<a name="monitoring-telemetry-code-scan"></a>

Cet événement est enregistré lorsqu’un scan du code est effectué. Il permet de suivre la portée et le résultat du scan, en fournissant des informations sur les contrôles de sécurité et de qualité du code.
+ `codeScanJobId` : identifiant unique de la tâche de numérisation de code.
+ `codeAnalysisScope` : si le scan a été effectué au niveau du fichier ou au niveau du projet.
+ `programmingLanguage` : langue en cours de scan.

## CodeScanRemediationsEvent
<a name="monitoring-telemetry-remediations"></a>

Cet événement capture les interactions des utilisateurs avec les suggestions de correction d’Amazon Q, telles que l’application de correctifs ou l’affichage des détails du problème.
+ `CodeScanRemediationsEventType` : type de mesure corrective mise en œuvre (par exemple, affichage des détails ou application d’un correctif).
+ `includesFix` : booléen indiquant si le problème de code inclut une solution suggérée.

## ChatAddMessageEvent
<a name="monitoring-telemetry-add-message"></a>

Cet événement est déclenché lorsqu’un nouveau message est ajouté à une conversation de chat en cours. Il capture l’intention de l’utilisateur et tous les extraits de code impliqués.
+ `conversationId` : identifiant unique de la conversation.
+ `messageId` : identifiant unique du message de chat.
+ `userIntent` : intention de l’utilisateur, telle que l’amélioration ou l’explication du code.
+ `programmingLanguage` : langue associée au message de chat.

## ChatInteractWithMessageEvent
<a name="monitoring-telemetry-interact-message"></a>

Cet événement capture les interactions des utilisateurs avec les messages de chat, par exemple en copiant des extraits de code, en cliquant sur des liens ou en survolant des références.
+ `interactionType` : type d’interaction (par exemple, copier, survoler, cliquer).
+ `interactionTarget` : cible de l’interaction (par exemple, un extrait de code ou un lien).
+ `acceptedCharacterCount` : nombre de caractères du message qui ont été acceptés.
+ `acceptedSnippetHasReference` : booléen indiquant si l’extrait accepté incluait une référence.

## TerminalUserInteractionEvent
<a name="monitoring-telemetry-interact-event"></a>

Cet événement enregistre les interactions de l’utilisateur avec les commandes ou les saisies automatiques du terminal dans l’environnement du terminal.
+ `terminalUserInteractionEventType` : type d’interaction (par exemple, traduction du terminal ou saisie automatique du code).
+ `isCompletionAccepted` : booléen indiquant si la saisie automatique a été acceptée par l’utilisateur.
+ `duration` : temps d’interaction.

# Accès aux messages relatifs à la personnalisation dans Amazon Logs CloudWatch
<a name="customizations-optimize-accessing-logs"></a>

Vous pouvez stocker des informations relatives à la création de vos personnalisations dans [Amazon CloudWatch Logs](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/WhatIsCloudWatchLogs.html).

Vous pouvez autoriser votre administrateur Amazon Q Developer à consulter ces journaux avec l’ensemble d’autorisations suivant.

Pour en savoir plus sur les autorisations requises pour envoyer des journaux à plusieurs ressources, consultez la section [Journalisation nécessitant des autorisations supplémentaires [V2]](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/AWS-logs-and-resource-policy.html#AWS-vended-logs-permissions-V2) dans le *guide de l'utilisateur d'Amazon CloudWatch Logs*.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowLogDeliveryActions",
            "Effect": "Allow",
            "Action": [
                "logs:PutDeliverySource",
                "logs:GetDeliverySource",
                "logs:DeleteDeliverySource",
                "logs:DescribeDeliverySources",
                "logs:PutDeliveryDestination",
                "logs:GetDeliveryDestination",
                "logs:DeleteDeliveryDestination",
                "logs:DescribeDeliveryDestinations",
                "logs:CreateDelivery",
                "logs:GetDelivery",
                "logs:DeleteDelivery",
                "logs:DescribeDeliveries",
                "firehose:ListDeliveryStreams",
                "firehose:DescribeDeliveryStream",
                "s3:ListAllMyBuckets",
                "s3:ListBucket",
                "s3:GetBucketLocation"
            ],
            "Resource": [
                "arn:aws:logs:us-east-1:111122223333:log-group:*",
                "arn:aws:firehose:us-east-1:111122223333:deliverystream/*",
                "arn:aws:s3:::*"
            ]
        }
    ]
}
```

------

# Affichage de l’activité des utilisateurs d’Amazon Q Developer sur le tableau de bord
<a name="dashboard"></a>

Disponible uniquement pour les administrateurs Amazon Q Developer, le tableau de bord Amazon Q Developer résume les données utiles sur la manière dont vos abonnés au niveau Pro utilisent le service.

![\[Le tableau de bord Amazon Q qui indique le nombre total d’abonnements, les abonnements actifs, les abonnements en attente, un widget de lignes de code suggéré, un widget d’utilisateurs actifs et des filtres.\]](http://docs.aws.amazon.com/fr_fr/amazonq/latest/qdeveloper-ug/images/q-dev-dashboard.png)


Amazon Q génère et affiche de nouvelles métriques sur une base horaire pour la plupart. La seule section qui n’est pas mise à jour toutes les heures est le widget **Utilisateurs actifs**, qui est mis à jour quotidiennement selon l’horloge du temps universel coordonné (UTC).

Le tableau de bord affiche les métriques collectées auprès des utilisateurs abonnés dans :
+ le AWS compte auquel vous êtes actuellement connecté

  *et *
+ les comptes membres, si vous vous êtes connecté à un compte de gestion pour lequel la [visibilité des abonnements à l’échelle de l’organisation](subscribe-visibility.md) a été activée.
**Note**  
Le widget **Utilisateurs actifs** affiche uniquement les informations du compte auquel vous êtes actuellement connecté.

**Pour afficher et filtrer le tableau de bord**

1. Connectez-vous au AWS Management Console.

1. Basculez vers la console Amazon Q Developer.

1. Choisissez **Tableau de bord** dans le volet de navigation.

1. (Facultatif) Filtrez les informations par plage de dates, langage de programmation, personnalisation ou fournisseur d’environnement de développement intégré (IDE).

**Remarques** :
+ si le lien du **tableau de bord** n’est pas disponible dans le volet de navigation, consultez [Résolution des problèmes du tableau de bord](dashboard-troubleshooting.md).
+ Si vous souhaitez envoyer les métriques des utilisateurs dans un rapport quotidien avec une répartition de l’utilisation d’Amazon Q Developer par utilisateur, consultez [Affichage de l’activité d’utilisateurs spécifiques dans Amazon Q Developer](q-admin-user-telemetry.md).
+ Pour plus d’informations sur des métriques spécifiques, consultez [Descriptions des métriques d’utilisation du tableau de bord Amazon Q Developer](dashboard-metrics-descriptions.md) ou cliquez sur le lien d’aide (![\[The help link.\]](http://docs.aws.amazon.com/fr_fr/amazonq/latest/qdeveloper-ug/images/help-icon.png)) en haut à droite de la page du tableau de bord.

# Descriptions des métriques d’utilisation du tableau de bord Amazon Q Developer
<a name="dashboard-metrics-descriptions"></a>

Le tableau suivant décrit les métriques présentées dans le tableau de bord Amazon Q Developer.

Pour plus d’informations sur le tableau de bord, consultez [Affichage de l’activité des utilisateurs d’Amazon Q Developer sur le tableau de bord](dashboard.md).


| Nom des métriques | Description | 
| --- | --- | 
|  **Total des abonnements**  |  Affiche le nombre total d'abonnements sur le AWS compte courant, ainsi que les abonnements sur les comptes membres, si vous êtes connecté à un compte de gestion pour lequel la [visibilité des abonnements à l'échelle de l'organisation](https://docs.aws.amazon.com/amazonq/latest/qdeveloper-ug/subscribe-visibility.html) a été activée.  | 
|  **Abonnements actifs**  |  Affiche le nombre total d'abonnements actifs sur le AWS compte courant, ainsi que les abonnements sur les comptes membres, si vous êtes connecté à un compte de gestion pour lequel la [visibilité des abonnements à l'échelle de l'organisation](https://docs.aws.amazon.com/amazonq/latest/qdeveloper-ug/subscribe-visibility.html) a été activée. Les *abonnements actifs* sont ceux qui appartiennent aux utilisateurs ayant commencé à utiliser Amazon Q dans leur environnement de développement intégré (IDE). Ces abonnements vous sont facturés. Pour en savoir plus sur les abonnements actifs, consultez [Statuts d'abonnement Amazon Q Developer](q-admin-setup-subscribe-status.md).  | 
|  **Abonnements en attente**  |  Affiche le nombre total d'abonnements en attente sur le AWS compte courant, ainsi que les abonnements sur les comptes membres, si vous êtes connecté à un compte de gestion pour lequel la [visibilité des abonnements à l'échelle de l'organisation](https://docs.aws.amazon.com/amazonq/latest/qdeveloper-ug/subscribe-visibility.html) a été activée. Les *abonnements en attente* sont ceux qui appartiennent à des utilisateurs qui n’ont pas encore commencé à utiliser Amazon Q dans leur IDE. Ces abonnements ne vous sont pas facturés. Pour en savoir plus sur les abonnements en attente, consultez [Statuts d'abonnement Amazon Q Developer](q-admin-setup-subscribe-status.md).  | 
|  **Lignes de code acceptées**  |  Affiche un graphique circulaire qui indique les lignes de code acceptées par les utilisateurs, ventilées par fonctionnalité Amazon Q (développement des fonctionnalités, génération de documentation, génération de tests unitaires, etc.).   | 
|  **Utilisateurs actifs**  |  Affiche un diagramme linéaire qui indique le nombre d’abonnés qui utilisaient activement Amazon Q dans l’IDE au cours d’une plage de dates spécifiée.  | 
|  **Suggestions intégrées**  |  Affiche le nombre total de suggestions et de suggestions acceptées pour la fonctionnalité de [suggestions intégrées](inline-suggestions.md). Le pourcentage de suggestions acceptées est calculé en divisant le nombre de suggestions acceptées par les utilisateurs par le nombre total de suggestions générées par Amazon Q. Le nombre total de suggestions inclut les suggestions acceptées et activement rejetées ; il n’inclut pas les suggestions rejetées parce que l’utilisateur a continué à taper ou a commencé à effectuer d’autres opérations dans son IDE.  | 
|  **Chat intégré**  |  Affiche le nombre total de suggestions et le nombre de suggestions acceptées pour la fonctionnalité de [chat intégré](q-in-IDE-inline-chat.md). Le pourcentage de suggestions acceptées est calculé en divisant le nombre de suggestions acceptées par les utilisateurs par le nombre total de suggestions générées par Amazon Q.  | 
|  **Chat dans l’IDE** : **nombre total de messages envoyés**  |  Affiche le nombre total de réponses d’Amazon Q dans la fenêtre de [chat Amazon Q](q-in-IDE-chat.md) de l’IDE de l’utilisateur.  | 
|  **Développement de fonctionnalités** — **Taux d'acceptation**  |  Indique le taux d'acceptation de la [fonctionnalité de développement](q-in-IDE-chat.md#develop-code) de fonctionnalités. Le taux d’acceptation est calculé en divisant le nombre de lignes de code acceptées par les utilisateurs par le nombre total de lignes de code suggérées par Amazon Q.  | 
|  **Génération de documents**  |  Indique le nombre total de fichiers de documentation (tels que READMEs les fichiers de support) créés et mis à jour par la fonction de [génération de documents](q-in-IDE-chat.md#doc-generation). Le taux d’acceptation est égal au nombre de mises à jour ou de créations de fichiers acceptées par les utilisateurs, divisé par le nombre total de mises à jour ou de créations de fichiers suggérées par Amazon Q.  | 
|  **Génération de tests unitaires**  |  Indique le nombre total de tests unitaires générés par la fonctionnalité de [génération de tests unitaires](q-in-IDE-chat.md#unit-tests) et le nombre de tests unitaires acceptés par les utilisateurs. Le taux d’acceptation est calculé en divisant le nombre de tests unitaires acceptés par les utilisateurs par le nombre total de tests unitaires générés par Amazon Q.  | 
|  **Révisions de code**  |  Indique le nombre total de révisions de code et de rapports de résultats générés par la fonctionnalité de [révision de code](code-reviews.md). Le **nombre total de révisions de code (manuel uniquement)** et le **rapport de résultats (manuel uniquement)** font référence aux révisions de code et aux rapports de recherche qui *ne sont pas* [générés automatiquement](start-review.md#auto-scan).  | 
|  **Correctifs de code**  |  Indique le nombre total de [correctifs de code](address-code-issues.md) générés par Amazon Q. Le taux d’acceptation est calculé en divisant le nombre de correctifs de code acceptés par les utilisateurs par le nombre total de correctifs de code suggérés par Amazon Q.  | 
|  **Transformation de code**  |  Indique le nombre total de transformations de code effectuées par la fonction de [transformation](address-code-issues.md) et le nombre de lignes de code traitées.  | 

# Désactivation du tableau de bord Amazon Q Developer
<a name="dashboard-disabling"></a>

Vous pouvez désactiver le tableau de bord Amazon Q Developer si vous avez des inquiétudes concernant la confidentialité des données, le temps de chargement des pages ou d’autres problèmes potentiels. Lorsque vous désactivez le tableau de bord, la page du tableau de bord (et les liens vers celle-ci) ne sont plus disponibles dans la console Amazon Q Developer.

Pour plus d’informations sur le tableau de bord, consultez [Affichage des métriques d’utilisation (tableau de bord)](dashboard.md).

**Pour désactiver le tableau de bord**

1. Ouvrez la console Amazon Q Developer :
   + Si vous avez configuré Amazon Q Developer avec une instance d'organisation de AWS IAM Identity Center, connectez-vous à l'aide d'un compte de gestion ou d'un compte membre.
   + Si vous avez configuré Amazon Q Developer avec une instance de compte d’IAM Identity Center, connectez-vous à l’aide du compte associé à cette instance.

1. Choisissez **Paramètres** puis, dans la section **Activité utilisateur Amazon Q Developer**, choisissez **Modifier**. 

1. Désactivez le **tableau de bord d’utilisation Amazon Q Developer**.

# Résolution des problèmes du tableau de bord Amazon Q Developer
<a name="dashboard-troubleshooting"></a>

Si la page du tableau de bord Amazon Q Developer n’est pas disponible, procédez comme suit :
+ **Vérifiez les autorisations**. Pour afficher le tableau de bord, vous devez disposer des autorisations suivantes :
  + `q:ListDashboardMetrics` 
  + `codewhisperer:ListProfiles` 
  + `sso:ListInstances` 
  + `user-subscriptions:ListUserSubscriptions` 
  + Pour consulter les métriques générées avant le 22 novembre 2024, vous avez également besoin de : `cloudwatch:GetMetricData` et `cloudwatch:ListMetrics` 

    Pour en savoir plus sur les autorisations, consultez [Administrateurs autorisés à utiliser la console Amazon Q Developer](id-based-policy-examples-admins.md#q-admin-setup-admin-users).
+ **Vérifiez vos paramètres**. Dans la console Amazon Q Developer, choisissez **Paramètres** et assurez-vous que le bouton bascule **Tableau de bord d’utilisation d’Amazon Q Developer** est activé.

Pour plus d’informations sur le tableau de bord, consultez [Affichage des métriques d’utilisation (tableau de bord)](dashboard.md).

# Affichage de l’activité d’utilisateurs spécifiques dans Amazon Q Developer
<a name="q-admin-user-telemetry"></a>

Vous pouvez configurer Amazon Q pour collecter les données télémétriques relatives à l’activité des utilisateurs de chaque abonné Amazon Q Developer de votre organisation et présenter ces informations dans un rapport. Le rapport vous donne un aperçu de la manière dont certains utilisateurs utilisent Amazon Q.

Amazon Q génère le rapport tous les jours à minuit (00h00), heure universelle coordonnée (UTC), et l’enregistre dans un fichier CSV sur le chemin suivant :

`s3://bucketName/prefix/AWSLogs/accountId/QDeveloperLogs/by_user_analytic/region/year/month/day/00/accountId_by_user_analytic_timestamp.csv`

Le fichier .csv est le suivant :
+ Chaque ligne indique un utilisateur qui a interagi avec Amazon Q ce jour-là.
+ Chaque colonne indique une métrique, comme décrit dans [Métriques du rapport d’activité utilisateur](user-activity-metrics.md). Les métriques sont calculées sur la base de la télémétrie utilisateur collectée au cours de la journée.

Si plus de 1 000 utilisateurs interagissent avec Amazon Q au cours de la journée, Amazon Q divise les données en plusieurs fichiers CSV contenant 1 000 utilisateurs chacun, avec les suffixes `part_1`, `part_2`, etc.

**Note**  
Lorsque vous activez les rapports d’activité des utilisateurs, Amazon Q collecte des données télémétriques, quelle que soit la manière dont le développeur a configuré le paramètre **Activer Amazon Q pour envoyer les données d’utilisation vers AWS** dans son IDE. Ce paramètre détermine si la télémétrie peut être utilisée par l’*AWS entreprise*, et non par votre organisation. Pour en savoir plus sur ce paramètre, consultez [Désinscription du partage de votre télémétrie côté client](opt-out-IDE.md#opt-out-IDE-telemetry).

Utilisez les instructions suivantes pour activer les rapports d’activité des utilisateurs.

**Prérequis**

Créez un compartiment Amazon S3 pour y stocker le fichier CSV du rapport d’activité utilisateur. Le compartiment doit :
+ Soyez dans la AWS région où le profil de développeur Amazon Q a été installé. Ce profil a été installé lorsque vous avez abonné les utilisateurs du personnel d’IAM Identity Center à Amazon Q Developer Pro pour la première fois. Pour en savoir plus sur ce profil et les régions où il est pris en charge, consultez [Qu'est-ce que le profil de développeur Amazon Q ?](subscribe-understanding-profile.md) et [Régions prises en charge pour la console Q Developer et le profil Q Developer](q-admin-setup-subscribe-regions.md#qdev-console-and-profile-regions).
+ Connectez-vous au AWS compte auquel les utilisateurs sont abonnés. Si les utilisateurs sont abonnés à plusieurs comptes AWS , vous devez créer des compartiments dans chacun de ces comptes. Les compartiments entre comptes ne sont pas pris en charge.
+ (Facultatif mais recommandé) Être différent du compartiment que vous utilisez peut-être pour la [journalisation des invites](q-admin-prompt-logging.md).
+ Inclure un préfixe, également appelé sous-dossier, dans lequel Amazon Q enregistrera le fichier CSV. Le fichier CSV ne peut pas être enregistré à la racine du compartiment.
+ Avoir une stratégie de compartiment comme la suivante. Remplacez *bucketName**region*,*accountId*, et *prefix* par vos propres informations.

------
#### [ JSON ]

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Sid": "QDeveloperLogsWrite",
              "Effect": "Allow",
              "Principal": {
                  "Service": "q.amazonaws.com"
              },
              "Action": [
                  "s3:PutObject"
              ],
              "Resource": [
                  "arn:aws:s3:::bucketName/prefix/*"
              ],
              "Condition": {
                  "StringEquals": {
                      "aws:SourceAccount": "111122223333"
                  },
                  "ArnLike": {
                      "aws:SourceArn": "arn:aws:codewhisperer:us-east-1:111122223333:*"
                  }
              }
          }
      ]
  }
  ```

------

  Si vous configurez SSE-KMS sur le compartiment, ajoutez la politique ci-dessous au niveau de la clé KMS :

  ```
  {
      "Effect": "Allow",
      "Principal": {
          "Service": "q.amazonaws.com"
      },
      "Action": "kms:GenerateDataKey",
      "Resource": "*",
      "Condition": {
          "StringEquals": {
            "aws:SourceAccount": "accountId" 
          },
          "ArnLike": {
             "aws:SourceArn": "arn:aws:codewhisperer:region:accountId:*"
          }
      }
  }
  ```

  Pour en savoir plus sur la protection des données de votre compartiment Amazon S3, consultez [Protection des données à l’aide du chiffrement](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingEncryption.html) dans le *Guide de l’utilisateur Amazon Simple Storage Service*.

**Pour activer les rapports d’activité des utilisateurs**

1. Ouvrez la console Amazon Q Developer.

   Pour utiliser la console Amazon Q Developer, vous devez disposer des autorisations définies dans [Administrateurs autorisés à utiliser la console Amazon Q Developer](id-based-policy-examples-admins.md#q-admin-setup-admin-users).

1. Cliquez sur **Paramètres**.

1. Sous **Rapports d’activité utilisateur de Q Developer**, choisissez **Modifier**.

1. Activez **Collecter des métriques granulaires par utilisateur**.

1. Sous **Emplacement S3**, entrez l’URI Amazon S3 que vous utiliserez pour conserver les rapports CSV. Exemple : `s3://amzn-s3-demo-bucket/user-activity-reports/`

# Métriques du rapport d’activité utilisateur
<a name="user-activity-metrics"></a>

Le tableau suivant décrit les métriques incluses dans les rapports d’activité utilisateur générés par Amazon Q Developer.

Pour en savoir plus sur ces ports, consultez [Affichage de l’activité d’utilisateurs spécifiques dans Amazon Q Developer](q-admin-user-telemetry.md).


| Nom des métriques | Description | 
| --- | --- | 
|  Lignes de chat AICode  |  Lignes de code suggérées par Amazon Q et acceptées par l’utilisateur. Cette métrique inclut le code généré via le [chat Amazon Q](q-in-IDE-chat.md) (et non le [chat intégré](q-in-IDE-inline-chat.md)) et inséré dans l’IDE.   | 
|  Discute\$1 MessagesInteracted  |  Nombre de messages de chat dans lesquels l’utilisateur a interagi de manière positive avec Amazon Q. Exemples d’interactions positives : clic sur un lien, insertion d’une suggestion et vote pour une réponse d’Amazon Q. Cette métrique inclut les messages générés par le [chat Amazon Q](q-in-IDE-chat.md) (en non le [chat intégré](q-in-IDE-inline-chat.md)).   | 
|  Discute\$1 MessagesSent  |  Nombre de messages envoyés vers et depuis Amazon Q. Cette métrique inclut les invites des utilisateurs et les réponses Amazon Q dans le [chat Amazon Q](q-in-IDE-chat.md) (et non le [chat intégré](q-in-IDE-inline-chat.md)).   | 
|  CodeFix\$1AcceptanceEventCount  |  Nombre de correctifs de code suggérés par Amazon Q et acceptés par l’utilisateur. Cette métrique s'applique aux corrections de code générées par le biais de la [fonction de révision du code](code-reviews.md).  | 
|  CodeFix\$1AcceptedLines  |  Lignes de code suggérées par Amazon Q et acceptées par l’utilisateur. Cette métrique s'applique aux lignes de code générées par le biais de la [fonction de révision du code](code-reviews.md).  | 
|  CodeFix\$1GeneratedLines  |  Lignes de code suggérées par Amazon Q. Cette métrique s'applique aux lignes de code générées par le biais de la [fonctionnalité de révision du code](code-reviews.md).  | 
|  CodeFix\$1GenerationEventCount  |  Nombre de corrections de code suggérées par Amazon Q. Cette métrique s'applique aux corrections de code générées par le biais de la [fonctionnalité de révision du code](code-reviews.md).  | 
|  CodeReview\$1FailedEventCount  |  Nombre de problèmes de code détectés mais pour lesquels Amazon Q n’a pas pu suggérer de correctif. Cette métrique s'applique aux problèmes de code générés à l'aide de la [fonction de révision du code](code-reviews.md).  | 
|  CodeReview\$1FindingsCount  |  Nombre de problèmes de code détectés par Amazon Q. Cette statistique s'applique aux problèmes de code détectés à l'aide de la [fonctionnalité de révision du code](code-reviews.md).  | 
|  CodeReview\$1SucceededEventCount  |  Nombre de problèmes de code détectés et pour lesquels Amazon Q a pu générer une suggestion de correctif de code. Cette métrique s'applique aux problèmes de code détectés à l'aide de la [fonction de révision du code](code-reviews.md).  | 
|  Dev\$1 AcceptanceEventCount  |  Nombre de fonctionnalités de code suggérées par Amazon Q et acceptées par l’utilisateur. Cette métrique s’applique aux fonctionnalités de code générées via la [commande /dev](q-in-IDE-chat.md#develop-code).  | 
|  Dev\$1 AcceptedLines  |  Lignes de code suggérées par Amazon Q et acceptées par l’utilisateur. Cette métrique s’applique aux lignes de code générées via la [commande /dev](q-in-IDE-chat.md#develop-code).  | 
|  Dev\$1 GeneratedLines  |  Lignes de code suggérées par Amazon Q. Cette métrique s’applique aux lignes de code générées via la [commande /dev](q-in-IDE-chat.md#develop-code).  | 
|  Dev\$1 GenerationEventCount  |  Nombre de fonctionnalités de code suggérées par Amazon Q. Cette métrique s’applique aux fonctionnalités de code générées via la [commande /dev](q-in-IDE-chat.md#develop-code).  | 
|  DocGeneration\$1AcceptedFileUpdates  |  Nombre de mises à jour de fichiers suggérées par Amazon Q et acceptées par l’utilisateur. Cette métrique s’applique aux mises à jour de fichiers générées via la [commande /doc](q-in-IDE-chat.md#doc-generation).  | 
|  DocGeneration\$1AcceptedFilesCreations  |  Nombre de créations de fichiers suggérées par Amazon Q et acceptées par l’utilisateur. Cette métrique s’applique aux créations de fichiers générées via la [commande /doc](q-in-IDE-chat.md#doc-generation).  | 
|  DocGeneration\$1AcceptedLineAdditions  |  Lignes d’ajouts à la documentation suggérées par Amazon Q et acceptées par l’utilisateur. Cette métrique s’applique à la documentation générée via la [commande /doc](q-in-IDE-chat.md#doc-generation).  | 
|  DocGeneration\$1AcceptedLineUpdates  |  Lignes de mises à jour de la documentation suggérées par Amazon Q et acceptées par l’utilisateur. Cette métrique s’applique à la documentation générée via la [commande /doc](q-in-IDE-chat.md#doc-generation).  | 
|  DocGeneration\$1EventCount  |  Nombre de fois où l’utilisateur a interagi avec Amazon Q via la [commande /doc](q-in-IDE-chat.md#doc-generation).   | 
|  DocGeneration\$1RejectedFileCreations  |  Nombre de créations de fichiers suggérées par Amazon Q et rejetées par l’utilisateur. Cette métrique s’applique aux créations de fichiers générées via la [commande /doc](q-in-IDE-chat.md#doc-generation).  | 
|  DocGeneration\$1RejectedFileUpdates  |  Nombre de mises à jour de fichiers suggérées par Amazon Q et rejetées par l’utilisateur. Cette métrique s’applique aux mises à jour de fichiers générées via la [commande /doc](q-in-IDE-chat.md#doc-generation).  | 
|  DocGeneration\$1RejectedLineAdditions  |  Lignes d’ajouts à la documentation suggérées par Amazon Q et rejetées par l’utilisateur. Cette métrique s’applique à la documentation générée via la [commande /doc](q-in-IDE-chat.md#doc-generation).  | 
|  DocGeneration\$1RejectedLineUpdates  |  Lignes de mises à jour de documentation suggérées par Amazon Q et rejetées par l’utilisateur. Cette métrique s’applique à la documentation générée via la [commande /doc](q-in-IDE-chat.md#doc-generation).  | 
|  InlineChat\$1AcceptedLineAdditions  |  Lignes de code ajoutées suggérées par Amazon Q et acceptées par l’utilisateur. Cette métrique inclut les ajouts de code générés via le [chat intégré](q-in-IDE-inline-chat.md) (et non le [chat Amazon Q](q-in-IDE-chat.md)).  | 
|  InlineChat\$1AcceptedLineDeletions  |  Lignes de suppression de code suggérées par Amazon Q et acceptées par l’utilisateur. Cette métrique inclut les suppressions de code suggérées via le [chat intégré](q-in-IDE-inline-chat.md) (et non le [chat Amazon Q](q-in-IDE-chat.md)).  | 
|  InlineChat\$1AcceptanceEventCount  |  Nombre de suggestions de [chat intégré](q-in-IDE-inline-chat.md) (et non de [chat Amazon Q](q-in-IDE-chat.md)) acceptées par l’utilisateur.  | 
|  InlineChat\$1DismissalEventCount  |  Nombre de suggestions de [chat intégré](q-in-IDE-inline-chat.md) (et non de [chat Amazon Q](q-in-IDE-chat.md)) abandonnées par l’utilisateur. Par « abandonné », nous voulons dire que la suggestion de code a été affichée, mais que l’utilisateur a continué à taper ou à effectuer d’autres opérations dans son IDE, et qu’il n’a pas explicitement accepté ou rejeté la suggestion de code.  | 
|  InlineChat\$1DismissedLineAdditions  |  Lignes de code ajoutées suggérées par Amazon Q et abandonnées par l’utilisateur. Par « abandonné », nous voulons dire que la suggestion de code a été affichée, mais que l’utilisateur a continué à taper ou à effectuer d’autres opérations dans son IDE, et qu’il n’a pas explicitement accepté ou rejeté la suggestion de code. Cette métrique inclut les ajouts de code générés via le [chat intégré](q-in-IDE-inline-chat.md) (et non le [chat Amazon Q](q-in-IDE-chat.md)).  | 
|  InlineChat\$1DismissedLineDeletions  |  Lignes de suppression de code suggérées par Amazon Q et abandonnées par l’utilisateur. Par « abandonné », nous voulons dire que la suggestion de code a été affichée, mais que l’utilisateur a continué à taper ou à effectuer d’autres opérations dans son IDE, et qu’il n’a pas explicitement accepté ou rejeté la suggestion de code. Cette métrique inclut les suppressions de code suggérées via le [chat intégré](q-in-IDE-inline-chat.md) (et non le [chat Amazon Q](q-in-IDE-chat.md)).  | 
|  InlineChat\$1EventCount  |  Nombre de sessions de [chat intégré](q-in-IDE-inline-chat.md) (et non de [chat Amazon Q](q-in-IDE-chat.md)) auxquelles l’utilisateur a participé.  | 
|  InlineChat\$1RejectedLineAdditions  |  Lignes de code ajoutées suggérées par Amazon Q et rejetées par l’utilisateur. Cette métrique inclut les ajouts de code générés via le [chat intégré](q-in-IDE-inline-chat.md) (et non le [chat Amazon Q](q-in-IDE-chat.md)).  | 
|  InlineChat\$1RejectedLineDeletions  |  Lignes de suppression de code suggérées par Amazon Q et rejetées par l’utilisateur. Cette métrique inclut les suppressions de code suggérées via le [chat intégré](q-in-IDE-inline-chat.md) (et non le [chat Amazon Q](q-in-IDE-chat.md)).  | 
|  InlineChat\$1RejectionEventCount  |  Nombre de suggestions de [chat intégré](q-in-IDE-inline-chat.md) (et non de [chat Amazon Q](q-in-IDE-chat.md)) rejetées par l’utilisateur.  | 
|  Lignes en ligne AICode  |  Lignes de code suggérées par Amazon Q et acceptées par l’utilisateur. Cette métrique inclut le code qui a été accepté en tant que [suggestions intégrées](inline-suggestions.md).  | 
|  En ligne\$1 AcceptanceCount  |  Nombre de [suggestions intégrées](inline-suggestions.md) acceptées par l’utilisateur.  | 
|  En ligne\$1 SuggestionsCount  |  Nombre de [suggestions intégrées](inline-suggestions.md) affichées pour l’utilisateur.  | 
|  TestGeneration\$1AcceptedLines  |  Lignes de code suggérées par Amazon Q et acceptées par l’utilisateur. Cette métrique s’applique aux lignes de code générées via la [commande /test](q-in-IDE-chat.md#unit-tests).  | 
|  TestGeneration\$1AcceptedTests  |  Nombre de tests unitaires proposés par Amazon Q et acceptés par l’utilisateur. Cette métrique s’applique aux tests unitaires générés via la [commande /test](q-in-IDE-chat.md#unit-tests).  | 
|  TestGeneration\$1EventCount  |  Nombre de fois où l’utilisateur a interagi avec Amazon Q via la [commande /test](q-in-IDE-chat.md#unit-tests).   | 
|  TestGeneration\$1GeneratedLines  |  Lignes de code suggérées par Amazon Q. Cette métrique s’applique aux lignes de code générées via la [commande /test](q-in-IDE-chat.md#unit-tests).  | 
|  TestGeneration\$1GeneratedTests  |  Nombre de tests unitaires suggérés par Amazon Q. Cette métrique s’applique aux tests unitaires générés via la [commande /test](q-in-IDE-chat.md#unit-tests).  | 
|  Transformation\$1 EventCount  |  Nombre de fois où l’utilisateur a interagi avec Amazon Q via la [commande /transform](transform-in-IDE.md), à l’exception des fois où l’utilisateur [a transformé le code sur la ligne de commande](transform-CLI.md).  | 
|  Transformation\$1 LinesGenerated  |  Lignes de code suggérées par Amazon Q. Cette métrique s’applique au code généré via la [commande /transform](transform-in-IDE.md), à l’exception du code [transformé sur la ligne de commande](transform-CLI.md).  | 
|  Transformation\$1 LinesIngested  |  Lignes de code fournies à Amazon Q à des fins de transformation. Cette métrique s’applique au code fourni via la [commande /transform](transform-in-IDE.md), à l’exception du code fourni pour la [transformation sur la ligne de commande](transform-CLI.md) ou pour une [conversion SQL](transform-sql.md).  | 

# Journalisation des invites des utilisateurs dans Amazon Q Developer
<a name="q-admin-prompt-logging"></a>

Les administrateurs peuvent activer l’enregistrement de toutes les [suggestions intégrées](inline-suggestions.md) et de toutes les [conversations de chat](q-in-IDE-chat.md) que les utilisateurs ont avec Amazon Q dans leur environnement de développement intégré (IDE). Ces journaux peuvent contribuer à l’audit, au débogage, à l’analyse et à la garantie de conformité.

Lorsque les développeurs utilisent des suggestions intégrées, Amazon Q enregistre les suggestions acceptées et rejetées activement. Lorsque les développeurs discutent avec Amazon Q, Amazon Q enregistre à la fois les invites des développeurs et les réponses d’Amazon Q. Lorsque les développeurs discutent avec [l’agent Amazon Q pour le développement de logiciels](q-in-IDE-chat.md#develop-code) à l’aide de la commande **/dev**, seules les invites sont enregistrées.

Amazon Q stocke les journaux dans un compartiment Amazon S3 que vous créez, sur le chemin suivant :

`bucketName/prefix/AWSLogs/accountId/QDeveloperLogs/log-type/region/year/month/day/utc-hour/zipFile.gz/logFile.json`

Sur le chemin précédent, `log-type` est l’un des suivants :
+ `GenerateAssistantResponse` : conserve les journaux de chat
+ `GenerateCompletions` : conserve les journaux de saisie semi-automatique en ligne
+ `StartTaskAssistCodeGeneration` : conserve les journaux **/dev**

Pour obtenir des exemples et des explications sur le contenu des fichiers journaux, consultez [Exemples de journaux d’invites dans Amazon Q Developer](q-admin-prompt-log-examples.md).

La fonctionnalité de journalisation des invites est gratuite, à l’exception du coût de stockage du compartiment Amazon S3 utilisé pour stocker les journaux et d’une somme modique pour la clé KMS optionnelle utilisée pour chiffrer le compartiment.

Utilisez les instructions suivantes pour activer la journalisation des invites.

**Conditions préalables**
+ Assurez-vous que les utilisateurs sont abonnés à un compte autonome ou, si vous utilisez [AWS Organizations](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_introduction.html), à un compte de gestion. Actuellement, Q Developer ne prend pas en charge la journalisation des invites des utilisateurs abonnés à des comptes membres dans AWS Organizations.
+ Créez un compartiment Amazon S3 pour y stocker les journaux des invites. Le compartiment doit :
  + Soyez dans la AWS région où le profil de développeur Amazon Q a été installé. Ce profil a été installé lorsque vous avez abonné les utilisateurs à Amazon Q Developer Pro pour la première fois. Pour en savoir plus sur ce profil et les régions où il est pris en charge, consultez [Qu'est-ce que le profil de développeur Amazon Q ?](subscribe-understanding-profile.md) et [Régions prises en charge pour la console Q Developer et le profil Q Developer](q-admin-setup-subscribe-regions.md#qdev-console-and-profile-regions).
  + Connectez-vous au AWS compte auquel les utilisateurs sont abonnés.
  + Avoir une stratégie de compartiment comme la suivante. Remplacez *bucketName**region*,*accountId*, et *prefix* par vos propres informations.

------
#### [ JSON ]

****  

    ```
    {
        "Version":"2012-10-17",		 	 	 
        "Statement": [
            {
                "Sid": "QDeveloperLogsWrite",
                "Effect": "Allow",
                "Principal": {
                    "Service": "q.amazonaws.com"
                },
                "Action": [
                    "s3:PutObject"
                ],
                "Resource": [
                    "arn:aws:s3:::bucketName/prefix/*"
                ],
                "Condition": {
                    "StringEquals": {
                        "aws:SourceAccount": "111122223333"
                    },
                    "ArnLike": {
                    "aws:SourceArn": "arn:aws:codewhisperer:us-east-1:111122223333:*"
                    }
                }
            }
        ]
    }
    ```

------

    Si vous configurez SSE-KMS sur le compartiment, ajoutez la politique ci-dessous au niveau de la clé KMS :

    ```
    {
        "Effect": "Allow",
        "Principal": {
            "Service": "q.amazonaws.com"
        },
        "Action": "kms:GenerateDataKey",
        "Resource": "*",
        "Condition": {
            "StringEquals": {
              "aws:SourceAccount": "accountId" 
            },
            "ArnLike": {
               "aws:SourceArn": "arn:aws:codewhisperer:region:accountId:*"
            }
        }
    }
    ```

    Pour en savoir plus sur la protection des données de votre compartiment Amazon S3, consultez [Protection des données à l’aide du chiffrement](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingEncryption.html) dans le *Guide de l’utilisateur Amazon Simple Storage Service*.

**Pour activer la journalisation des invites**

1. Ouvrez la console Amazon Q Developer.

   Pour utiliser la console Amazon Q Developer, vous devez disposer des autorisations définies dans [Administrateurs autorisés à utiliser la console Amazon Q Developer](id-based-policy-examples-admins.md#q-admin-setup-admin-users).
**Note**  
Vous devez vous connecter en tant qu’administrateur de compte autonome ou administrateur de compte de gestion. Les administrateurs de comptes membres ne peuvent pas activer la journalisation des invites, car celle-ci n’est pas prise en charge pour les utilisateurs abonnés à des comptes membres.

1. Cliquez sur **Paramètres**.

1. Sous **Préférences**, choisissez **Modifier**.

1. Dans la fenêtre Modifier les préférences, activez la **journalisation des invites par Q Developer**.

1. Sous Emplacement Amazon S3, entrez l’URI Amazon S3 que vous utiliserez pour recevoir les journaux. Exemple : `s3://amzn-s3-demo-bucket/qdev-prompt-logs/`

# Exemples de journaux d’invites dans Amazon Q Developer
<a name="q-admin-prompt-log-examples"></a>

Cette section propose des exemples des journaux d’invite générés par Amazon Q Developer. 

Chaque exemple est suivi d’un tableau qui décrit les champs du fichier journal.

Pour en savoir plus sur les journaux d’invites, consultez [Journalisation des invites des utilisateurs dans Amazon Q Developer](q-admin-prompt-logging.md).

**Topics**
+ [

## Exemple de journal de suggestions intégrées
](#prompt-log-examples-inline)
+ [

## Exemples de journaux de chat
](#prompt-log-examples-chat)
+ [

## exemple de journaux /dev
](#prompt-log-examples-dev)

## Exemple de journal de suggestions intégrées
<a name="prompt-log-examples-inline"></a>

L’exemple suivant montre un fichier journal généré lorsqu’un utilisateur accepte une suggestion intégrée.

```
{
    "records": [
        {
            "generateCompletionsEventRequest": {
                "leftContext": "import * cdk from 'aws-cdk-lib';\r\nimport * s3 from 'aws-cdk-lib/aws-s3';\r\nimport { Stack, StackProps } from 'constructs';\r\nexport class MyStack extends Stack {\r\n  constructor(scope: cdk.App, id: string, props?: StackProps) {\r\n    super(scope, id, props);\r\n\r\n    new s3.Bucket(this, 'XXXXXXXX', {\r\n      versioned: true\r\n    });\r\n  }\r\n  ",
                "rightContext": "",
                "fileName": "cdk-modified.ts",
                "customizationArn": null,
                "userId": "d-92675051d5.b8f1f340-9081-70ad-5fc5-0f37151937a6",
                "timeStamp": "2025-01-06T15:09:16.412719Z"
            },
            "generateCompletionsEventResponse": {
                "completions": ["synth() {\n    return cdk.App.prototype.synth.apply(this, arguments);\n  }"],
                "requestId": "797c70ee-abc9-4cc7-a148-b9df17f6ce48"
            }
        }
    ]
}
```

Le tableau suivant décrit les champs du fichier journal pour les suggestions intégrées.


| Nom de champ | Description | 
| --- | --- | 
|  `records`  |  Champ de niveau supérieur contenant un ensemble de suggestions intégrées, également appelées saisie semi-automatique intégrée.  | 
|  `generateCompletionsEventRequest`  |  Décrit la demande de suggestion de code intégrée. La demande est faite par Amazon Q, au nom de l’utilisateur.  | 
|  `leftContext`  |  Indique le code situé devant le curseur qu’Amazon Q utilise comme contexte pour générer une suggestion intégrée.  | 
|  `rightContext`  |  Indique le code situé après le curseur qu’Amazon Q utilise comme contexte pour générer une suggestion intégrée.  | 
|  `fileName`  |  Indique le nom du fichier dans lequel une suggestion intégrée a été demandée.  | 
|  `customizationArn`  |  Indique l’Amazon Resource Name (ARN) de la personnalisation appliquée aux suggestions intégrées. Dans cet exemple, il n’y a aucune personnalisation.   | 
|  `userId`  |  Indique l’ID utilisateur de l’utilisateur qui a demandé une suggestion intégrée.  | 
|  `timeStamp`  |  Indique la date et l’heure auxquelles la suggestion intégrée a été demandée. L’heure doit être exprimée en heure UTC (temps universel coordonné).  | 
|  `generateCompletionsEventResponse`  |  Décrit la suggestion intégrée générée par Amazon Q.  | 
|  `completions`  |  Indique la suggestion intégrée fournie par Amazon Q et que l’utilisateur a acceptée.  | 
|  `requestId`  |  L’ID de la demande en ligne qui identifie l’événement de manière unique.  | 

## Exemples de journaux de chat
<a name="prompt-log-examples-chat"></a>

L’exemple suivant montre un fichier journal généré lorsqu’un utilisateur discute à l’aide d’Amazon Q dans son IDE.

```
{
    "records": [
        {
            "generateAssistantResponseEventRequest": {
                "prompt": "Can you explain how to set up object-level access control in an S3 bucket using AWS CDK?",
                "chatTriggerType": "MANUAL",
                "customizationArn": null,
                "userId": "d-92675051d5.b8f1f340-9081-70ad-5fc5-0f37151937a6",
                "timeStamp": "2025-01-06T15:05:56.313070Z"
            },
            "generateAssistantResponseEventResponse": {
                "assistantResponse": "I'll explain how to set up object-level access control for an S3 bucket using AWS CDK. Here's how you can implement different access control configurations: [[1]](https://docs.aws.amazon.com/AmazonS3/latest/API/s3_example_s3_Scenario_ManageACLs_section.html)\n\n1. Using Bucket Owner Enforced (Recommended Modern Approach):\n```typescript\nimport * as cdk from 'aws-cdk-lib';\nimport * as s3 from 'aws-cdk-lib/aws-s3';\n\nnew s3.Bucket(this, 'XXXXXXXX', {\n  objectOwnership: s3.ObjectOwnership.BUCKET_OWNER_ENFORCED,\n  blockPublicAccess: s3.BlockPublicAccess.BLOCK_ALL\n});\n```\n\n2. Using Public Access Block Configuration:\n```typescript\nimport * as cdk from 'aws-cdk-lib';\nimport * as s3 from 'aws-cdk-lib/aws-s3';\n\nnew s3.Bucket(this, 'XXXXXXXX', {\n  blockPublicAccess: new s3.BlockPublicAccess({\n    blockPublicAcls: true,\n    blockPublicPolicy: true,\n    ignorePublicAcls: true,\n    restrictPublicBuckets: true\n  })\n});\n```\n\n3. Setting Access Control for Specific Use Cases:\n```typescript\nimport * as cdk from 'aws-cdk-lib';\nimport * as s3 from 'aws-cdk-lib/aws-s3';\nimport * as iam from 'aws-cdk-lib/aws-iam';\n\nconst bucket = new s3.Bucket(this, 'XXXXXXXX', {\n  // Enable versioning for object-level recovery\n  versioned: true,\n  \n  // Enforce encryption\n  encryption: s3.BucketEncryption.S3_MANAGED,\n  \n  // Block all public access\n  blockPublicAccess: s3.BlockPublicAccess.BLOCK_ALL,\n  \n  // Enforce object ownership\n  objectOwnership: s3.ObjectOwnership.BUCKET_OWNER_ENFORCED,\n  \n  // Enable server access logs\n  serverAccessLogsPrefix: 'logs/'\n});\n\n// Grant read access to specific IAM role\nconst role = new iam.Role(this, 'MyRole', {\n  assumedBy: new iam.ServicePrincipal('lambda.amazonaws.com'),\n});\nbucket.grantRead(role);\n\n// Grant write access to specific objects with prefix\nbucket.addToResourcePolicy(new iam.PolicyStatement({\n  actions: ['s3:PutObject'],\n  resources: [bucket.arnForObjects('uploads/*')],\n  principals: [new iam.AccountRootPrincipal()]\n}));\n```\n\n4. Setting up Lifecycle Rules for Objects:\n```typescript\nimport * as cdk from 'aws-cdk-lib';\nimport * as s3 from 'aws-cdk-lib/aws-s3';\n\nnew s3.Bucket(this, 'XXXXXXXX', {\n  lifecycle: [\n    {\n      transitions: [\n        {\n          storageClass: s3.StorageClass.INFREQUENT_ACCESS,\n          transitionAfter: cdk.Duration.days(30)\n        },\n        {\n          storageClass: s3.StorageClass.GLACIER,\n          transitionAfter: cdk.Duration.days(90)\n        }\n      ],\n      expiration: cdk.Duration.days(365)\n    }\n  ]\n});\n```\n\nKey points to remember:\n- Always use the principle of least privilege\n- Block public access by default unless explicitly required\n- Use BUCKET_OWNER_ENFORCED for object ownership when possible\n- Consider implementing lifecycle rules for cost optimization\n- Use versioning for sensitive data\n- Implement server-side encryption\n- Use resource policies and IAM roles for access control instead of ACLs\n- Monitor access patterns using server access logging\n\nThese configurations help create a secure and well-managed S3 bucket with appropriate access controls at both bucket and object levels.",
                "followupPrompts": "How can you implement multi-factor authentication for S3 bucket access using AWS CDK?What are the best practices for setting up object-level versioning in AWS S3 using CDK?How can you use AWS CDK to create a custom error message for unauthorized access attempts on an S3 bucket?",
                "messageMetadata": {
                    "conversationId": "491bd3cd-d70d-40c0-a452-5ef3f0878422",
                    "utteranceId": null
                },
                "codeReferenceEvents": [],
                "supplementaryWebLinksEvent": [
                    {
                        "uri": "https://docs.aws.amazon.com/AmazonS3/latest/API/s3_example_s3_Scenario_ManageACLs_section.html",
                        "title": "[1] Manage access control lists (ACLs) for Amazon S3 buckets using an AWS SDK - Amazon Simple Storage Service",
                        "snippet": "The following code example shows how to manage access control lists (ACLs) for Amazon S3 buckets.\n\n.NET\n\n**AWS SDK for .NET**\n\n```\n    using System;\n    using System.Collections.Generic;\n    using System.Threading.Tasks;\n    using Amazon.S3;\n    using Amazon.S3.Model;\n\n    /// <summary>\n    /// This example shows how to manage Amazon Simple Storage Service\n    /// (Amazon S3) access control lists (ACLs) to control Amazon S3 bucket\n    /// access.\n    /// </summary>\n    public class ManageACLs\n    {\n        public static async Task Main()\n        {\n            string bucketName = \"amzn-s3-demo-bucket1\";\n            string newBucketName = \"amzn-s3-demo-bucket2\";\n            string keyName = \"sample-object.txt\";\n            string emailAddress = \"someone@example.com\";\n\n            // If the AWS Region where your bucket is located is different from\n            // the Region defined for the default user, pass the Amazon S3 bucket's\n            // name to the client constructor. It should look like this:\n            // RegionEndpoint bucketRegion = RegionEndpoint.USEast1;\n            IAmazonS3 client = new AmazonS3Client();\n\n            await TestBucketObjectACLsAsync(client, bucketName, newBucketName, keyName, emailAddress);\n        }\n\n        /// <summary>\n        /// Creates a new Amazon S3 bucket with a canned ACL, then retrieves the ACL\n        /// information and then adds a new ACL to one of the objects in the\n        /// Amazon S3 bucket.\n        /// </summary>\n        /// <param name=\"client\">The initialized Amazon S3 client object used to call\n        /// methods to create a bucket, get an ACL, and add a different ACL to\n        /// one of the objects.</param>\n        /// <param name=\"bucketName\">A string representing the original Amazon S3\n        /// bucket name.</param>\n        /// <param name=\"newBucketName\">A string representing the name of the\n        /// new bucket that will be created.</param>\n        /// <param name=\"keyName\">A string representing the key name of an Amazon S3\n        /// object for which we will change the ACL.</param>\n        /// <param name=\"emailAddress\">A string representing the email address\n        /// belonging to the person to whom access to the Amazon S3 bucket will be\n        /// granted.</param>\n        public static async Task TestBucketObjectACLsAsync(\n            IAmazonS3 client,\n            string bucketName,\n            string newBucketName,\n            string keyName,\n            string emailAddress)\n        {\n            try\n            {\n                // Create a new Amazon S3 bucket and specify canned ACL.\n                var success = await CreateBucketWithCannedACLAsync(client, newBucketName);\n\n                // Get the ACL on a bucket.\n                await GetBucketACLAsync(client, bucketName);\n\n                // Add (replace) the ACL on an object in a bucket.\n                await AddACLToExistingObjectAsync(client, bucketName, keyName, emailAddress);\n            }\n            catch (AmazonS3Exception amazonS3Exception)\n            {\n                Console.WriteLine($\"Exception: {amazonS3Exception.Message}\");\n            }\n        }\n\n        /// <summary>\n        /// Creates a new Amazon S3 bucket with a canned ACL attached.\n        /// </summary>\n        /// <param name=\"client\">The initialized client object used to call\n        /// PutBucketAsync.</param>\n        /// <param name=\"newBucketName\">A string representing the name of the\n        /// new Amazon S3 bucket.</param>\n        /// <returns>Returns a boolean value indicating success or failure.</returns>\n        public static async Task<bool> CreateBucketWithCannedACLAsync(IAmazonS3 client, string newBucketName)\n        {\n            var request = new PutBucketRequest()\n            {\n                BucketName = newBucketName,\n                BucketRegion = S3Region.EUWest1,\n\n                // Add a canned ACL.\n                CannedACL = S3CannedACL.LogDeliveryWrite,\n            };\n\n            var response = await client.PutBucketAsync(request);\n            return response.HttpStatusCode == System.Net.HttpStatusCode.OK;\n        }\n\n\n        /// <summary>\n        /// Retrieves the ACL associated with the Amazon S3 bucket name in the\n        /// bucketName parameter.\n        /// </summary>\n        /// <param name=\"client\">The initialized client object used to call\n        /// PutBucketAsync.</param>\n        /// <param name=\"bucketName\">The Amazon S3 bucket for which we want to get the\n        /// ACL list.</param>\n        /// <returns>Returns an S3AccessControlList returned from the call to\n        /// GetACLAsync.</returns>\n        public static async Task<S3AccessControlList> GetBucketACLAsync(IAmazonS3 client, string bucketName)\n        {\n            GetACLResponse response = await client.GetACLAsync(new GetACLRequest\n            {\n                BucketName = bucketName,\n            });\n\n            return response.AccessControlList;\n        }\n\n\n\n        /// <summary>\n        /// Adds a new ACL to an existing object in the Amazon S3 bucket.\n        /// </summary>\n        /// <param name=\"client\">The initialized client object used to call\n        /// PutBucketAsync.</param>\n        /// <param name=\"bucketName\">A string representing the name of the Amazon S3\n        /// bucket containing the object to which we want to apply a new ACL.</param>\n        /// <param name=\"keyName\">A string representing the name of the object\n        /// to which we want to apply the new ACL.</param>\n        /// <param name=\"emailAddress\">The email address of the person to whom\n        /// we will be applying to whom access will be granted.</param>\n        public static async Task AddACLToExistingObjectAsync(IAmazonS3 client, string bucketName, string keyName, string emailAddress)\n        {\n            // Retrieve the ACL for an object.\n            GetACLResponse aclResponse = await client.GetACLAsync(new GetACLRequest\n            {\n                BucketName = bucketName,\n                Key = keyName,\n            });\n\n            S3AccessControlList acl = aclResponse.AccessControlList;\n\n            // Retrieve the owner.\n            Owner owner = acl.Owner;\n\n            // Clear existing grants.\n            acl.Grants.Clear();\n\n            // Add a grant to reset the owner's full permission\n            // (the previous clear statement removed all permissions).\n            var fullControlGrant = new S3Grant\n            {\n                Grantee = new S3Grantee { CanonicalUser = acl.Owner.Id },\n            };\n            acl.AddGrant(fullControlGrant.Grantee, S3Permission.FULL_CONTROL);\n\n            // Specify email to identify grantee for granting permissions.\n            var grantUsingEmail = new S3Grant\n            {\n                Grantee = new S3Grantee { EmailAddress = emailAddress },\n                Permission = S3Permission.WRITE_ACP,\n            };\n\n            // Specify log delivery group as grantee.\n            var grantLogDeliveryGroup = new S3Grant\n            {\n                Grantee = new S3Grantee { URI = \"http://acs.amazonaws.com/groups/s3/LogDelivery\" },\n                Permission = S3Permission.WRITE,\n            };\n\n            // Create a new ACL.\n            var newAcl = new S3AccessControlList\n            {\n                Grants = new List<S3Grant> { grantUsingEmail, grantLogDeliveryGroup },\n                Owner = owner,\n            };\n\n            // Set the new ACL. We're throwing away the response here.\n            _ = await client.PutACLAsync(new PutACLRequest\n            {\n                BucketName = bucketName,\n                Key = keyName,\n                AccessControlList = newAcl,\n            });\n        }\n\n    }\n\n\n```\n\n* For API details, see the following topics in _AWS SDK for .NET API Reference_.\n  \n  * GetBucketAcl\n\n* GetObjectAcl\n\n* PutBucketAcl\n\n* PutObjectAcl\n\nFor a complete list of AWS SDK developer guides and code examples, see Developing with Amazon S3 using the AWS SDKs. This topic also includes information about getting started and details about previous SDK versions.\n"
                    }
                ],
                "requestId": "dad38fc0-815c-45f7-970a-db916cb7f131"
            }
        }
    ]
}
```


| Nom de champ | Description | 
| --- | --- | 
|  `records`  |  Champ de niveau supérieur contenant un ensemble d’invites et de réponses.  | 
|  `generateAssistantResponseEventRequest`  |  Décrit l’invite saisie par l’utilisateur dans la fenêtre de chat de son IDE.  | 
|  `prompt`  |  Indique l’invite saisie par l’utilisateur dans la fenêtre de chat.  | 
|  `chatTriggerType`  |  `MANUAL` indique que l’utilisateur a saisi une invite dans la fenêtre de chat ou qu’il a cliqué sur l’une des questions suggérées dans la fenêtre de chat. `INLINE_CHAT` indique que l’utilisateur a saisi une invite dans le petit écran de saisie de la fenêtre de codage principale. Pour en savoir plus sur le chat intégré, consultez [Chat en ligne avec Amazon Q Developer](q-in-IDE-inline-chat.md).  | 
|  `customizationArn`  |  Indique l’Amazon Resource Name (ARN) de la personnalisation appliquée au chat. Dans cet exemple, il n’y a aucune personnalisation. Dans   | 
|  `userId`  |  Indique l’ID utilisateur de l’utilisateur qui a saisi l’invite.  | 
|  `timeStamp`  |  Indique la date et l’heure auxquelles l’utilisateur a saisi l’invite. L’horodatage est exprimé en heure UTC (temps universel).  | 
|  `generateAssistantResponseEventResponse`  |  Décrit la réponse générée par Amazon Q.  | 
|  `assistantResponse`  |  Indique la réponse fournie par Amazon Q à l’invite de l’utilisateur.  | 
|  `followupPrompts`  |  Indique les exemples d’invites de suivi qui ont été affichés pour l’utilisateur à la fin de la réponse.  | 
|  `messageMetadata`  |  Décrit les métadonnées associées à la réponse.  | 
|  `conversationId`  |  Indique l’ID de conversation de la réponse. L’ID de conversation regroupe les messages d’une session de chat.  | 
|  `utteranceId`  |  Indique l’ID de l’énoncé de la réponse. Un ID d’énoncé est une étiquette qui distingue une invite d’une autre dans un dialogue ou un jeu de données.  | 
|  `codeReferenceEvents`  |  Décrit les liens vers les références de code incluses dans la réponse.  | 
|  `supplementaryWebLinksEvent`  |  Indique les liens qui ont été affichés à l’attention de l’utilisateur à la fin de la réponse.  | 
|  `requestId`  |  L’ID de la réponse qui identifie l’événement de manière unique.  | 

## exemple de journaux /dev
<a name="prompt-log-examples-dev"></a>

L’exemple suivant montre un fichier journal généré lorsqu’un utilisateur entre une commande **/dev** dans le chat Amazon Q de son IDE.

```
{
    "records": [
        {
            "startTaskAssistCodeGenerationEventRequest": {
                "prompt": "write a python application that prints 'hello world!' text to the screen and format it in red bold text",
                "chatTriggerType": "MANUAL",
                "conversationId": "da1c95b6-84e1-46a2-9ef9-fe92f5ee169e",
                "customizationArn": null,
                "userId": "d-92675051d5.b8f1f340-9081-70ad-5fc5-0f37151937a6",
                "timeStamp": "2025-01-13T15:40:27.808027101Z"
            },
            "startTaskAssistCodeGenerationEventResponse": {
                "requestId": "e504f126-7197-4e3c-a046-1a10d5a3f3e0"
            }
        }
    ]
}
```


| Nom de champ | Description | 
| --- | --- | 
|  `records`  |  Champ de niveau supérieur contenant un ensemble d’invites et de réponses.  | 
|  `startTaskAssistCodeGenerationEventRequest`  |  Décrit l’invite **/dev** saisie par l’utilisateur dans la fenêtre de chat de son IDE.  | 
|  `prompt`  |  Indique l’invite **/dev** saisie par l’utilisateur dans la fenêtre de chat.  | 
|  `chatTriggerType`  |  `MANUAL` indique que l’utilisateur a saisi une invite dans la fenêtre de chat ou qu’il a cliqué sur l’une des questions suggérées dans la fenêtre de chat. `INLINE_CHAT` indique que l’utilisateur a saisi une invite dans le petit écran de saisie de la fenêtre de codage principale. Pour en savoir plus sur le chat intégré, consultez [Chat en ligne avec Amazon Q Developer](q-in-IDE-inline-chat.md).  | 
|  `conversationId`  |  Indique l’ID de conversation de la réponse. L’ID de conversation regroupe les messages d’une session de chat.  | 
|  `customizationArn`  |  Indique l’Amazon Resource Name (ARN) de la personnalisation appliquée au chat. Dans cet exemple, il n’y a aucune personnalisation. Dans   | 
|  `userId`  |  Indique l’ID utilisateur de l’utilisateur qui a saisi l’invite.  | 
|  `timeStamp`  |  Indique la date et l’heure auxquelles l’utilisateur a saisi l’invite. L’horodatage est exprimé en heure UTC (temps universel).  | 
|  `startTaskAssistCodeGenerationEventResponse`  |  Décrit la réponse générée par Amazon Q. Actuellement, l’enregistrement des réponses aux commandes **/dev** n’est pas pris en charge. Le champ n’inclut donc pas de réponse.  | 
|  `assistantResponse`  |  Indique la réponse fournie par Amazon Q à l’invite de l’utilisateur.  | 
|  `requestId`  |  L’ID de la réponse qui identifie l’événement de manière unique.  | 