Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/253.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
AWS Lambda-通过直接PHP curl调用_Php_Wordpress_Amazon Web Services_Invoke_Aws Lambda - Fatal编程技术网

AWS Lambda-通过直接PHP curl调用

AWS Lambda-通过直接PHP curl调用,php,wordpress,amazon-web-services,invoke,aws-lambda,Php,Wordpress,Amazon Web Services,Invoke,Aws Lambda,好, 所以我知道AWS PHP SDK。我不想使用它来进行curl调用以调用lambda函数 我发现了一些关于使用API网关的东西。我也不想使用API网关。我只想这样: $endPoint = "https://urltoinvokethefunction" $ch = curl_init(); $chOptions = [ CURLOPT_URL => $endPoint, //credentials, headers, etc etc ]; curl_setopt_ar

好,

所以我知道AWS PHP SDK。我不想使用它来进行curl调用以调用lambda函数

我发现了一些关于使用API网关的东西。我也不想使用API网关。我只想这样:

$endPoint = "https://urltoinvokethefunction"
$ch = curl_init();
$chOptions = [
    CURLOPT_URL => $endPoint,
    //credentials, headers, etc etc
];
curl_setopt_array($ch, $chOptions);
$result = curl_exec($ch);
这有可能吗?我希望它尽可能简单,只是一个直接的curl调用来调用函数。据我所知,这是SDK中正在发生的事情,因此不使用SDK必须是可能的

我知道最明智的方法是使用SDK,我以前也成功地使用过它。我遇到了一个不幸的情况,即试图将自定义业务逻辑添加到过时的CMS蜘蛛网中,而SDK已经包含在插件中,我不能简单地在自定义函数中重用已命名的SDK

tldr在Wordpress中编写一个publish_post钩子,不能使用AWS SDK,因为插件已经在使用它,只是想直接调用curl来调用函数,而不是使用API网关,如何

******更新******

解决了我的问题,低着头。。。我无法使用已经加载的SDK的原因是版本控制问题。。。哦。目前仍在使用超旧版本,但它可以工作


但问题仍然存在,因为我是一个坚持简单的人,我宁愿自己知道如何去做,也不愿导入一个超大的库(用大锤敲钉子之类的东西)。很想听到一个解决办法

使用AWS API网关将其链接到Lambda函数非常简单。您只需创建一个资源和阶段,将其与Lambda函数关联,然后部署API。从那里,您将收到一个公共URL,向其发送请求,该URL将执行Lambda函数


据我所知,这是通过HTTP执行Lambda函数的唯一方法。

您必须通过对请求进行签名的过程来使用您的帐户凭据调用AWS API,这是一个巨大的痛苦。使用SDK实现这一点要容易得多。如果你想要一个“直接的curl调用”来调用Lambda函数,那么API网关是唯一的方法。我想这会很痛苦,这就是为什么我想知道在潜水之前是否有人已经做了:p
$data = array(‘key’=>'key1');
$data_string = json_encode($data);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,"ENTER_YOUR_PUBLIC_URL");
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, “POST”); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch, CURLOPT_HTTPHEADER, array( 
‘Content-Type: application/json’, 
‘Content-Length: ‘ . strlen($data_string)) 
); 
$result = curl_exec($ch);