diff --git a/.gitignore b/.gitignore --- a/.gitignore +++ b/.gitignore @@ -26,6 +26,9 @@ services/tunnelbroker/target services/tunnelbroker/src/libcpp/test/build +services/search-index-lambda/Cargo.lock +services/search-index-lambda/target + .eslintcache .vscode !.vscode/extensions.json diff --git a/services/search-index-lambda/Cargo.toml b/services/search-index-lambda/Cargo.toml new file mode 100644 --- /dev/null +++ b/services/search-index-lambda/Cargo.toml @@ -0,0 +1,17 @@ +[package] +name = "search-index-lambda" +version = "0.1.0" +edition = "2021" + +[dependencies] +aws_lambda_events = "0.12.0" + +lambda_runtime = "0.8.1" +reqwest = "0.11.22" +serde_json = "1.0.108" +tokio = { version = "1", features = ["macros"] } +openssl = { version = "0.10", features = ["vendored"] } +tracing = "0.1" +tracing-subscriber = { version = "0.3.16", features = ["env-filter"] } +serde_derive = "1.0.193" +serde = "1.0.193" diff --git a/services/search-index-lambda/src/constants.rs b/services/search-index-lambda/src/constants.rs new file mode 100644 --- /dev/null +++ b/services/search-index-lambda/src/constants.rs @@ -0,0 +1,4 @@ +pub const DYNAMODB_USER_ID_KEY: &str = "userID"; +pub const DYNAMODB_USERNAME_KEY: &str = "username"; +pub const LOG_LEVEL_ENV_VAR: &str = + tracing_subscriber::filter::EnvFilter::DEFAULT_ENV; diff --git a/services/search-index-lambda/src/main.rs b/services/search-index-lambda/src/main.rs new file mode 100644 --- /dev/null +++ b/services/search-index-lambda/src/main.rs @@ -0,0 +1,301 @@ +use lambda_runtime::{service_fn, Error, LambdaEvent}; +use reqwest::Response; +use serde::{Deserialize, Serialize}; +use std::collections::HashMap; +use tracing::{self, Level}; +use tracing_subscriber::EnvFilter; + +mod constants; + +#[derive(Deserialize, Serialize, Debug)] +struct User { + #[serde(rename = "userID")] + user_id: String, + username: String, +} + +#[derive(Serialize, Deserialize)] +struct UpdateByQuery { + query: Query, + + #[serde(skip_serializing_if = "Option::is_none")] + script: Option