aws转码器覆盖s3上的文件

Kud*_*dos 9 php amazon-web-services amazon-elastic-transcoder

我正在使用AWS PHP SDK将文件上传到S3,然后使用Elastic Transcoder对其进行转码.

首先传递一切正常,putobject命令覆盖s3上的旧文件(总是命名相同):

$s3->putObject([
      'Bucket'     => Config::get('app.aws.S3.bucket'),
      'Key'        => $key,
      'SourceFile' => $path,          
      'Metadata'   => [
        'title'     => Input::get('title')
      ]
    ]);
Run Code Online (Sandbox Code Playgroud)

但是,在创建第二个转码作业时,我收到错误:

  The specified object could not be saved in the specified bucket because an object by that name already exists
Run Code Online (Sandbox Code Playgroud)

转码器角色具有完全s3访问权限.有没有办法解决这个问题,还是我必须在每次转码前使用sdk删除文件?

我的创造工作:

    $result = $transcoder->createJob([
      'PipelineId' => Config::get('app.aws.ElasticTranscoder.PipelineId'),
      'Input' => [
        'Key' => $key
      ],
      'Output' => [
        'Key' => 'videos/'.$user.'/'.$output_key,
        'ThumbnailPattern' => 'videos/'.$user.'/thumb-{count}',
        'Rotate' => '0',
        'PresetId' => Config::get('app.aws.ElasticTranscoder.PresetId')       
      ],
    ]);
Run Code Online (Sandbox Code Playgroud)

Jer*_*lom 4

Amazon Elastic Transcoder 服务在此处记录了这是预期行为:http://docs.aws.amazon.com/elastictranscoder/latest/developerguide/job-settings.html#job-settings-output-key

如果您的工作流程要求您覆盖相同的密钥,那么听起来您应该将作业输出放在唯一的位置,然后发出 S3 CopyObject 操作来覆盖旧文件。