如何使用Amazon S3 SDK更新元数据

Dis*_*oat 7 php amazon-s3 amazon-web-services http-headers

我正在使用亚马逊AWS SDK的PHP版本.我有一堆带头的文件Expires; 我想删除该标题并添加Cache-control标题.该update_object功能让我添加页眉但不删除它们.

这个问题答案建议您在复制时可以更新文件的元数据,但我已经尝试过它并且不起作用.这是我用过的:

$response = $s3->copy_object(
    array(
        'bucket' => $bucket,
        'filename' => $file,
    ),
    array(
        'bucket' => $bucket,
        'filename' => $file2,
    ),
    array(
        'acl' => AmazonS3::ACL_PUBLIC,
        'headers' => array(
            'Content-Type' => 'image/jpeg',
            'Cache-Control' => 'public,max-age=30240000',
        ),
        'meta' => array(
            'x-fake-header' => 'something awesome is happening',
        ),
    )
);
Run Code Online (Sandbox Code Playgroud)

但是,复制的对象与原始对象具有完全相同的标题(仅限Expires和Content-Type).我已经尝试了上述各种组合(有和没有Content-Type,Cache-control,meta等)并获得相同的结果.

如何重置元数据?

Dis*_*oat 6

我刚刚发现将对象复制到自身实际上确实正确地更改了标题。我将它复制到第二个文件以进行测试以避免覆盖原始文件。

但是出于某种奇怪的原因,复制到不同的文件不会改变标题,但复制到同一个文件会改变。