无法在PHP客户端中获取aws lambda函数响应
我试图按照文档中的说明使用PHP调用一个简单的Aws Lambda函数,但没有得到期望的响应 PHP 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(
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());
打印“”;
是的,省得我头疼。谢谢,伙计,谢谢。花了一个多小时才找到这个。