Ruby:#<Aws :: S3 :: Client>的未定义方法'bucket'

时间:2019-07-02 20:48:20

标签: ruby amazon-web-services amazon-s3

使用aws-sdk-s3 gem,我目前能够将项目上传到存储桶并创建签名的URL,并试图确定存储桶中是否存在对象。我看到的所有文档都说client.bucket('bucketname')应该可以工作,但在我看来,它不是。我尝试过:

client.bucket('bucketname')
client.bucket['bucketname']
client.buckets('bucketname')
client.buckets['bucketname']

,但无济于事。使用head_object的建议是有可能的(https://github.com/cloudyr/aws.s3/issues/160),但是我仍然很好奇为什么bucket无法正常工作。

DOCS:
https://gist.github.com/hartfordfive/19097441d3803d9aa75ffe5ecf0696da
https://docs.aws.amazon.com/sdk-for-ruby/v3/api/index.html#Resource_Interfaces

1 个答案:

答案 0 :(得分:0)

您应该在Aws::S3::Resource实例上调用bucketbuckets,而不是在Aws::S3::Client实例上调用,因为错误状态。

您提供的链接以及docs显示:

s3 = Aws::S3::Resource.new(
  region: 'us-east-1',
  credentials: Aws::InstanceProfileCredentials.new()
)
bucket =  s3.bucket('my-daily-backups')