aws s3: дополнительная плата против us-east-1 при размещении на ap-northeast-1 - PullRequest
0 голосов
/ 04 февраля 2019

Пришло наше заявление AWS, и мы заметили, что с нас вдвое взимается плата за количество запросов.

Первый сбор взимается за Asia Pacific (Tokyo) ( ap-northeast-1 ) иэто просто, потому что именно там находится наше ведро.Но есть еще одно обвинение против US East (N. Virginia) ( us-east-1 ) с аналогичным количеством запросов.

Короче говоря, похоже, что это происходит, потому что мы используем aws s3 команда , и мы не указали регион ни с помощью параметра --region, ни с помощью любого из запасных методов .

Ввод aws configure list показывает region: Value=<not set> Type=None Location=None.

И все же наши aws s3 команды выполняются успешно, хотя и с этим, казалось бы, скрытым зарядом.Предполагается, что наши запросы сначала идут к us-east-1 , но, поскольку там нет ни одного контейнера с указанным нами именем, он поворачивается и возвращается к ap-northeast-1 , где он в конечном итоге добивается успеха при получении дважды.

Экземпляр ec2, где выполняется команда aws, сам находится в ap-northeast-1 , если это что-то значит.

Итак, вопрос в том, является ли презумпция выше разумного объяснения того, что происходит?(То есть это ожидаемое поведение.) И, мне кажется, это немного коварно, но есть ли для этого правильное обоснование?

1 Ответ

0 голосов
/ 04 февраля 2019

То, что вы видите, правильно.Команда aws s3 должна знать регион, чтобы получить доступ к корзине S3.

Поскольку это не было предоставлено, она отправит запрос на us-east-1, что по умолчанию является значением по умолчанию - см. Диаграмма региона AWS S3 , чтобы увидеть, что us-east-1 не требует ограничения местоположения.

Если S3 получает запрос на сегмент, который не находится в этом регионе, он возвращает PermanentRedirect ответ с правильным регионом для Bucket.AWS CLI обрабатывает это прозрачно и повторяет запрос с правильной конечной точкой, которая включает регион.

Самый простой способ увидеть это в действии - запустить команды в режиме отладки:

aws s3 ls ap-northeast-1-bucket --debug

Вывод будет включать:

DEBUG - Response body:
<?xml version="1.0" encoding="UTF-8"?>
<Error><Code>PermanentRedirect</Code><Message>The bucket you are attempting to access 
must be addressed using the specified endpoint. Please send all future requests to 
this endpoint.</Message>
<Endpoint>ap-northeast-1-bucket.s3.ap-northeast-1.amazonaws.com</Endpoint>
<Bucket>ap-northeast-1</Bucket> 
<RequestId>3C4FED2EFFF915E9</RequestId><HostId>...</HostId></Error>

Интерфейс командной строки AWS не предполагает, что Region совпадает с вызывающим экземпляром EC2, это длительный запрос на запутывание / запрос функции .

Дополнительное примечание. Не все службы AWS автоматически обнаруживают регион таким образом и завершают работу, если он не задан.S3 работает, потому что он использует глобальное пространство имен, которое по своей природе требует какой-либо формы службы обнаружения.

...