go - 如何在 go 中编写前/后流量挂钩函数?
问题描述
我开始使用 AWS SAM,现在我只有一些单元测试,但我想尝试在预流量挂钩函数中运行集成测试。
不幸的是,似乎没有 Golang 的代码示例,我只能找到 Javascript。
从这个示例中,我拼凑出我必须使用代码部署 SDK 并调用PutLifecycleEventHookExecutionStatus,但具体情况仍不清楚。go的aws 代码示例存储库也没有代码部署示例。
有关我正在寻找的主题的更多信息,请访问https://github.com/awslabs/serverless-application-model/blob/master/docs/safe_lambda_deployments.rst#pretraffic-posttraffic-hooks。
我想从测试一个简单地查询 DynamoDB 的 lambda 函数开始。
解决方案
像这样的工作:
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()
}
推荐阅读
- c# - Int64 不支持 C# 中的模式匹配
- python - 从行创建表
- ios - 即使设备连接到 Wifi 或 mobileData,也可以检查互联网可用性
- reactjs - 如何使用 Reactstrap 自定义列
- typescript - 如何在 testcafe 中指定主测试文件?(也就是避免“未定义夹具”的其他方法)
- java - 如何修复 CWE 829 - 包含不受信任的控制领域的功能
- javascript - 在 X 秒后添加类,然后在 X 秒后连续删除类
- c++ - lambda(参数)中的 const 限定符,用于带有 std::sregex_token_iterator 的 std::transform
- reactjs - 如何使用道具形成图像网址
- python - 如何使用颜色图并在使用 matplotlib 的堆叠条上为某个值指定特定颜色