Git 标签 vs AWS 标签:标签大对决!

欢迎来到 Git 标签 和 AWS 标签 之间的终极对决,这两个竞争者除了对”标签“这个词的热爱外,没有任何共同之处。让我们让它们正面交锋,看看在混乱与实用性之争中谁将获胜!

第一轮:他们是谁

Git 标签

软件世界的历史学家。他们不关心现在;他们只喜欢收藏重要事件(如发布)以便您可以穿梭时光。把它们看作是您的版本控制时光机 — 没有遇到过去编码错误的风险…哦,等等。祝您调试v1.0.0-final-final-definitely-final-this-time时好运!

AWS 标签

过于有条理的办公室管理员希望在所有事物上贴标签,包括您的 EC2 实例、S3 存储桶,甚至那个让您每月花费$500的遗忘的 Lambda 函数。AWS 标签就像那个将整个生活进行颜色编码的朋友… 除非他们忘记了,现在没人知道任何东西的意义。

第二轮:他们的作用

Git 标签

  • 帮助您标记重要的提交(例如,v1.0.0,生产发布)
  • 用于软件版本控制
  • 可以是轻量级(只是一个标签)或注释型(带有历史教训的标签)
  • 一旦推送,它们就像一条令人尴尬的推文 — 难以删除!(您会后悔的。)

AWS 标签

  • 帮助您向AWS资源添加键-值对(环境:生产,所有者:Ram)
  • 用于成本跟踪、组织和合规
  • 可以是强制性的(如果老板这么说)或者是可选的(如果您感觉懒惰)
  • 易于修改,不像您每月的AWS账单(比“钱”劫案中的情节转折更难以预测)

第三轮:现实生活中的反应

Git标签用户

“我刚给我的版本打了标签!哦,等等,我需要重命名它。哦不……哦不……哦不。”(剧透:重命名标签比三年后重命名宠物更难。)

AWS标签用户

“谁给这个EC2实例打上了‘删除我’的标签?!等等…我的EC2去哪了?!”(真正的恐怖电影:AWS账单和意外删除。)

第四轮:如果忽视它们会发生什么?

忽视Git标签

  • 您的发布版本是一个谜。v1.2是在修复-bug-final-final2之前还是之后?
  • 调试生产环境变成了一个时空悖论。
  • 您的DevOps/发布工程团队开始怀疑他们的人生选择,并考虑搬到没有互联网的地方。

忽视AWS标签

  • 您的FinOps团队看到AWS账单时会哭泣(您也会)。
  • 没有人知道哪些实例是测试环境,哪些是生产环境。
  • 您意外终止了首席信息官最喜欢的仪表板。糟糕!!!(是时候更新您的简历了!)

第五轮:如何给Git标签打标签使用

Git标签

  • 使用 git tag v1.0.0 创建轻量级标签。
  • 使用 git tag -a v1.0.0 -m "Version 1.0 release" 创建带注释的标签。
  • 使用 git push origin v1.0.0 推送标签。
  • 您是否意外地给错误的提交打了标签?恭喜,您将迎来一次冒险!
    • 使用 git tag -d v1.0.0 (如果在本地),以及
    • git push --delete origin v1.0.0 (如果在远程)来撤消混乱。
  • 您是否对从1000000个存储库中删除标签感到沮丧,然后使用您的自动化(在Jenkins中的简单脚本可以帮助您节省大量时间和精力)

AWS标签

  • 使用 AWS CLI:aws ec2 create-tags --resources i-1234567890abcdef0 --tags Key=Environment,Value=Production
  • 在AWS控制台中,转到任何资源(如EC2或S3),并在“标签”选项卡下手动添加键值对。
  • 使用AWS组织自动化标记策略,并像标记霸主一样强制执行它们。
  • 您是否忘记给资源打标签?您的AWS账单会提醒您。令人痛苦。

第六轮:高级标记技术

高级Git标记

  • 列出所有标签: git tag -l
  • 标记特定提交:git tag -a v2.0.0 <commit-hash> -m "Version 2.0 发布"
  • 验证签名的标记:git tag -v v1.0.0
  • 将标记移动到不同的提交:git tag -f v1.0.0 <new-commit-hash>
  • 与远程共享所有标记:git push --tags

高级 AWS 标记

  • 列出资源的所有标记:aws resourcegroupstaggingapi get-resources --tag-filters Key=Environment,Values=Production
  • 一次为多个资源打标记:aws ec2 create-tags --resources i-1234567890abcdef0 i-0987654321abcdef0 --tags Key=Project,Value=MyApp
  • 删除标记:aws ec2 delete-tags --resources i-1234567890abcdef0 --tags Key=Environment
  • 在 AWS 控制台中使用 AWS 标记编辑器进行批量标记。
  • 实施 AWS Lambda 函数 来确保所有资源的标记合规性。

第 7 轮:存在主义标记危机

  • 每位工程师都会在某个时刻问自己:标记重要吗?答案是肯定的 — 直到不重要为止。总有一天,您会翻阅多年的 Git 历史,想知道为什么有人将提交标记为 final-final-v2-fix-thatworks-for-sure-this-time。或者您可能会发现一个被标记为 Production 的 EC2 实例,却发现没有人记得它是做什么的。
  • 标记就像在办公室冰箱里标记食物一样重要,但往往会被完全忽视。一切都很有趣,直到你在寻找旧的部署或试图证明一笔昂贵的AWS账单。
  • 因此,谨慎地接受标记。今天多加一个标签可能会在明天避免一场严重危机。或者至少让你和你的经理之间进行一次非常尴尬的对话。

裁决

那么,谁是赢家?嗯,除了他们对“”这个词有着共同点之外,他们之间没有任何共同之处,正如前面所提到的。tag

  • 如果你喜欢历史准确性和记录完善的代码发布,Git标签是你最好的朋友。
  • 如果你喜欢追踪资金去向(或者至少假装你在追踪),AWS标签是不可或缺的。

无论哪种方式,标签都是不为人知的技术英雄,直到它们不再是。所以下次你给某样东西打标记时,请记住一个错误的举动,未来将会变得非常困惑。

祝愉快地打标签!

Source:
https://dzone.com/articles/git-tags-vs-aws-tags-a-tag-tastic-showdown