首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Amazon上载上设置存储类(Ver3)

在Amazon上载上设置存储类(Ver3)
EN

Stack Overflow用户
提问于 2016-12-23 13:09:16
回答 2查看 1.1K关注 0票数 1

我想不出怎么把这个上传写成“减少冗余”

Iv在里面加了两次,但什么也没做。我认为我申请的方式是无用的。

我想我需要用这句话,但似乎我需要重建它?

setOption('StorageClass', 'REDUCED_REDUNDANCY')

代码语言:javascript
复制
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";
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-12-25 08:19:28

约简冗余存储过去的成本降低了20%,交换条件是只存储2份数据,而不是3份(1份冗余拷贝而不是2份冗余副本)。

然而,随着2016年12月亚马逊S3的价格变化,不再有利于减少冗余存储

使用来自美国地区的定价

  • 约简冗余存储 = 2.4c/GB
  • 标准存储= 2.3c/GB
  • 标准访问存储= 1.25c/GB + 1c/GB检索

因此,RRS现在比标准存储更加昂贵。现在更便宜的选择标准或标准-不经常访问。

票数 1
EN

Stack Overflow用户

发布于 2016-12-25 00:15:37

像这样设置"StorageClass“是行不通的。

代码语言:javascript
复制
$s3Client = new \Aws\S3\S3Client($options);

因为只有在上传对象时才会设置StorageClass,所以在SDK初始化期间,不能将所有请求默认为特定的配置。每个单独的PUT请求都必须有自己指定的选项。

要使用您提到的"SetOption“行,您可能需要更新代码,以遵循AWS文档中的以下示例。

使用AWS PHP进行多部分上载(高级API)文档

代码语言:javascript
复制
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来设置它:

代码语言:javascript
复制
->setOption('ACL', 'public-read')
->setOption('StorageClass', 'REDUCED_REDUNDANCY')
->setConcurrency(3)
->build();
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41302109

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档