在S3分段上传中设置元数据

9
我希望能够分块上传文件到S3并在文件上设置一些元数据。我使用boto与S3进行交互。我可以使用单操作上传设置元数据,例如:
现在的问题是:有没有办法在多部分上传时设置元数据?我已经尝试过复制密钥以更改元数据的 方法,但它会出现错误:InvalidRequest: The specified copy source is larger than the maximum allowable size for a copy source: <size> 我还尝试了以下操作:
key = bucket.create_key(key_name)
key.set_metadata('some-key', 'value')
<multipart upload>

...但分块上传会覆盖元数据。

我正在使用类似这个的代码进行分块上传。

2个回答

6

抱歉,我刚刚找到了答案:

根据文档的要求:

如果您想提供任何描述正在上传对象的元数据,必须在请求中提供以启动分段上传。

因此,在boto中,元数据可以在initiate_multipart_upload调用中设置。这里有文档。


我如何在使用分段上传时同时使用SSE-KMS? - Vikash Pareek

2
今天早些时候遇到了这样的问题,发现没有关于如何正确解决问题的信息。下面提供了我们解决该问题的代码示例。
        $uploader = new MultipartUploader($client, $source, [
        'bucket' => $bucketName,
        'key' => $filename,
        'before_initiate' => function (\Aws\Command $command) {
            $command['ContentType'] = 'application/octet-stream';
            $command['ContentDisposition'] = 'attachment';
        },
    ]);

很遗憾,文档https://docs.aws.amazon.com/aws-sdk-php/v3/guide/service/s3-multipart-upload.html#customizing-a-multipart-upload没有明确且易于理解地说明如果您想使用分段上传提供替代元数据,必须按照以下方式操作。 希望这可以帮到您。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接