管道中 AWS lambda 函数的输入

问题描述


我是 AWS 的新手,我正在尝试使用其服务设置测试环境,如下所示:
我设置了一个管道(使用 AWS 代码管道),每次新推送到我的在线存储库时都会触发该管道(AWS 代码提交)。
然后,我使用 AWS 代码构建在我的项目上运行单元测试(在 python 中)。我可以使用 AWS cloud watch 看到测试结果(在 AWS 代码构建服务的输出日志中)。
之后,我想设置一个 lambda 函数来解析日志并生成单元测试结果的摘要,以通过 AWS SES 发送到我的电子邮件

不幸的是,我无法理解如何将 AWS 代码构建输出日志作为输入传输到 lambda 函数。我只能使用 lambda 函数中定义的认“事件”结构,即在每次构建代码后触发,并解析其部分数据(我设法将日志保存在 S3 中,但我不知道是否和我该如何使用它们)。

此外,我想根据将推送提交到存储库的用户将测试摘要发送到特定的电子邮件。 如何获取提交推送的用户信息并将其插入到例如 lambda 函数中,该函数将识别用户并将测试摘要发送到其电子邮件?有没有更简单的方法来构建我的测试环境?

提前致谢!

解决方法

您可以配置 AWS Codebuild 作业以将日志发送到 S3 存储桶,如下面的代码片段所示

enter image description here

从那里您可以配置您的 S3 Events Notification 并将您的 lambda 挂钩。

就我阅读的文档而言,有三种验证代码提交的方法,只有一种提供了通过会话标签获取代码提交者电子邮件地址的相关解决方案。

  • HTTPs(Git 凭证 IAM 用户没有电子邮件地址)
  • SSH(再次没有电子邮件地址)
  • HTTPS Git Remote Commit

所以你只剩下Authorization based on CodeCommit tags,推荐用于

如果您想使用根帐户、联合访问或临时凭证连接到 CodeCommit,您应该使用 git-remote-codecommit

设置访问

您需要在此处将各个部分连接在一起Monitoring CodeCommit events in Amazon EventBridge and Amazon CloudWatch Events

因为一旦代码提交的事件被信息触发(假设您使用 GRC),您需要等待代码构建作业完成,这将您的作业日志放入 s3,最终您的 lambda 被触发。

我将使用 AWS Step Function Parallel Workflow,其中来自代码提交的事件触发 lambda,然后 Step function Code Build works 为我完成其余的工作。但这只是一种选择,您也可以通过 lambda 来处理集成。