【问题标题】:AWS SDK Presigned Post RubyAWS 开发工具包 Presigned Post Ruby
【发布时间】: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 直接从存储桶实例发出一个,这将消除重新提供凭证/区域/存储桶的需要。

标签: ruby amazon-s3


【解决方案1】:

你通常不会做一个独立的预签名帖子。您可以使用存储桶方法。
类似@bucket.presigned_post(:key=>key)

见文档: http://docs.aws.amazon.com/sdkforruby/api/Aws/S3/PresignedPost.html

注意:通常您不需要自己构建 PresignedPost。 请参阅 Bucket#presigned_post 和 Object#presigned_post。

【讨论】:

  • 实现了。但我不断收到此错误:处理请求时出现意外错误:nil:NilClass 的未定义方法 `access_key_id' 知道为什么吗?
  • 猜测是您没有加载凭据。在此处查看客户端加载凭据:docs.aws.amazon.com/sdkforruby/api/Aws/S3/Client.html
  • 这部分对我来说也没有太大意义:Aws.config.update
  • 你通常希望传入客户端创建
  • 耶。都做到了!谢谢大家。
猜你喜欢
  • 2013-07-19
  • 2019-04-17
  • 2018-05-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-14
  • 2019-10-24
  • 2011-11-10
相关资源
最近更新 更多