"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Analyser les paramètres utilisateur envoyés d'AWS CodePipeline à AWS Lambda en Go

Analyser les paramètres utilisateur envoyés d'AWS CodePipeline à AWS Lambda en Go

Publié le 2024-11-01
Parcourir:642

Parse UserParameters sent from AWS CodePipeline to AWS Lambda in Go

Contexte

J'essayais de configurer la configuration UserParameters dans le modèle AWS CodePipeline en cours de génération,

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

Lors du test sur un AWS Lambda, écrit en Go, il a fallu un peu plus de temps que d'habitude pour trouver la définition de fonction du gestionnaire, pour analyser l'événement JSON AWS ​​CodePipeline qui serait envoyé, par exemple :

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

Solution

Utilisez le lien du package github.com/aws/aws-lambda-go/events qui contient l'événement events.CodePipelineJobEvent qui permet de désorganiser l'événement JSON AWS ​​CodePipeline envoyé

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

Références

  • 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
Déclaration de sortie Cet article est reproduit sur: https://dev.to/prithvijj/parse-userparameters-sent-from-aws-codepiline-to-aws-lambda-in-go-ffe?1 s'il y a une contrefaçon, veuillez contacter [email protected] pour le supprimer.
Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3