我正在使用Windows Powershell for AWS,我尝试了以下内容:
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 和针对AWS的Powershell扩展
答案 0 :(得分: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进行尝试。我已经测试了一些可用的选项,但它们都有效。
答案 1 :(得分:3)
请注意,使用Write-S3Object的-Metadata
参数设置" x-amz-meta-cache-control"元数据属性。如果你想设置" Cache-Control" (对于S3网站托管的HTTP响应标头),请使用此参数模式:
-HeaderCollection @{"Cache-Control" = "Value"}