2015-04-17 111 views
4

我需要从PHP调用我的Amazon Lambda函数,但是当我拥有AWSLambdaFullAccess权限时,我遇到了奇怪的权限错误。 我的代码:亚马逊Lambda调用错误

$client = LambdaClient::factory(array(
'key' => 'AKI...G', 
'secret' => 'VXD...YOse', 
'region' => 'us-west-2' 
)); 
$result = $client->invokeAsync(array(
'FunctionName' => 'arn:aws:lambda:us-west-2:180...52:function:fe...st', 
'InvokeArgs' => json_encode($array), 
)); 

这是错误:

User: arn:aws:iam::69...67:user/developer is not authorized to 
perform: lambda:InvokeFunction on resource: 
arn:aws:lambda:us-west-2:180...52:function:fe...st 

任何想法?谢谢

回答

5

你应该给你的PHP代码权限来调用你的Lambda函数(否则每个人都可以调用你的代码...)。

您需要创建一个具有正确权限的角色,并确保您的PHP代码承担该角色(例如Cognit或EC2角色)。

的作用应该包括类似:

{ 
    "Version": "2012-10-17", 
    "Statement": [ 
     { 
      "Sid": "Stmt1234567890", 
      "Effect": "Allow", 
      "Action": [ 
       "lambda:InvokeFunction" 
      ], 
      "Resource": [ 
       "arn:aws:lambda:us-west-2:<YOUR-ACOUNT-ID>:function:<YOUR-FUNCTION-NAME>" 
      ] 
     } 
    ] 
} 
+0

凡把JSON片段? –

+0

此JSON片段是您在IAM权限中定义角色时需要放置的内容。在AWS管理控制台中,您可以选择向角色添加权限,并且可以在此处粘贴此代码段。 – Guy