【发布时间】:2015-11-22 23:13:18
【问题描述】:
我正在尝试获取存储桶中所有对象的预签名 URL。我正在使用亚马逊 php sdk 版本 3。
我试过的是
$client = new Aws\S3\S3Client([
'version' => 'latest',
'region' => 'us-west-2',
'credentials.ini' => [
'key' => $credentials['key'],
'secret' => $credentials['secret'],
],
]);
$client->listObjects(['Bucket' => $bucketName]);
上面得到了 arrayAccess 中的所有对象,但它有像
这样的对象 url https://s3-us-west-2.amazonaws.com/some-demo/one2.txt
我不希望每个人都可以访问 one2.txt,所以我创建了一个由
预先分配的 url$cmd = $client->getCommand('GetObject', [
'Bucket' => $bucket,
'Key' => $key
]);
$request = $client->createPresignedRequest($cmd, '+20 minutes');
$presignedUrl = (string) $request->getUri();
echo $presignedUrl;
现在我正在获取带有令牌的 url
https://s3-us-west-2.amazonaws.com/some-demo/one2.txt?X-Amz-Content-Sha256=e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAJUZQHGPBTNOLEUXQ%2F20150828%2Fus-west-2%2Fs3%2Faws4_request&X-Amz-Date=20150828T090256Z&X-Amz-SignedHeaders=Host&X-Amz-Expires=1200&X-Amz-Signature=77e52cf99c0f438d48851193dbaba0fsdfe1b4d8e604d6sdf11a22b3be45e410168ab81
这正是我想要的,但现在我的问题是
如何获取存储桶中所有项目的预分配 url,而不是一个一个地为所有项目制作?
【问题讨论】:
标签: php amazon-web-services amazon-s3