Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services 从Lambda调用CreateEventSource需要什么IAM策略?_Amazon Web Services_Aws Lambda - Fatal编程技术网

Amazon web services 从Lambda调用CreateEventSource需要什么IAM策略?

Amazon web services 从Lambda调用CreateEventSource需要什么IAM策略?,amazon-web-services,aws-lambda,Amazon Web Services,Aws Lambda,我已经创建了一个Lambda,它可以在dynamoDB表上创建一个触发器,并将该触发器设置为调用另一个Lambda 我使用node.js,并且能够从命令行成功地测试它 但是,当我部署lamdba并使用AWS中的Test选项调用函数时,我得到了一个错误。这基本上是一个访问问题 我的IAM策略设置为允许lambda访问serverless.yml中的以下内容 -效果:允许 行动: -lambda:CreateEventSourceMapping 资源: -arn:aws:lambda:us-west

我已经创建了一个Lambda,它可以在dynamoDB表上创建一个触发器,并将该触发器设置为调用另一个Lambda

我使用node.js,并且能够从命令行成功地测试它

但是,当我部署lamdba并使用AWS中的Test选项调用函数时,我得到了一个错误。这基本上是一个访问问题

我的IAM策略设置为允许lambda访问serverless.yml中的以下内容 -效果:允许 行动: -lambda:CreateEventSourceMapping 资源: -arn:aws:lambda:us-west-2:账户:功能:*

我是否应该授予Lambda创建策略的其他权限

这是我的Lambda代码(节点8.10):

const AWS=require('AWS-sdk');
const lambda=新的AWS.lambda({区域:“us-”});
exports.handler=async(事件、上下文、回调)=>{
让streamARN=“arn:aws:dynamodb:us-west-2::table/dev-/stream/2018-04-04”;
让functionName=“记录发电机表历史记录”;
变量参数={
“EventSourceArn”:streamARN,
“FunctionName”:FunctionName,
“起始位置”:“最新”,
“批量大小”:100
};
log(“检查状态并创建触发器:”+JSON.stringify(params,null,2));
试一试{
log(“调用CreateEvent源”);
const eventResults=await lambda.createEventSourceMapping(params.promise();
log(“事件源映射响应:+JSON.stringify(eventResults,null,2));
如果(事件结果){
//检查流媒体是否已启用
if(eventResults.hasOwnProperty(“State”)){
日志(“创建事件的状态可用”)
}
}
}捕捉(错误){
log(“Error createEventSourceMapping”+err);
}
回调(null,“来自Lambda的你好”);
}
谢谢,
Nachi

你能分享一下错误吗?当然,以下是错误
error createEventSourceMappingAccessDeniedException:User:arn:aws:sts:::假定角色/ods-service-dev-us-west-2-lambdaRole/dev-xxxxxxx-create-dyno-table-trigger未被授权在资源上执行:lambda:CreateEventSourceMapping:*结束请求ID:\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu?
    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');
    }