#windows #amazon-web-services #amazon-s3 #amazon-ec2 #aws-cli
#Windows #amazon-веб-сервисы #amazon-s3 #amazon-ec2 #aws-cli
Вопрос:
Я получил экземпляр Windows Server 2012 R2 EC2 и не могу импортировать текстовые файлы из корзины S3.
Я хочу настроить обычный импорт данных из корзины S3 в экземпляр EC2 с помощью aws-cli. Чтобы протестировать команду, я открыл командную строку с правами администратора, перешел в каталог, куда я хочу импортировать файлы, и выполнил следующую команду.
aws s3 cp s3://mybuckt/ . --recursive
Затем я получаю ошибку, подобную следующей, для каждого файла в корзине:
download failed: s3://mybuckt/filename.txt to .filename.txt [Error 87] The parameter is incorrect
В итоге я получаю список пустых файлов в моем каталоге. Список равен списку в корзине, но текстовые файлы просто пусты.
Когда я пытаюсь выполнить команду без рекурсии, ничего не происходит. Нет сообщений об ошибках, файлы не копируются.
aws s3 cp s3://mybuckt/ .
Вот мои вопросы:
- Почему параметр рекурсивный неверен при импорте файлов?
- Что я могу проверить в конфигурации экземпляра EC2, чтобы убедиться, что он правильно настроен для импорта данных?
Комментарии:
1. Это сообщение об ошибке странное, но я бы проверил, что используемая вами роль IAM (возможно, назначаемая серверу EC2) имеет фактический доступ на чтение для объектов S3. Учитывая поведение, похоже, что у него может быть доступ только к объекту списка.
2. «aws s3 cp s3://mybuckt/ .» ничего не скопирует, так как вам нужно либо указать имя объекта, либо использовать —recursive. Вы пытались скопировать один объект и проверить, выдает ли он ту же ошибку? Я пытался восстановить различные сценарии, например, изменение политик корзины путем предоставления доступа к объекту списка, но не смог восстановить ошибку, поскольку политика GetObject предоставляет доступ к списку и загрузке. И если бы это была проблема с доступом, это выдало бы ошибку как «Доступ запрещен». Можете ли вы также проверить другие команды CLI, если они работают нормально?
Ответ №1:
Вы не указали файлы для копирования. Вы должны использовать:
aws s3 cp s3://mybuckt/* . --recursive
Или вы могли бы использовать:
aws s3 sync s3://mybuckt/ . --recursive
Ответ №2:
Решением моей конкретной проблемы здесь было то, что мне пришлось указать имя файла в корзине, а также в моем экземпляре EC2.
aws s3 cp s3://mybuckt/file.txt nameOnMyEC2.txt