新しめの AWS Tools for PowerShell では Copy-S3Object に -KeyPrefix オプションがあるので、表題のことができそうです。
ツールのバージョンアップ
自分のローカルにインストールされていた Version 3.1**** には -KeyPrefix オプションがなかったので、以下の手順でバージョンアップしてみます。
- プログラムと機能から AWS Tools for PowerShell を削除
- 管理者権限で起動した PowerShell で
Install-Module -Name AWSPowerShellを実行- PowerShell version 5 以上
一度ターミナルを閉じてバージョンアップができたか確認します。
PS C:\> Import-Module AWSPowerShell
PS C:\> get-Module AWSPowerShell
ModuleType Version Name ExportedCommands
---------- ------- ---- ----------------
Binary 3.3.283.0 AWSPowerShell {Add-AASScalableTarget, Add-ACMCertificateTag, Add-ADSConf...
3.1.**** からバージョンアップできました。
やってみる
こんな感じのバケットがあるとして
PS C:\> (Get-S3Object -BucketName my-bucket -Prefix test).Key test/hige_hoge.txt test/hoge_hige.txt test/hoge_hoge.txt
以下の様に実行します。
PS C:\test> Copy-S3Object -BucketName my-bucket -LocalFolder . -KeyPrefix test
Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 6/4/2018 3:28 PM test
PS C:\test> ls
Directory: C:\test
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 6/4/2018 3:28 PM 0 hige_hoge.txt
-a---- 6/4/2018 3:28 PM 0 hoge_hige.txt
-a---- 6/4/2018 3:28 PM 0 hoge_hoge.txt
いい感じです。
が、↓のようにファイル名の一部まで prefix を指定しようとすると、うまくダウンロードできませんでした。
PS C:\test> Copy-S3Object -BucketName my-bucket -LocalFolder . -KeyPrefix test/hoge Mode LastWriteTime Length Name ---- ------------- ------ ---- d----- 6/4/2018 3:30 PM test PS C:\test> ls
ちょっと残念。