注意
本文档适用于 Ceph 开发版本。
C# S3示例
创建连接
这会创建一个连接,以便你可以与服务器交互。
using System;
using Amazon;
using Amazon.S3;
using Amazon.S3.Model;
string accessKey = "put your access key here!";
string secretKey = "put your secret key here!";
AmazonS3Config config = new AmazonS3Config();
config.ServiceURL = "objects.dreamhost.com";
AmazonS3Client s3Client = new AmazonS3Client(
accessKey,
secretKey,
config
);
列出拥有的存储桶
这会获取你拥有的存储桶列表。
ListBucketsResponse response = client.ListBuckets();
foreach (S3Bucket b in response.Buckets)
{
Console.WriteLine("{0}\t{1}", b.BucketName, b.CreationDate);
}
输出看起来会像这样:
mahbuckat1 2011-04-21T18:05:39.000Z
mahbuckat2 2011-04-21T18:05:48.000Z
mahbuckat3 2011-04-21T18:07:18.000Z
创建存储桶
这会创建一个名为my-new-bucket
PutBucketRequest request = new PutBucketRequest();
request.BucketName = "my-new-bucket";
client.PutBucket(request);
列出存储桶的内容
这会获取存储桶中的对象列表。
ListObjectsRequest request = new ListObjectsRequest();
request.BucketName = "my-new-bucket";
ListObjectsResponse response = client.ListObjects(request);
foreach (S3Object o in response.S3Objects)
{
Console.WriteLine("{0}\t{1}\t{2}", o.Key, o.Size, o.LastModified);
}
输出看起来会像这样:
myphoto1.jpg 251262 2011-08-08T21:35:48.000Z
myphoto2.jpg 262518 2011-08-08T21:38:01.000Z
删除存储桶
Note
存储桶必须是空的!否则它将不起作用!
DeleteBucketRequest request = new DeleteBucketRequest();
request.BucketName = "my-new-bucket";
client.DeleteBucket(request);
非空存储桶的强制删除
注意
不可用
创建对象
这会创建一个文件hello.txt
包含字符串"Hello World!"
PutObjectRequest request = new PutObjectRequest();
request.BucketName = "my-new-bucket";
request.Key = "hello.txt";
request.ContentType = "text/plain";
request.ContentBody = "Hello World!";
client.PutObject(request);
更改对象的 ACL
这会使对象hello.txt
对公众可读,secret_plans.txt
并且是私有的。
PutACLRequest request = new PutACLRequest();
request.BucketName = "my-new-bucket";
request.Key = "hello.txt";
request.CannedACL = S3CannedACL.PublicRead;
client.PutACL(request);
PutACLRequest request2 = new PutACLRequest();
request2.BucketName = "my-new-bucket";
request2.Key = "secret_plans.txt";
request2.CannedACL = S3CannedACL.Private;
client.PutACL(request2);
下载对象(到文件)
这会下载对象perl_poetry.pdf
并将其保存到C:\Users\larry\Documents
GetObjectRequest request = new GetObjectRequest();
request.BucketName = "my-new-bucket";
request.Key = "perl_poetry.pdf";
GetObjectResponse response = client.GetObject(request);
response.WriteResponseStreamToFile("C:\\Users\\larry\\Documents\\perl_poetry.pdf");
删除对象
这会删除对象goodbye.txt
DeleteObjectRequest request = new DeleteObjectRequest();
request.BucketName = "my-new-bucket";
request.Key = "goodbye.txt";
client.DeleteObject(request);
生成对象下载 URL(签名和未签名的)
这会为hello.txt
生成一个未签名的下载 URL。这之所以有效,是因为我们通过上述设置 ACL 使其公开。hello.txt
public by setting the ACL above.
This then generates a signed download URL for secret_plans.txt
生成一个签名下载 URL,该 URL 将在 1 小时内有效。签名下载 URL 即使对象是私有的,在有效期内也会有效(当有效期结束时,URL 将停止工作)。
Note
C# S3库没有生成未签名URL的方法,因此以下示例仅展示生成签名URL。
GetPreSignedUrlRequest request = new GetPreSignedUrlRequest();
request.BucketName = "my-bucket-name";
request.Key = "secret_plans.txt";
request.Expires = DateTime.Now.AddHours(1);
request.Protocol = Protocol.HTTP;
string url = client.GetPreSignedURL(request);
Console.WriteLine(url);
这的输出看起来会像这样:
http://objects.dreamhost.com/my-bucket-name/secret_plans.txt?Signature=XXXXXXXXXXXXXXXXXXXXXXXXXXX&Expires=1316027075&AWSAccessKeyId=XXXXXXXXXXXXXXXXXXX
由 Ceph 基金会带给您
Ceph 文档是一个社区资源,由非盈利的 Ceph 基金会资助和托管Ceph Foundation. 如果您想支持这一点和我们的其他工作,请考虑加入现在加入.