Adg*_*aza 3 go aws-lambda serverless
invoke local无服务器处理请求负载的方式与部署到 AWS 时的行为似乎有所不同。
预期的行为是您将从请求正文中提取有效负载,如下所示......
func Handler(ctx context.Context, request events.APIGatewayProxyRequest)
Run Code Online (Sandbox Code Playgroud)
然后将其解组为您的数据类型,如下所示......
type SearchQuery struct {
Caller string `json:"caller"`
Value string `json:"value"`
}
Run Code Online (Sandbox Code Playgroud)
err := json.Unmarshal([]byte(request.Body), &searchQuery)
Run Code Online (Sandbox Code Playgroud)
但是,当使用该--data标志在本地调用该函数时,有效负载不在request.Body.
events.APIGatewayProxyRequest) {
Resource: (string) "",
Path: (string) "",
HTTPMethod: (string) "",
Headers: (map[string]string) <nil>,
MultiValueHeaders: (map[string][]string) <nil>,
QueryStringParameters: (map[string]string) <nil>,
MultiValueQueryStringParameters: (map[string][]string) <nil>,
PathParameters: (map[string]string) <nil>,
StageVariables: (map[string]string) <nil>,
RequestContext: (events.APIGatewayProxyRequestContext) {
AccountID: (string) "",
ResourceID: (string) "",
Stage: (string) "",
RequestID: (string) "",
Identity: (events.APIGatewayRequestIdentity) {
CognitoIdentityPoolID: (string) "",
AccountID: (string) "",
CognitoIdentityID: (string) "",
Caller: (string) "",
APIKey: (string) "",
AccessKey: (string) "",
SourceIP: (string) "",
CognitoAuthenticationType: (string) "",
CognitoAuthenticationProvider: (string) "",
UserArn: (string) "",
UserAgent: (string) "",
User: (string) ""
},
ResourcePath: (string) "",
Authorizer: (map[string]interface {}) <nil>,
HTTPMethod: (string) "",
APIID: (string) ""
},
Body: (string) "",
IsBase64Encoded: (bool) false
}
Run Code Online (Sandbox Code Playgroud)
仅当您使用数据类型作为请求参数时才能提取它,如下所示......
func Handler(ctx context.Context, request SearchQuery) (Response, error)
Run Code Online (Sandbox Code Playgroud)
有没有办法让这两个环境同样工作?
我通过使用--patharg 而不是--dataarg 并像这样写出有效负载来实现此目的。
serverless invoke local -f myfunc --log --path mydata.json
{
"body": "{\"caller\": \"foo\", \"value\": \"clark.kent@example.com\"}"
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1721 次 |
| 最近记录: |