Skip to content

Commit 9acc70f

Browse files
committed
move dd_resource_key in the trigger
1 parent 156c74e commit 9acc70f

4 files changed

Lines changed: 33 additions & 30 deletions

File tree

bottlecap/src/lifecycle/invocation/span_inferrer.rs

Lines changed: 1 addition & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ use serde_json::Value;
66
use tracing::debug;
77

88
use crate::config::Config;
9-
use crate::config::aws::get_aws_partition_by_region;
109
use crate::lifecycle::invocation::triggers::IdentifiedTrigger;
1110
use crate::traces::span_pointers::SpanPointer;
1211
use crate::traces::{context::SpanContext, propagation::Propagator};
@@ -210,8 +209,6 @@ impl SpanInferrer {
210209
};
211210

212211
let identified_trigger = IdentifiedTrigger::from_value(payload_value);
213-
let dd_resource_key =
214-
Self::get_api_gateway_resource_key(&identified_trigger, &aws_config.region);
215212
let should_enrich_span = Self::should_enrich_span(&identified_trigger);
216213
let should_skip_inferred_span = Self::should_skip_inferred_span(&identified_trigger);
217214
let wrapped_inferred_span =
@@ -230,7 +227,7 @@ impl SpanInferrer {
230227
);
231228
}
232229

233-
if let Some(dd_resource_key) = dd_resource_key {
230+
if let Some(dd_resource_key) = t.get_dd_resource_key(&aws_config.region) {
234231
inferred_span
235232
.meta
236233
.insert("dd_resource_key".to_string(), dd_resource_key);
@@ -335,32 +332,6 @@ impl SpanInferrer {
335332
pub fn get_trigger_tags(&self) -> Option<HashMap<String, String>> {
336333
self.trigger_tags.clone()
337334
}
338-
339-
#[must_use]
340-
fn get_api_gateway_resource_key(trigger: &IdentifiedTrigger, region: &str) -> Option<String> {
341-
match trigger {
342-
IdentifiedTrigger::APIGatewayRestEvent(event) => {
343-
Self::build_api_gateway_arn(&event.request_context.api_id, region, "restapis")
344-
}
345-
IdentifiedTrigger::APIGatewayHttpEvent(event) => {
346-
Self::build_api_gateway_arn(&event.request_context.api_id, region, "apis")
347-
}
348-
_ => None,
349-
}
350-
}
351-
352-
#[must_use]
353-
fn build_api_gateway_arn(api_id: &str, region: &str, path: &str) -> Option<String> {
354-
if api_id.is_empty() {
355-
return None;
356-
}
357-
358-
let partition = get_aws_partition_by_region(region);
359-
360-
Some(format!(
361-
"arn:{partition}:apigateway:{region}::/{path}/{api_id}",
362-
))
363-
}
364335
}
365336

366337
fn propagate_appsec(

bottlecap/src/lifecycle/invocation/triggers/api_gateway_http_event.rs

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -199,6 +199,20 @@ impl Trigger for APIGatewayHttpEvent {
199199
)
200200
}
201201

202+
fn get_dd_resource_key(&self, region: &str) -> Option<String> {
203+
if self.request_context.api_id.is_empty() {
204+
return None;
205+
}
206+
207+
let partition = get_aws_partition_by_region(region);
208+
Some(format!(
209+
"arn:{partition}:apigateway:{region}::/apis/{api_id}",
210+
partition = partition,
211+
region = region,
212+
api_id = self.request_context.api_id
213+
))
214+
}
215+
202216
fn is_async(&self) -> bool {
203217
self.headers
204218
.get("x-amz-invocation-type")

bottlecap/src/lifecycle/invocation/triggers/api_gateway_rest_event.rs

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -186,6 +186,20 @@ impl Trigger for APIGatewayRestEvent {
186186
)
187187
}
188188

189+
fn get_dd_resource_key(&self, region: &str) -> Option<String> {
190+
if self.request_context.api_id.is_empty() {
191+
return None;
192+
}
193+
194+
let partition = get_aws_partition_by_region(region);
195+
Some(format!(
196+
"arn:{partition}:apigateway:{region}::/restapis/{api_id}",
197+
partition = partition,
198+
region = region,
199+
api_id = self.request_context.api_id
200+
))
201+
}
202+
189203
fn is_async(&self) -> bool {
190204
self.headers
191205
.get("x-amz-invocation-type")

bottlecap/src/lifecycle/invocation/triggers/mod.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -130,6 +130,10 @@ pub trait Trigger: ServiceNameResolver {
130130
fn get_carrier(&self) -> HashMap<String, String>;
131131
fn is_async(&self) -> bool;
132132

133+
fn get_dd_resource_key(&self, _region: &str) -> Option<String> {
134+
None
135+
}
136+
133137
/// Default implementation for service name resolution
134138
fn resolve_service_name(
135139
&self,

0 commit comments

Comments
 (0)