使用 Lambda 的 AWS API 权限问题
Permission Issue at an AWS API using Lambda
我正在使用 https://www.apitester.com/ 测试我新部署的 AWS API。
如您所见,我无法访问 API。 API 已部署,Lambda 代码如下所示。
const AWS = require('aws-sdk');
var bucket = new AWS.S3();
exports.handler = (event, context, callback) => {
let data =JSON.parse(event.body);
var params = {
"Body": data,
"Bucket": "smartmatressbucket",
// "Key": filePath
};
bucket.upload(params, function(err, data){
if(err) {
callback(err, null);
} else {
let response = {
"statusCode": 200,
"headers": {
"my_header": "my_value"
},
"body": JSON.stringify(data),
"isBase64Encoded": false
};
callback(null, response);
}
});
};
查看响应日志,API 网关似乎生成了 "ForbiddenException"。我认为最可能的原因是使用了不正确的 API URL(例如 - https://ogk2hm09j0.execute-api.eu-central-1.amazonaws.com/)。
假设您将 Lambda 函数配置为资源名称 "resourceA" 的 GET 方法。然后将 API 部署到名为 "dev" 的阶段。那么正确的URL应该是https://ogk2hm09j0.execute-api.eu-central-1.amazonaws.com/dev/resourceA
但是查看日志中的API URL,似乎未指定阶段名称或资源名称。
我正在使用 https://www.apitester.com/ 测试我新部署的 AWS API。 如您所见,我无法访问 API。 API 已部署,Lambda 代码如下所示。
const AWS = require('aws-sdk');
var bucket = new AWS.S3();
exports.handler = (event, context, callback) => {
let data =JSON.parse(event.body);
var params = {
"Body": data,
"Bucket": "smartmatressbucket",
// "Key": filePath
};
bucket.upload(params, function(err, data){
if(err) {
callback(err, null);
} else {
let response = {
"statusCode": 200,
"headers": {
"my_header": "my_value"
},
"body": JSON.stringify(data),
"isBase64Encoded": false
};
callback(null, response);
}
});
};
查看响应日志,API 网关似乎生成了 "ForbiddenException"。我认为最可能的原因是使用了不正确的 API URL(例如 - https://ogk2hm09j0.execute-api.eu-central-1.amazonaws.com/)。
假设您将 Lambda 函数配置为资源名称 "resourceA" 的 GET 方法。然后将 API 部署到名为 "dev" 的阶段。那么正确的URL应该是https://ogk2hm09j0.execute-api.eu-central-1.amazonaws.com/dev/resourceA
但是查看日志中的API URL,似乎未指定阶段名称或资源名称。