AWS S3执行命令似乎不起作用

时间:2017-04-14 09:31:59

标签: php amazon-web-services amazon-s3

我正在使用AWS PHP library尝试使用getCommand执行批量复制操作。为此,我使用他们提供的示例here

然而,它似乎不起作用,更糟糕的是,它不会抛出任何异常。我正在使用其他AWS服务,如果出现错误,它们都会抛出异常。我想知道我在这里做错了什么,或者是否有办法捕捉到这些异常。

这是我的代码:

准备

for ($i = 1; $i <= 3; $i++) {
    $batch[] = $s3->getCommand('CopyObject', array(
        'Bucket'             => $bucket,
        'Key'                => "{$i}-{$file}",
        'CopySource'         => "{$bucket}/{$file}"
    ));
}

执行

try {
    // goes here
    echo __line__;
    $res =$s3->execute($batch);
    // not here
    echo __line__;
    return true;
} catch (\Aws\Exception\AwsException $e) {
    // not here
    echo __line__;
    $this->logger($e->getMessage());
    return false;
}

为了捕获异常,我还尝试使用:\Guzzle\Service\Exception\CommandTransferException $e)命名空间并且没有结果。

1 个答案:

答案 0 :(得分:0)

所以最后我使用AWS库中的CommandPool::batch函数解决了这个问题。

对于有相同问题的人来说,如何使用它:

<强>准备

for ($i = 1; $i <= 3; $i++) {
    $batch[] = $s3->getCommand('CopyObject', array(
        'Bucket'             => $bucket,
        'Key'                => "{$i}-{$file}",
        'CopySource'         => "{$bucket}/{$file}"
    ));
}

<强>执行

$results = CommandPool::batch($s3, $batch);

P.S。别忘了包含CommandPool命名空间:

use Aws\CommandPool;