amazon-web-services - 如何将我的结构放入Rust中用于AWS Kinesis的PutRecordInput中?

标签 amazon-web-services rust amazon-kinesis-firehose rusoto

我对Rust还是很陌生,他试图获得一些可以将记录推送到运动型流​​水线流的代码。

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与varios AWS实体进行交谈的真实示例,将不胜感激。

最佳答案

正如其他人所说,这实际上取决于您对序列化的选择。如果您选择基于字符串的编码(例如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之类的二进制编码通常要紧凑得多,但是,另一方面,任何东西都必须能够解释该格式。

关于amazon-web-services - 如何将我的结构放入Rust中用于AWS Kinesis的PutRecordInput中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61761212/

相关文章:

rust - 如何检查 `impl Trait` 类型的返回值借用检查?

amazon-web-services - 设置一个aws账户拥有的s3对另一个aws账户拥有的firehose流的写访问权限

mysql - AWS Kinesis Firehose 未在 Redshift 中插入数据

json - 新行输出 CloudFormation Json 模板

amazon-web-services - 亚马逊AWS + Varnish + varnish-devicedetect

amazon-web-services - 使用查询在 redShift 中插入 json

java - Tomcat 未在 Amazon EC2、Redhat 实例上运行

rust - 简化函数声明

generics - Rust 特征边界与类型

java - AWS Lambda/Firehose 是否支持 Base64 URL 解码?