Я пытаюсь использовать 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)
]);
По какой-то причине я получаю ErrorException в StatusCodeVisitor.php в строке 21. «Недопустимое смещение строки« StatusCode »»
Когда я не включаю
'Payload' => json_encode($payload)
Тогда я не получаю сообщение об ошибке, но я также не передаю никаких данных в свою лямбда-функцию, которая противоречит цели.
Кто-нибудь может увидеть что-то, что я могу делать неправильно? Это кажется тривиальным примером.
Редактировать — Добавление ссылки на документацию по этой функции
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()
);
Других решений пока нет …