2016-08-11 1 views
0

D'accord,AWS Lambda - Invoke par PHP droite boucle

Je suis au courant de l'AWS SDK PHP. Je ne pas vouloir l'utiliser pour faire un appel curl pour appeler une fonction lambda.

J'ai trouvé des choses sur l'utilisation de API Gateway. Je ai également voulez pas utiliser API Gateway. Je veux juste être comme:

$endPoint = "https://urltoinvokethefunction" 
$ch = curl_init(); 
$chOptions = [ 
    CURLOPT_URL => $endPoint, 
    //credentials, headers, etc etc 
]; 
curl_setopt_array($ch, $chOptions); 
$result = curl_exec($ch); 

Est-ce possible? Je veux que ce soit aussi simple que possible, juste un appel curl direct pour invoquer la fonction. Pour autant que je sache, c'est ce qui se passe dans le SDK de toute façon, donc cela doit être possible sans utiliser le SDK.

Je sais que la manière la plus sensée serait d'utiliser le SDK, et je l'ai utilisé avec succès auparavant. Je suis confronté à un scénario malheureux consistant à essayer d'ajouter une logique métier personnalisée à un site web obsolète d'un CMS, et où le SDK est déjà inclus dans un plugin, je ne peux pas simplement réutiliser le SDK déjà nommé dans une fonction personnalisée .

tldr; écrire un poste publish_post dans Wordpress, ne peut pas utiliser le SDK AWS parce qu'un plugin l'utilise déjà, il suffit de faire un appel curl direct pour invoquer la fonction, ne pas utiliser API Gateway, comment?

****** ****** MISE À JOUR

a résolu mon problème, suspendu la tête basse ... la raison pour laquelle je ne pouvais pas utiliser le SDK déjà chargé était un problème versioning .. d'oh. Coincé en utilisant une version super ancienne pour l'instant, mais cela fonctionne. La question subsiste cependant, parce que je suis un stickler pour la simplicité, et je préfère juste savoir comment le faire moi-même plutôt que d'importer une bibliothèque super énorme (sledgehammer pour marteler un clou de quelque chose). Curieux d'entendre une solution!

+1

Vous devrez passer par le processus de signature de la demande d'invoquer l'API AWS avec vos identifiants de compte , ce qui est une énorme douleur. Il est beaucoup plus facile d'utiliser le SDK pour cela. Si vous voulez un appel "straight curl" pour appeler une fonction Lambda alors API Gateway est vraiment le seul moyen. –

+0

Ce sont les deux choses que j'ai dites que je ne veux pas faire hahahahah. Je pensais que ce serait une douleur, c'est pourquoi j'aimerais savoir si quelqu'un l'a déjà fait avant de plonger: p – Meowts

Répondre

1

L'utilisation d'AWS API Gateway est très simple pour la lier à votre fonction Lambda. Vous créez simplement une ressource et une étape, l'associez à votre fonction Lambda, puis déployez l'API. À partir de là, vous recevrez une URL publique pour envoyer des requêtes qui exécuteront votre fonction Lambda.

A ma connaissance, ceci est la seule façon d'exécuter une fonction lambda sur HTTP (S)

0
$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);