BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース AWS CDKが古いアセットを削除するためのガベージコレクションを導入

AWS CDKが古いアセットを削除するためのガベージコレクションを導入

原文リンク(2025-03-04)

Amazonは最近、AWS CDKにおけるガベージコレクションのプレビュー版を導入した。この新機能はブートストラップされたS3バケットとECRリポジトリ内の古いアセットを自動的に削除し、メンテナンスコストとデプロイメントコストを削減する。

最近のcdk gcコマンドは、ブートストラップスタックのリソースに保存されている未使用のアセットに対してガベージコレクションを実行し、開発者が不要になったアセットを表示、管理、削除することを可能にする。AWSのソフトウェアエンジニア Kaizen Conroy氏とAWSのシニアクラウドアーキテクト Adam Keller氏はこう説明する。

大規模にアセットを活用するCDK開発者は、時間の経過とともにブートストラップされたバケットやリポジトリに古いまたは未使用のデータが蓄積されることに気付くかもしれません。ユーザーが自分でこのデータをクリーンアップしたい場合、CDKはどのデータが安全に削除できるかを明確に示す方法を提供していませんでした。(...) 我々はCDKガベージコレクションがお客様のCDKの使用方法に影響を与えることなく、AWS CDKのお客様が製品を使用する際のストレージコストを削減するのに役立つことを期待しています。

出典:AWS GitHubアカウント

AWS Cloud Development Kit(CDK)はより高度な抽象化を提供し、開発者がTypeScript、JavaScript、Python、Java、C#/.NET、Goを使ってクラウドインフラストラクチャを定義できるようにするオープンソースフレームワークである。開発者はスタックやアプリにまとめられるコンストラクトとして知られる再利用可能なクラウドコンポーネントを定義する。ガベージコレクション機能はコミュニティからの長年の要望であり、Polar SquadのプリンシパルDevOpsコンサルタント Janne Sinivirta氏が2019年に遡ってこの問題をハイライトしている。

各cdkビルドはcdk.outの下に新しいassetsフォルダを作成します。これにnode_modulesが含まれている場合、cdk.outフォルダの合計サイズはあっという間に膨れ上がってしまいます(私のフォルダは10GBを超えていました)!

ドキュメントによるとcdk gc commandはまだ開発中でプレビューモードにあり、このコマンドの現在の機能は本番環境で使用可能で安全であると考えられているが、コマンドの範囲とその機能は変更される可能性がある。開発者は--unstable=gcオプションを指定して明示的にオプトインする必要がある。例えばガベージコレクションの現在のバージョンは個々のアカウントとリージョンにスコープされているが、代わりに各スタックにスコープする機能リクエストがある。

CDKガベージコレクションは開発者がカスタマイズできるようにいくつかのパラメータを公開しており、ガベージコレクションの積極性を調整できる。これは--rollback-buffer-daysと--created-buffer-daysパラメータを使って実現され、それぞれアセットが削除対象となる前に隔離済みとしてマークされる必要がある日数と、アセットが削除対象となる前に存在する必要がある日数を指定する。Conroy氏とKeller氏は明らかにしている:

Rollback Buffer Daysはcdk deployを使用せず、パイプラインのようにテンプレートのみで動作するデプロイメント方法を使用する場合に考慮されるべきです。パイプラインがCDK CLIの関与なしにロールバックできる場合、このパラメータはアセットが早期に削除されないようにするのに役立ちます。

AWSのシニアクラウドアーキテクト Adam Keller氏はLinkedInでこう要約している

CDKによる介入なしにリソースを自分でクリーンアップする必要があったため、これは多くの人々にとってペインポイントでした。CDKツールキットの新ガベージコレクション機能により、古い未使用のアセットを簡単にクリーンアップ可能になりました。

CDKガベージコレクションは、AWS CDKバージョン2.165.0から利用できる。

作者について

関連するコンテンツ

BT