2

我正在为 AWS 使用 Windows Powershell,我尝试了以下方法:

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 扩展时,谁能帮我告诉我这有什么问题以及如何设置对象的缓存数据?

4

2 回答 2

4

请注意,使用-MetadataWrite-S3Object 的参数设置“x-amz-meta-cache-control”元数据属性。如果要设置“Cache-Control”(对于 S3 网站托管的 HTTP 响应标头),请改用此参数模式:

-HeaderCollection @{"Cache-Control" = "Value"}
于 2015-01-29T22:01:20.747 回答
3

我在本地和 S3 上设置了一些测试文件夹,并且可以准确地复制这个问题。

经过一些挖掘/实验......它与CannedACLName参数有关。删除该参数时文件上传成功。

文档说要使用的正确选项是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 选项,我建议您尝试使用 ACL 文档中的此列表。我已经测试了一些可用的选项,它们都有效。

于 2015-01-04T23:04:51.367 回答