

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.

# `Conversion des objets d'événements de l'API de télémétrie Lambda en spans` OpenTelemetry
<a name="telemetry-otel-spans"></a>

Le schéma de l'API AWS Lambda de télémétrie est sémantiquement compatible avec OpenTelemetry (OTel). Cela signifie que vous pouvez convertir les `Event` objets de votre API de AWS Lambda télémétrie en OpenTelemetry (OTel) Spans. Lors de la conversion, vous ne devez pas mapper un seul objet `Event` à un seul OTel Span.

Au lieu de cela, vous devez présenter les trois événements liés à une phase du cycle de vie dans un seul OTel Span. Par exemple, les `runtimeReport` événements `start``runtimeDone`, et représentent une seule invocation d'une fonction d'événement. Présentez ces trois événements sous la forme d’un seul OTel Span.

Vous pouvez convertir vos événements en utilisant des événements Span ou des Spans enfants (imbriqués). Les tableaux de cette page décrivent les mappages entre les propriétés du schéma de l’API de télémétrie et les propriétés des OTel Spans pour les deux approches. Pour plus d'informations sur OTel Spans, consultez [Span](https://opentelemetry.io/docs/reference/specification/trace/api/#span) sur la page de l'**API de suivi** du site Web de OpenTelemetry Docs.

**Topics**
+ [Mappage vers les OTel Spans avec les événements Span](#telemetry-otel-span-events)
+ [Mappage vers des OTel Spans avec des Spans enfants](#telemetry-otel-child-spans)

## Mappage vers les OTel Spans avec les événements Span
<a name="telemetry-otel-span-events"></a>

Dans les tableaux suivants, `e` représente l’événement provenant de la source de télémétrie.

**Mappage des événements \*Start**


| OpenTelemetry | Schéma de l’API de télémétrie Lambda | 
| --- | --- | 
| `Span.Name` | Votre extension génère cette valeur sur la base du champ `type`. | 
| `Span.StartTime` | Utilisez `e.time`. | 
| `Span.EndTime` | N/A, car l'événement n'est pas encore terminé. | 
| `Span.Kind` | Définie sur `Server`. | 
| `Span.Status` | Définie sur `Unset`. | 
| `Span.TraceId` | Analysez l' AWS X-Ray en-tête trouvé dans`e.tracing.value`, puis utilisez la `TraceId` valeur. | 
| `Span.ParentId` | Analysez l' X-Ray en-tête trouvé dans`e.tracing.value`, puis utilisez la `Parent` valeur. | 
| `Span.SpanId` | Utilisez `e.tracing.spanId` si disponible. Sinon, générer un nouveau `SpanId`. | 
| `Span.SpanContext.TraceState` | N/A pour un contexte de X-Ray trace. | 
| `Span.SpanContext.TraceFlags` | Analysez l' X-Ray en-tête trouvé dans`e.tracing.value`, puis utilisez la `Sampled` valeur. | 
| `Span.Attributes` | Votre extension peut ajouter toute valeur personnalisée ici. | 

**Cartographie des RuntimeDone événements\***


| OpenTelemetry | Schéma de l’API de télémétrie Lambda | 
| --- | --- | 
| `Span.Name` | Votre extension génère la valeur basée sur le champ `type`. | 
| `Span.StartTime` | Utilisez `e.time` à partir de l’événement `*Start` correspondant.<br />Sinon, utilisez `e.time - e.metrics.durationMs`. | 
| `Span.EndTime` | N/A, car l'événement n'est pas encore terminé. | 
| `Span.Kind` | Définie sur `Server`. | 
| `Span.Status` | Si `e.status` n’est pas égal à `success`, mettez `Error`.<br />Sinon, définissez sur `Ok`. | 
| `Span.Events[]` | Utilisez `e.spans[]`. | 
| `Span.Events[i].Name` | Utilisez `e.spans[i].name`. | 
| `Span.Events[i].Time` | Utilisez `e.spans[i].start`. | 
| `Span.TraceId` | Analysez l' AWS X-Ray en-tête trouvé dans`e.tracing.value`, puis utilisez la `TraceId` valeur. | 
| `Span.ParentId` | Analysez l' X-Ray en-tête trouvé dans`e.tracing.value`, puis utilisez la `Parent` valeur. | 
| `Span.SpanId` | Utilisez le même `SpanId` de l’événement `*Start`. S’il n’est pas disponible, utilisez alors `e.tracing.spanId`, ou générez un nouveau `SpanId`. | 
| `Span.SpanContext.TraceState` | N/A pour un contexte de X-Ray trace. | 
| `Span.SpanContext.TraceFlags` | Analysez l' X-Ray en-tête trouvé dans`e.tracing.value`, puis utilisez la `Sampled` valeur. | 
| `Span.Attributes` | Votre extension peut ajouter toute valeur personnalisée ici. | 

**Mappage des événements \*Report**


| OpenTelemetry | Schéma de l’API de télémétrie Lambda | 
| --- | --- | 
| `Span.Name` | Votre extension génère la valeur basée sur le champ `type`. | 
| `Span.StartTime` | Utilisez `e.time` à partir de l’événement `*Start` correspondant.<br />Sinon, utilisez `e.time - e.metrics.durationMs`. | 
| `Span.EndTime` | Utilisez `e.time`. | 
| `Span.Kind` | Définie sur `Server`. | 
| `Span.Status` | Utilisez la même valeur que l’événement `*RuntimeDone`. | 
| `Span.TraceId` | Analysez l' AWS X-Ray en-tête trouvé dans`e.tracing.value`, puis utilisez la `TraceId` valeur. | 
| `Span.ParentId` | Analysez l' X-Ray en-tête trouvé dans`e.tracing.value`, puis utilisez la `Parent` valeur. | 
| `Span.SpanId` | Utilisez le même `SpanId` de l’événement `*Start`. S’il n’est pas disponible, utilisez alors `e.tracing.spanId`, ou générez un nouveau `SpanId`. | 
| `Span.SpanContext.TraceState` | N/A pour un contexte de X-Ray trace. | 
| `Span.SpanContext.TraceFlags` | Analysez l' X-Ray en-tête trouvé dans`e.tracing.value`, puis utilisez la `Sampled` valeur. | 
| `Span.Attributes` | Votre extension peut ajouter toute valeur personnalisée ici. | 

## Mappage vers des OTel Spans avec des Spans enfants
<a name="telemetry-otel-child-spans"></a>

Le tableau suivant décrit comment convertir les événements de l’API de télémétrie Lambda en OTel Spans avec des Spans enfants (imbriqués) pour les Spans `*RuntimeDone`. Pour les mappages `*Start` et `*Report`, reportez-vous aux tableaux de [Mappage vers les OTel Spans avec les événements Span](#telemetry-otel-span-events), car ils sont les mêmes pour les Spans enfant. Dans cette table, `e` représente l’événement provenant de la source de télémétrie.

**Cartographie des RuntimeDone événements\***


| OpenTelemetry | Schéma de l’API de télémétrie Lambda | 
| --- | --- | 
| `Span.Name` | Votre extension génère la valeur basée sur le champ `type`. | 
| `Span.StartTime` | Utilisez `e.time` à partir de l’événement `*Start` correspondant.<br />Sinon, utilisez `e.time - e.metrics.durationMs`. | 
| `Span.EndTime` | N/A, car l'événement n'est pas encore terminé. | 
| `Span.Kind` | Définie sur `Server`. | 
| `Span.Status` | Si `e.status` n’est pas égal à `success`, mettez `Error`.<br />Sinon, définissez sur `Ok`. | 
| `Span.TraceId` | Analysez l' AWS X-Ray en-tête trouvé dans`e.tracing.value`, puis utilisez la `TraceId` valeur. | 
| `Span.ParentId` | Analysez l' X-Ray en-tête trouvé dans`e.tracing.value`, puis utilisez la `Parent` valeur. | 
| `Span.SpanId` | Utilisez le même `SpanId` de l’événement `*Start`. S’il n’est pas disponible, utilisez alors `e.tracing.spanId`, ou générez un nouveau `SpanId`. | 
| `Span.SpanContext.TraceState` | N/A pour un contexte de X-Ray trace. | 
| `Span.SpanContext.TraceFlags` | Analysez l' X-Ray en-tête trouvé dans`e.tracing.value`, puis utilisez la `Sampled` valeur. | 
| `Span.Attributes` | Votre extension peut ajouter toute valeur personnalisée ici. | 
| `ChildSpan[i].Name` | Utilisez `e.spans[i].name`. | 
| `ChildSpan[i].StartTime` | Utilisez `e.spans[i].start`. | 
| `ChildSpan[i].EndTime` | Utilisez `e.spans[i].start + e.spans[i].durations`. | 
| `ChildSpan[i].Kind` | Identique au parent `Span.Kind`. | 
| `ChildSpan[i].Status` | Identique au parent `Span.Status`. | 
| `ChildSpan[i].TraceId` | Identique au parent `Span.TraceId`. | 
| `ChildSpan[i].ParentId` | Utilisez le parent `Span.SpanId`. | 
| `ChildSpan[i].SpanId` | Générer un nouveau `SpanId`. | 
| `ChildSpan[i].SpanContext.TraceState` | N/A pour un contexte de X-Ray trace. | 
| `ChildSpan[i].SpanContext.TraceFlags` | Identique au parent `Span.SpanContext.TraceFlags`. | 