[PYTHON] Une histoire que Qiita voulait vraiment voir dans un environnement proxy

Contexte

** Dans l'entreprise pour laquelle je travaille, je ne peux pas accéder à Qiita à cause d'un proxy. ** **

Quand j'écoute l'histoire lors d'une session d'étude, j'entends qu'il existe une entreprise avec un environnement étonnamment similaire. Mais par tous les moyens ** "Je veux voir Qiita dans l'entreprise !!" **

Un jour, lorsque j'ai consulté une personne qui assistait à une session d'étude AWS, j'ai eu une bonne idée. Récemment, j'étudiais AWS, alors je l'ai implémenté.

Vue d'ensemble

Le flux simple du service créé consiste à extraire les informations de page du Qiita que vous souhaitez voir et à le déplacer vers un endroit accessible depuis l'entreprise. Au fait, si vous ne pouvez pas accéder à AWS depuis votre entreprise, vous êtes absent.

Service utilisé

Cette fois, nous utilisons trois services principaux sur AWS. Une explication détaillée de chaque service est omise.

Constitution

image.png

  1. GET demande à l'API qui accepte l'URL de la page Qiita que vous souhaitez voir comme paramètre de requête
  2. Transmettez les paramètres de requête (URL Qiita) à Lambda
  3. Accédez à la page Qiita de Lambda et obtenez le Markdown
  4. Markdown → Convertir en HTML et enregistrer en tant que contenu statique dans S3
  5. Réponse avec l'URL de destination de l'objet S3 comme destination de la redirection
  6. Redirection vers S3

La demande serait la suivante lors de la consultation de l'article à https://qiita.com/guromityan/items/5846fcefd87abcf76f7f. Dans target, spécifiez l'URL de l'article que vous souhaitez voir.

https://<API Gateway>.ap-northeast-1.amazonaws.com/previewQiita?target=https://qiita.com/guromityan/items/5846fcefd87abcf76f7f

La réponse ressemble à ceci:

{
  "statusCode": 301,
  "headers": {
    "Location": "https://<S3 Bucket>.s3-ap-northeast-1.amazonaws.com/guromityan/5846fcefd87abcf76f7f"
  }
}

En raison de "" sutatusCode ": 301", le navigateur qui le reçoit redirigera vers l'URL spécifiée dans l'en-tête "Location". La destination de la transition est une page qui expose l'objet S3 converti de Markdown en html en tant que contenu statique.

Au fait, j'ai créé une extension Chrome et réécrit l'URL de Qiita pour accéder automatiquement à l'API Gataway. J'écrirai cette histoire un jour.

manière

Ce dont je voulais parler cette fois, c'est que j'ai une telle idée, je vais donc omettre l'explication sur la façon de configurer les services AWS.

Le code source de Lambda est publié sur [GitHub] guromityan / previewQiita, donc si vous voulez le faire, veuillez l'utiliser.

** [Attention] ** Pour l'utiliser avec Lambda, vous devez compresser les bibliothèques dépendantes ensemble, alors supprimez les bibliothèques dépendantes localement avec docker-compose build.

Recommended Posts

Une histoire que Qiita voulait vraiment voir dans un environnement proxy
Une histoire qui rend le débogage de modèle plus facile à voir dans l'environnement Django + SQLAlchemy
Comment utiliser pip3 sous un environnement proxy Remarque
Une histoire à laquelle j'étais accro chez np.where
Docker sous environnement proxy
Créons un environnement Docker qui stocke les informations de tendance Qiita!
[Python] Une histoire qui semblait tomber dans un piège à contourner
Une histoire à laquelle j'étais accro à appeler Lambda depuis AWS Lambda.
J'ai essayé de créer un environnement serveur qui fonctionne sous Windows 10
Une histoire qui avait du mal à traiter en boucle 3 millions de données d'identification
Installation de Pip (Windows) sous environnement Proxy
Lorsque pip échoue dans un environnement proxy
Une histoire accro aux pipelines Azure
Tableau de référence rapide sous environnement Proxy
Une histoire qui visualise le présent de Qiita avec Qiita API + Elasticsearch + Kibana
Notez que l'environnement Python de Pineapple peut être modifié avec pyenv
Utilisez la commande pip dans un environnement proxy HTTP qui nécessite une authentification
Une histoire qui a souffert d'une différence de système d'exploitation lors de la tentative d'implémentation d'un article