列出来自特定区域的S3存储桶

问题描述 投票:2回答:1

我使用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只提出一个请求来做到这一点。这有可能吗?

amazon-web-services amazon-s3 bucket
1个回答
0
投票

我使用client-> getBucketLocation()通过PHP SDK解决了这个问题。使用multiRegion客户端,您可以使用“LocationConstraint”,使用标准单区域客户端,我可以通过捕获非定义区域的异常来处理此问题。

也就是说,使用RubySDK(我不太熟悉),亚马逊建议您使用它(作为示例):

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

更多信息可以在这里找到:https://docs.aws.amazon.com/sdk-for-ruby/v3/developer-guide/s3-example-get-buckets-in-region.html#aws-ruby-sdk-s3-example-get-buckets-in-region

© www.soinside.com 2019 - 2024. All rights reserved.