为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
慕田峪7331174 2023-07-21 18:22:29
我对此很陌生。我只知道 S3 并且还创建了我的功能。但是,现在我想在我的 php 项目中使用 Lambda。我正在用AWS PHP SDK这个。我在 AWS 上创建了一个 lambda 函数,在其中传递文件名。lambda 函数从 S3 搜索文件并提供文件内的数据,但现在我想做的是在 php 函数内传递一个文件名,然后将该文件名传递给我的 Lambda 函数并从 S3 搜索文件,然后返回文件内的数据。这是我在 S3 上的 lambda 函数import boto3bucket = '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;}我是初学者,所以我现在对此一无所知。有人可以指导我如何实现这一目标吗?
查看完整描述

1 回答

?
缥缈止盈

TA贡献2041条经验 获得超4个赞

对于您的要求来说,这实际上很简单。


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 boto3


s3 = 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


查看完整回答
反对 回复 2023-07-21
  • 1 回答
  • 0 关注
  • 121 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号