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

use*_*013 2 ruby amazon-s3 amazon-web-services

使用aws-sdk-s3gem,我目前可以将项目上传到存储桶并创建签名 URL,并尝试确定存储桶中是否存在对象。我看到的所有文档都说 client.bucket('bucketname') 应该有效,但就我而言却无效。我试过了:

client.bucket('bucketname')
client.bucket['bucketname']
client.buckets('bucketname')
client.buckets['bucketname']
Run Code Online (Sandbox Code Playgroud)

但没有一个起作用。使用此建议head_object是可能的(https://github.com/cloudyr/aws.s3/issues/160),但我仍然很好奇为什么bucket不起作用。

文档:
https ://gist.github.com/hartford Five/19097441d3803d9aa75ffe5ecf0696da
https://docs.aws.amazon.com/sdk-for-ruby/v3/api/index.html#Resource_Interfaces

Mar*_*sky 6

您应该在实例上调用bucketor ,而不是在实例上调用 or ,因为错误状态。bucketsAws::S3::ResourceAws::S3::Client

您提供的链接以及文档表明:

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