我有点迷失在这里寻找一些指导。我正在使用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值。
答案 0 :(得分:1)
在IRC的一些人的帮助下,我们找出了问题所在。我的服务器运行的是32位版本的Ubuntu。在64位上进行测试工作,最后我废弃了我的VM并设置了一个新的。现在一切都很好。如果有人碰到这个可能有帮助。