[PYTHON] Un mémo lors de la création d'un environnement qui peut être débogué avec Lambda @ Edge pour le moment

Chose que tu veux faire

Créez quelque chose qui fonctionne avec la configuration minimale lors du développement avec Lambda @ Edge Je souhaite développer en déboguant en l'utilisant Le langage est Python 3.7 (3.8 n'est actuellement pas pris en charge)

Constitution

Demande → CloudFront → S3 Insérez Lamda @ Edge qui génère des journaux dans CloudWatch Logs et ne fait rien d'autre

Préparation de S3

Créez un seau adapté avec S3 Mettez un index.html approprié (cette fois, cela ressemble à ceci)

index.html


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html lang="ja">
<head>
<title>Test de la page d'accueil</title>
</head>
<body>
<h1>Test de la page d'accueil</h1>
<p>Il est actuellement en construction.
</body>
</html>

Donner l'accès public au bucket スクリーンショット 2020-01-07 12.48.49.png

Vérifiez si index.html peut être affiché sur le navigateur à partir de "l'URL de l'objet" du bucket

S'il peut être affiché, le réglage de S3 est terminé Activez les paramètres d'hébergement statique S3 et spécifiez index.html

Coopération entre CloudFront et S3

Plus vous recherchez, plus vous trouverez de matériaux, je vais donc l'omettre. Vérifiez si S3 est accessible et affiché dans le navigateur via le domaine CloudFront Terminé une fois affiché

Vous avez maintenant une demande → CloudFront → S3 C'est la préparation Lambda @ Edge est pris en sandwich ici

Lambda@Edge Commencez par créer la ** région (celle à côté du nom d'utilisateur connecté) Virginie, puis ** créez la fonction Lambda

Faire du contenu de Lambda ce

lambda_function.py


import json

def lambda_handler(event, context):

    print('# lambda@edge start')
    print(event)

#En cas de réponse à l'origine de la réponse du spectateur, décommentez
#    cfResponse = event['Records'][0]['cf']['response']
#    return cfResponse

#En cas de demande d'origine de la demande de spectateur, décommentez ceci
#    cfRequest = event['Records'][0]['cf']['request']
#    return cfRequest

・ Lambda @ Edge a des paramètres requis pour la demande et la réponse, sinon une erreur se produira.

Après avoir confirmé que la version est DERNIÈRE, sélectionnez Action → Déployer sur Lambda @ Edge Définissez l'ID CloudFront créé dans la distribution Vous pouvez déployer en définissant l'événement Lambda @ Edge que vous souhaitez définir dans l'événement CloudFront et en cliquant sur Déployer

Puisqu'il s'agit d'un CDN, il existe des zones où la distribution de contenu n'est pas terminée depuis un certain temps même s'il est déployé La livraison est terminée si l'état passe de En cours à déployé sur la console CloudFront. Il semble que l'achèvement lui-même ait été livré en quelques minutes à assez, ou en 1 à 3 minutes au Japon.

Maintenant, si vous regardez le journal d'exécution Lambda de CloudWatch Logs, vous devriez voir le journal que vous avez écrit dans le code. Tout ce que vous avez à faire est de déboguer ce que vous voulez faire avec Lambda @ Edge et de l'implémenter dans Lambda.

À propos du journal Lambda @ Edge (important)

Notez que les journaux CloudWatch de Lambda @ Edge sont écrits dans différents groupes selon la classification suivante (le plus accro) ** Journal des tests exécutés depuis la console ** Région: Virginie Objectif de sortie: pour chaque fonction ** Journal Lambda s'exécutant sur Lambda @ Edge ** Région; Région consultée (presque Tokyo au Japon) Objectif de sortie: pour chaque fonction ** Journal Lambda @ Edge exécuté sur Lambda @ Edge ** Région; Région consultée (presque Tokyo au Japon) Cible de sortie: pour chaque cible de sortie associée à Lambda @ Edge

J'espère que ce mémo aidera quelqu'un, y compris moi-même

Recommended Posts

Un mémo lors de la création d'un environnement qui peut être débogué avec Lambda @ Edge pour le moment
Un mémo lors de la création d'un environnement python avec miniconda
Comprendre les probabilités et les statistiques qui peuvent être utilisées pour la gestion des progrès avec un programme python
À propos du fait que le résumé de la torche peut être vraiment utilisé lors de la construction d'un modèle avec Pytorch
Remarques lors de la création d'un environnement avec python
[Python] Code qui peut être écrit avec la mort cérébrale au début lors du scraping en tant que débutant
Classe pour PYTHON qui peut être utilisée sans connaître LDAP
Faire un histogramme pour le moment (matplotlib)
Utilisez Logger avec Python pour le moment
J'ai joué avec Floydhub pour le moment
Commandes pour créer un environnement python3 avec virtualenv
Notes sur la création d'un environnement python par les débutants
[Windows] Le problème qu'une erreur survient lors de l'ouverture d'un fichier autre que CP932 (Shift-JIS) encodé en Python a été résolu pour le moment.
Bibliothèques à inclure lors de la création d'API dans l'environnement Django Rest Frakework, extensions vscode, etc. (pour les débutants)
[Python] Construire un environnement pour la programmation de compétition avec Atom (input () peut être utilisé!) [Mac]
J'essaierai de résumer les liens qui me semblent utiles pour le moment
Jusqu'à ce que vous puissiez installer Blender et l'exécuter avec python pour le moment
Un mémo que j'ai touché au magasin de données avec python
Créer une liste lorsque la nomenclature est pour une certaine période de temps
Le mémo le plus court pour créer un environnement python qui prend moins de 5 minutes pour fonctionner.
À propos du contenu de wscript lors de la création d'un environnement en langage D comme celui avec Waf
Créer un environnement qui se construit automatiquement avec Github Actions (version Android)
Précautions à prendre lors de la construction d'un environnement PYTHON
J'ai étudié le prétraitement qui peut être fait avec PyCaret
Faisons un diagramme sur lequel on peut cliquer avec IPython
Je veux créer un Dockerfile pour le moment.
J'ai créé une fonction pour vérifier si le webhook est reçu dans Lambda pour le moment
[Python] Un programme qui trouve le nombre maximum de jouets pouvant être achetés avec votre argent
[Python] Créez un graphique qui peut être déplacé avec Plotly
Précautions lors de la création d'un tableau à deux dimensions avec toutes les mêmes valeurs
Créez une Spinbox qui peut être affichée en binaire avec Tkinter
Changez le package à installer pour chaque environnement avec de la poésie
Un minuteur (ticker) qui peut être utilisé sur le terrain (peut être utilisé n'importe où)
J'ai fait un shuffle qui peut être réinitialisé (inversé) avec Python
Lors de la création d'un environnement qui utilise python django sur Ubuntu 12.04 LTS
Créez un graphique des devises qui peut être déplacé avec Plotly (2)
Pour le moment, je veux convertir n'importe quel fichier avec ffmpeg !!
Créez une Spinbox pouvant être affichée dans HEX avec Tkinter
Créez un graphique des devises qui peut être déplacé avec Plotly (1)
Un mémo pour quand pip3 est installé avec python2.7 pour une raison quelconque
À propos du fait que l'objet recompilé peut être utilisé pour le modèle re.match
Points à surveiller lors de la création d'un environnement Python sur un Mac
J'ai créé un modèle de projet Python générique
Défiez la classification des images avec TensorFlow2 + Keras CNN 1 ~ Bougez pour le moment ~
Le panneau Web LXC qui peut faire fonctionner LXC avec un navigateur était merveilleux
Créez une application Web qui peut être facilement visualisée avec Plotly Dash
Notez que l'environnement Python de Pineapple peut être modifié avec pyenv
Optimisation mathématique pour un travail gratuit avec Python + PuLP
[Mémo Python] Soyez prudent lors de la création d'un tableau à deux dimensions (liste de listes)
J'ai fait une simple minuterie qui peut être démarrée depuis le terminal
Impressions et mémorandum lors de la première utilisation de VScode
Une note utile lors de l'utilisation de Python après une longue période
Faites attention au type lorsque vous créez un masque d'image avec Numpy
[Python3] Code qui peut être utilisé lorsque vous souhaitez découper une image dans une taille spécifique
[Python] Création d'un outil qui peut lister, sélectionner et exécuter des fichiers python avec tkinter et à propos de la partie qui a été interceptée
L'histoire qui n'avait rien à voir avec la partition lorsque j'ai fait une sauvegarde de disque avec dd pour la première fois
Article qui peut être une ressource humaine qui comprend et maîtrise le mécanisme de l'API (avec du code Python)
[Python3] Code qui peut être utilisé lorsque vous souhaitez modifier l'extension d'une image à la fois