Heim  >  Artikel  >  Backend-Entwicklung  >  Analysieren Sie Benutzerparameter, die von AWS CodePipeline an AWS Lambda in Go gesendet werden

Analysieren Sie Benutzerparameter, die von AWS CodePipeline an AWS Lambda in Go gesendet werden

Susan Sarandon
Susan SarandonOriginal
2024-10-03 06:41:30314Durchsuche

Parse UserParameters sent from AWS CodePipeline to AWS Lambda in Go

Kontext

Ich habe versucht, die UserParameters-Konfiguration innerhalb der generierten AWS CodePipeline-Vorlage einzurichten,

Name: ...
Actions:
  - Name: Invoke-Lambda
    ActionTypeId:
      Category: Invoke
      Owner: AWS
      Provider: Lambda
      Version: '1'
    Configuration:
      FunctionName: exampleLambdaFunction
      UserParameters: '{"example":"user-parameters"}'

Beim Testen auf einem in Go geschriebenen AWS Lambda dauerte es etwas länger als gewöhnlich, die Funktionsdefinition für den Handler herauszufinden und das AWS CodePipeline JSON-Ereignis zu analysieren, das gesendet werden würde, zum Beispiel:

{
    "CodePipeline.job": {
        "id": "11111111-abcd-1111-abcd-111111abcdef",
        "accountId": "111111111111",
        "data": {
            "actionConfiguration": {
                "configuration": {
                    "FunctionName": "exampleLambdaFunction",
                    "UserParameters": "{\"example\":\"user-parameters\"}"
                }
            },
            "inputArtifacts": [
               ...
            ],
            ...
        }
    }
}

Lösung

Verwenden Sie den Paketlink github.com/aws/aws-lambda-go/events, der das events.CodePipelineJobEvent enthält, das beim Unmarshalieren des gesendeten AWS CodePipeline JSON-Ereignisses hilft

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)
}

Referenzen

  • 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

Das obige ist der detaillierte Inhalt vonAnalysieren Sie Benutzerparameter, die von AWS CodePipeline an AWS Lambda in Go gesendet werden. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn