AWS Lambda - 通过直接调用 PHP curl
AWS Lambda - Invoke by straight PHP curl
好的,
所以我知道 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,因为插件已经在使用它,只是想做一个直卷曲call 调用函数,不打算使用API 网关,如何?
****** 更新 ******
解决了我的问题,低着头...我无法使用已经加载的 SDK 的原因是 版本控制问题...哦。暂时卡在超老版本,还好用
问题仍然存在,因为我是一个坚持简单的人,我宁愿自己知道如何做,也不愿导入一个超大的库(用大锤敲钉子之类的东西)。很想听听解决方案!
使用 AWS API 网关非常简单 link 它到您的 Lambda 函数。您只需创建一个资源和阶段,将其关联到您的 Lambda 函数,然后部署 API。从那里,您将收到一个 public URL 发送请求到将执行您的 Lambda 函数。
据我所知,这是通过 HTTP(S) 执行 Lambda 函数的唯一方法
$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);
好的,
所以我知道 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,因为插件已经在使用它,只是想做一个直卷曲call 调用函数,不打算使用API 网关,如何?
****** 更新 ******
解决了我的问题,低着头...我无法使用已经加载的 SDK 的原因是 版本控制问题...哦。暂时卡在超老版本,还好用
问题仍然存在,因为我是一个坚持简单的人,我宁愿自己知道如何做,也不愿导入一个超大的库(用大锤敲钉子之类的东西)。很想听听解决方案!
使用 AWS API 网关非常简单 link 它到您的 Lambda 函数。您只需创建一个资源和阶段,将其关联到您的 Lambda 函数,然后部署 API。从那里,您将收到一个 public URL 发送请求到将执行您的 Lambda 函数。
据我所知,这是通过 HTTP(S) 执行 Lambda 函数的唯一方法
$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);