使用Rust在AWS Eventbridge上发送事件

oxalkeyp  于 6个月前  发布在  其他
关注(0)|答案(1)|浏览(44)

我正在用rust重写我的一些python代码。我想构建一个Hello World程序,它接受一个json事件,将其发送到指定的总线,并给我一个“成功”。
这是Python中的等价代码:

response = events_client.put_events(
        Entries=[{
            "Source": SRC_ARN,
            "DetailType": 'event',
            "Detail": json.dumps(payload),
            "EventBusName": DEST_ARN
        }]
    )

字符串
我开始浏览aws sdk docs,然后我查看了youtube,在那里我了解了Rust插件(尽管它仍然对我当前的问题没有帮助),然后是官方github repo与SDK使用示例,但没有找到eventbridge示例。我只是不知道如何发送事件。这是我的代码,提前感谢:

use aws_sdk_eventbridge as eeb;
use aws_sdk_eventbridge::types::PutEventsRequestEntry;
use json;

async fn main() -> Result<(), eeb::Error> {
    //configuring the client
    let config = aws_config::load_from_env().await;
    let client = aws_sdk_eventbridge::Client::new(&config);
    let eventjson = json::parse(r#"{"event":"test"}"#);

    //building the event
    let eeb_bus_name = "arn" //replaced my arn for privacy;
    let entry = PutEventsRequestEntry::builder()
        .source("test")
        .detail_type("test_event")
        .event_bus_name(eeb_bus_name).build();

    let resp = client.put_events().entries(entry).endpoint_id(eeb_bus_name);
    Ok(())
}

ojsjcaue

ojsjcaue1#

代码在实际请求的地方缺少.send().await。此外,endpoint_id是端点的URL子域(例如,如果端点的URL是https://abcde.veo.endpoints.event.amazonaws.com,则EndpointId是abcde.veo),而不是事件总线名称。
这个代码为我工作。

use aws_sdk_eventbridge as eeb;
use aws_sdk_eventbridge::types::PutEventsRequestEntry;

#[tokio::main]
async fn main() -> Result<(), eeb::Error> {
    //configuring the client
    let config = aws_config::load_from_env().await;
    let client = aws_sdk_eventbridge::Client::new(&config);
    let event_detail = r#"{"hello": "world"}"#; 

    //building the event
    let eeb_bus_name = "arn";//replaced my arn for privacy;
    let entry = PutEventsRequestEntry::builder()
        .source("test")
        .detail(event_detail)
        .detail_type("json")
        .event_bus_name(eeb_bus_name)
        .build();

    let _resp = client.put_events().entries(entry).endpoint_id(input).send().await?;
    println!("EB event sent sucesssfully");
    Ok(())
}

字符串

相关问题