英文:
How do I test my function parameters in a API Gateway proxy lambda function created with AWS SDK?
问题
I created a REST API with multiple Lambda function integrations. Here is an example of one function.
export const handler = (event: APIGatewayEvent, params: { Bucket: any; Key: any; }) => {
var method = event.httpMethod;
const bucketName = params.Bucket;
const keyName = params.Key;
if (method === "POST") {
const resp = client.getSignedUrl('getObject', {
Bucket: bucketName,
Key: keyName,
Expires: 100 //time to expire in seconds
})
return {
statusCode: 200,
headers: {},
body: JSON.stringify(resp)
};
}
return {
statusCode: 400,
headers: {},
body: "Bad Request"
};
}
When I try to test my function with Postman, I am unsure if I am including these parameters in the right area OR I had set them up incorrectly in my function.
I receive these errors in my lambda logs. Thanks.
"errorType": "MultipleValidationErrors",
"errorMessage": "There were 2 validation errors:\n* MissingRequiredParameter: Missing required key 'Bucket' in params\n* MissingRequiredParameter: Missing required key 'Key' in params"
英文:
I created a REST API with multiple Lambda function integrations. Here is an example of one function.
export const handler = (event: APIGatewayEvent, params: { Bucket: any; Key: any; }) =>{
var method = event.httpMethod;
const bucketName = params.Bucket;
const keyName = params.Key;
if (method === "POST") {
const resp = client.getSignedUrl('getObject', {
Bucket: bucketName,
Key: keyName,
Expires: 100 //time to expire in seconds
})
return {
statusCode: 200,
headers: {},
body: JSON.stringify(resp)
};}
return {
statusCode: 400,
headers: {},
body: "Bad Request"
};
}
When I try to test my function with Postman, I am unsure if I am including these parameters in the right area OR I had set them up incorrectly in my function.
I receive these errors in my lambda logs. Thanks.
"errorType": "MultipleValidationErrors",
"errorMessage": "There were 2 validation errors:\n* MissingRequiredParameter: Missing required key 'Bucket' in params\n* MissingRequiredParameter: Missing required key 'Key' in params"
答案1
得分: 1
Lambda函数是如何被调用的?你会传递事件JSON吗?
我可以通过引用我的示例来回答这个问题。我有一个名为upload的Lambda函数,我在其中使用指定文件名的事件JSON。Lambda函数通过调用**presigner.presignPutObject()**来生成预签名URL。
Lambda函数是使用Java运行时API实现的,您可以看到我获取文件名的逻辑。
接下来,我设置了一个接受PUT请求的API Gateway端点,该API Gateway使用了这个Lambda函数。
现在,我可以通过使用Postman发送PUT请求来调用API Gateway端点。当我这样做时,我传递JSON,如下所示:
Lambda函数获取文件名,PUT请求成功,返回了一个预签名URL。因此,您需要检查如何调用Lambda函数。如果您正在使用事件JSON,仍然需要从Postman请求中传递事件JSON。在您的POSTMAN PIC中,您没有传递事件JSON。
英文:
How is your Lambda function invoked. DO you pass it Event JSON?
I can answer this by referencing my example. I have a Lambda function named upload where I use Event JSON that specifies a file name. The Lambda function generates a presigned URL by invoking presigner.presignPutObject().
The Lambda function is implemented using the Java run-time API and you can see the logic where i get the value of filename.
Next, I setup an API Gateway endpoint that accepts a PUT. That API Gateway uses this Lambda function.
Now I can invoke the API Gateway endpoint by sending a PUT Request using Postman. When I do - i pass JSON - as shown here:
The Lambda function gets the filename and the PUT request is successful and a presigned URL is returned. SO you need to check how to invoke the LAMBDA function. If you are using Event JSON, you still need to pass Event JSON from the Postman request. In your POSTMAN PIC - you are not passing Event JSON.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论