2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

S3 から CLI を使い ”最終更新日” の期間指定でオブジェクトをダウンロードする

Last updated at Posted at 2023-03-08

はじめに

最終更新日をキーとして、S3バケットから指定期間内に更新されたオブジェクト(ファイル)をダウンロードするスクリプトです。

背景と必要性

たくさんのファイルが格納されているS3のバケットから特定期間に格納したファイルをダウンロードしようと思ったのですが、ご覧の通りAWSのマネジメントコンソールではオブジェクト名以外の項目では表示順を変えられないっぽいのと、ダウンロード対象のファイル数が結構多そうだったので、手作業はきついなと思い CLIをたたくスクリプトを書きました。

image.png

スクリプト

必要な情報をパラメータで指定して実行すれば繰り返し利用できるような形でまとめてみました。

DownloadS3Obj.ps1
<#
.SYNOPSIS
    S3から指定した期間(最終更新日時)のファイルをダウンロードします。

.DESCRIPTION
    特になし

.PARAMETER bucketName
    バケット名を指定します。

.PARAMETER prefix
    フォルダのパスを指定します。

.PARAMETER from
    ダウンロードするファイルの最終更新日(最小値)を指定します。

.PARAMETER to
    ダウンロードするファイルの最終更新日(最大値)を指定します。
#>

Param(
    [string]$bucketName,
    [string]$prefix,
    [string]$from,
    [string]$to
)

$outputDir = "$(Get-Date -Format 'yyyyMMddHHmmss')"

# ダウンロード先フォルダの作成
New-Item -ItemType Directory -Name $outputDir

# ファイルをダウンロード
aws s3api list-objects `
     --bucket $bucketName `
     --prefix $prefix `
     --query "Contents[?LastModified>='$from' && LastModified<='$to'].[Key]" `
     --output text `
| ForEach-Object { aws s3 cp --no-progress s3://$bucketName/$_ ./$outputDir/ }

特に解説とかはありませんが、せっかくなのでChatGPTに説明してもらいましょう。
image.png

実行例

PS C:\Users\xxxx\Desktop> .\DownloadS3Obj.ps1 -bucketName bucket-logcsv -prefix 3b077cad-fda9-4d1b6/ -from 2022-03-08 -to 2022-03-10

    ディレクトリ: C:\Users\xxxx\Desktop


Mode                 LastWriteTime         Length Name                                                                                                                                                                      
----                 -------------         ------ ----                                                                                                                                                                      
d-----        2023/02/16     16:55                20230216165519                                                                                                                                                            
download: s3://bucket-logcsv/3b077cad-fda9-4d1b6/0072046a-7b1d-4944-855b.csv to 20230216165519\0072046a-7b1d-4944-855b.csv
download: s3://bucket-logcsv/3b077cad-fda9-4d1b6/00b8ecca-850e-4020-affc.csv to 20230216165519\00b8ecca-850e-4020-affc.csv
download: s3://bucket-logcsv/3b077cad-fda9-4d1b6/010bdb06-4673-40ba-9ef2.csv to 20230216165519\010bdb06-4673-40ba-9ef2.csv
download: s3://bucket-logcsv/3b077cad-fda9-4d1b6/0377154b-8ee7-4f9e-abb1.csv to 20230216165519\0377154b-8ee7-4f9e-abb1.csv
download: s3://bucket-logcsv/3b077cad-fda9-4d1b6/03e3e00b-5362-4837-855c.csv to 20230216165519\03e3e00b-5362-4837-855c.csv
download: s3://bucket-logcsv/3b077cad-fda9-4d1b6/04b2fd8f-3b4c-4e3d-b432.csv to 20230216165519\04b2fd8f-3b4c-4e3d-b432.csv
download: s3://bucket-logcsv/3b077cad-fda9-4d1b6/05846e8a-758c-467d-b226.csv to 20230216165519\05846e8a-758c-467d-b226.csv

まとめ

スクリプトを作るにあたり、ぱっと見ではネット上にそのまま使える情報を見つけられなかったので、メモとして記事にしました。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?