当前位置: 首页 > news >正文

移行前的复盘:CodeCommit 的重要地位分析

前言

截至7月28日,关于AWS CodeCommit的现状如下:

  • 现有账号的现有存储库可以继续使用CodeCommit,不受限制。
  • 之前未使用过CodeCommit的账号(或没有现有存储库的账号)无法创建新的存储库。

这并不意味着CodeCommit的服务会立即终止。然而,无法创建新存储库这一事实一般可以理解为CodeCommit服务的缩减和进入维护阶段。由于该博客的发布是在日本时间的周六,至少目前还没有任何官方声明否定这一解读,个人对此感到有些不安。

本文将回顾CodeCommit所承担的角色,并尽可能整理在新账号无法使用时的影响以及在迁移过程中需要注意的事项。

After giving it a lot of thought, we made the decision to discontinue new access to a small number of services, including AWS CodeCommit.

While we are no longer onboarding new customers to these services, there are no plans to change the features or experience you get today,

We also support migrations to other AWS or third-party solutions better aligned with your evolving needs. Keep the feedback coming. We’re always listening.

 

作为开发者的CodeCommit

从工程师的角度来看,CodeCommit可能是一个不情愿使用的工具。与其他Git服务相比,它并没有明显的优势,相反,缺少的一些功能常常让人困扰。

以下是我个人觉得比较辛苦的几点:

  1. 代码审查功能贫弱:不仅在UI方面存在一些细节问题,而且在代码部分的显示上也有很多限制。例如,当代码超过几千行时就无法显示,这使得基于GUI的顺畅审查变得困难。

  2. 与CodeBuild的分支联动不足:例如,像文章中提到的,使用feature/*等通配符进行触发设置在CodeCommit中难以实现。

作为管理者的CodeCommit

读到这里,可能有人会觉得即使CodeCommit消失了也不会有太大影响。然而,从企业用户的角度来看,它确实有一些显著的优势。至少,我出于以下几个原因选择了使用CodeCommit。

  1. 将Git服务作为AWS生态系统的一部分:CodeCommit是唯一具有以下功能的Git服务:

    • 基于IAM的认证
    • 通过VPC端点进行VPC集成
    • 通过EventBridge进行事件集成

    换句话说,如果采用CodeCommit是为了统一AWS生态系统中的Git存储库操作,那么其消失将会带来影响。

  2. 提供商相同:这一点看起来与第一点类似,但由于提供商相同,可以简化合同管理。

    从企业内部使用的角度来看,与财务或审计部门的协调因为AWS生态系统而变得简单。如果CodeCommit消失,这些部门将会受到影响。虽然CodeCatalyst可以在一定程度上替代这一功能,但考虑到CodeCatalyst目前仅在俄勒冈地区提供服务(即无法在国内区域创建存储库),仍需对此进行权衡。

  3. 存储库管理中的“团队内部控制”:如果整个公司使用GitHub Enterprise等服务,例如,AWS账户和管理员不同,跨组织的存储库发布可能会存在时间延迟。

    虽然这在某种程度上与治理有关,但在CodeCommit的情况下,只要拥有一定的IAM权限就可以使用,因此GitOps可以迅速推进。

如果不能再使用CodeCommit,会带来哪些困扰?

总结到这里,我们可以看出如果不能再使用CodeCommit,可能会带来以下几个困扰:

  1. 对应用开发者来说,影响可能不大:由于应用开发者可以选择其他Git服务来替代,功能上也能满足大部分需求,因此他们可能不会受到太大困扰。

  2. 对基础设施管理来说,可能会遇到一些困扰

    • AWS集成:CodeCommit与AWS的其他服务(如IAM认证、VPC集成和EventBridge事件集成)紧密结合,如果转移到其他Git服务,这些集成将需要重新配置,增加了工作量和复杂性。

    • 会计合同的统一管理:由于CodeCommit和其他AWS服务来自同一提供商,这简化了合同管理。如果切换到其他Git服务,需要处理多个供应商的合同,增加了管理难度。

    • 存储库管理:使用CodeCommit,团队可以利用AWS IAM权限进行快速且高效的存储库管理。如果切换到其他服务,可能会遇到跨组织协调和发布延迟的问题。

大家怎么看呢?如果有其他未提到的案例或观点,请务必分享。

我和CodeCommit

这只是我的个人看法,但我一直认为CodeCommit是当因某些原因难以采用第三方Git服务时的最后一张王牌(最终手段?)。虽然它确实存在一些功能上的不足,但我认为,对于每个项目都进行Git自托管在可用性和运营方面并不现实。

尽管如此,这种想法可能并不多见。我在2023年的工作中曾经采用过CodeCommit,所以对这个变化感到非常惊讶。根据AWS repost

的信息,无法创建新存储库的情况从2024年6月6日开始生效。然而,尽管如此,却没有出现相关的知识分享,可能意味着即使服务缩减了,也不会有太大的使用影响吧……

 Beginning on 06 June 2024, AWS CodeCommit ceased onboarding new customers. Going forward, only customers who have an existing repository in AWS CodeCommit will be able to create additional repositories.

 

迁移候选

作为CodeCommit的迁移候选,如下博客中所述,GitHub和Gitlab等将是基本选择。

https://aws.amazon.com/jp/blogs/devops/how-to-migrate-your-aws-codecommit-repository-to-another-git-provider/

 

迁移候选

作为CodeCommit的迁移候选,如下博客中所述,GitHub和Gitlab等将是基本选择。特别是GitHub,其市场份额大,使用体验也很好。此外,虽然文中没有明确提到,但CodeCatalyst也可以用于创建存储库。

然而,需要注意以下潜在的陷阱,在从CodeCommit迁移时需要加以考虑。特别是CodeCatalyst与现有Code系列的整合似乎并不完善。

与Code系列的整合情况
  • CodeBuild:请注意,CodeCatalyst未包含在CodeBuild的整合目标中。

  • Access your source provider in CodeBuild - AWS CodeBuild

  • AWS CodeBuild now supports GitLab and GitLab Self Managed

  • CodePipeline:请注意,CodeCatalyst未包含在CodePipeline的整合目标中。

  • CodeStarSourceConnection for Bitbucket Cloud, GitHub, GitHub Enterprise Server, GitLab.com, and GitLab self-managed actions - AWS CodePipeline
  • CodeGuru Reviewer/Security:请注意,CodeCatalyst未包含在CodeGuru Reviewer/Security的整合目标中。

  • Getting started with CodeGuru Security - Amazon CodeGuru Security

总结

基于CodeCommit进入维护模式的假设,本文对其进行了总结,并探讨了可能的迁移选项。希望未来会有新的继任服务出现,使这一问题变得不再棘手。

谢谢阅读!

相关文章:

移行前的复盘:CodeCommit 的重要地位分析

前言 截至7月28日,关于AWS CodeCommit的现状如下: 现有账号的现有存储库可以继续使用CodeCommit,不受限制。之前未使用过CodeCommit的账号(或没有现有存储库的账号)无法创建新的存储库。 这并不意味着CodeCommit的服…...

Java中等题-括号生成(力扣)

数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。 示例 1: 输入:n 3 输出:["((()))","(()())","(())()","()(())","()()(…...

Flink 实时数仓(八)【DWS 层搭建(二)流量域、用户域、交易域搭建】

前言 今天的任务是完成流量域最后一个需求、用户域的两个需求以及交易域的部分需求; 1、流量域页面浏览各窗口汇总表 任务:从 Kafka 页面日志主题读取数据,统计当日的首页和商品详情页独立访客数。 注意:一般我们谈到访客&…...

gitlab-runner /var/run/docker.sock connect permission denied

usermod -aG docker gitlab-runner sudo service docker restart参考:https://gitlab.com/gitlab-org/gitlab-runner/-/issues/3492...

网络安全 - 应急响应检查表

前言 本项目旨在为应急响应提供全方位辅助,以便快速解决问题。结合自身经验和网络资料,形成检查清单,期待大家提供更多技巧,共同完善本项目。愿大家在应急之路一帆风顺。 图片皆来源于网络,如有侵权请联系删除。 一…...

AD常用PCB设计规则介绍 (详细版)

AD09常用PCB设计规则介绍 电气设计规则用来设置在电路板布线过程中所遵循的电气方面的规则,包括安全间距、短路、未布线网络和未连接引脚这四个方面的规则: (1)、安全间距规则(clearance) 该规则用于设定在PCB设计中&#xff0…...

mysql主从服务配置

主从MySQL服务器 [rootlocalhost ~]# yum -y install ntpdate [rootlocalhost ~]# ntpdate cn.ntp.org.cn [rootlocalhost ~]# yum -y install rsync [rootlocalhost ~]# vim mysql.sh #!/bin/bash yum list installed |grep libaio if [ $? ne 0 ]; then yum -y install…...

Redis基础总结、持久化、主从复制、哨兵模式、内存淘汰策略、缓存

文章目录 Redis 基础Redis 是什么,有哪些特点为什么要使用 Redis 而不仅仅依赖 MySQLRedis 是单线程吗Redis 单线程为什么还这么快 Redis 数据类型和数据结构五种基本数据结构及应用场景其他数据类型Redis 底层数据结构 Redis 持久化数据不丢失的实现AOF 日志RDB 快…...

Java与Python优劣势对比:具体例子与深入分析

在软件开发的世界里,Java和Python是两座不可忽视的高峰。它们各自拥有独特的优势和应用场景,为开发者提供了多样化的选择。本文将通过具体例子,深入分析Java和Python在不同方面的表现,以期为读者提供更为详尽的参考。 1. 语法简洁…...

C++内存泄漏介绍

C内存泄漏(Memory Leak)是指程序在运行过程中,动态分配的内存没有被适当地释放或回收,导致这部分内存始终被占用,无法再被程序或其他程序使用。这种情况通常发生在使用了new或malloc等函数动态分配内存后,忘…...

C++分析红黑树

目录 红黑树介绍 红黑树的性质与平衡控制关系 红黑树节点的插入 情况1:不需要调整 情况2:uncle节点为红色 情况3:uncle节点为黑色 总结与代码实现 红黑树的删除(待实现) 红黑树的效率 红黑树介绍 红黑树是第二种平衡二…...

mysql线上查询之前要性能调优

查询优化是数据库性能调优的关键方面,目的是减少查询的执行时间和资源消耗。以下是一些常见的查询优化技巧及其示例: 使用合适的索引 问题: 全表扫描导致查询缓慢优化: 为经常用于搜索条件的列添加索引示例: 假设有一…...

GPIO输出控制之LED闪烁、LED流水灯以及蜂鸣器应用案例

系列文章目录 STM32之GPIO(General Purpose Input/Output,通用型输入输出) 文章目录 系列文章目录前言一、LED和蜂鸣器简介1.1 LED1.2 蜂鸣器1.3 面包板 二、LED硬件电路2.1 低电平驱动电路2.2 高电平驱动电路 三、蜂鸣器硬件电路3.1 PNP型三…...

体系结构论文导读(三十四):Design of Reliable DNN Accelerator with Un-reliable ReRAM

文章核心 这篇文章主要讨论了一种在不可靠的ReRAM(阻变存储器)设备上设计可靠的深度神经网络(DNN)加速器的方法。文章提出了两种关键技术来解决ReRAM固有的不可靠性问题:动态定点(DFP)数据表示…...

WebStock会话

其实使用消息队列也可以实现会话&#xff0c;直接前端监听指定的队列&#xff0c;使用rabbitmq的分组还可以实现不同群聊的效果。 1、依赖搭建&#xff1a; <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org…...

5_现有网络模型的使用

教程&#xff1a;现有网络模型的使用及修改_哔哩哔哩_bilibili 官方网址&#xff1a;https://pytorch.org/vision/stable/models.html#classification 初识网络模型 pytorch为我们提供了许多已经构造好的网络模型&#xff0c;我们只要将它们加载进来&#xff0c;就可以直接使…...

软件安全测试报告内容和作用简析,软件测试服务供应商推荐

在数字化时代&#xff0c;软件安全问题愈发凸显&#xff0c;安全测试显得尤为重要。软件安全测试报告是对软件系统在安全性方面进行评估和分析后的书面文件。该报告通常包含测试过程、测试发现、漏洞描述、风险评估及改进建议等重要信息。报告的目的是为了帮助开发团队及时发现…...

算法板子:树形DP、树的DFS——树的重心

思想&#xff1a; 代码&#xff1a; #include <iostream> #include <cstring> using namespace std;const int N 1e5 10;// vis标记当前节点是否被访问过; vis[1]true代表编号为1的节点被访问过 bool vis[N]; // h数组为邻接表; h数组上的每个坑位都串了一个单链…...

在C语言中,联合体或共用体(union )是一种特殊的数据类型,允许在相同的内存位置存储不同的数据类型。

在C语言中&#xff0c;union 是一种特殊的数据类型&#xff0c;允许在相同的内存位置存储不同的数据类型。这意味着 union 中的所有成员共享同一块内存空间&#xff0c;因此它们之间会相互覆盖。在你给出的 Acceleration_type union 定义中&#xff0c;包含了三种不同类型的成员…...

MS2201以太网收发电路

MS2201 是吉比特以太网收发器电路&#xff0c;可以实现超高速度的 全双工数据传输。它的通信遵从 IEEE 802.3 Gigabit Ethernet 协议 中的 10 比特接口的时序要求协议。 MS2201 支持数据传输速率从 1Gbps 到 1.85Gbps 。 主要特点 ◼ 电源电压&#xff1a; 2.5V 、 3.3V …...

synchronized 学习

学习源&#xff1a; https://www.bilibili.com/video/BV1aJ411V763?spm_id_from333.788.videopod.episodes&vd_source32e1c41a9370911ab06d12fbc36c4ebc 1.应用场景 不超卖&#xff0c;也要考虑性能问题&#xff08;场景&#xff09; 2.常见面试问题&#xff1a; sync出…...

使用VSCode开发Django指南

使用VSCode开发Django指南 一、概述 Django 是一个高级 Python 框架&#xff0c;专为快速、安全和可扩展的 Web 开发而设计。Django 包含对 URL 路由、页面模板和数据处理的丰富支持。 本文将创建一个简单的 Django 应用&#xff0c;其中包含三个使用通用基本模板的页面。在此…...

iOS 26 携众系统重磅更新,但“苹果智能”仍与国行无缘

美国西海岸的夏天&#xff0c;再次被苹果点燃。一年一度的全球开发者大会 WWDC25 如期而至&#xff0c;这不仅是开发者的盛宴&#xff0c;更是全球数亿苹果用户翘首以盼的科技春晚。今年&#xff0c;苹果依旧为我们带来了全家桶式的系统更新&#xff0c;包括 iOS 26、iPadOS 26…...

k8s从入门到放弃之Ingress七层负载

k8s从入门到放弃之Ingress七层负载 在Kubernetes&#xff08;简称K8s&#xff09;中&#xff0c;Ingress是一个API对象&#xff0c;它允许你定义如何从集群外部访问集群内部的服务。Ingress可以提供负载均衡、SSL终结和基于名称的虚拟主机等功能。通过Ingress&#xff0c;你可…...

从深圳崛起的“机器之眼”:赴港乐动机器人的万亿赛道赶考路

进入2025年以来&#xff0c;尽管围绕人形机器人、具身智能等机器人赛道的质疑声不断&#xff0c;但全球市场热度依然高涨&#xff0c;入局者持续增加。 以国内市场为例&#xff0c;天眼查专业版数据显示&#xff0c;截至5月底&#xff0c;我国现存在业、存续状态的机器人相关企…...

【解密LSTM、GRU如何解决传统RNN梯度消失问题】

解密LSTM与GRU&#xff1a;如何让RNN变得更聪明&#xff1f; 在深度学习的世界里&#xff0c;循环神经网络&#xff08;RNN&#xff09;以其卓越的序列数据处理能力广泛应用于自然语言处理、时间序列预测等领域。然而&#xff0c;传统RNN存在的一个严重问题——梯度消失&#…...

C# 类和继承(抽象类)

抽象类 抽象类是指设计为被继承的类。抽象类只能被用作其他类的基类。 不能创建抽象类的实例。抽象类使用abstract修饰符声明。 抽象类可以包含抽象成员或普通的非抽象成员。抽象类的成员可以是抽象成员和普通带 实现的成员的任意组合。抽象类自己可以派生自另一个抽象类。例…...

MySQL 8.0 OCP 英文题库解析(十三)

Oracle 为庆祝 MySQL 30 周年&#xff0c;截止到 2025.07.31 之前。所有人均可以免费考取原价245美元的MySQL OCP 认证。 从今天开始&#xff0c;将英文题库免费公布出来&#xff0c;并进行解析&#xff0c;帮助大家在一个月之内轻松通过OCP认证。 本期公布试题111~120 试题1…...

HTML前端开发:JavaScript 常用事件详解

作为前端开发的核心&#xff0c;JavaScript 事件是用户与网页交互的基础。以下是常见事件的详细说明和用法示例&#xff1a; 1. onclick - 点击事件 当元素被单击时触发&#xff08;左键点击&#xff09; button.onclick function() {alert("按钮被点击了&#xff01;&…...

爬虫基础学习day2

# 爬虫设计领域 工商&#xff1a;企查查、天眼查短视频&#xff1a;抖音、快手、西瓜 ---> 飞瓜电商&#xff1a;京东、淘宝、聚美优品、亚马逊 ---> 分析店铺经营决策标题、排名航空&#xff1a;抓取所有航空公司价格 ---> 去哪儿自媒体&#xff1a;采集自媒体数据进…...