6

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) 

その後、エラーは発生しませんが、ラムダ関数にデータを渡さないため、目的が無効になります。

誰かが私が間違っている可能性があるものを見ることができますか? これは些細な例のように思えます。

編集 - この関数に関するドキュメントへのリンクを追加

http://docs.aws.amazon.com/aws-sdk-php/v2/api/class-Aws.Lambda.LambdaClient.html#_invoke

4

1 に答える 1

8

私は同じ問題に直面し、何らかの奇妙な理由で 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()
            );
于 2015-05-27T18:09:53.233 に答える