Ermitteln des Zwecks Ihrer Funktion - Amazon CloudFront

Ermitteln des Zwecks Ihrer Funktion

Bevor Sie Ihren Funktionscode schreiben, bestimmen Sie den Zweck Ihrer Funktion. Die meisten Funktionen in CloudFront Functions haben einen der folgenden Zwecke.

Unabhängig vom Zweck Ihrer Funktion ist handler der Einstiegspunkt für jede Funktion. Es wird ein einziges Argument namens event benötigt, das von CloudFront an die Funktion übergeben wird. event ist ein JSON-Objekt, das eine Darstellung der HTTP-Anfrage enthält (und der Antwort, wenn Ihre Funktion die HTTP-Antwort ändert).

Ändern der HTTP-Anforderung in einem Viewer-Anforderungsereignistyp

Ihre Funktion kann die HTTP-Anforderung ändern, die CloudFront vom Viewer (Client) erhält, und die geänderte Anforderung zur weiteren Verarbeitung an CloudFront zurückgeben. Beispielsweise könnte Ihr Funktionscode den Cache-Schlüssel normalisieren oder Anforderungs-Header ändern.

Nachdem Sie eine Funktion erstellt und veröffentlicht haben, die die HTTP-Anforderung ändert, achten Sie darauf, eine Zuordnung zum Ereignistyp der Viewer-Anforderung hinzuzufügen. Weitere Informationen finden Sie unter Erstellen der Funktion. Dadurch wird die Funktion jedes Mal ausgeführt, wenn CloudFront eine Anforderung von einem Viewer erhält, bevor überprüft wird, ob sich das angeforderte Objekt im CloudFront-Cache befindet.

Beispiel

Der folgende Pseudocode zeigt die Struktur einer Funktion, die die HTTP-Anfrage ändert.

function handler(event) { var request = event.request; // Modify the request object here. return request; }

Die Funktion gibt das geänderte request-Objekt an CloudFront zurück. CloudFront verarbeitet die zurückgegebene Anfrage weiter, indem der CloudFront-Cache auf einen Cache-Treffer überprüft und die Anfrage bei Bedarf an den Ursprung gesendet wird.

Generieren einer HTTP-Antwort in einem Viewer-Anforderungsereignistyp

Ihre Funktion kann am Edge eine HTTP-Antwort generieren und diese direkt an den Betrachter (Client) zurückgeben, ohne nach einer zwischengespeicherten Antwort oder einer weiteren Verarbeitung durch CloudFront zu suchen. Beispielsweise könnte Ihr Funktionscode die Anfrage an eine neue URL umleiten oder nach Autorisierung suchen und eine 401- oder 403-Antwort auf nicht autorisierte Anfragen zurückgeben.

Wenn Sie eine Funktion erstellen, die eine HTTP-Antwort generiert, achten Sie darauf, den Ereignistyp der Betrachteranfrage auszuwählen. Dies bedeutet, dass die Funktion jedes Mal ausgeführt wird, wenn CloudFront eine Anfrage von einem Betrachter erhält, bevor CloudFront die weitere Verarbeitung der Anfrage durchführt.

Beispiel

Der folgende Pseudocode zeigt die Struktur einer Funktion, die eine HTTP-Antwort generiert.

function handler(event) { var request = event.request; var response = ...; // Create the response object here, // using the request properties if needed. return response; }

Die Funktion gibt ein response-Objekt an CloudFront zurück, das CloudFront sofort an den Betrachter zurückgibt, ohne den CloudFront-Cache zu überprüfen oder eine Anfrage an den Ursprung zu senden.

Ändern der HTTP-Antwort in einem Viewer-Antwortereignistyp

Ihre Funktion kann die HTTP-Antwort ändern, bevor CloudFront sie an den Betrachter (Client) sendet, unabhängig davon, ob die Antwort aus dem CloudFront-Cache oder dem Ursprung stammt. Beispielsweise könnte Ihr Funktionscode Antwortheader, Statuscodes oder Textinhalte hinzufügen oder ändern.

Wenn Sie eine Funktion erstellen, die die HTTP-Antwort ändert, achten Sie darauf, den Ereignistyp Betrachterantwort zu wählen. Dies bedeutet, dass die Funktion ausgeführt wird, bevor CloudFront eine Antwort an den Betrachter zurückgibt, unabhängig davon, ob die Antwort aus dem CloudFront-Cache oder dem Ursprung stammt.

Beispiel

Der folgende Pseudocode zeigt die Struktur einer Funktion, die die HTTP-Antwort ändert.

function handler(event) { var request = event.request; var response = event.response; // Modify the response object here, // using the request properties if needed. return response; }

Die Funktion gibt das geänderte response-Objekt an CloudFront zurück, welches CloudFront sofort an den Betrachter zurückgibt.

Weitere Informationen zum Arbeiten mit CloudFront Functions finden Sie in den folgenden Themen: