0

我对 Rust 非常陌生,并试图让一些可以将记录推送到 kinesis firehose 流的代码工作。

struct AuditRecord{
    user_id : String,
    request : Value,
    request_id : String,
    timestamp_raw : i64,
}
...
let client = KinesisClient::new(Region::UsEast1);
let record = PutRecordInput{
    partition_key : requestId.to_string(),
    stream_name : streamName,
    data : auditRecord
};

当我尝试这个时,它想要数据bytes::bytes::Bytes但我不清楚如何将我的结构转换为bytes::bytes::Bytes表示形式。任何有关如何进行此操作的示例将不胜感激。

为了澄清我正在使用

rusoto = "0.24.2"
rusoto_kinesis = "0.43.0"
rusoto_core = "0.43.0"

此外,如果有人知道一个很好的地方可以查看如何使用 rusoto 与各种 AWS 实体交谈的真实示例,那将不胜感激。

4

1 回答 1

0

正如其他人所说,这实际上取决于您选择的序列化。如果您选择了基于字符串的编码,例如 xml 或 json,那么您可以使用以下内容:

let msg: String = "some message".to_string();

let record = PutRecordInput{
    partition_key : requestId.to_string(),
    stream_name : streamName,
    data : msg.into()
};

// or it could be 
let record = PutRecordInput{
    partition_key : requestId.to_string(),
    stream_name : streamName,
    data : Bytes::from(msg)
};

用您选择的字符串灭菌替换“一些消息”。

虽然从技术上讲,使用像 protobuf 之类的二进制编码通常要紧凑得多,但另一方面,无论是什么都必须能够解释格式。

于 2020-08-29T05:03:09.633 回答