aws lambda php,使用AWS PHP SDK将“Payload”传递给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)

]);

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

当我不包括

'Payload' => json_encode($payload)

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

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

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

解决方法:

我遇到了同样的问题,并且由于一些奇怪的原因,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()

);

标签:json,php,amazon-web-services,laravel-5,aws-lambda

来源: https://codeday.me/bug/20190609/1204699.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值