我创建了一个可以在dynamoDB表上创建触发器的Lambda,并设置触发器来调用另一个lambda。
我使用node.js并且能够从命令行成功测试它。
但是,当我部署我的lamdba并使用AWS中的Test选项调用该函数时,我收到一个错误。这基本上是一个访问问题。
我的IAM策略设置为允许lambda在serverless.yml中访问以下内容 - 效果:允许 行动: - lambda:CreateEventSourceMapping 资源: - arn:aws:lambda:us-west-2:account:function:*
我是否应该让我的Lambda创建该政策?
这是我的Lambda代码(节点8.10):
const AWS = require('aws-sdk');
const lambda = new AWS.Lambda({ region: "us-" });
exports.handler = async (event, context, callback) => {
let streamARN = "arn:aws:dynamodb:us-west-2:<ACCOUNTID>:table/dev-<TABLE>/stream/2018-04-04<TIMESTAMP>";
let functionName = "record-dynamo-table-history";
var params = {
"EventSourceArn": streamARN,
"FunctionName": functionName,
"StartingPosition": "LATEST",
"BatchSize": 100
};
console.log("Check Status and Create Trigger:" + JSON.stringify(params, null, 2));
try {
console.log("Calling CreateEvent Source.");
const eventResults = await lambda.createEventSourceMapping(params).promise();
console.log("Event Source Mapping Response:" + JSON.stringify(eventResults, null, 2));
if (eventResults) {
//check if streaming was enabled
if (eventResults.hasOwnProperty("State")) {
console.log("State of create event is available")
}
}
} catch (err) {
console.log("Error createEventSourceMapping" + err);
}
callback(null, 'Hello from Lambda');
}
谢谢, 智