Загрузка S3 работает из консоли, но не из командной строки

Кто-нибудь может объяснить такое поведение:

Когда я пытаюсь загрузить файл с S3, я получаю следующую ошибку:

An error occurred (403) when calling the HeadObject operation: Forbidden.

Используемая командная строка:

aws s3 cp s3://bucket/raw_logs/my_file.log .

Однако, когда я использую веб-сайт консоли S3, я могу без проблем загрузить файл.

Ключ доступа, используемый командной строкой, правильный. Я проверил это, и другие операции AWS через командную строку работают нормально. Ключ доступа привязан к той же учетной записи пользователя, которую я использую в консоли AWS.


person Jeroen Jacobs    schedule 04.11.2016    source источник


Ответы (2)


Итак, я предполагаю, что вы уверены в политике IAM вашего пользователя, и файл существует в вашей корзине.

Если вы установили регион по умолчанию в своей конфигурации, но ведро не было создано в этом регионе (да, сегменты s3 создаются в регионе), он его не найдет. Обязательно добавьте флаг региона в CLI

aws s3 cp s3://bucket/raw_logs/my_file.log . --region <region of the bucket>

Другие примечания:

  • обязательно обновитесь до последней версии
  • может быть причиной, если системные часы не синхронизированы, если вы не указываете какие-либо параметры синхронизации, это может быть нормально, но я не знаю внутреннего, и для некоторых команд CLI смотрит на системные часы для сравнения с S3, если вы' повторно не синхронизировано, это может вызвать проблемы
person Frederic Henri    schedule 04.11.2016

У меня была аналогичная проблема из-за того, что в моей учетной записи была включена двухфакторная аутентификация. Узнайте, как настроить 2FA для aws cli, здесь: https://aws.amazon.com/premiumsupport/knowledge-center/authenticate-mfa-cli/

person Mark Sparhawk    schedule 04.12.2018
comment
Добро пожаловать в Stack Overflow! Ссылка на решение приветствуется, но убедитесь, что ваш ответ полезен и без нее: добавьте контекст вокруг ссылки, чтобы ваш коллега пользователи будут иметь некоторое представление о том, что это такое и почему оно там, а затем процитируйте наиболее важную часть страницы, на которую вы ссылаетесь, в случае, если целевая страница недоступна. Ответы, которые представляют собой не более чем ссылку, могут быть удалены. - person Samuel Liew♦; 04.12.2018
comment
Возможно, будет еще проще добавить ваш mfa_serial в ваш файл ~/.aws/config. В следующий раз, когда будет сделан вызов AssumeRole, cli запрашивает токен. См. описание mfa_serial по адресу docs.aws.amazon.com/cli. /latest/topic/config-vars.html - person Matthias Wiedemann; 07.02.2020