Как мне написать функцию до / после трафика в Go? - PullRequest
0 голосов
/ 28 декабря 2018

Я начал использовать AWS SAM, и пока у меня есть только некоторые модульные тесты, но я хочу попробовать запустить интеграционные тесты в функции предварительной обработки трафика.

К сожалению, похоже, нет примера кода для Golangвсе, что я мог найти, было для Javascript.

Из этого примера, который я собрал, я должен использовать код развертывания SDK и вызвать PutLifecycleEventHookExecutionStatus , но специфика остаетсянеясно.В репозитории с кодом aws для go также нет примеров для развертывания кода.

Более подробная информация по теме, которую я ищу, доступна здесь https://github.com/awslabs/serverless-application-model/blob/master/docs/safe_lambda_deployments.rst#pretraffic-posttraffic-hooks.

Iхочу начать с тестирования лямбда-функции, которая просто запрашивает DynamoDB.

1 Ответ

0 голосов
/ 19 июля 2019

Примерно так работает:

package main

import (
    "context"
    "encoding/json"

    "github.com/aws/aws-lambda-go/lambda"
    "github.com/aws/aws-sdk-go/aws/session"
    "github.com/aws/aws-sdk-go/service/codedeploy"
)

type CodeDeployEvent struct {
    DeploymentId                  string `json:"deploymentId"`
    LifecycleEventHookExecutionId string `json:"lifecycleEventHookExecutionId"`
}

func HandleRequest(ctx context.Context, event CodeDeployEvent) (string, error) {

    // add some tests here and change status flag as needed . . .

    client := codedeploy.New(session.New())
    params := &codedeploy.PutLifecycleEventHookExecutionStatusInput{
        DeploymentId:                  &event.DeploymentId,
        LifecycleEventHookExecutionId: &event.LifecycleEventHookExecutionId,
        Status:                        "Succeeded",
    }

    req, _ := client.PutLifecycleEventHookExecutionStatusRequest(params)

    _ = req.Send()
}
...