2

Я использую Windows Powershell для AWS, и я попытался следующие:Как установить Cache-Control при использовании Write-S3Object?

Write-S3Object 
    -BucketName 'user-ab-staging' 
    -KeyPrefix 'content/css' 
    -Folder 'content/css' 
    -SearchPattern '*.css' 
    -Metadata @{"Cache-Control" = "Value"} 
    -CannedACLName PublicRead 

Это дает мне очень странную ошибку, и только пытается загрузить один файл CSS:

Uploaded 1 object(s) to bucket 'user-ab-staging' from 'C:\g\ab-user\WebUserApp\content\css' with keyprefix 
'content/css' 
Write-S3Object : 
At line:1 char:1 
+ Write-S3Object ` 
+ ~~~~~~~~~~~~~~~~ 
    + CategoryInfo   : InvalidOperation: (Amazon.PowerShe...eS3ObjectCmdlet:WriteS3ObjectCmdlet) [Write-S3Objec 
    t], InvalidOperationException 
    + FullyQualifiedErrorId : Amazon.S3.AmazonS3Exception,Amazon.PowerShell.Cmdlets.S3.WriteS3ObjectCmdlet 

Может кто-нибудь помочь сказать мне что не так с этим и как я могу установить данные кэша для объекта, когда я , используя Write-S3Object и Расширение Powershell для AWS?

+0

Сначала проверьте настройки разрешения прямо в s3 ведро или нет. – BMW

ответ

3

Я установил несколько тестовых папок локально и на S3 и смог точно воспроизвести эту проблему.

После некоторого рытья/экспериментирования ... оно относится к параметру CannedACLName. Файлы удаляются при удалении этого параметра.

Этот documentation говорит, что правильная опция для использования - PublicRead, но на самом деле правильная опция - public-read. Сделав это изменение, я смог успешно записать все объекты в указанной папке.

Ваш обновленный код будет выглядеть следующим образом:

Write-S3Object 
    -BucketName 'user-ab-staging' 
    -KeyPrefix 'content/css' 
    -Folder 'content/css' 
    -SearchPattern '*.css' 
    -Metadata @{"Cache-Control" = "Value"} 
    -CannedACLName public-read 

Если вам нужно использовать какие-либо другие варианты ACL в будущем, я рекомендую попробовать с this list in the ACL documentation вместо. Я протестировал несколько доступных там вариантов, и все они работали.

+0

Большое спасибо за вашу помощь в этом. –

4

Обратите внимание, что использование аргумента -Metadata для Write-S3Object устанавливает свойство метаданных «x-amz-meta-cache-control». Если вы хотите установить «Cache-Control» (как для заголовков ответа HTTP для S3 хостинг веб-сайтов), использовать этот аргумент шаблона вместо:

-HeaderCollection @{"Cache-Control" = "Value"}