vectordotdev/vector · critical
Traces are not supported.
Error message
Traces are not supported.
What it means
The aws_ec2_metadata enrichment transform copies EC2 metadata into events. It handles Event::Log (insert fields) and Event::Metric (replace tags) explicitly; Event::Trace has no representation, so that match arm panics with 'Traces are not supported.' as a loud statement that traces must never reach this transform.
Source
Thrown at src/transforms/aws_ec2_metadata.rs:339
}
}
impl Ec2MetadataTransform {
fn transform_one(&mut self, mut event: Event) -> Event {
let state = self.state.load();
match event {
Event::Log(ref mut log) => {
state.iter().for_each(|(k, v)| {
log.insert(&k.log_path, v.clone());
});
}
Event::Metric(ref mut metric) => {
state.iter().for_each(|(k, v)| {
metric
.replace_tag(k.metric_tag.clone(), String::from_utf8_lossy(v).to_string());
});
}
Event::Trace(_) => panic!("Traces are not supported."),
}
event
}
}
struct MetadataClient {
client: HttpClient<Body>,
host: Uri,
token: Option<(Bytes, Instant)>,
keys: Keys,
state: Arc<ArcSwap<Vec<(MetadataKey, Bytes)>>>,
refresh_interval: Duration,
refresh_timeout: Duration,
fields: HashSet<String>,
tags: HashSet<String>,
}
#[derive(Debug, Deserialize)]View on GitHub (pinned to 3708c39b12)
Solutions
- Do not route traces into aws_ec2_metadata: keep a dedicated trace path and list only log/metric sources as inputs
- Insert a filter or remap transform before it that drops or diverts trace events
- Run `vector validate` - a valid config cannot produce this; check why the trace edge exists
- If stock Vector hits it, report it: the transform should reject trace inputs at config time
Example fix
# before
transforms:
enrich:
type: aws_ec2_metadata
inputs: ["*"]
# after
transforms:
enrich:
type: aws_ec2_metadata
inputs: ["my_logs_source", "my_metrics_source"] Defensive patterns
Strategy: type-guard
Type guard
fn ec2_metadata_eligible(event: &Event) -> bool {
matches!(event, Event::Log(_) | Event::Metric(_))
} Prevention
- Declare explicit inputs instead of wildcards on type-restricted transforms
- Add an upstream filter (condition like `!exists(.trace_id)`) when event kinds mix on a stream
- Run `vector validate` so the type checker rejects invalid edges at config time
When it happens
Trigger: A trace event (from an otlp/datadog_agent traces producer or synthetic source) routed into aws_ec2_metadata - e.g. via a route/filter transform forwarding all event kinds, or by calling the transform programmatically on a trace. Topology type-checking should reject trace inputs to this transform, so firing the panic means validation was bypassed or has a gap.
Common situations: Wildcard routing (inputs: ["*"]) on type-restricted transforms; custom topology code feeding mixed Event streams into a boxed transform; Vector versions where multi-output trace sources introduced validation gaps.
Related errors
- Failed type coercion, {self:?} is not a trace event
- `error` should be an i64
- `duration` should be an i64
- `parent_id` should be an i64
- join error or bad poll
AI-assisted analysis of vectordotdev/vector@3708c39b12 (2026-08-20).
Data as JSON: /api/errors/46d3e37af47c844b.
Report an issue: GitHub.