无法在PHP客户端中获取aws lambda函数响应

无法在PHP客户端中获取aws lambda函数响应,php,node.js,amazon-web-services,aws-lambda,Php,Node.js,Amazon Web Services,Aws Lambda,我试图按照文档中的说明使用PHP调用一个简单的Aws Lambda函数,但没有得到期望的响应 PHP Lambda客户端 require './aws/aws-autoloader.php'; use Aws\Lambda\LambdaClient; $client = LambdaClient::factory(array( 'version' => "latest", 'credentials' => array(

我试图按照文档中的说明使用PHP调用一个简单的Aws Lambda函数,但没有得到期望的响应

PHP Lambda客户端
require './aws/aws-autoloader.php';
use Aws\Lambda\LambdaClient;

$client = LambdaClient::factory(array(
            'version' => "latest",
            'credentials' => array(
                'key' => '*******',
                'secret' => '*******'
            ),
            'region' => '*******'
        ));

$response = $client->invoke([
    'FunctionName' => 'myLambda', // REQUIRED
    'InvocationType' => 'RequestResponse',
    'Payload' => '{"key":"value"}',
        ]);

echo "<pre>";
print_r($response);
print_r($response->data);

?>
亚马逊的回应
require './aws/aws-autoloader.php';
use Aws\Lambda\LambdaClient;

$client = LambdaClient::factory(array(
            'version' => "latest",
            'credentials' => array(
                'key' => '*******',
                'secret' => '*******'
            ),
            'region' => '*******'
        ));

$response = $client->invoke([
    'FunctionName' => 'myLambda', // REQUIRED
    'InvocationType' => 'RequestResponse',
    'Payload' => '{"key":"value"}',
        ]);

echo "<pre>";
print_r($response);
print_r($response->data);

?>
我得到一个我无法访问的私有数据对象。根据文档,有效载荷应该是函数的响应。但是,我得到了一个对象,我同样无法访问它,因为父对象数据是私有的

$result = $client->invoke(array(
          // FunctionName is required
          'FunctionName' => 'myService-beta-hello',
          'InvocationType' => 'RequestResponse',
            'LogType' => 'Tail',
            'Payload' => '{"key1":"value1", "key2":"value2","key3":"value3"}',
            //'Qualifier' => 'string',
                ));
print "<pre>";
print_r($result);
print_r($result['Payload']->getContents());
print "</pre>";
那么,如何访问Lambda函数的响应呢?这里可能有什么问题

更新

require './aws/aws-autoloader.php';
use Aws\Lambda\LambdaClient;

$client = LambdaClient::factory(array(
            'version' => "latest",
            'credentials' => array(
                'key' => '*******',
                'secret' => '*******'
            ),
            'region' => '*******'
        ));

$response = $client->invoke([
    'FunctionName' => 'myLambda', // REQUIRED
    'InvocationType' => 'RequestResponse',
    'Payload' => '{"key":"value"}',
        ]);

echo "<pre>";
print_r($response);
print_r($response->data);

?>
我可以使用
print\r($response['Payload'])访问有效负载

但是,它仍然是无用的,因为有效载荷没有按预期的那样来。

哦!我找到了答案。 您需要调用
有效负载
中的
GuzzleHttp\Psr7\Stream
对象的
\uuuu toString()
方法

所以,做一个
print_r($response['Payload']->\u_toString())
打印“Success”,这是Lambda函数所需的响应,也是我一直在寻找的响应


希望这对将来有帮助。

另一种方法是调用stream对象的,
getContents()
,如下所示:

require_once 'aws/aws-autoloader.php';
use Aws\Lambda\LambdaClient;
$client = LambdaClient::factory([
    'version' => 'latest',
    'region'  => 'us-east-1',
    'credentials' => [
        'key'    => 'YOUR_AWS_ACCESS_KEY_ID',
        'secret' => 'YOUR_AWS_SECRET_ACCESS_KEY',
     ]
]);

$result = $client->invoke([
    // The name your created Lamda function
    'FunctionName' => 'calculation',
]);

var_dump((string)$result->get('Payload'));
$result=$client->invoke(数组)(
//FunctionName是必需的
'FunctionName'=>'myService beta hello',
'InvocationType'=>'RequestResponse',
'LogType'=>'Tail',
'Payload'=>'{“key1”:“value1”,“key2”:“value2”,“key3”:“value3”},
//'限定符'=>'字符串',
));
打印“”;
打印(结果);
打印($result['Payload']->getContents());
打印“”;

是的,省得我头疼。谢谢,伙计,谢谢。花了一个多小时才找到这个。