#cassandra #aws #sig-v4 #session-token

cassandra-sigv4

SigV4 验证器,用于 cassandra-cpp-sys

4 个版本

0.1.3 2023年5月20日
0.1.2 2023年5月20日
0.1.1 2023年5月20日
0.1.0 2023年5月20日

#4 in #sig-v4

Download history • Rust 包仓库

每月124次下载

Apache-2.0

15KB
323

AWS sigv4 和 cassandra-cpp-sys (DataStax cpp 驱动) 的授权器

它使用 AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEYAWS_SESSION_TOKENAWS_DEFAULT_REGIONAWS_REGION 环境变量进行配置。

与 cassandra-rs (cassandra-cpp 包) 的示例用法

use tokio;
use std::fs;

use cassandra_cpp::*;
use cassandra_sigv4::*;

#[tokio::main]
async fn main() {
    let mut cluster = Cluster::default();
    cluster.set_contact_points("cassandra.eu-central-1.amazonaws.com").unwrap();
    cluster.set_port(9142).unwrap();

    // Add these lines to use SigV4 authentication
    let auth = Authenticator::default();
    auth.set_authenticator(cluster.0);

    let cert = fs::read_to_string("./sf-class2-root.crt")
        .expect("Certificate is missing");

    let mut ssl = Ssl::default();
    ssl.add_trusted_cert(cert.as_str()).unwrap();
    ssl.set_verify_flags(&[SslVerifyFlag::NONE]);
    cluster.set_ssl(ssl);

    let session = cluster.connect().await.unwrap();
    let statement = session.statement("SELECT keyspace_name FROM system_schema.keyspaces");
    let result = statement.execute().await.unwrap();
    for row in result.iter() {
        let keyspace_name: String = row.get(0).unwrap();
        println!("Keyspace: {}", keyspace_name);
    }
}

运行前下载证书

您可以从亚马逊下载证书

curl https://certs.secureserver.net/repository/sf-class2-root.crt -O

Floki

此仓库使用 Floki 创建构建环境。

安装

要安装,请运行以下命令

cargo add cassandra-sigv4

依赖项

~10–13MB
~238K SLoC