我在这里有点迷路,正在寻找一些指导。我正在使用 ruby aws-sdk (1.29.1) gem 在弹性转码器中设置作业。在我的登台和生产环境中,当我调用 create_job() 时,我不断收到“Timeout::Error: execution expired”错误。在开发中工作正常。每个环境都有自己的转码器管道、用于输入/输出的 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。我什至不应该引用 application.yml,因为我正在硬编码 access_key_id 和 secret_access_key 值。