🪣

【AWS】S3ファイルのストレージクラスを表形式で出力してみた

2023/09/18に公開

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.参照

https://dev.classmethod.jp/articles/manage-s3-storage-class-with-aws-cli/

Discussion