2

静的なWebサイトとして機能するようにフォルダをS3にアップロードしようとしています。私が持っている問題は、フォルダ内に、.css、.png、.svgなどの特定の拡張子のファイルがあることです。AWS PowerShellツールを使用しています。次のコマンドをアップロードすると.svgファイルが間違ったコンテンツタイプ。Amazon AWS S3への書き込み時にファイルまたは特定のタイプを除外します

Write-S3Object -BucketName bucket-name -Folder folderName -Recurse -Force -KeyPrefix folderName -CannedACLName NoACL 

回避策として、私はフォルダを反復処理し、.svgファイルをアップロードしないようにしました。だから私はここに二つの質問を持っているフォルダを再反復のみ

Write-S3Object -BucketName bucket-name -Folder folderName -Recurse -Force -KeyPrefix folderName -CannedACLName NoACL -SearchPattern "*.svg" -ContentType "image/svg+xml" 

正しい-content型を設定する.SVGアップロードします。

1)2ステップアプローチを実行する代わりに、すべてのファイルをsvgファイルの正しいコンテンツタイプに設定してアップロードできますか?

2)除外するファイルを-SearchPatternのパラメータWrite-S3Objectに指定する場所はありますか?

ありがとうございました。

答えて

1

最初に、ファイルにコンテンツタイプが適用されないため、フォルダをアップロードするときに-ContentType "image/svg+xml"を使用できないということです。

私は2段階アプローチを取った。間違ったContent-TypeのSVGを含むすべてのファイルをアップロードします。これは、フォルダにSVGファイルしかない場合に備えてフォルダを作成することです。その後

Write-S3Object -BucketName react-ui -Folder $i.FullName -Recurse -KeyPrefix $i.Name -CannedACLName NoACL 

、私は/ SVG + XMLの正しいContent-Typeの」とSVGファイルを再アップロードします。あなたがこれを使用して、ターゲットフォルダのパスを定義することができますので、-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" 
} 
-1

S3にアップロードするファイルにcontent-typeを追加できます。参照:S3 PUT API - これは、AWSが提供するS3 SDKといくつかのコーディング経験を使用することを意味します。

コーディングを避けるには、手動でファイルをアップロードするときに特定のMIMEタイプを使用して設定できるS3 Browserを使用します。 SVGは既にS3ブラウザでサポートされているので、何もする必要はありません。このツールでアップロードするだけです。

関連する問題