繁体   English   中英

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

[英]List S3 Buckets from a specific region

我正在使用 AWS Ruby SDK v2 获取 S3 存储桶名称。 有没有办法从特定区域获取 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 仅发出一个请求来做到这一点。这有可能吗?

好吧,我通过使用客户端 -> 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

可以在以下位置找到更多信息: https : //docs.aws.amazon.com/sdk-for-ruby/v3/developer-guide/s3-example-get-buckets-in-region.html#aws-ruby-sdk -S3,例如,获得桶,在区域

如何使用 ansible 完成此操作。他们有一个 ansible aws_s3_bucket_facts,但无论我做什么,我似乎都无法让它只返回特定区域的存储桶。

- aws_s3_bucket_facts:
    region: us-east-2
  register: s3_bucket_list

返回所有桶。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM