42个版本
使用旧的Rust 2015
0.1.42 | 2017年6月13日 |
---|---|
0.1.41 | 2017年3月4日 |
0.1.40 | 2017年2月15日 |
0.1.39 | 2017年1月5日 |
0.1.8 | 2016年8月31日 |
#1531 在 网络编程 中
40 次每月下载
用于 3 crates
1.5MB
13K SLoC
包含 (WOFF字体, 120KB) docs/Heuristica-Italic.woff, (WOFF字体, 90KB) docs/FiraSans-Medium.woff, (WOFF字体, 92KB) docs/FiraSans-Regular.woff, (WOFF字体, 56KB) docs/SourceCodePro-Regular.woff, (WOFF字体, 56KB) docs/SourceCodePro-Semibold.woff, (WOFF字体, 49KB) docs/SourceSerifPro-Bold.woff 及更多.
AWS SDK for Rust
AWS SDK,最初专注于S3。支持V2和V4认证签名。允许自定义应用程序配置、环境变量、标准/.aws/credentials和未来的Iam凭证。不对如何处理您对AWS的访问做出任何环境假设或意见。
JSON和示例
见下...
S3
初始访问是为了支持AWS S3。SDK构建用于允许支持S3 API接口的非aws环境,如Ceph和其他对象存储库,可以从Rust访问。
代理
在许多企业环境中,使用代理是强制性的。代理通常通过设置以下环境变量来处理
http_proxy=<whatever your proxy url>:<whatever port if any>
https_proxy=<whatever your proxy url>:<whatever port if any>
no_proxy=<whatever IPs, domains, hosts, etc that should not go through a proxy (separate by commas)>
您还可以通过Url将代理设置传递给S3Client,或传递 None
。这将允许您在需要时使用自己的配置文件,以便您可以读取代理设置并将其传递给S3Client。
配置凭证
在使用SDK之前,请确保您已配置凭证。在开发机器上配置凭证的最佳方式是使用~/.aws/credentials
文件,它可能看起来像
[default]
aws_access_key_id = <whatever access_key_id>
aws_secret_access_key = <whatever secret_access_key>
您可以从这篇博客文章中了解更多关于凭证文件的信息。
或者,您可以设置以下环境变量
AWS_ACCESS_KEY_ID=<whatever access_key_id>
AWS_SECRET_ACCESS_KEY=<whatever secret_access_key>
使用Rust SDK
要在SDK中使用服务,通过调用 S3Client::new(...)
函数创建一个服务变量。一旦你有了服务客户端,你可以调用API操作,每个操作都会返回响应数据和可能的错误。
简单示例
要列出S3中的存储桶,你可以运行
// NOTE: See the src/main.rs for more examples...
extern crate aws_sdk_rust;
extern crate url;
extern crate hyper;
use aws_sdk_rust::aws::common::credentials::DefaultCredentialsProvider;
use aws_sdk_rust::aws::common::region::Region;
use aws_sdk_rust::aws::s3::endpoint::Endpoint;
use aws_sdk_rust::aws::s3::s3client::S3Client;
fn main() {
// DefaultCredentialsProvider will end up cycling through the credentials provider list in
// the following order:
// 1. Environment - Checks the envrionment variables:
// AWS_ACCESS_KEY_ID
// AWS_SECRET_ACCESS_KEY
// AWS_SESSION_TOKEN
// 2. Parameters passed in via ParametersProvider (see example below)
// 3. Profile provider - ~/.aws/credentials
// 4. IAM Provider
// Option to initialize the ParametersProvider
/* Example of using parameters for passing the credentials.
use aws_sdk_rust::aws::common::credentials::{DefaultCredentialsProvider, ParametersProvider};
let param_provider: Option<ParametersProvider>;
param_provider = Some(
ParametersProvider::with_params(
"<whatever your access_key_id>",
"<whatever your secret_access_key>",
None).unwrap()
);
let provider = DefaultCredentialsProvider::new(param_provider).unwrap();
*/
// Allow the defaults w/o ParametersProvider - pass in 'None' in ::new(None)
let provider = DefaultCredentialsProvider::new(None).unwrap();
// V4 is the default signature for AWS. However, other systems also use V2.
let endpoint = Endpoint::new(Region::UsEast1, Signature::V4, None, None, None);
let client = S3Client::new(provider, endpoint);
match client.list_buckets() {
Ok(output) => {
println!("{:#?}", output);
}
Err(error) => {
println!("Error: {:#?}", error);
}
}
}
健壮示例
查看 /examples/s3.rs。此示例用于测试所有功能,包括创建存储桶、加载对象(包括分片上传)、版本控制等,最后删除它创建的存储桶。然而,删除存储桶可能会出错,因为你可能有对象的版本。如果是这种情况,请直接登录到S3控制台并删除它们。我们还可以提供delete_all来清除具有版本控制的存储桶中的版本。
灵感
如果您需要访问S3以外的其他AWS系统,请查看rusoto (https://github.com/rusoto/rusoto)。最初的灵感来自那里,Python Boto3和aws-sdk-go。
库开发
路径
结构被分解为以下路径
common
errors
s3
XML
AWS S3使用XML进行传输和接收(包括头信息)。目前还没有好的XML序列化实现(serde适用于反序列化),因此必须为从S3发送和接收的每个XML构造定义解析器/写入器(rusoto项目在这个领域做了大量的艰苦工作)。
其他AWS服务主要使用JSON,并且可以进行De/序列化。
JSON
该库现在支持几乎所有结构的JSON。有一些结构使用[u8]切片,不易序列化或反序列化,因此这些结构将支持一个或另一个(序列化/反序列化),并在文档中注明。
依赖项
~14MB
~288K SLoC