Хорошо,
Итак, я знаю о AWS PHP SDK. я не делайте хочу использовать его для вызова curl для вызова лямбда-функции.
Я нашел кое-что об использовании API Gateway. Я также не делайте хочу использовать API Gateway. Я просто хочу быть похожим на:
$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; написав хук publish_post в WordPress, я не могу использовать AWS SDK, потому что плагин уже использует его, просто ищет прямой вызов curl для вызова функции, не собирается использовать API Gateway, как?
****** ОБНОВИТЬ ******
Решил мою проблему, низко опустив голову … причина, по которой я не мог использовать уже загруженный SDK, была проблема с версиями… d’о. Попробую использовать супер старую версию на данный момент, но она работает.
Однако этот вопрос все еще остается, потому что я сторонник простоты, и я предпочел бы просто знать, как сделать это самому, а не импортировать супер огромную библиотеку (кувалду, чтобы забить гвоздь). Любопытно услышать решение!
Использовать AWS API Gateway очень просто, чтобы связать его с вашей функцией Lambda. Вы просто создаете ресурс и этап, связываете его с вашей функцией Lambda, а затем внедряете API. Оттуда вы получите общедоступный URL-адрес для отправки запросов, которые будут выполнять вашу функцию Lambda.
Насколько мне известно, это единственный способ выполнить лямбда-функцию через HTTP (S)
$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);