4
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

aws-nuke の GitHub リポジトリがアーカイブされていたので状況を整理する

Last updated at Posted at 2024-11-22

はじめに

aws-nuke とは rebuy.de により開発されていたオープンソースの AWS リソース削除ツールです。AWS アカウントのお掃除に活用されている方も多いのではないでしょうか。

上記の GitHub リポジトリですが、2024/10/15 にアーカイブされていることに気づきました。これは今後機能追加や不具合修正などが行われないことを意味します。

image.png

リリースページを見ると、最後のリリースは 2023/9/4 の v2.25.0 でした。1 年以上新規リリースが止まっていたんですね。

image.png

今後どうすればいいのか

rebuy-de/aws-nuke (以後、オリジナル版) の README に以下のような記載があります。

原文:

This repository for aws-nuke is no longer being actively maintained. We recommend users to switch to the actively maintained fork of this project at ekristen/aws-nuke. We appreciate all the support and contributions we've received throughout the life of this project. We believe that the fork will continue to provide the functionality and support that you have come to expect from aws-nuke.

参考訳:

aws-nuke のこのリポジトリは、現在アクティブにメンテナンスされていません。ekristen/aws-nukeにあるこのプロジェクトのアクティブにメンテナンスされているフォークに切り替えることをお勧めします。 このプロジェクトの存続期間中に受けたすべてのサポートと貢献に感謝します。 このフォークは、aws-nuke に期待される機能とサポートを引き続き提供してくれると信じています。

別プロジェクトとしてフォークされた ekristen/aws-nuke (以降、フォーク版) への移行が推奨されているようです。

フォーク自体は 2021 年末におこなわれています。その背景などはこちらのリポジトリの README に記載があり、オリジナル版のプロジェクトに敬意を持ったうえで開発が進められている印象を (私個人としては) 受けました。

フォーク版はツールのコア部分を専用ライブラリ libnuke として再実装し、2024 年 6 月にリリースされた v3.0.0 では多くの新機能が追加されています。その後もアクティブに不具合修正や機能追加がおこなわれています。

ドキュメント

フォーク版はドキュメントが整備されています。オリジナル版は一次情報が README だけだったように思うのでこれは嬉しいですね。

フォーク版の Version 3 を触ってみる

お約束
aws-nuke は非常に強力かつ破壊的なツールであるため、実環境での実行は十分に注意しておこなってください。

動作確認を行ったバージョン: v3.31.0

破壊的な変更点

run サブコマンドの追加

破壊的な変更として run サブコマンド (エイリアス: nuke) が追加されています。これによりメインコマンド (root) での実行はできなくなり、明示的にサブコマンドを指定する必要があります。

# オリジナル版での実行方法
$ aws-nuke -c config/nuke-config.yaml --no-dry-run

# フォーク版 (v3) での実行方法
$ aws-nuke run -c config/nuke-config.yaml --no-dry-run

# nuke が run のエイリアスとして定義されている
$ aws-nuke nuke -c config/nuke-config.yaml --no-dry-run

targets の非推奨化

削除対象リソースを指定する際の targets が非推奨になりました。代わりに include の使用が推奨されます。

# オリジナル版での指定方法
resource-types:
  targets:
    - S3Object
    - S3Bucket
    - IAMRole

# フォーク版での指定方法
resource-types:
  includes:
    - S3Object
    - S3Bucket
    - IAMRole

feature-flags の非推奨化

リソースの削除動作を指定する際の feature-flags が非推奨になりました。代わりに settings の使用が推奨されます。

# オリジナル版での指定方法
feature-flags:
  EC2Instance:
    DisableStopProtection: true
    DisableDeletionProtection: true

# フォーク版での指定方法
settings:
  EC2Instance:
    DisableStopProtection: true
    DisableDeletionProtection: true

グローバルフィルター

オリジナル版ではフィルターは一つのリソースに対してのみ適用できました。グローバルフィルター (__global__) を使用すると、定義されたすべてのリソースにフィルターを適用できます。複数のリソースに対して、Name タグのような共通の条件を都度記述しなくてよくなり、設定が簡潔に記述できます。

グローバルフィルターは、プリセットまたはアカウントレベルのみ定義できます。

# オリジナル版
resource-types:
  targets:
   - LambdaFunction
   - LambdaLayer

accounts:
  123456789012:
    filters:
      LambdaFunction:
        - property: tag:Name
          value: "aws-nuke"       
      LambdaLayer:
        - property: tag:Name
          value: "aws-nuke"

# フォーク版 (グローバルフィルターあり)
resource-types:
  includes:
   - LambdaFunction
   - LambdaLayer

accounts:
  123456789012:
    filters:
      __global__:
        - property: tag:Name
          value: "aws-nuke"

有効なすべてのリージョンを指定

regions に all を指定するとアカウント内で有効になっているすべてのリージョンを対象に処理を実行できます

# オリジナル版
regions:
  - global
  - ap-south-1
  - ca-central-1
  - eu-central-1
  -以降省略-

# フォーク版
regions:
  - all

参考: オリジナル版から追加されている新規リソース

オリジナル版の最終リリースである v2.25.0 からフォーク版の v3.31.0 までに追加されているリソースは以下のとおりです。(cloud-control リソースは除きます)

AmplifyApp
AppRegistryApplication
AthenaDataCatalog
AthenaPreparedStatement
BackupReportPlan
CloudFrontCachePolicy
CloudFrontResponseHeadersPolicy
CloudWatchAnomalyDetector
CloudWatchInsightRule
CodeBuildBuild
CodeBuildBuildBatch
CodeBuildReport
CodeBuildReportGroup
CodeBuildSourceCredential
CodeDeployDeploymentConfig
CodeDeployDeploymentGroup
CodeGuruReviewerRepositoryAssociation
CodePipelineCustomActionType
CodePipelineWebhook
ConfigServiceConformancePack
DynamoDBBackup
EC2TGWConnectPeer
ECRPublicRepository
ECSCapacityProvider
ELBv2ListenerRule
ElasticTranscoderPreset
GameLiftBuild
GameLiftFleet
GameLiftMatchmakingConfiguration
GameLiftMatchmakingRuleSet
GameLiftQueue
GlueBlueprint
GlueMLTransform
GlueSecurityConfiguration
GlueSession
GlueWorkflow
IAMAccountSettingPasswordPolicy
IAMRolesAnywhereCRL
IAMRolesAnywhereProfile
IAMRolesAnywhereTrustAnchor
IAMUserHTTPSGitCredential
IAMUserMFADevice
IoTSiteWiseAccessPolicy
IoTSiteWiseAsset
IoTSiteWiseAssetModel
IoTSiteWiseDashboard
IoTSiteWiseGateway
IoTSiteWisePortal
IoTSiteWiseProject
ManagedBlockchainMember
NetworkManagerConnectPeer
NetworkManagerCoreNetwork
NetworkManagerGlobalNetwork
NetworkManagerNetworkAttachment
OSPipeline
PinpointApp
PinpointPhoneNumber
PipesPipe
PollyLexicon
QuickSightSubscription
QuickSightUser
RedshiftServerlessNamespace
RedshiftServerlessSnapshot
RedshiftServerlessWorkgroup
RedshiftSnapshotSchedule
RekognitionDataset
RekognitionProject
ResourceExplorer2Index
ResourceExplorer2View
SageMakerSpace
SchedulerSchedule
TranscribeCallAnalyticsCategory
TranscribeCallAnalyticsJob
TranscribeLanguageModel
TranscribeMedicalTranscriptionJob
TranscribeMedicalVocabulary
TranscribeTranscriptionJob
TranscribeVocabulary
TranscribeVocabularyFilter
WAFv2APIKey

ちなみに名称の変更があったのは以下の 7 つ。typo や命名規則に則っていなかったものを修正したのだと思われます。

オリジナル版 (v2.25.0) フォーク版 (v3.31.0)
AWSBackupVault BackupVault
ComprehendPiiEntititesDetectionJob ComprehendPiiEntitiesDetectionJob
EKSFargateProfiles EKSFargateProfile
EKSNodegroups EKSNodegroup
LaunchConfiguration AutoScalingLaunchConfiguration
LifecycleHook AutoScalingLifecycleHook
NetpuneSnapshot NeptuneSnapshot

以上です。
参考になれば幸いです。

4
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?