繁体   English   中英

使用AWS PHP SDK将“Payload”传递给AWS Lambda函数

[英]Passing a 'Payload' to an AWS Lambda function with the AWS PHP SDK

我正在尝试使用aws php sdk来调用aws-lambda函数并获取返回值,如下所示:

    $client = LambdaClient::factory([
        'key' => 'mykey',
        'secret' => 'mysecret',
        'region' => 'us-west-2'
    ]);

    $payload = [
        'key1' => 'value1',
        'key2' => 'value2',
        'key3' => 'value3'
    ];

    $result = $client->invoke([
        'FunctionName' => 'testFunction',
        'Payload' => json_encode($payload)
    ]);

出于某种原因,我在第21行的StatusCodeVisitor.php中遇到ErrorException。“非法字符串偏移'StatusCode'”

当我不包括

'Payload' => json_encode($payload) 

然后我没有得到错误,但我也没有将任何数据传递给我的lambda函数,这违背了目的。

任何人都可以看到我可能做错的事吗? 这似乎是一个微不足道的例子。

编辑 - 添加有关此功能的文档的链接

http://docs.aws.amazon.com/aws-sdk-php/v2/api/class-Aws.Lambda.LambdaClient.html#_invoke

我遇到了同样的问题,并且由于一些奇怪的原因,AWS SDK无法识别PHP中的关联数组。 也许是因为在JSON编码时,PHP中的关联数组成为对象而SDK期望它作为数组。

如下更改$payload将解决此问题。

$payload = array('test1', 'test3', 'test3');

还要记住,如果您在$payload进行了更改,则需要在Lambda函数中访问它们,如下所示:

exports.handler = function(event, context) {
    console.log('value1 =', event[0]);
    console.log('value2 =', event[1]);
    console.log('value3 =', event[2]);
    context.succeed(event);  // Echo back the first key value
    // context.fail('Something went wrong');
};

更新

你可以传递这样的信息:

$payload = array(
                "key1" => array(),
                "key2" => array()
            );

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM