2

AWS に Windows Powershell を使用しており、次のことを試しました。

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

非常に奇妙なエラーが発生し、1 つの 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-S3ObjectAWS の Powershell 拡張機能を使用しているときに、これの何が問題なのか、オブジェクトのキャッシュ データを設定する方法を誰か教えてもらえますか?

4

2 に答える 2

4

Note that using the -Metadata argument for Write-S3Object sets the "x-amz-meta-cache-control" metadata property. If you want to set the "Cache-Control" (as for HTTP response headers for S3 website hosting), use this argument pattern instead:

-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 に答える