Skip to content

Commit 745ae9b

Browse files
Merge pull request #326 from originalworks/owen-configs-building-rework
OWEN - configs building rework
2 parents 3bf8971 + 1d02a3a commit 745ae9b

10 files changed

Lines changed: 46 additions & 37 deletions

File tree

owen/src/aws-lambda/main.rs

Lines changed: 6 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -70,10 +70,10 @@ async fn function_handler(
7070
.load()
7171
.await;
7272

73-
let owen_config = owen::Config::build();
73+
let owen_config = owen::Config::build()?;
7474

75-
let queue = MessageQueue::build(&aws_main_config);
76-
let mut storage = MessageStorage::build(&aws_main_config);
75+
let queue = MessageQueue::build(&aws_main_config)?;
76+
let mut storage = MessageStorage::build(&aws_main_config)?;
7777

7878
build_input_folder(&queue, &mut storage).await?;
7979

@@ -147,16 +147,11 @@ async fn function_handler(
147147
async fn main() -> Result<(), lambda_runtime::Error> {
148148
println!("Lambda cold start");
149149

150-
let region_provider = RegionProviderChain::default_provider().or_else("us-east-1");
151-
let aws_main_config = aws_config::defaults(BehaviorVersion::latest())
152-
.region(region_provider)
153-
.load()
154-
.await;
155-
set_secret_envs(&aws_main_config)
150+
set_secret_envs()
156151
.await
157152
.map_err(|err| format!("Setting secret envs failed: {err}"))?;
158-
let owen_config = owen::Config::build();
159-
let _guard = init_sentry(&owen_config);
153+
154+
let _guard = init_sentry();
160155
init_logging()?;
161156

162157
tracing::init_default_subscriber();

owen/src/aws-lambda/message_queue.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,8 @@ impl MessageQueue {
2121
pub fn get_env_var(key: &str) -> String {
2222
env::var(key).expect(format!("Missing env variable: {key}").as_str())
2323
}
24-
pub fn build(aws_main_config: &aws_config::SdkConfig) -> Self {
25-
Self {
24+
pub fn build(aws_main_config: &aws_config::SdkConfig) -> Result<Self> {
25+
Ok(Self {
2626
client: aws_sdk_dynamodb::Client::new(aws_main_config),
2727
table_name: MessageQueue::get_env_var("MESSAGE_STATUS_TABLE_NAME"),
2828
index_name: MessageQueue::get_env_var("PROCESSING_STATUS_INDEX_NAME"),
@@ -36,7 +36,7 @@ impl MessageQueue {
3636
reserved_status_value: MessageQueue::get_env_var("RESERVED_STATUS_VALUE"),
3737
rejected_status_value: MessageQueue::get_env_var("REJECTED_STATUS_VALUE"),
3838
owen_instance_name: MessageQueue::get_env_var("USERNAME"),
39-
}
39+
})
4040
}
4141

4242
pub async fn reserve_message_folder(&self) -> Result<Option<String>> {

owen/src/aws-lambda/secrets.rs

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
use anyhow::Result;
2+
use aws_config::{meta::region::RegionProviderChain, BehaviorVersion};
23
use serde::{Deserialize, Serialize};
34
use std::env;
45

@@ -9,7 +10,12 @@ struct OwenSecretEnvs {
910
PRIVATE_KEY: String,
1011
}
1112

12-
pub async fn set_secret_envs(aws_main_config: &aws_config::SdkConfig) -> Result<()> {
13+
pub async fn set_secret_envs() -> Result<()> {
14+
let region_provider = RegionProviderChain::default_provider().or_else("us-east-1");
15+
let aws_main_config = aws_config::defaults(BehaviorVersion::latest())
16+
.region(region_provider)
17+
.load()
18+
.await;
1319
let client = aws_sdk_secretsmanager::Client::new(&aws_main_config);
1420
let owen_lambda_secrets_name = env::var("OWEN_LAMBDA_SECRETS_NAME")
1521
.expect(format!("Missing env variable: OWEN_LAMBDA_SECRETS_NAME").as_str());

owen/src/lib.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ impl Config {
6565
env::var(key).expect(format!("Missing env variable: {key}").as_str())
6666
}
6767

68-
pub fn build() -> Config {
68+
pub fn build() -> anyhow::Result<Config> {
6969
if is_local() {
7070
println!("Running local setup");
7171
dotenvy::from_filename(".env.local").unwrap();
@@ -152,7 +152,7 @@ impl Config {
152152
use_batch_sender,
153153
};
154154

155-
config
155+
Ok(config)
156156
}
157157

158158
fn try_private_key(&self) -> anyhow::Result<&String> {

owen/src/local-s3/config.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1+
use anyhow::Result;
12
use aws_config::{meta::region::RegionProviderChain, BehaviorVersion, Region, SdkConfig};
23
use std::env;
3-
44
pub struct LocalS3Config {
55
pub owen_config: owen::Config,
66
pub aws_sdk_config: SdkConfig,
@@ -11,8 +11,8 @@ impl LocalS3Config {
1111
env::var(key).expect(format!("Missing env variable: {key}").as_str())
1212
}
1313

14-
pub async fn build() -> Self {
15-
let owen_config = owen::Config::build();
14+
pub async fn build() -> Result<Self> {
15+
let owen_config = owen::Config::build()?;
1616
let aws_default_region = LocalS3Config::get_env_var("AWS_DEFAULT_REGION");
1717

1818
let region_provider =
@@ -23,9 +23,9 @@ impl LocalS3Config {
2323
.load()
2424
.await;
2525

26-
Self {
26+
Ok(Self {
2727
owen_config,
2828
aws_sdk_config,
29-
}
29+
})
3030
}
3131
}

owen/src/local-s3/main.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,12 @@ async fn main() -> Result<()> {
1515
let LocalS3Config {
1616
owen_config,
1717
aws_sdk_config,
18-
} = LocalS3Config::build().await;
18+
} = LocalS3Config::build().await?;
1919

20-
let _guard = init_sentry(&owen_config);
20+
let _guard = init_sentry();
2121

22-
let mut storage = owen::s3_message_storage::MessageStorage::build(&aws_sdk_config);
23-
let mut database = message_database::MessageDatabase::build();
22+
let mut storage = owen::s3_message_storage::MessageStorage::build(&aws_sdk_config)?;
23+
let mut database = message_database::MessageDatabase::build()?;
2424

2525
storage.clear_input_folder()?;
2626
let max_s3_message_folders: Vec<String> = storage

owen/src/local-s3/message_database.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ pub struct MessageDatabase {
1212
}
1313

1414
impl MessageDatabase {
15-
pub fn build() -> Self {
15+
pub fn build() -> Result<Self> {
1616
let database_name =
1717
std::env::var("DATABASE_NAME").unwrap_or_else(|_| DEFAULT_DATABASE_NAME.to_string());
1818

@@ -39,10 +39,10 @@ impl MessageDatabase {
3939
.map_err(|err| format!("Create database table error: {}", err))
4040
.expect("Create database table: unknown error");
4141

42-
Self {
42+
Ok(Self {
4343
connection,
4444
table_name,
45-
}
45+
})
4646
}
4747

4848
pub fn save_message_folders(

owen/src/logger.rs

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,19 @@ use sentry::protocol::Attachment;
55
use serde_json::json;
66
use std::io::Read;
77

8-
pub fn init_sentry(config: &Config) -> Option<sentry::ClientInitGuard> {
9-
if !config.disable_telemetry {
8+
pub fn init_sentry() -> Option<sentry::ClientInitGuard> {
9+
let disable_telemetry: bool = matches!(
10+
std::env::var("DISABLE_TELEMETRY")
11+
.unwrap_or_else(|_| "false".to_string())
12+
.as_str(),
13+
"1" | "true"
14+
);
15+
16+
let environment = Config::get_env_var("ENVIRONMENT");
17+
if !disable_telemetry {
1018
let guard: sentry::ClientInitGuard = sentry::init(("https://2cea3d6af1cb8e4bd9c7c39530d390a1@o4508766269014016.ingest.us.sentry.io/4508766275043328",
1119
sentry::ClientOptions {
12-
environment: Some(config.environment.to_owned().into()),
20+
environment: Some(environment.to_owned().into()),
1321
release: sentry::release_name!(),
1422
attach_stacktrace: false,
1523
auto_session_tracking: true,

owen/src/main.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@ use owen::{
66

77
fn main() -> Result<()> {
88
init_logging()?;
9-
let config = Config::build();
10-
let _guard = init_sentry(&config);
9+
let config = Config::build()?;
10+
let _guard = init_sentry();
1111

1212
tokio::runtime::Builder::new_multi_thread()
1313
.enable_all()

owen/src/s3_message_storage.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,16 +21,16 @@ impl MessageStorage {
2121
pub fn get_env_var(key: &str) -> String {
2222
env::var(key).expect(format!("Missing env variable: {key}").as_str())
2323
}
24-
pub fn build(aws_main_config: &aws_config::SdkConfig) -> Self {
25-
Self {
24+
pub fn build(aws_main_config: &aws_config::SdkConfig) -> Result<Self> {
25+
Ok(Self {
2626
client: aws_sdk_s3::Client::new(aws_main_config),
2727
bucket_name: MessageStorage::get_env_var("MESSAGES_BUCKET_NAME"),
2828
input_files_dir: MessageStorage::get_env_var("INPUT_FILES_DIR"),
2929
message_bucket_prefix: MessageStorage::get_env_var("MESSAGE_BUCKET_PREFIX"),
3030
fallback_bucket_name: MessageStorage::get_env_var("FALLBACK_BUCKET_NAME"),
3131
local_to_s3_folder_mapping: HashMap::new(),
3232
s3_message_folders: vec![],
33-
}
33+
})
3434
}
3535

3636
fn build_local_object_path(

0 commit comments

Comments
 (0)