从 AWS CodeCommit 事件中执行自定义操作 - AWS Prescriptive Guidance

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

从 AWS CodeCommit 事件中执行自定义操作

由 Abdullahi Olaoye (AWS) 编写

环境:PoC 或试点

技术: DevOps; 管理和治理

AWS 服务:AWS CodeCommit;亚马逊 SNS

Summary

当您使用 AWS CodeCommit 存储库存储代码时,您可能需要监控存储库并在发生特定事件时启动操作工作流程。例如,您可能希望在用户评论提交中的一行代码时发送电子邮件通知,或者在提交后启动 AWS Lambda 函数,以对存储库内容执行安全扫描。此模式概述了为自定义操作配置 CodeCommit 存储库的步骤。该模式使用 AWS CodeCommit 通知规则捕获感兴趣的事件,然后将这些事件发送到已配置的目标。

先决条件和限制

先决条件

  • 一个有效的 Amazon Web Services account。

  • 熟悉 Git 命令。

  • AWS CodeCommit,设置完毕。有关说明,请参阅为 AWS 进行设置 CodeCommit

  • (推荐)安装和配置 AWS 命令行界面(AWS CLI)。有关说明,请参阅 AWS CLI 入门

架构

AWS 代码提交事件、Amazon SNS 订阅和生成的操作的架构图。

工具

Amazon Web Services

  • AWS CodeCommit 是一项完全托管的源代码控制服务,可托管基于 Git 的安全存储库。它使团队可以轻松地在安全且高度可扩展的生态系统中就代码进行协作。 CodeCommit 无需操作自己的源代码控制系统或担心扩展其基础架构

  • Amazon Simple Notification Service (Amazon SNS)是一项 Web 服务,通过该服务,应用程序、终端用户和设备可以发送和接收来自云的通知。Amazon SNS 为高吞吐量、基于推送的消息传递提供主题(通信渠道)。 many-to-many 使用 Amazon SNS 主题,发布者可以向大量订阅用户分发消息以进行并行处理,包括 Amazon Simple Queue Service (Amazon SQS) 队列、AWS Lambda 函数以及 HTTP/S 网络钩子。您还可以使用 Amazon SNS,通过移动推送、SMS 和电子邮件向最终用户发送通知。

操作说明

任务描述所需技能

创建 CodeCommit 存储库。

使用 CodeCommit 控制台或 AWS CLI 创建 CodeCommit 存储库。有关说明,请参阅创建 CodeCommit 存储库

DevOps 工程师

将内容推送到 CodeCommit 存储库。

创建存储后,使用 Git 命令向其中添加内容。您可以从计算机迁移现有 Git 存储库的内容,或本地未受版本控制的内容。有关说明,请参阅向存储库添加文件迁移到 AWS CodeCommit

DevOps 工程师
任务描述所需技能

创建 SNS 主题。

此 SNS 主题接收来自的事件。 CodeCommit有关说明,请参阅创建 Amazon SNS 主题

云架构师、 DevOps 工程师

为自定义操作创建资源。

若要执行自定义操作,必须创建相应的资源。例如,如果您的自定义操作是运行 Lambda 代码并将消息发送至 SQS 队列,则必须创建 Lambda 函数和 SQS 队列。电子邮件和短信通知等操作不需要资源。有关更多信息,请参阅您正在创建资源类型的 AWS 文档

云架构师、 DevOps 工程师

将自定义操作资源订阅至 SNS 主题。

根据自定义操作,您可按相应的协议创建订阅。例如,您订阅电子邮件地址以接收电子邮件通知,订阅用于运行自定义代码的 Lambda 函数,或者订阅用于向 Amazon SQS 发送事件的 SQS 队列。对于电子邮件和短信等订阅协议,您需要分别通过发送电子邮件或电话号码的链接确认订阅。有关说明,请参阅 Amazon SNS 主题

云架构师、 DevOps 工程师
任务描述所需技能

为 CodeCommit 存储库创建通知规则。

创建通知规则时,您可以选择启动通知的 Git 事件,选择 SNS 主题作为目标类型,然后选择之前创建的 SNS 主题。您也可为存储库配置多个目标。有关说明,请参阅创建通知规则

DevOps 工程师

测试自定义操作。

配置以下事件,以发起通知。例如,如果您选择拉取请求作为触发条件,请创建拉取请求。您应看到自定义操作总数。例如,如果您为一个电子邮件地址订阅 SNS 主题,您应接收电子邮件通知。

DevOps 工程师

相关资源