【发布时间】:2015-07-31 02:37:30
【问题描述】:
这很简单,但我有这个问题: 处理请求时出现意外错误:Aws::S3:Module 的未定义方法“PresignedPost”
我的目标:获取我可以执行上传文件的对象的预签名 URL。
我的宝石有
gem 'aws-sdk', '~> 2'
代码:
@@aws_creds = Aws::SharedCredentials.new(profile_name: profile)
Aws.config.update({region: 'us-west-2',credentials: @@aws_creds})
s3 = Aws::S3::Resource.new
@bucket = s3.bucket(bucketName)
form = Aws::S3::PresignedPost(:key => key )
if(form)
form.fields
end
【问题讨论】:
-
你的实现是错误的。
PresignedPost()试图充当您可能想要的方法PresignedPost.new()但您必须传递凭据、区域和存储桶。 See Docs -
天哪,我明白了。我真笨。
-
是的,在文档顶部称为基本用法的部分提供了一个示例。 AWS SDK 有很好的文档记录(这很棒,因为源代码实现了大量的自动魔法)。同样正如@mircea 指出的那样,您可以使用
Bucket#presigned_post直接从存储桶实例发出一个,这将消除重新提供凭证/区域/存储桶的需要。