Операция AWS ImportImage: корзина S3 не существует

Я пытаюсь импортировать файл OVA Windows 2012 в aws. Я использую эту документацию.

Импорт AWS VMWare

Я создал корзину s3 для хранения файлов OVA, и файлы OVA были загружены туда.

И когда я пытаюсь импортировать файлы изображений в AWS, я получаю сообщение об ошибке:

aws ec2 import-image --description "server1" --disk-containers file://containers.json --profile=company-dlab_us-east-1

An error occurred (InvalidParameter) when calling the ImportImage operation: S3 bucket does not exist: s3://companyvmimport/

Что странно, потому что я могу перечислить корзину, в которую пытаюсь загрузить, используя командную строку aws:

 aws s3 ls --profile=company-dlab_us-east-1
2016-10-20 09:52:33 companyvmimport

Это мой файл container.json:

[
  {
      "Description": "server1",
      "Format": "ova",
      "UserBucket": {
       "S3Bucket": "s3://companyvmimport/",
       "S3Key": "server1.ova"
  }
}]

Где я ошибаюсь? Как я могу заставить это работать?


person bluethundr    schedule 20.10.2016    source источник


Ответы (2)


Я думаю, у вас проблема с копированием/вставкой, в файле containers.json вы ссылаетесь на ведро как s3://companyvmimport, но у вас есть ошибка о kpmgvmimport

в любом случае вам не нужно указывать протокол s3 в json

ваш файл JSON должен выглядеть так

[
  {
      "Description": "server1",
      "Format": "ova",
      "UserBucket": {
       "S3Bucket": "companyvmimport",
       "S3Key": "server1.ova"
  }
}]

Если файл находится не в "корне" ведра, необходимо указать полный путь.

person Frederic Henri    schedule 20.10.2016
comment
извините, нет, это была ошибка с моей стороны, когда я пытался скрыть название компании. Я исправил пример, чтобы он имел больше смысла. Спасибо - person bluethundr; 20.10.2016
comment
хорошо, можете ли вы подтвердить, что он работает, когда вы удаляете часть протокола S3 в параметре S3Bucket - person Frederic Henri; 20.10.2016
comment
Ok. Я попытался удалить протокол из файла container.json. Кажется, эта часть работает! Однако теперь кажется, что у моего пользователя нет доступа к корзине s3. Даже если он должен иметь правильную политику прилагается. Вот подробности проблема с доступом к s3. Я даже пытался предоставить пользователю AmazonS3FullAccess. До сих пор нет кости. Тот же результат. - person bluethundr; 20.10.2016
comment
Обновлять. Я попытался предоставить моему пользователю полные права администратора в AWS с помощью этой политики: AdministratorAccess Все еще нет костей. Я получаю эту ошибку, когда пытаюсь загрузить файл с помощью команды импорта: An error occurred (InvalidParameter) when calling the ImportImage operation: User does not have access to the S3 object - person bluethundr; 20.10.2016
comment
Я попробовал еще одну вещь. Я убедился, что могу загрузить файл на свою рабочую станцию ​​с помощью команды s3cmd: [root@salt ~]# s3cmd get s3://kpmgvmimport/server1.ova . download: 's3://companyvmimport/server1.ova' -> './server1.ova' [1 of 1] 0 of 0 0% in 0s 0.00 B/s done И я могу указать файл ` ls -lh server1.ova -rw-r--r--. 1 root root 1.0G Oct 20 15:27 server1.ova` Очень странно, интересно, почему у меня нет разрешения на загрузку файла с помощью команды импорта! - person bluethundr; 20.10.2016
comment
хм, у вас есть политика ведра? - person Frederic Henri; 20.10.2016
comment
Спасибо. Я обнаружил, что мне нужно создать пользовательскую политику для корзины S3, предоставив ей права пользователя. Это политика корзины, которую я создал: { "Version": "2012-10-17", "Statement": [ { "Sid": "Stmt1476979061000", "Effect": "Allow", "Action": [ "s3:*" ], "Resource": [ "arn:aws:s3:::companyvmimport", "arn:aws:s3:::companyvmimport/*" ] } ] } - person bluethundr; 20.10.2016
comment
И тогда команда импорта заработала корректно: aws ec2 import-image --description "Windows 2008 OVA" --disk-containers file://containers.json --profile=copmany-dlab Windows 2008 OVA import-ami-ffyqev9c 2 active pending SNAPSHOTDETAILS 0.0 OVA USERBUCKET kpmgvmimport server1.ova - person bluethundr; 20.10.2016

Я думаю, что комментарий в ответе о настройке пользовательской политики для корзины S3 содержит JSON, который может предоставлять доступ всем (что может быть нежелательным).

Если вы добавите оператор Principal в JSON, вы можете ограничить доступ только к себе.

Я столкнулся с той же проблемой (у пользователя нет доступа к объекту S3) и, немного поборовшись с ней, с помощью этого поста и некоторых дополнительных исследований, наконец, понял это. Я открыл отдельный опубликовать специально для этой проблемы «нет доступа».

person Justin    schedule 01.12.2016