Исключить файлы или определенный тип при записи в Amazon AWS S3
Я пытаюсь загрузить папки на S3 в качестве статического сайта. У меня проблема в том, что в папках есть файлы с определенными расширениями, такими как.css,.png,.svg и т. Д. Я использую инструменты AWS PowerShell, и когда я загружаю следующую команду, файлы.svg загружаются с неправильный тип контента
Write-S3Object -BucketName bucket-name -Folder folderName -Recurse -Force -KeyPrefix folderName -CannedACLName NoACL
В качестве обходного пути я придумал перебирать папки и не загружать файлы.svg. Повторите итерацию папок и загрузите только.svg, настроив правильный -content-type
Write-S3Object -BucketName bucket-name -Folder folderName -Recurse -Force -KeyPrefix folderName -CannedACLName NoACL -SearchPattern "*.svg" -ContentType "image/svg+xml"
У меня здесь два вопроса.
1) Вместо двухэтапного подхода, могу ли я загрузить все файлы за один раз, настроив правильный тип контента для файлов SVG?
2) Есть ли возможность указать файлы для исключения в -SearchPattern
параметр Write-S3Object
?
Благодарю.
2 ответа
Первое, что я не могу использовать -ContentType "image/svg+xml"
при загрузке папки, так как она не применяет тип содержимого к файлам.
Поэтому я выбрал два этапа; сначала загрузите все файлы, включая SVG, с неправильным Content-Type. Это необходимо для создания папок на случай, если в папке есть только файлы SVG.
Write-S3Object -BucketName react-ui -Folder $i.FullName -Recurse -KeyPrefix $i.Name -CannedACLName NoACL
После этого я перезагружаю SVG-файл с правильным Content-Type /svg+xml". -Key
Параметр очень важен, так как вы можете определить путь к целевой папке, используя это.
foreach ($i in Get-ChildItem $path -Recurse -Include "*.svg")
{
$filename = [System.IO.Path]::GetFileName($i)
$awsPath = $i.DirectoryName.Substring($i.DirectoryName.IndexOf($path) + $path.Length)
$fileWithPath = $awsPath + "\"+ $filename
Write-S3Object -BucketName react-ui -File $i -Key $fileWithPath -CannedACLName NoACL -ContentType "image/svg+xml"
}
Можете добавить content-type
к файлам, которые вы загружаете на S3. См. S3 PUT API - однако это означает, что вы будете использовать S3 SDK, предоставляемый AWS, плюс некоторый опыт кодирования.
Чтобы избежать кодирования, используйте браузер S3, который можно настроить с определенным типом пантомимы, когда вы вручную загружаете любые файлы. SVG уже поддерживается браузером S3, поэтому вам не нужно ничего делать, просто загрузите его с помощью этого инструмента.