php - 亚马逊 Lambda 调用错误

标签 php amazon-web-services aws-lambda

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

$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

有什么想法吗?谢谢

最佳答案

您应该授予您的 PHP 代码调用您的 Lambda 函数的权限(否则任何人都可以调用您的代码...)。

您需要创建一个具有正确权限的角色,并确保您的 PHP 代码承担该角色(例如 Cognito 或 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>"
            ]
        }
    ]
}

关于php - 亚马逊 Lambda 调用错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29699958/

相关文章:

node.js - 如何使用node js合并两个json的数据

php - 在 prestashop 中导入数据库

php - 使用 preg_replace 来字符日语

hadoop - slf4j 在 Amazon EMR 上与 Mahout 进行多重绑定(bind)

visual-studio - 无法从Visual Studio(或实际任何地方)连接到AWS EC2

node.js - 使用适用于 Java 的 AWS 开发工具包调用 AWS Lambda 函数时如何检索 context.done() 消息?

amazon-web-services - 使用 Cloudformation AWS SNS 到 SQS 发布失败

php - fatal error : Call to a member function find() on a non-object

php - 后台刷新动态数据

amazon-web-services - 我如何在标签中的 Amazon EC2 过滤器中使用正则表达式