1

私はここで少し迷っており、いくつかのガイダンスを探しています。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 を参照するべきではありません。

4

1 に答える 1

1

IRC の何人かの助けを借りて、問題を解決しました。私のサーバーは 32 ビット版の Ubuntu を実行していました。64 ビットでのテストはうまくいき、最終的に VM を廃棄して新しい VM をセットアップしました。現在、すべてがうまく機能しています。誰かがこれに出くわした場合、それが役立つかもしれないと考えました。

于 2014-10-03T14:55:54.260 に答える