2015-04-22 4 views
3

Я использую AWS Ruby SDK v2 для доступа к различным ковшим по нескольким регионам. Можно ли определить область (во время выполнения) каждого ведра до того, как я его получу, поэтому я могу избежать ошибки ниже, которую я получаю, если я настрою клиент AWS S3 с неправильным регионом?Определить область ведра S3

Ведро, к которому вы пытаетесь получить доступ, должно быть адресовано с использованием указанной конечной точки. Пожалуйста, отправьте все будущие запросы на эту конечную точку.

Я знаю, что могу выложить и использовать приведенную ниже команду и проанализировать ответ, но в идеале я хочу остаться в Ruby SDK.

AWS s3api прибудет-ковшового расположение

ответ

4

Я не мог найти какой-либо официальный документ для этого, но из 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

+0

Спасибо! Я искал этот метод, о котором вы упоминали, и это было на самом деле в документах API за все это время! Я не знаю, как я это пропустил ... http://docs.aws.amazon.com/sdkforruby/api/Aws/S3/Client.html#get_bucket_location-instance_method – azelo

+1

Для aws-sdk (2.6.5), это: client.get_bucket_location (bucket: bucket_name) .location_constraint –

+0

Вам не нужно знать регион, чтобы подписать запрос get_bucket_location? Если ведро находится не в том же регионе, что и клиент, вы получите ту же ошибку, что и вопросник –

1

Для AWS-SDK (2.6.5), это:

client.get_bucket_location(bucket: bucket_name).location_constraint

Но теперь, как мы получаем список ковшей, которые принадлежат к определенному региону?

Смежные вопросы