当前位置: 首页 > 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 …...

多云管理“拦路虎”:深入解析网络互联、身份同步与成本可视化的技术复杂度​

一、引言&#xff1a;多云环境的技术复杂性本质​​ 企业采用多云策略已从技术选型升维至生存刚需。当业务系统分散部署在多个云平台时&#xff0c;​​基础设施的技术债呈现指数级积累​​。网络连接、身份认证、成本管理这三大核心挑战相互嵌套&#xff1a;跨云网络构建数据…...

CVPR 2025 MIMO: 支持视觉指代和像素grounding 的医学视觉语言模型

CVPR 2025 | MIMO&#xff1a;支持视觉指代和像素对齐的医学视觉语言模型 论文信息 标题&#xff1a;MIMO: A medical vision language model with visual referring multimodal input and pixel grounding multimodal output作者&#xff1a;Yanyuan Chen, Dexuan Xu, Yu Hu…...

微软PowerBI考试 PL300-选择 Power BI 模型框架【附练习数据】

微软PowerBI考试 PL300-选择 Power BI 模型框架 20 多年来&#xff0c;Microsoft 持续对企业商业智能 (BI) 进行大量投资。 Azure Analysis Services (AAS) 和 SQL Server Analysis Services (SSAS) 基于无数企业使用的成熟的 BI 数据建模技术。 同样的技术也是 Power BI 数据…...

AI Agent与Agentic AI:原理、应用、挑战与未来展望

文章目录 一、引言二、AI Agent与Agentic AI的兴起2.1 技术契机与生态成熟2.2 Agent的定义与特征2.3 Agent的发展历程 三、AI Agent的核心技术栈解密3.1 感知模块代码示例&#xff1a;使用Python和OpenCV进行图像识别 3.2 认知与决策模块代码示例&#xff1a;使用OpenAI GPT-3进…...

pam_env.so模块配置解析

在PAM&#xff08;Pluggable Authentication Modules&#xff09;配置中&#xff0c; /etc/pam.d/su 文件相关配置含义如下&#xff1a; 配置解析 auth required pam_env.so1. 字段分解 字段值说明模块类型auth认证类模块&#xff0c;负责验证用户身份&am…...

全球首个30米分辨率湿地数据集(2000—2022)

数据简介 今天我们分享的数据是全球30米分辨率湿地数据集&#xff0c;包含8种湿地亚类&#xff0c;该数据以0.5X0.5的瓦片存储&#xff0c;我们整理了所有属于中国的瓦片名称与其对应省份&#xff0c;方便大家研究使用。 该数据集作为全球首个30米分辨率、覆盖2000–2022年时间…...

ESP32 I2S音频总线学习笔记(四): INMP441采集音频并实时播放

简介 前面两期文章我们介绍了I2S的读取和写入&#xff0c;一个是通过INMP441麦克风模块采集音频&#xff0c;一个是通过PCM5102A模块播放音频&#xff0c;那如果我们将两者结合起来&#xff0c;将麦克风采集到的音频通过PCM5102A播放&#xff0c;是不是就可以做一个扩音器了呢…...

Java多线程实现之Thread类深度解析

Java多线程实现之Thread类深度解析 一、多线程基础概念1.1 什么是线程1.2 多线程的优势1.3 Java多线程模型 二、Thread类的基本结构与构造函数2.1 Thread类的继承关系2.2 构造函数 三、创建和启动线程3.1 继承Thread类创建线程3.2 实现Runnable接口创建线程 四、Thread类的核心…...

力扣热题100 k个一组反转链表题解

题目: 代码: func reverseKGroup(head *ListNode, k int) *ListNode {cur : headfor i : 0; i < k; i {if cur nil {return head}cur cur.Next}newHead : reverse(head, cur)head.Next reverseKGroup(cur, k)return newHead }func reverse(start, end *ListNode) *ListN…...

STM32HAL库USART源代码解析及应用

STM32HAL库USART源代码解析 前言STM32CubeIDE配置串口USART和UART的选择使用模式参数设置GPIO配置DMA配置中断配置硬件流控制使能生成代码解析和使用方法串口初始化__UART_HandleTypeDef结构体浅析HAL库代码实际使用方法使用轮询方式发送使用轮询方式接收使用中断方式发送使用中…...