set setting reset

インフラ関連の小ネタと備忘録

AWS Tools for PowerShell で S3 から指定した prefix のオブジェクトをダウンロードする

新しめの AWS Tools for PowerShell では Copy-S3Object-KeyPrefix オプションがあるので、表題のことができそうです。

ツールのバージョンアップ

自分のローカルにインストールされていた Version 3.1**** には -KeyPrefix オプションがなかったので、以下の手順でバージョンアップしてみます。

  • プログラムと機能から AWS Tools for PowerShell を削除
  • 管理者権限で起動した PowerShellInstall-Module -Name AWSPowerShell を実行

一度ターミナルを閉じてバージョンアップができたか確認します。

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

ちょっと残念。