2016-06-14 12 views
1

Ich möchte AWS Lambda verwenden, um eine Cronjob-Stil HTTP-Anfrage zu machen. Leider kenne ich Python nicht.Lambda-Funktion, um einfache HTTP-Anfrage zu machen

Ich fand, dass sie eine "Kanarienvogel" -Funktion hatten, die dem zu ähneln scheint, was ich will. Wie kann ich dies vereinfachen, um einfach die HTTP-Anfrage zu stellen? Ich muss nur eine PHP-Datei auslösen.

from __future__ import print_function 

from datetime import datetime 
from urllib2 import urlopen 

SITE = 'https://www.amazon.com/' # URL of the site to check 
EXPECTED = 'Online Shopping' # String expected to be on the page 


def validate(res): 
    '''Return False to trigger the canary 

    Currently this simply checks whether the EXPECTED string is present. 
    However, you could modify this to perform any number of arbitrary 
    checks on the contents of SITE. 
    ''' 
    return EXPECTED in res 


def lambda_handler(event, context): 
    print('Checking {} at {}...'.format(SITE, event['time'])) 
    try: 
     if not validate(urlopen(SITE).read()): 
      raise Exception('Validation failed') 
    except: 
     print('Check failed!') 
     raise 
    else: 
     print('Check passed!') 
     return event['time'] 
    finally: 
     print('Check complete at {}'.format(str(datetime.now()))) 

Antwort

3

Dieses Programm wird "einfach die HTTP-Anfrage stellen."

from urllib2 import urlopen 

SITE = 'https://www.amazon.com/' # URL of the site to check 

def lambda_handler(event, context): 
    urlopen(SITE) 
+0

Danke für die Hilfe - ich fühle mich so dumm so eine einfache Sache zu fragen, aber ich habe nie gelernt, Python und alle Sprachen, die ich kenne, sind nicht auf ihrer Liste :) –

+0

Werde dieser Lauf in dem Frequenzsatz in Lambda? Wo ist das in dieser Funktion eingestellt? –

+0

Mein Verständnis ist, dass Sie die AWS Lambda-Konsole oder CLI verwenden, um die Häufigkeit anzugeben. Wenn Sie nach einem Funktionsnamen gefragt werden, geben Sie " .lambda_handler" an, und die obige Funktion wird mit der von Ihnen angegebenen Häufigkeit aufgerufen. –

3

können Sie verwenden Requests (http://docs.python-requests.org/en/master/) mit der Antwort in einfacher Art und Weise zu arbeiten.

import requests 

URL = 'https://www.amazon.com/' 
def lambda_handler(event, context): 
    requests.get(URL) 
+0

Es schien mir, dass "Anfragen" in der Standard-Lambda-Umgebung nicht verfügbar war. Weißt du, ob es ist? –

+0

Ich weiß, dass ich dumm bin, wenn ich das frage, aber wie kann ich das tun, um jeden Tag in Lambda zu laufen? Beim Erstellen von benutzerdefinierten Funktionen scheint es nicht die Cron-Optionen zu haben, die die Kanarienvogel-Funktion hatte - oder ändere ich einfach die Kanarienvogel-Funktion? –

+0

@AmyNeville, versuchen Sie, dieses Tutorial zu lesen: http://docs.aws.amazon.com/lambda/latest/dg/with-scheduledevents-example.html oder diese Referenz: http://docs.aws.amazon.com/ lambda/neuste/dg/mit-geplante-ereignisse.html –