从Lambda调用CreateEventSource所需的IAM策略是什么?

时间:2018-04-13 20:37:40

标签: amazon-web-services aws-lambda

我创建了一个可以在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');
    }

谢谢, 智

0 个答案:

没有答案