Cloud Intelligence™Cloud Intelligence™

Cloud Intelligence™

FinOps定常業務を自動化:S3ライフサイクル整理

By Craig LowellJul 23, 20255 min read

このページはEnglishDeutschEspañolFrançaisItalianoPortuguêsでもご覧いただけます。

クラウドエンジニアリングの現場では、スピードがすべてです。より速く機能をリリースし、システムを効率よくスケールさせ、ビジネス価値を遅滞なく届ける——チームには常にそんなプレッシャーがかかっています。

こうした目標を最優先する以上、日常的なクラウドのメンテナンス作業が後回しになりがちなのも、ある意味当然と言えるでしょう。コスト最適化のメンテナンスで節約できる金額があるとはいえ、ROIを事前に見積もるのは難しく、他の重要なエンジニアリング業務に対して優先順位をつけにくいのです。

しかし長い目で見れば、こうした小さな作業を放置することで、見えないところでコストの非効率と運用リスクが静かに積み重なっていきます。

見過ごされたクラウド最適化のコスト

どの組織にも、目の前にあるのに見過ごされているクラウドの非効率が潜んでいます。過剰にプロビジョニングされたインスタンスや放置されたworkloadsのように一目瞭然のものもあれば、S3に残された未完了のマルチパートアップロードが少しずつストレージ料金を積み上げていくような、より目立たないものもあります。

たいていのクラウドチームは、こうした問題の存在を把握しています。問題は認識ではなく、優先順位なのです。プロダクトのスピードで評価されるエンジニアにとって、S3バケットを一つひとつ精査したり、クリーンアップルールの抜け漏れを確認したりする時間を確保する理由づけは簡単ではありません。

とはいえ、こうした未着手の最適化は、財務面に確実な影響を及ぼすことが少なくありません。放っておくには気になるけれど、時間が経てば確実にコストとして効いてくる——そんな種類の作業なのです。

なぜメンテナンス作業は後回しになるのか

クラウドエンジニアに「日々の時間はどこに消えているのか」と尋ねれば、返ってくる答えはどれも似通っています。新機能の開発、インシデント対応、開発者の生産性支援、新しいサービスやAPIへのキャッチアップ——やるべきことは尽きません。

その一方で、IAMポリシーの監査、未アタッチボリュームの自動削除設定、未完了のS3アップロードに対するライフサイクルルールの設定といったクラウドの「衛生管理」は、決まって「あとでやる」というカテゴリーに分類されてしまいます。

困ったことに、その「あとで」はなかなかやって来ません。

具体例:S3マルチパートアップロードの整理

Amazon S3のマルチパートアップロードを例に考えてみましょう。アップロードが開始されたまま完了されないケース(思っている以上によくあります)では、AWSはアップロード済みのパーツを保持し続け、オブジェクト自体が完成していなくてもストレージ料金が発生し続けます。

解決策はシンプルで、未完了のマルチパートアップロードを指定日数(通常は7日)経過後に中止するライフサイクルルールを設定するだけです。しかし実際には、このルールが設定されていないS3バケットは少なくありません。

なぜでしょうか。AWSコンソールで実施しようとすると、次のような手順が必要になるからです。

AWSコンソールでS3マルチパートアップロード整理を行う手作業の流れ

1. AWSコンソールにログイン

2. 各バケットのライフサイクルルールを確認

ここから一気に作業が非効率になります。AWSコンソールには、複数のバケットを横断してライフサイクル設定やルールの欠落を検索・絞り込む機能がありません。そのため、次の手順を踏むしかありません。

  • 各バケットを手動で開く
  • 管理ライフサイクルルールへ移動
    • ルールが存在する場合は、**「未完了のマルチパートアップロード」**を扱うルールがあるかを確認
  • 該当するルール(通常「X日経過後に未完了のマルチパートアップロードを中止」という名称)が存在すれば対応不要
  • ルールが存在しない場合は、追加作業に進む

3. マルチパート整理ルールを追加

ルールが未設定のバケットそれぞれに対して、以下を実施します。

  1. **「ライフサイクルルールを作成」**をクリック
  2. ルール名を入力(例:abort-multipart-uploads)
  3. ルールの適用範囲を選択(例:バケット内のすべてのオブジェクトに適用
  4. ライフサイクルルールのアクションで、**「期限切れのオブジェクト削除マーカーまたは未完了のマルチパートアップロードを削除」**にチェック
  5. 未完了のマルチパートアップロードで「 **未完了のマルチパートアップロードを削除」**にチェック
  6. 開始から何日後に削除するかを指定(AWSは7日以内を推奨)
  7. 内容を確認して保存
  8. ルールが必要なバケットごとに、この作業を繰り返す

ご覧のとおり、数十、数百、ときには数千ものバケットを横断してこの問題を見つけ、修正するとなると、繰り返しが多くて時間がかかり、ミスも起きやすい——結局やりきれないまま放置されることになります。

ワークフロー自動化で解決する

こうした作業は、自動化にうってつけです。理由は技術的に難しいからではなく、運用上ひたすら退屈だからです。退屈な作業ほど、手作業でこなせば生産性を蝕み、放置すれば静かに効率を損ねていくものなのです。

そこで活躍するのがCloudFlowです。DoiT Cloud Intelligence™に組み込まれたノーコードのワークフロー自動化ソリューションで、クラウドエンジニアは実行したいワークフローを設定するだけで、あとはシステムが数秒で処理を完了させてくれます。

今回のケースなら、CloudFlowは次のような構成になります。各ステップが、本来AWSコンソールで手作業をしなければならない一連の手順を置き換えてくれます。

  1. CloudFlowを実行したい時刻と頻度に合わせてスケジュールトリガーを設定
  2. CloudFlowのAPI機能を使い、まずAWSアカウント内のS3バケット一覧を取得(「ListBuckets」)
  3. 取得したバケットから、それぞれのライフサイクル設定ルールを取得(「GetBucketLifecycleConfiguration」)
  4. フィルターノードを作成し、必要なルールが欠落しているバケットを抽出(「Filter for missing policy」)
  5. 別のAWS APIを使い、抽出されたすべてのバケットに新しいルールを適用(「PutBucketLifecycleCongifuration」)
  6. 通知ステップを追加し、変更内容を記録して関係者全員に共有

コンプライアンスを担保するため、プロセス内の任意のステップに承認を組み込むこともできます。これにより、アカウント管理者の許可なくバケットが変更されることを防げます。

このCloudFlowは、指定したアカウント内のすべてのS3バケットを整理する手間と時間のかかる作業を置き換えるだけではありません。週次で実行すれば、ライフサイクルルールが設定されないまま新たに作成されたバケットも検知し、必要なルールを正しく追加できます。

こうした変化は、単に時間を節約するだけでなく、チームの働き方そのものを変えます。最初の一斉整理に何時間も費やし、その後も同じメンテナンスを延々と繰り返すのではなく、CloudFlowがプロセスを自動運転に切り替えてくれるのです。クラウドエンジニアは、会社の長期目標に大きく貢献する仕事に集中できるようになり、頭が痺れるほど退屈な作業からも解放されます。

S3ライフサイクル管理は、CloudFlowの活用例のほんの一つに過ぎません。リソースへのタグやラベルの自動付与、インスタンスの起動・停止、workloadsのライトサイジングなど、AWSやGoogle CloudのAPIで実現できることなら、ほぼ何でも自動化できます。

CloudFlowがチームの働き方にどう影響するかをさらに詳しく知りたい方は、こちらのガイド付きツアーをご覧いただくか、DoiTのエキスパートまでお問い合わせください