簡體   English   中英

使用AWS PHP SDK將“Payload”傳遞給AWS Lambda函數

[英]Passing a 'Payload' to an AWS Lambda function with the AWS PHP SDK

我正在嘗試使用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函數,這違背了目的。

任何人都可以看到我可能做錯的事嗎? 這似乎是一個微不足道的例子。

編輯 - 添加有關此功能的文檔的鏈接

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()
            );

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM