6个版本
0.2.3 | 2024年3月11日 |
---|---|
0.2.2 | 2022年5月12日 |
0.2.1 | 2021年6月16日 |
0.1.1 | 2021年6月2日 |
#68 in #amazon-s3
每月下载量:151
26KB
457 行
Simple AWS S3
提供与AWS S3简单交互的方法。此包使用
此包正在开发中,等待Amazon的aws-sdk完全支持。
文档
使用/示例
请参阅示例目录。
许可证
根据您的选择,在Apache License, Version 2.0或MIT许可证下授权。除非您明确表示,否则您提交给simple-aws-s3的任何贡献,根据Apache-2.0许可证的定义,将根据上述许可证双重授权,没有任何额外的条款或条件。
lib.rs
:
Simple AWS S3
提供与AWS S3简单交互的方法。它使用reqwest执行请求。
此包正在开发中,等待Amazon的aws-sdk完全支持。
特性
- 上传预签名(从浏览器上传)
- 获取预签名(从浏览器下载)
- 存储桶操作
- 对象操作
- 获取对象头(检索对象信息)
- 删除对象
示例
use chrono::Duration; use reqwest::multipart::{Form, Part}; use reqwest::StatusCode; use simple_aws_s3::{PostPresignedInfo, S3};
// 在运行此示例之前,请将以下s3配置替换为您自己的配置。 const ACCESS_KEY: &str = "AKIAIOSFODNN7EXAMPLE"; const SECRET_KEY: &str = "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY"; const REGION: &str = "us-east-1"; const ENDPOINT: &str = "s3.amazonaws.com"; const BUCKET: &str = "examplebucket";
#tokio::main async fn main() { let s3 = S3::new(BUCKET, REGION, ENDPOINT, ACCESS_KEY, SECRET_KEY);
let key = String::from("text.txt");
let content = "Hello world";
// Upload by Post Presigned
let PostPresignedInfo { upload_url, params } = s3
.generate_presigned_post(
key.clone(),
"plain/text",
10485760,
Duration::seconds(3600),
None,
)
.unwrap();
let mut form = Form::new();
for (key, value) in params {
form = form.text(key, value);
}
let part = Part::text(content).mime_str("plain/text").unwrap();
form = form.part("file", part);
let res = reqwest::Client::new()
.post(&upload_url)
.multipart(form)
.send()
.await
.unwrap();
assert_eq!(res.status(), StatusCode::NO_CONTENT);
// Download by Query Param (Get Presigned)
let download_url = s3.generate_presigned_get(&key, 3600).unwrap();
let res = reqwest::Client::new()
.get(&download_url)
.send()
.await
.unwrap();
assert_eq!(res.status(), StatusCode::OK);
assert_eq!(res.text().await.unwrap(), content);
}
依赖项
~5–21MB
~284K SLoC