2014-04-01 34 views
9

我使用AWS PHP SDK將文件上傳到S3,然後使用Elastic Transcoder對其進行轉碼。aws代碼轉換器覆蓋s3上的文件

第一遍一切正常,該putobject命令會覆蓋在S3中的舊文件(始終命名相同):

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

但是創建第二個碼作業時,我得到的錯誤:

The specified object could not be saved in the specified bucket because an object by that name already exists 

轉碼器角色具有完整的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')  
     ], 
    ]); 

回答

-1

我能想到的兩種方法來實現:

  1. 創建兩個桶,一個用於臨時文件存儲(其中,其上載)而另一種轉碼文件放置。在創建新文件後進行轉碼,您可以刪除臨時文件。
  2. 使用單桶和上傳文件的一些後綴/前綴。在同一個桶中創建轉碼文件,刪除首選項/後綴(用於臨時名稱)。

在上述文件的自動刪除的兩種情況下,您都可以使用帶S3通知的Lambda函數。