#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. Я имел в виду это как пример. Вы добавляете дату к имени файла назначения.