我正在使用AWS Ruby SDK v2获取S3 Bucket名称。有没有办法从特定区域获取S3存储桶?
我现在这样做的方式:
buckets = s3_client.list_buckets.buckets.map(&:name)
buckets.select { |name| s3_client.get_bucket_location(:bucket => name).location_constraint == @region }
这将获得buckets
中的所有存储桶。然后我过滤来自我用@region
指定的区域的那些。
我希望能够通过AWS SDK只提出一个请求。这有可能吗?
答案 0 :(得分:0)
好吧,我使用 client -> getBucketLocation()使用PHP SDK解决了这个问题。使用multiRegion客户端,您可以仅使用“ LocationConstraint”,对于标准的单区域客户端,我可以通过捕获未定义区域的异常来处理此问题。
也就是说,对于RubySDK(我不太熟悉),Amazon建议您使用它(例如):
require 'aws-sdk-s3' # v2: require 'aws-sdk'
region = 'us-west-2'
s3 = Aws::S3::Resource.new(region: region)
s3.buckets.limit(50).each do |b|
if s3.client.get_bucket_location(bucket: b.name).location_constraint == region
puts "#{b.name}"
end
end