use aws_sdk_eventbridge::model::PutEventsRequestEntry; use lambda_runtime::{run, service_fn, Error, LambdaEvent}; use serde::{Deserialize, Serialize}; use serde_json::Value; #[tokio::main] async fn main() -> Result<(), Error> { tracing_subscriber::fmt() .with_ansi(false) .without_time() .with_max_level(tracing_subscriber::filter::LevelFilter::INFO) .init(); let config = aws_config::load_from_env().await; let eventbridge_client = aws_sdk_eventbridge::Client::new(&config); run(service_fn(|event: LambdaEvent<Value>| { function_handler(&eventbridge_client, event) })) .await } pub async fn function_handler( client: &aws_sdk_eventbridge::Client, event: LambdaEvent<Value>, ) -> Result<(), Error> { println!("{:?}", event); let event_bus_name = std::env::var("EVENT_BUS_NAME").expect("EVENT_BUS_NAME must be set"); let message = MyMessage { message: "Hello from publisher".to_string(), state: "new".to_string(), }; let params = PutEventsRequestEntry::builder() .event_bus_name(event_bus_name) .source("demo.event") .detail_type("Message") .detail(serde_json::to_string(&message)?) .build(); let result = client.put_events().entries(params).send().await?; println!("{:?}", result); Ok(()) } #[derive(Deserialize, Serialize, Debug)] pub struct MyMessage { pub message: String, pub state: String, }