🪣
【AWS】S3ファイルのストレージクラスを表形式で出力してみた
1.前書き
S3の特定バケット内にあるファイルのストレージクラスをCLIから確認したくなり、やり方を調べてみた。
s3apiコマンドを使用すれば、json形式でストレージクラスを確認できることが分かった。
<出力イメージ>
{
"Contents": [
{
"Key": "hoge.txt",
"LastModified": "2023-09-01T02:22:22+00:00",
"ETag": "\"999999999999\"",
"Size": 99,
"StorageClass": "STANDARD",
"Owner": {
"DisplayName": "hogehoge",
"ID": "999999999999999999"
}
}
]
}
ここで正直な心の声が聞こえた。
「ファイル数増えるとパッと見で確認しづらい!」
「表形式で確認したいんじゃ...」
そんな心の声にしたがい、スクリプトを書いてみた。
本記事はその備忘録である。
2.処理の概要
- s3apiコマンド結果をjsonファイルに出力する。
- 出力したjsonファイルをConvertFrom-Json コマンドレットをベースに整え、表形式で出力する。
3.作成したスクリプト
exp_S3api_01.ps1
# 変数設定
$bucket_name = "<特定のバケット名>"
$path = "C:\Work\Test"
$json_file = $path + "\s3api_list.json" #s3apiコマンドの出力ファイル
# s3apiコマンドで特定バケット内のファイル情報を出力(json形式)
aws s3api list-objects --bucket $bucket_name | Out-File $json_file
# jsonファイルを読み込んで表形式で出力
(Get-Content $json_file | ConvertFrom-Json).Contents |
Select-Object Key,StorageClass,Size,LastModified
4.できあがるもの
問題なく表形式で出力することができた。
(ファイル数が増えるならやはり表形式の方が見やすいでしょう...)
表形式での出力結果
また、オプションとしてcsvファイルでの出力も簡単にできる。
exp_S3api_02.ps1
# 変数設定
$bucket_name = "<特定のバケット名>"
$path = "C:\Work\Test"
$json_file = $path + "\s3api_list.json" #s3apiコマンドの出力ファイル
$exp_file = $path + "\s3file_list.csv" #出力するcsvファイル
# s3apiコマンドで特定バケット内のファイル情報を出力(json形式)
aws s3api list-objects --bucket $bucket_name | Out-File $json_file
# jsonファイルを読み込んでcsvファイルへ変換
(Get-Content $json_file | ConvertFrom-Json).Contents |
Select-Object Key,StorageClass,Size,LastModified |
Export-Csv $exp_file -Encoding default
出力したcsvファイル
ファイル数が増えたりストレージクラスの種類が増えたりすると、
フィルターをかけて見たくなる瞬間があると思うので、今後もどこかで使うかなーと考えている。
5.参照
Discussion