【问题标题】:Determine S3 Bucket Region确定 S3 存储桶区域
【发布时间】:2015-06-29 10:14:35
【问题描述】:

我正在使用 AWS Ruby SDK v2 访问多个区域的各种存储桶。是否可以在访问之前确定每个存储桶的区域(在运行时),这样我可以避免以下错误,如果我为 AWS S3 客户端配置了错误的区域?

您尝试访问的存储桶必须使用指定的端点进行寻址。请将所有未来的请求发送到此端点。

我知道我可以使用下面的命令并解析响应,但理想情况下,我想留在 Ruby SDK 中。

aws s3api 获取存储桶位置

【问题讨论】:

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


    【解决方案1】:

    我找不到任何官方文档,但是从aws-sdk spec你应该可以使用以下代码来获取区域

    client = Aws::S3::Client.new()
    resp = client.get_bucket_location(bucket: bucket_name)
    s3_region = resp.data.location_constraint
    

    这个调用与aws s3api get-bucket-location相同的API

    【讨论】:

    • 谢谢!我搜索了你提到的那个方法,它实际上一直在 API 文档中!我不知道我是怎么错过的……docs.aws.amazon.com/sdkforruby/api/Aws/S3/…
    • 对于 aws-sdk (2.6.5),它是:client.get_bucket_location(bucket: bucket_name).location_constraint
    • 您不是必须知道该地区才能签署 get_bucket_location 请求吗?如果存储桶与客户端不在同一区域,您将得到与提问者相同的错误
    • @SamLiddicott get_bucket_location api 将在任何区域工作,否则 api 将无用。 docs.aws.amazon.com/cli/latest/reference/s3api/…
    • @number5 如果我通过 https 向错误区域发出原始 get_bucket_location 请求(并为错误区域正确签名),则会收到 AuthorizationHeaderMalformed 错误,连接已关闭。幸运的是,该错误在 标记中给出了正确的区域。如果这适用于 ruby​​,则它必须解析错误。
    【解决方案2】:

    对于 aws-sdk (2.6.5),它是:

    client.get_bucket_location(bucket: bucket_name).location_constraint

    那么,现在,我们如何获得属于特定区域的存储桶列表?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-11-09
      • 1970-01-01
      • 1970-01-01
      • 2014-02-16
      • 2015-11-30
      • 2020-01-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多