在 Amazon s3 上传(版本 3)上设置存储 class
Setting Storage class on Amazon s3 upload (ver 3)
我不知道如何将此上传作为 'reduced redundancy'
我在那里添加了两次,但没有任何作用。我认为我申请的方式没有用。
我想我需要使用这条线,但我似乎需要重建它?
setOption('StorageClass', 'REDUCED_REDUNDANCY')
require_once __DIR__ .'/vendor/autoload.php';
$options = [
'region' => $region,
'credentials' => [
'key' => $accessKeyId,
'secret' => $secretKey
],
'version' => '2006-03-01',
'signature_version' => 'v4',
'StorageClass' => 'REDUCED_REDUNDANCY',
];
$s3Client = new \Aws\S3\S3Client($options);
$uploader = new \Aws\S3\MultipartUploader($s3Client, $filename_dir , [
'bucket' => $bucket,
'key' => $filename,
'StorageClass' => 'REDUCED_REDUNDANCY',
]);
try {
$result = $uploader->upload();
echo "Upload complete: {$result['ObjectURL']}\n";
} catch (\Aws\Exception\MultipartUploadException $e) {
echo $e->getMessage() . "\n";
}
像这样设置"StorageClass"是行不通的。
$s3Client = new \Aws\S3\S3Client($options);
因为StorageClass是在对象上传的时候才设置的,所以在SDK初始化的时候不能把所有的请求都默认为一个特定的配置。每个单独的 PUT 请求都必须为其指定自己的选项。
要使用您提到的 "SetOption" 行,您可能需要更新代码以遵循 AWS PHP SDK 文档中的以下示例。
Using the AWS PHP SDK for Multipart Upload (High-Level API) Documentation
The following PHP code sample demonstrates how to upload a file using the high-level UploadBuilder object.
<?php
// Include the AWS SDK using the Composer autoloader.
require 'vendor/autoload.php';
use Aws\Common\Exception\MultipartUploadException;
use Aws\S3\Model\MultipartUpload\UploadBuilder;
use Aws\S3\S3Client;
$bucket = '*** Your Bucket Name ***';
$keyname = '*** Your Object Key ***';
// Instantiate the client.
$s3 = S3Client::factory();
// Prepare the upload parameters.
$uploader = UploadBuilder::newInstance()
->setClient($s3)
->setSource('/path/to/large/file.mov')
->setBucket($bucket)
->setKey($keyname)
->setMinPartSize(25 * 1024 * 1024)
->setOption('Metadata', array(
'param1' => 'value1',
'param2' => 'value2'
))
->setOption('ACL', 'public-read')
->setConcurrency(3)
->build();
// Perform the upload. Abort the upload if something goes wrong.
try {
$uploader->upload();
echo "Upload complete.\n";
} catch (MultipartUploadException $e) {
$uploader->abort();
echo "Upload failed.\n";
echo $e->getMessage() . "\n";
}
所以在这种情况下你需要添加'StorageClass'如下,位置不重要,只需要使用setOption来设置它:
->setOption('ACL', 'public-read')
->setOption('StorageClass', 'REDUCED_REDUNDANCY')
->setConcurrency(3)
->build();
Reduced Redundancy Storage 过去成本降低了大约 20%,以换取仅存储 2 个数据副本而不是 3 个副本(1 个冗余副本而不是 2 个冗余副本)。
但是,随着 2016 年 12 月 Amazon S3 的价格变化,使用减少冗余存储不再有益。
使用来自美国地区的 pricing:
- Reduced Redundancy Storage = 2.4c/GB
- 标准存储 = 2.3c/GB
- 标准-不频繁访问存储 = 1.25c/GB + 1c/GB 检索
因此,RRS 现在比标准存储更昂贵。现在选择 Standard 或 Standard-Infrequent Access 更便宜。
我不知道如何将此上传作为 'reduced redundancy'
我在那里添加了两次,但没有任何作用。我认为我申请的方式没有用。
我想我需要使用这条线,但我似乎需要重建它?
setOption('StorageClass', 'REDUCED_REDUNDANCY')
require_once __DIR__ .'/vendor/autoload.php';
$options = [
'region' => $region,
'credentials' => [
'key' => $accessKeyId,
'secret' => $secretKey
],
'version' => '2006-03-01',
'signature_version' => 'v4',
'StorageClass' => 'REDUCED_REDUNDANCY',
];
$s3Client = new \Aws\S3\S3Client($options);
$uploader = new \Aws\S3\MultipartUploader($s3Client, $filename_dir , [
'bucket' => $bucket,
'key' => $filename,
'StorageClass' => 'REDUCED_REDUNDANCY',
]);
try {
$result = $uploader->upload();
echo "Upload complete: {$result['ObjectURL']}\n";
} catch (\Aws\Exception\MultipartUploadException $e) {
echo $e->getMessage() . "\n";
}
像这样设置"StorageClass"是行不通的。
$s3Client = new \Aws\S3\S3Client($options);
因为StorageClass是在对象上传的时候才设置的,所以在SDK初始化的时候不能把所有的请求都默认为一个特定的配置。每个单独的 PUT 请求都必须为其指定自己的选项。
要使用您提到的 "SetOption" 行,您可能需要更新代码以遵循 AWS PHP SDK 文档中的以下示例。
Using the AWS PHP SDK for Multipart Upload (High-Level API) Documentation
The following PHP code sample demonstrates how to upload a file using the high-level UploadBuilder object.
<?php
// Include the AWS SDK using the Composer autoloader.
require 'vendor/autoload.php';
use Aws\Common\Exception\MultipartUploadException;
use Aws\S3\Model\MultipartUpload\UploadBuilder;
use Aws\S3\S3Client;
$bucket = '*** Your Bucket Name ***';
$keyname = '*** Your Object Key ***';
// Instantiate the client.
$s3 = S3Client::factory();
// Prepare the upload parameters.
$uploader = UploadBuilder::newInstance()
->setClient($s3)
->setSource('/path/to/large/file.mov')
->setBucket($bucket)
->setKey($keyname)
->setMinPartSize(25 * 1024 * 1024)
->setOption('Metadata', array(
'param1' => 'value1',
'param2' => 'value2'
))
->setOption('ACL', 'public-read')
->setConcurrency(3)
->build();
// Perform the upload. Abort the upload if something goes wrong.
try {
$uploader->upload();
echo "Upload complete.\n";
} catch (MultipartUploadException $e) {
$uploader->abort();
echo "Upload failed.\n";
echo $e->getMessage() . "\n";
}
所以在这种情况下你需要添加'StorageClass'如下,位置不重要,只需要使用setOption来设置它:
->setOption('ACL', 'public-read')
->setOption('StorageClass', 'REDUCED_REDUNDANCY')
->setConcurrency(3)
->build();
Reduced Redundancy Storage 过去成本降低了大约 20%,以换取仅存储 2 个数据副本而不是 3 个副本(1 个冗余副本而不是 2 个冗余副本)。
但是,随着 2016 年 12 月 Amazon S3 的价格变化,使用减少冗余存储不再有益。
使用来自美国地区的 pricing:
- Reduced Redundancy Storage = 2.4c/GB
- 标准存储 = 2.3c/GB
- 标准-不频繁访问存储 = 1.25c/GB + 1c/GB 检索
因此,RRS 现在比标准存储更昂贵。现在选择 Standard 或 Standard-Infrequent Access 更便宜。