Назад | Перейти на главную страницу

AWS CLI создает корзину внутри другой корзины

Как я могу создать ведро внутри ведра с помощью aws cli? Когда я использую команду «mb», она говорит, что она у меня уже есть (но у меня нет). Сегмент верхнего уровня example-bucket уже существует. Мне нужно знать, как создать "тестовую" корзину с помощью cli.

[ec2-user@ip-10-0-0-0 ~]$ aws s3 mb s3://example-bucket/testing --region us-west-2
make_bucket failed: s3://example-bucket/testing An error occurred (BucketAlreadyOwnedByYou) when calling the CreateBucket operation: Your previous request to create the named bucket succeeded and you already own it.

Это невозможно. Как документация состояния:

Вы не можете создать ведро в другом ведре.

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

S3 - это хранилище объектов, а не файловая система, и у него нет папок как таковых. Вы можете создавать объекты с разделителем пути, когда вы просматриваете сегмент в веб-консоли, он показывает его в виде папки / дерева. Вам не нужно заранее создавать «папку», просто поместите объект с правильным ключом. Есть хорошее руководство по Папки S3 здесь.

Подобная команда интерфейса командной строки AWS помещает объект в S3, который выглядит как папка. Вызов API будет аналогичным

aws s3 cp filename.txt s3://bucketname/folder/filename.txt

Документация по AWS S3 неплохая. Команда AWS S3 CLI cp: задокументировано здесь.

Очевидно, вы не можете использовать "aws s3 mb". Мне пришлось использовать "aws s3api put-object"

aws s3api put-object --bucket example-bucket --key testing/

Косая черта необходима, чтобы aws знала, что это каталог, в противном случае он создаст пустой файл.