Создайте новую папку в корзине s3 с помощью powershell

#amazon-web-services #powershell #amazon-s3

Вопрос:

Можно ли создать новую папку, имя которой соответствует текущей дате, в корзине S3?

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

Редактировать

Я использую

 Write-S3Object -BucketName $bucketName -File "$Directory$file"  

$файл берется из цикла foreach, это файл в локальной папке. $Каталог-это путь, по которому находятся файлы

Комментарии:

1. Вы можете просто загрузить cat.png в s3://mybucket/YYYYMMDD/cat.png без необходимости предварительного создания YYYYMMDD/ в корзине.

2. Добавьте -Key "2021-12-02/$file" при вызове Write-S3Object, чтобы установить нужный ключ объекта S3. Не стесняйтесь динамически получать дату из PowerShell, используя Get-Date -Format "yyyy-MM-dd" .

3. @jarmod Awesomw это именно то, что мне было нужно. Напишите это в качестве ответа, и я проверю ваш ответ и решение. Спасибо тебе, парень!

Ответ №1:

Первое, о чем следует знать,-это то, что вы можете просто загрузить файл с именем, например, cat.png в s3://mybucket/YYYY-MM-DD/cat.png , без необходимости предварительного создания YYYY-MM-DD/ в корзине.

Ваш текущий сценарий:

 Write-S3Object -BucketName $bucketName -File "$Directory$file"  

Это явно не устанавливает ключ целевого объекта S3, поэтому он подразумевается из имени файла.

Чтобы указать конкретный ключ, включая префикс даты, добавьте следующее при вызове Write-S3Object:

 -Key "2021-12-02/$file"  

Конечно, вы можете предпочесть получать сегодняшнюю дату динамически из PowerShell, а не с помощью жесткого кода 2012-12-02, и вы можете сделать это с помощью:

 Get-Date -Format "yyyy-MM-dd"  

Ответ №2:

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

Что вы можете сделать, так это добавить дату в качестве префикса к имени файла при его загрузке, чтобы имя файла назначения (или, скорее, ключ объекта) было чем-то вроде «дата/имя источника».

Комментарии:

1. Не получил этого «Все, что вы можете сделать, это добавить дату в качестве префикса к имени файла при его загрузке».

2. Вы форматируете дату в любую строку, которая вам нравится, и добавляете ее к целевому «имени файла». Например, выполнить команду «aws s3 cp myfile s3://mybucket/2021-12-02/myfile».

3. О, хорошо, но я не использую aws s3 cp, я использую команды powershell aws, в данном случае объект записи. Я отредактировал свой вопрос, чтобы объяснить, что

4. Я имел в виду это как пример. Вы добавляете дату к имени файла назначения.