移行前的复盘: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服务相比,它并没有明显的优势,相反,缺少的一些功能常常让人困扰。
以下是我个人觉得比较辛苦的几点:
-
代码审查功能贫弱:不仅在UI方面存在一些细节问题,而且在代码部分的显示上也有很多限制。例如,当代码超过几千行时就无法显示,这使得基于GUI的顺畅审查变得困难。
-
与CodeBuild的分支联动不足:例如,像文章中提到的,使用feature/*等通配符进行触发设置在CodeCommit中难以实现。
作为管理者的CodeCommit
读到这里,可能有人会觉得即使CodeCommit消失了也不会有太大影响。然而,从企业用户的角度来看,它确实有一些显著的优势。至少,我出于以下几个原因选择了使用CodeCommit。
-
将Git服务作为AWS生态系统的一部分:CodeCommit是唯一具有以下功能的Git服务:
- 基于IAM的认证
- 通过VPC端点进行VPC集成
- 通过EventBridge进行事件集成
换句话说,如果采用CodeCommit是为了统一AWS生态系统中的Git存储库操作,那么其消失将会带来影响。
-
提供商相同:这一点看起来与第一点类似,但由于提供商相同,可以简化合同管理。
从企业内部使用的角度来看,与财务或审计部门的协调因为AWS生态系统而变得简单。如果CodeCommit消失,这些部门将会受到影响。虽然CodeCatalyst可以在一定程度上替代这一功能,但考虑到CodeCatalyst目前仅在俄勒冈地区提供服务(即无法在国内区域创建存储库),仍需对此进行权衡。
-
存储库管理中的“团队内部控制”:如果整个公司使用GitHub Enterprise等服务,例如,AWS账户和管理员不同,跨组织的存储库发布可能会存在时间延迟。
虽然这在某种程度上与治理有关,但在CodeCommit的情况下,只要拥有一定的IAM权限就可以使用,因此GitOps可以迅速推进。
如果不能再使用CodeCommit,会带来哪些困扰?
总结到这里,我们可以看出如果不能再使用CodeCommit,可能会带来以下几个困扰:
-
对应用开发者来说,影响可能不大:由于应用开发者可以选择其他Git服务来替代,功能上也能满足大部分需求,因此他们可能不会受到太大困扰。
-
对基础设施管理来说,可能会遇到一些困扰:
-
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设计中࿰…...

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

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

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

算法板子:树形DP、树的DFS——树的重心
思想: 代码: #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语言中,union 是一种特殊的数据类型,允许在相同的内存位置存储不同的数据类型。这意味着 union 中的所有成员共享同一块内存空间,因此它们之间会相互覆盖。在你给出的 Acceleration_type union 定义中,包含了三种不同类型的成员…...

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

乐乐音乐Kotlin版
简介 乐乐音乐Kotlin版,主要是基于ExoPlayer框架开发的Android音乐播放器,它支持lrc歌词和动感歌词(ksc歌词、krc歌词、trc歌词、zrce歌词和hrc歌词等)、多种格式歌词转换器及制作动感歌词、翻译歌词和音译歌词。 编译环境 Android Studio Jellyfish | …...

C语言——预处理和指针
C语言——预处理和指针 预处理宏宏定义宏的作用域带参的宏 文件包含条件编译 指针指针的概念指针的定义指针变量初始化指针一维整型数组 预处理 编程的流程分为:编辑、编译、运行、调试四个阶段; 预处理属于编译阶段,编译过程又可以分为&…...

iptables防火墙(一)
目录 1、Linux防火墙基础 2、iptables的四表五链结构 2.1 iptables的四表五链结构介绍 2.2 四表五链 2.2.1 四表 2.2.2 五链 2.3 包过滤的匹配流程 2.3.1 规则链之间匹配顺序 2.3.2 规则链内部的处理规则 2.3.3 数据包过滤的匹配流程 3、 编写防火墙规则 3.1 iptabe…...

(leetcode学习)50. Pow(x, n)
实现 pow(x, n) ,即计算 x 的整数 n 次幂函数(即,xn )。 示例 1: 输入:x 2.00000, n 10 输出:1024.00000示例 2: 输入:x 2.10000, n 3 输出:9.26100示例 …...

QT 5.12.0 for Windows 安装包 QT静态库 采用源码静态编译生成
qt-5.12.0-static.zip 下载地址(资源整理不易,下载使用需付费,且文件较大,不能接受请勿浪费时间下载): 链接:https://pan.baidu.com/s/1ftfHFG_jGFwVaOAvBVrNFg?pwdtvtp 提取码:tvtp...

【生成式人工智能-三-promote 神奇咒语RL增强式学习RAG】
如何激发模型的能力 提示词 promotCoTRL 增强式学习Reforcement learning提供更多的资料提供一些范例Incontext- learning 任务拆解让模型自己检查错误让模型多次生成答案Tree of Thoughts让模型使用其他工具RAG写程序POT其他工具 让多个模型合作参考 在模型不变的情况下&#…...

C++连接oracle数据库连接字符串
//远程连接,需要安装oracle客户端sprintf(szConnect4, ("Provider OraOLEDB.Oracle.1; Password %s; Persist Security Info True; User ID %s; Data Source \"(DESCRIPTION (ADDRESS_LIST (ADDRESS (PROTOCOL TCP)(HOST %s)(PORT 1521)) )(CONN…...

判断字符串是否接近:深入解析及优化【字符串、哈希表、优化过程】
本文将详细解析解决这个问题的思路,并逐步优化实现方案。 问题描述 给定两个字符串 word1 和 word2,如果通过以下操作可以将 word1 转换为 word2,则认为它们是接近的: 交换任意两个现有字符。将一个现有字符的每次出现转换为另…...

C 和 C++ 中信号处理简单介绍
信号处理是编程中一个重要的主题,特别是在需要处理异步事件和错误情况的系统中。在 C 和 C 语言中,信号处理机制提供了一种优雅的方式来响应特定的系统事件,例如用户中断、异常情况或其他信号。在这里,我将详细介绍 C 和 C 中信号…...

什么是云边协同?
当今信息技术高速发展的时代,"云边协同"(Edge Cloud Collaboration)已经成为一个备受关注的话题。它涉及到云计算和边缘计算的结合,为数据处理、存储和应用提供了全新的可能性。本文将介绍云边协同的概念、优势以及在不…...