不完全なマルチパートアップロードをCLIで確認してS3の無駄コストを無くそう

こんにちは、エンジニアの君島です。

大きいオブジェクトなどのマルチパートアップロードを行っていると、不完全なマルチパートアップロードが残ってしまっていて予期せず無駄コストが発生しているかもしれません。

そのような時にAmazon S3 Storage Lensを使えば、不完全なマルチパートアップロードを確認することができます。視覚的に確認できるのもいいですし、削除マーカーの数や他の指標を確認することも簡単にできます。

 

今回は、これをコマンドラインで実行してすぐに確認できるようにしてみましょう。

 

最初に結論

権限があるユーザーでAWS CloudShellを開いて、以下のコマンドをコピーして実行しましょう。

 

実行すると、アカウントにあるS3バケット内に残ってしまっている不完全なマルチパートアップロードの数が出力されます。実行したコマンドを出力しているので、どのバケットが対象か分かるようになっています。

 

0より大きい数字になっているS3バケットには不完全なマルチパートアップロードが残っているので、そのバケットに対してバケットライフサイクル設定がなされてるかを確認します。バケットライフサイクル設定がなければ、設定を追加するようにしましょう。

なお、バケットの不完全なマルチパートアップロードを削除するライフサイクル設定があるかどうかは以下のコマンドでも確認することができます。

 

コマンドの解説

S3バケットの一覧を出力する

コマンドの理解を深めるために、細かく見ていきましょう。

 

上記のコマンドの出力は以下のような形式で出力されます。

 

バケット名だけ抽出したいので、awkで3列目だけ表示します。

 

これによって出力は3列目のバケット名だけ表示をすることができます。

 

xargsで引数を受けよう

 

-tオプションは-verboseオプションで、コマンドを標準エラーに出力するようにします。

また、-Iオプションで後ろに続く文字列をplaceholderとして扱い、後続のコマンドの引数に充てることができます。

 

マルチパートアップロードを表示する

マルチパートアップロードを表示しましょう。@をplaceholderとして利用していますが、本来はバケット名を指定することになります。

 

jqで表示をフィルタリングする

list-multipart-uploadsの結果はjsonで出力されるので、jqでフィルタリングしましょう。lengthは値の長さを取得するjqのビルトインコマンドです。

 

まとめと告知

AWSアカウント内のS3バケットに残っている不完全なマルチパートアップロードをワンライナーで確認できる方法をまとめました。併せて不完全なマルチパートアップロードを削除するライフサイクルルールが有効になっているかを確認するワンライナーも用意しておきました。

 

もし、コマンド実行の結果、不完全なマルチパートアップロードが残っていたり、ライフサイクルルールを設定していなかった場合は、バケットに設定を加えるようにしましょう。

例えばマネジメントコンソールからは以下のようにライフサイクルルールを設定することができます。

 

カジュアル面談も実施中

ギークフィードではAWSエンジニアなどの職種で一緒に働く仲間を募集しています。

弊社に興味を持っていただいたり、会社のことをカジュアルに聞いてみたいという場合でも、ご気軽にフォームからお問い合わせください。その場合はコメント欄に、カジュアルにお話したいです、と記載ください!

 

採用情報はコチラ

この記事が気に入ったら
いいね ! しよう

Twitter で
The following two tabs change content below.
君島翔
君島翔
AI事業部事業部長株式会社ギークフィード
Java, .NET系の言語が得意。Laravelも使います。 エディタはvim派。 自分が楽するためにテストやビルド、デプロイを自動化させたい。 2022-2023 AWS Ambassador / 2022-2023 Japan AWS Top Engineer / 2022-2023 Japan AWS ALL Certifications Engineer

【採用情報】一緒に働く仲間を募集しています

採用情報
ページトップへ