AWS Tools for PowerShell で S3 から指定した prefix のオブジェクトをダウンロードする
新しめの 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
ちょっと残念。