Skip to content

Commit 22ab299

Browse files
committed
fix: reuse function to detect right aws partition and support gov too
1 parent 8f51082 commit 22ab299

File tree

6 files changed

+28
-39
lines changed

6 files changed

+28
-39
lines changed

bottlecap/src/bin/bottlecap/main.rs

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
#![deny(missing_copy_implementations)]
1010
#![deny(missing_debug_implementations)]
1111

12+
use bottlecap::config::get_aws_partition_by_region;
1213
use bottlecap::{
1314
base_url,
1415
config::{self, flush_strategy::FlushStrategy, AwsConfig, Config},
@@ -156,13 +157,8 @@ async fn register(client: &reqwest::Client) -> Result<RegisterResponse> {
156157
}
157158

158159
fn build_function_arn(account_id: &str, region: &str, function_name: &str) -> String {
159-
let arn_prefix = if region.starts_with("cn-") {
160-
"aws-cn"
161-
} else {
162-
"aws"
163-
};
164-
165-
format!("arn:{arn_prefix}:lambda:{region}:{account_id}:function:{function_name}")
160+
let aws_partition = get_aws_partition_by_region(region);
161+
format!("arn:{aws_partition}:lambda:{region}:{account_id}:function:{function_name}")
166162
}
167163

168164
#[tokio::main]

bottlecap/src/config/mod.rs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -311,6 +311,15 @@ pub struct AwsConfig {
311311
pub sandbox_init_time: Instant,
312312
}
313313

314+
#[must_use]
315+
pub fn get_aws_partition_by_region(region: &str) -> String {
316+
match region {
317+
r if r.starts_with("us-gov-") => "aws-us-gov".to_string(),
318+
r if r.starts_with("cn-") => "aws-cn".to_string(),
319+
_ => "aws".to_string(),
320+
}
321+
}
322+
314323
#[cfg(test)]
315324
pub mod tests {
316325
use super::*;

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

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,14 @@
1+
use crate::config::get_aws_partition_by_region;
2+
use crate::lifecycle::invocation::{
3+
processor::MS_TO_NS,
4+
triggers::{lowercase_key, ServiceNameResolver, Trigger, FUNCTION_TRIGGER_EVENT_SOURCE_TAG},
5+
};
16
use datadog_trace_protobuf::pb::Span;
27
use serde::{Deserialize, Serialize};
38
use serde_json::Value;
49
use std::collections::HashMap;
510
use tracing::debug;
611

7-
use crate::lifecycle::invocation::{
8-
processor::MS_TO_NS,
9-
triggers::{
10-
get_aws_partition_by_region, lowercase_key, ServiceNameResolver, Trigger,
11-
FUNCTION_TRIGGER_EVENT_SOURCE_TAG,
12-
},
13-
};
14-
1512
#[derive(Debug, Serialize, Deserialize, Clone, PartialEq)]
1613
pub struct APIGatewayHttpEvent {
1714
#[serde(rename = "routeKey")]

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

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,14 @@
1+
use crate::config::get_aws_partition_by_region;
2+
use crate::lifecycle::invocation::{
3+
processor::MS_TO_NS,
4+
triggers::{lowercase_key, ServiceNameResolver, Trigger, FUNCTION_TRIGGER_EVENT_SOURCE_TAG},
5+
};
16
use datadog_trace_protobuf::pb::Span;
27
use serde::{Deserialize, Serialize};
38
use serde_json::Value;
49
use std::collections::HashMap;
510
use tracing::debug;
611

7-
use crate::lifecycle::invocation::{
8-
processor::MS_TO_NS,
9-
triggers::{
10-
get_aws_partition_by_region, lowercase_key, ServiceNameResolver, Trigger,
11-
FUNCTION_TRIGGER_EVENT_SOURCE_TAG,
12-
},
13-
};
14-
1512
#[derive(Debug, Serialize, Deserialize, Clone, PartialEq)]
1613
pub struct APIGatewayRestEvent {
1714
#[serde(deserialize_with = "lowercase_key")]

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

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -57,15 +57,6 @@ pub trait Trigger: ServiceNameResolver {
5757
}
5858
}
5959

60-
#[must_use]
61-
pub fn get_aws_partition_by_region(region: &str) -> String {
62-
match region {
63-
r if r.starts_with("us-gov-") => "aws-us-gov".to_string(),
64-
r if r.starts_with("cn-") => "aws-cn".to_string(),
65-
_ => "aws".to_string(),
66-
}
67-
}
68-
6960
/// Serialize a `HashMap` with lowercase keys
7061
///
7162
pub fn lowercase_key<'de, D, V>(deserializer: D) -> Result<HashMap<String, V>, D::Error>

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

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,18 @@
1-
use datadog_trace_protobuf::pb::Span;
2-
use serde::{Deserialize, Serialize};
3-
use serde_json::Value;
4-
use std::collections::HashMap;
5-
use tracing::debug;
6-
1+
use crate::config::get_aws_partition_by_region;
72
use crate::lifecycle::invocation::{
83
processor::MS_TO_NS,
94
triggers::{
105
event_bridge_event::EventBridgeEvent,
11-
get_aws_partition_by_region,
126
sns_event::{SnsEntity, SnsRecord},
137
ServiceNameResolver, Trigger, DATADOG_CARRIER_KEY, FUNCTION_TRIGGER_EVENT_SOURCE_TAG,
148
},
159
};
1610
use crate::traces::context::{Sampling, SpanContext};
11+
use datadog_trace_protobuf::pb::Span;
12+
use serde::{Deserialize, Serialize};
13+
use serde_json::Value;
14+
use std::collections::HashMap;
15+
use tracing::debug;
1716

1817
#[derive(Debug, Serialize, Deserialize, Clone, PartialEq)]
1918
pub struct SqsEvent {

0 commit comments

Comments
 (0)