簡體   English   中英

獲取存儲桶amazon aws s3中所有對象的預先簽名的URL

[英]Get presigned url of all objects in bucket amazon aws s3

我正在嘗試獲取所有對象的預先簽名的URL。 我正在使用amazon 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;

現在我用令牌獲取網址

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

這正是我想要的,但現在我的問題是

如何預先分配桶中的所有項目而不是逐個制作所有項目?

我認為有一種方法可以通過創建多個getCommands的數組來獲取所有項目的預分配url,getCommand可以處理多個命令 ,然后您可以使用Aws \\ CommandInterface的toArray()函數將其轉換為數組。 createPresignedRequest()函數不支持多個請求,您必須重復調用它或者需要使用getObject()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM