在url_for中使用到期时,Amazon S3无效日期

我在Amazon s3存储桶中创建了一个文档。 然后我尝试创建一个已签名的URL,该桶将在几年后到期,如下所示:

s3 = AWS::S3.new(:access_key_id => S3Config.access_key_id, :secret_access_key => S3Config.secret_access_key) bucket = s3.buckets[S3Config.bucket] bucket.objects[s3_key].url_for(:read, :expires => Time.at(Time.utc(2019,12,30)).to_i) 

但是当我导航到签名的URL时,我收到以下错误消息:

 Invalid date (should be seconds since epoch) 

但是根据Time.at的ruby文档和我对时代的理解,这应该有用 ……我做错了什么?

例外文本可能来自更深层次的东西,最终会产生误导,文档和示例说明:

:expires (Object) – 设置URL的到期时间; 在这段时间之后,如果使用URL,S3将返回错误。 这可以是整数(指定当前时间之后的秒数) ,字符串(使用Time#parse解析为日期), Time或DateTime对象 。 此选项默认为当前时间后一小时。

基于此,我认为你做了太多工作,试试这个:

 expires: Time.utc(2019, 12, 3)