登录
首页 >  Golang >  Go教程

在 Go 中解析从 AWS CodePipeline 发送到 AWS Lambda 的 UserParameters

来源:dev.to

时间:2024-10-08 21:36:58 266浏览 收藏

本篇文章主要是结合我之前面试的各种经历和实战开发中遇到的问题解决经验整理的,希望这篇《在 Go 中解析从 AWS CodePipeline 发送到 AWS Lambda 的 UserParameters》对你有很大帮助!欢迎收藏,分享给更多的需要的朋友学习~

在 Go 中解析从 AWS CodePipeline 发送到 AWS Lambda 的 UserParameters

语境

我尝试在生成的 aws codepipeline 模板中设置 userparameters 配置,

name: ...
actions:
  - name: invoke-lambda
    actiontypeid:
      category: invoke
      owner: aws
      provider: lambda
      version: '1'
    configuration:
      functionname: examplelambdafunction
      userparameters: '{"example":"user-parameters"}'

在用 go 编写的 aws lambda 上对其进行测试时,需要比平时更长的时间才能找到处理程序的函数定义,以解析将发送的 aws codepipeline json 事件,例如:

{
    "codepipeline.job": {
        "id": "11111111-abcd-1111-abcd-111111abcdef",
        "accountid": "111111111111",
        "data": {
            "actionconfiguration": {
                "configuration": {
                    "functionname": "examplelambdafunction",
                    "userparameters": "{\"example\":\"user-parameters\"}"
                }
            },
            "inputartifacts": [
               ...
            ],
            ...
        }
    }
}

解决方案

使用 github.com/aws/aws-lambda-go/events 包链接,其中包含 events.codepipelinejobevent,可帮助解组正在发送的 aws codepipeline json 事件

package main

import (
    "context"
    "fmt"
    "github.com/aws/aws-lambda-go/events"
    "github.com/aws/aws-lambda-go/lambda"
)

func Handler(ctx context.Context, event events.CodePipelineJobEvent) (string, error) {
    fmt.Printf("received codepipeline event function name: %+v\n", event.CodePipelineJob.Data.ActionConfiguration.Configuration.FunctionName)
    fmt.Printf("received codepipeline event user parameters: %+v\n", event.CodePipelineJob.Data.ActionConfiguration.Configuration.UserParameters)
    return "cool", nil
}

func main() {
    lambda.Start(Handler)
}

参考

  • https://docs.aws.amazon.com/codepipeline/latest/userguide/action-reference-lambda.html
  • https://docs.aws.amazon.com/codepipeline/latest/userguide/action-reference-lambda.html#action-reference-lambda-event
  • https://github.com/aws/aws-lambda-go/blob/main/events/codepipeline_job.go

今天带大家了解了的相关知识,希望对你有所帮助;关于Golang的技术知识我们会一点点深入介绍,欢迎大家关注golang学习网公众号,一起学习编程~

声明:本文转载于:dev.to 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>