Joe*_*ell 5 php json amazon-web-services laravel-5 aws-lambda
我正在尝试使用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)
]);
Run Code Online (Sandbox Code Playgroud)
出于某种原因,我在第21行的StatusCodeVisitor.php中遇到ErrorException."非法字符串偏移'StatusCode'"
当我不包括
'Payload' => json_encode($payload)
Run Code Online (Sandbox Code Playgroud)
然后我没有得到错误,但我也没有将任何数据传递给我的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');
Run Code Online (Sandbox Code Playgroud)
还要记住,如果您进行了更改,则$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');
};
Run Code Online (Sandbox Code Playgroud)
更新
你可以传递这样的信息:
$payload = array(
"key1" => array(),
"key2" => array()
);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7098 次 |
| 最近记录: |