#image #ecr #registry #deletion #command-line #delete #tool

app dyson

一个命令行工具,用于删除未使用的 ECR 镜像

3 个不稳定版本

0.2.0 2023 年 5 月 19 日
0.1.1 2023 年 5 月 12 日
0.1.0 2023 年 5 月 12 日

#3#deletion

33 每月下载量

MIT 许可证

59KB
1.5K SLoC

dyson

dyson 是一个命令行工具,可以帮助您从注册表中删除未使用的 ECR 镜像。它提供了一些命令来管理删除过程。

安装

要使用 dyson,您需要安装 Rust 和 Cargo。如果您还没有安装它们,可以按照官方 Rust 安装指南进行操作:https://www.rust-lang.net.cn/tools/install

安装 Rust 和 Cargo 后,您可以通过运行以下命令来安装 dyson

cargo install dyson

或者,您可以从 GitHub 发布页面 下载最新版本。

用法

dyson [OPTIONS] <COMMAND>

命令

  • init:生成配置文件
  • plan:根据配置创建删除计划
  • apply:根据配置删除 ECR 镜像
  • help:打印此消息或给定子命令的帮助信息

选项

  • -c, --config <FILE>:配置文件路径。默认:dyson.yaml

配置

Dyson 需要一个配置文件来指定识别未使用镜像的规则。默认情况下,配置文件名为 dyson.yaml

您可以根据自己的需求自定义配置文件。配置文件使用 YAML 格式,应包含以下信息

registry:
  name: my-registry
  profile_name: profile1
  excludes:
    - exclude/*
  filters:
    - pattern: '*'
      days_after: 30
      ignore_tag_patterns:
        - latest

scans:
  - name: scan-target
    profile_name: profile2

notification:
  slack:
    webhook_url: https://hooks.slack.com/services/xxx/yyy/zzz
    username: dyson-bot
    channel: random

注册表配置

registry 部分定义了您的 ECR 注册表的设置

  • name(可选):您的 ECR 注册表的名称。
  • profile_name:用于访问注册表的 AWS 配置文件名称。
  • excludes(可选):要排除在删除过程之外的存储库模式的列表。支持通配符(*)。
  • filters(可选):基于图像的最后一个推送日期和标记进行筛选的过滤器列表。
    • pattern:要匹配的存储库模式。支持通配符(*)。
    • days_after(可选):图像推送后多少天被认为是删除目标。
    • ignore_tag_patterns(可选):从目标中忽略删除的标签模式列表。支持通配符(*)。

扫描配置

在扫描过程中,dyson将扫描由以下内容使用的账户:

  • Lambda 函数
  • ECS 服务
  • ECS 任务定义(目前考虑最新两个版本为使用状态)

scans》部分定义了扫描目标账户。

  • name(可选):扫描的名称。
  • profile_name:用于访问账户时认证的 AWS 配置文件名称。

如果需要,您可以在《scans》部分中定义多个扫描。

通知配置

Dyson 提供了一个简单的通知机制来通知结果。目前,仅支持 Slack。

  • webhook_url:通知将被发送到的 Slack webhook URL。
  • username(可选):用于通知显示的用户名。
  • channel(可选):通知将被发送到的 Slack 通道或用户 ID。

依赖项

~36–50MB
~747K SLoC