我是亚马逊 s3 的新手。在我的 cakephp3.0 应用程序中,我需要将文件从一个存储桶复制到另一个存储桶。为此,我使用 composer 安装了 AWS SDK,并在我的控制器构造函数中使用凭证初始化了 s3 客户端
public function initialize() {
parent::initialize();
$this->s3Client = new S3Client([
'version' => 'latest',
'region' => 'mumbai',
'credentials' => [
'key' => 'key',
'secret' => 'secrect',
],
]);
}
在我的功能中复制文件
public function amazonCopy() {
$this->s3Client->registerStreamWrapper();
$sourceBucket ="collect";
$sourceKeyname = "testFolder";
$s3Client->copyObject(array(
'Bucket' => "test1",
'Key' => testFolder,
'CopySource' => "{$sourceBucket}/{$sourceKeyname}",
));
}
}
现在我收到一个错误
在“ https://s3.mumbai.amazonaws.com/ ”上执行“ListBuckets”时出错;AWS HTTP错误:创建资源时出错:[消息] fopen():php_network_getaddresses:getaddrinfo失败:名称或服务未知[文件] /var/www/mm/Src/php/operations/vendor/guzzlehttp/guzzle/src/Handler /StreamHandler.php [line] 312 [message] fopen( https://s3.mumbai.amazonaws.com/ ): 未能打开流: php_network_getaddresses: getaddrinfo 失败: 名称或服务未知 [文件] /var/www/ mm/Src/php/operations/vendor/guzzlehttp/guzzle/src/Handler/StreamHandler.php [行] 312 Aws\S3\Exception\S3Exception
我想使用一个存储桶中的数据创建一个 zip 文件并将其复制到另一个存储桶,而不使用流将文件写入磁盘。这个错误的原因是什么?任何帮助将不胜感激。
现在,当我使用 zipstream 库时,作为流的压缩工作正常,因为我使用了代码
$this->s3Client->registerStreamWrapper();
$zip = new ZipStream\ZipStream('example.zip');
$zip->addFile('hello.txt', 'This is the contents of hello.txt');
$zip->addFileFromPath('happy_children-wide.jpg', 's3://mmvideo-test/Music/happy_children-wide.jpg');
$zip->addFileFromPath('txte', 's3://test/Music/test1.txt');
$zip->finish();
但同样的问题是我想将 zip 输出即时写入 bucket2。因为我的文件将包含大尺寸的视频,所以无法将其存储在磁盘中作为临时存储。它应该以 zip 的形式即时写入存储桶。