"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > Go에서 AWS CodePipeline에서 AWS Lambda로 전송된 UserParameter를 구문 분석합니다.

Go에서 AWS CodePipeline에서 AWS Lambda로 전송된 UserParameter를 구문 분석합니다.

2024-11-01에 게시됨
검색:383

Parse UserParameters sent from AWS CodePipeline to AWS Lambda in Go

문맥

생성 중인 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": [
               ...
            ],
            ...
        }
    }
}

해결책

전송되는 AWS CodePipeline JSON 이벤트를 비정렬화하는 데 도움이 되는 events.CodePipelineJobEvent가 포함된 github.com/aws/aws-lambda-go/events 패키지 링크를 사용하십시오.

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
릴리스 선언문 이 기사는 https://dev.to/prithvijj/parse-userparameters-sent-from-aws-codepipeline-to-aws-lambda-in-go-ffe?1에서 복제됩니다. 침해 사항이 있는 경우, Study_golang에 문의하십시오. @163.com 삭제
최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3