如何将本地 php 函数连接到 AWS lambda?

我对此很陌生。我只知道 S3 并且还创建了我的功能。但是,现在我想在我的 php 项目中使用 Lambda。我正在用AWS PHP SDK这个。我在 AWS 上创建了一个 lambda 函数,在其中传递文件名。


lambda 函数从 S3 搜索文件并提供文件内的数据,但现在我想做的是在 php 函数内传递一个文件名,然后将该文件名传递给我的 Lambda 函数并从 S3 搜索文件,然后返回文件内的数据。


这是我在 S3 上的 lambda 函数


import boto3


bucket = 'get-file-lambda-function'

filename = 'myfilename.json'

    

def lambda_handler(event, context):

    s3 = boto3.client('s3')

    file = s3.get_object(Bucket=bucket, Key=filename)

    body = file.get()['Body'].read()

    

return body

这是我的 php 函数,它从 lambda 函数获取数据。现在,我想在我的 php 函数中传递一个文件名。lambda 仅搜索 S3 中的该文件。


public function get_file_data() 

{

    $client = LambdaClient::factory(AWS configrations);


    $filename = /*selected by me*/


    $fileData = $client->invoke([

        // Lambda function name

        'FunctionName' => 'get-file-lambda-function',

    ]);


    return $fileData;

}

我是初学者,所以我现在对此一无所知。有人可以指导我如何实现这一目标吗?


慕田峪7331174
浏览 158回答 1
1回答

缥缈止盈

对于您的要求来说,这实际上很简单。Payload在您的 PHP 应用程序中,您将在调用 invoke 时使用该参数。下面是一个例子public function get_file_data($file_name) {    $client = LambdaClient::factory(AWS configuration);    $filename = /*selected by me*/    $fileData = $client->invoke([        // Lambda function name        'FunctionName' => 'get-file-lambda-function',        'Payload' => json_encode(['bucket' => 'get-file-lambda-function', 'key' => $file_name])    ]);    return $fileData;}然后,在您的 Lambda 函数中,您可以使用事件参数访问此数据。下面是一个例子import boto3s3 = boto3.client('s3')def lambda_handler(event, context):    bucket = event['bucket']    filename = event['key']    file = s3.get_object(Bucket=bucket, Key=filename)    body = file.get()['Body'].read()    return body
打开App,查看更多内容
随时随地看视频慕课网APP