私はここで少し迷っており、いくつかのガイダンスを探しています。ruby aws-sdk (1.29.1) gem を使用して、エラスティック トランスコーダーでジョブを設定しています。ステージング環境と本番環境で create_job() を呼び出すと、常に「タイムアウト::エラー: 実行期限が切れました」というエラーが発生します。開発中は問題なく動作します。各環境には、独自のトランスコーダー パイプライン、入出力用の s3 バケット、sns トピック、および独自のポリシーを持つグループがあります。私は、delayed_job gem を介して transcoder.create_job() を呼び出しています。
AWS とログを調べようと考えられるあらゆる場所を調べましたが、何が原因なのかわかりません。次にどこを見るべきかさえわかりません。
タイムアウトをトリガーするコードは、transcoder.create_job() です。
def self.setup_aws_transcoder(id, s3_key)
unless s3_key.blank?
transcoder = AWS::ElasticTranscoder::Client.new(
region: ENV['AET_REGION']
)
transcoder.create_job(
pipeline_id: ENV['AET_PIPELINE_ID'],
input: {
key: "#{s3_key}",
frame_rate: 'auto',
resolution: 'auto',
aspect_ratio: 'auto',
interlaced: 'auto',
container: 'auto'
},
output: {
key: "#{s3_key}/#{id}.mp4",
preset_id: '1351620000001-100070', # System preset: Web
composition: [
{
time_span: {
duration: '00:10:00.000'
}
}
]
}
)
end
end
# Queue file processing
def queue_processing
Video.delay.setup_aws_transcoder(id, s3_key)
end
また、aws-sdk gem を 1.44 b/c wtf に更新しましたが、役に立ちませんでした。
これを理解するために必要なコードまたは AWS 設定を提供できます。
アップデート。私の開発環境では、すべての値をステージング トランスコーダー/バケット/ユーザーなどにハードコーディングできます。これにより、適切なジョブが作成され、ビデオがトランスコードされ、適切なバケットに配置されます。しかし、同じハードコードされたコードをステージングまでデプロイし、そこから実行すると、再びタイムアウトになります。コードはすべて同じで、違いは application.yml ファイルと database.yml だけです。私は access_key_id と secret_access_key の値をハードコーディングしているので、application.yml を参照するべきではありません。