注意
本文档适用于 Ceph 开发版本。
Perl S3 示例
创建连接
这会创建一个连接,以便你可以与服务器交互。
use Amazon::S3;
my $access_key = 'put your access key here!';
my $secret_key = 'put your secret key here!';
my $conn = Amazon::S3->new({
aws_access_key_id => $access_key,
aws_secret_access_key => $secret_key,
host => 'objects.dreamhost.com',
secure => 1,
retry => 1,
});
列出拥有的存储桶
这会获取一个Amazon::S3::Bucket对象列表,这些对象是你拥有的。
my @buckets = @{$conn->buckets->{buckets} || []};
foreach my $bucket (@buckets) {
print $bucket->bucket . "\t" . $bucket->creation_date . "\n";
}
输出看起来会像这样:
mahbuckat1 2011-04-21T18:05:39.000Z
mahbuckat2 2011-04-21T18:05:48.000Z
mahbuckat3 2011-04-21T18:07:18.000Z
创建存储桶
这会创建一个名为my-new-bucket
my $bucket = $conn->add_bucket({ bucket => 'my-new-bucket' });
列出存储桶的内容
这会获取一个包含每个存储桶中对象信息的哈希列表。
my @keys = @{$bucket->list_all->{keys} || []};
foreach my $key (@keys) {
print "$key->{key}\t$key->{size}\t$key->{last_modified}\n";
}
输出看起来会像这样:
myphoto1.jpg 251262 2011-08-08T21:35:48.000Z
myphoto2.jpg 262518 2011-08-08T21:38:01.000Z
删除存储桶
Note
存储桶必须是空的!否则它将不起作用!
$conn->delete_bucket($bucket);
非空存储桶的强制删除
注意
在Amazon::S3perl 模块中不可用
创建对象
这会创建一个文件hello.txt
包含字符串"Hello World!"
$bucket->add_key(
'hello.txt', 'Hello World!',
{ content_type => 'text/plain' },
);
更改对象的 ACL
这会使对象hello.txt
要公开可读并secret_plans.txt
并且是私有的。
$bucket->set_acl({
key => 'hello.txt',
acl_short => 'public-read',
});
$bucket->set_acl({
key => 'secret_plans.txt',
acl_short => 'private',
});
下载对象(到文件)
这会下载对象perl_poetry.pdf
并将其保存到/home/larry/documents/
$bucket->get_key_filename('perl_poetry.pdf', undef,
'/home/larry/documents/perl_poetry.pdf');
删除对象
这会删除对象goodbye.txt
$bucket->delete_key('goodbye.txt');
生成对象下载 URL(签名和未签名的)
这会为hello.txt
生成一个未签名的下载 URL。这之所以有效,是因为我们通过上述设置 ACL 使其公开。hello.txt
通过设置上述 ACL 变为公共。secret_plans.txt
生成一个签名下载 URL,该 URL 将在 1 小时内有效。签名下载 URL 即使对象是私有的,在有效期内也会有效(当有效期结束时,URL 将停止工作)。
Note
The Amazon::S3模块没有生成下载 URL 的方法,所以我们将使用另一个模块。不幸的是,大多数生成这些 URL 的模块都假设你使用的是 Amazon,所以我们不得不使用一个不太常见的模块,Muck::FS::S3。这应该与 Amazon 的示例 S3 perl 模块相同,但这个示例模块不在 CPAN 中。所以,你可以使用 CPAN 来安装Muck::FS::S3,或者手动安装 Amazon 的示例 S3 模块。如果你选择手动安装,你可以从下面的示例中删除Muck::FS::
。
use Muck::FS::S3::QueryStringAuthGenerator;
my $generator = Muck::FS::S3::QueryStringAuthGenerator->new(
$access_key,
$secret_key,
0, # 0 means use 'http'. set this to 1 for 'https'
'objects.dreamhost.com',
);
my $hello_url = $generator->make_bare_url($bucket->bucket, 'hello.txt');
print $hello_url . "\n";
$generator->expires_in(3600); # 1 hour = 3600 seconds
my $plans_url = $generator->get($bucket->bucket, 'secret_plans.txt');
print $plans_url . "\n";
输出看起来会像这样:
http://objects.dreamhost.com:80/my-bucket-name/hello.txt
http://objects.dreamhost.com:80/my-bucket-name/secret_plans.txt?Signature=XXXXXXXXXXXXXXXXXXXXXXXXXXX&Expires=1316027075&AWSAccessKeyId=XXXXXXXXXXXXXXXXXXX
由 Ceph 基金会带给您
Ceph 文档是一个社区资源,由非盈利的 Ceph 基金会资助和托管Ceph Foundation. 如果您想支持这一点和我们的其他工作,请考虑加入现在加入.