Я сам столкнулся с этой проблемой и решил ее.Примерно через полдня сойти с ума, я начал смотреть на настоящий API, а не просто пытался его использовать.
В sdk.class.php, в строке 1690, вы увидите следующее:
if (isset($opt['metadataDirective']))
$opt['headers']['x-amz-metadata-directive'] = $opt['metadataDirective'];
unset($opt['metadataDirective']);
}
Это означает, что если вы не копируете объект в себя, он не заменит ключ, а значит, не обновит его.
Для меня сработало явное задание metadataDirective в моих настройкахв моем звонке, так:
$amazonS3->copy_object(
array( //Source
'bucket' => SOURCE_BUCKET,
'filename' => $source_file
),
array( //Target
'bucket' => VIDEO_BUCKET,
'filename' => $dest_file,
),
array( //Options
'acl' => AmazonS3::ACL_PRIVATE,
'headers' => array(
'Content-Type' => 'application/octet-stream',
'Content-Disposition' => 'attachment'
),
'metadataDirective' => 'REPLACE',
);
Надеюсь, это работает для вас, хотя это старый пост, и вы, вероятно, нашли обходной путь.
Best, HG