[PYTHON] J'ai essayé d'utiliser AWS Chalice

Aperçu

Il s'agit d'un cadre qui peut déployer automatiquement les paramètres AWS Gateway et les rôles IAM à partir d'AWS Lambda.

: think_balloon: J'ai essayé de trouver un framework permettant de créer une application Web en utilisant Lambda à une vitesse explosive.

J'ai essayé de l'utiliser

1. 1. Installation

$ pip install chalice

2. Définir les informations d'identification AWS

Vous devez configurer ~ / .aws / config`` ~ / .aws / credentials. (Veuillez vous référer à d'autres articles)

3. 3. Créer un nouveau projet

$ chalice new-project handson
$ cd handson

4. Confirmation du projet créé

$ ls -1a
./
../
.chalice/
.gitignore
app.py
requirements.txt

app.py est le programme principal.

from chalice import Chalice

app = Chalice(app_name='handson')

@app.route('/')
def index():
    return {'hello': 'world'}

Un décodeur est attaché à la méthode et le chemin défini dans l'argument devient le paramètre API Gateway.

@app.route('/XXX')

5. Lancement local


$ chalice local
Serving on http://127.0.0.1:8000
Restarting local dev server.
Serving on http://127.0.0.1:8000

Si vous envoyez une requête dans un autre terminal, la chaîne définie en retour de app.py sera renvoyée.

$ curl http://127.0.0.1:8000/     
{"hello":"world"}

6. Déployer sur AWS

$ chalice deploy
Creating deployment package.
Creating IAM role: handson-dev
Creating lambda function: handson-dev
Creating Rest API
Resources deployed:
  - Lambda ARN: arn:aws:lambda:ap-northeast-1:012345678900:function:handson-dev
  - Rest API URL: https://xxxxxxxxx.execute-api.ap-northeast-1.amazonaws.com/api/

Une fois déployée, (1) le rôle IAM (2) lambda (3) API Gateway sera créé et attaché.

Si vous souhaitez modifier le paramètre de scène, vous devez l'ajouter à .chalice / config.json

.chalice/config.json


{
  "version": "2.0",
  "app_name": "chalicehandson",
  "stages": {
    "dev": {
      "api_gateway_stage": "api"
    },
    "prod": {
      "api_gateway_stage": "api-prod"
    }
  }
}

Déployer en spécifiant l'étape

$ chalice deploy --stage prod
Creating deployment package.
Reusing existing deployment package.
Creating IAM role: handson-prod
Creating lambda function: handson-prod
Creating Rest API
Resources deployed:
  - Lambda ARN: arn:aws:lambda:ap-northeast-1:01234567890000:function:handson-prod
  - Rest API URL: https://xxxxxxxxxx.execute-api.ap-northeast-1.amazonaws.com/api-prod/

7. Supprimer le déployé

$ chalice delete
$ chalice delete --stage prod

Supprimer celui créé par le déploiement (dans ce cas, ces trois rôles IAM, lambda, API Gateway)

Puisque Stage déploie à la fois dev et prod, nous exécutons une commande pour les supprimer.

Impressions

Dans le cas de aws + python, c'est très pratique. De plus, j'attends avec impatience de plus en plus de services. Après cela, il existe différentes méthodes charis et elles sont arrondies, il semble donc que le coût d'apprentissage soit inférieur à celui du framework sans serveur.

Points de préoccupation

référence

https://qiita.com/takeh/items/e52ad1c541a435e2b2e3 https://programmagick.com/blogs/aws_chalice_intro/ https://www.youtube.com/watch?v=u4LKbQZawaQ https://aws.github.io/chalice/index.html

Recommended Posts

J'ai essayé d'utiliser AWS Chalice
J'ai essayé d'utiliser paramétré
J'ai essayé d'utiliser la mimesis
J'ai essayé d'utiliser anytree
J'ai essayé d'utiliser aiomysql
J'ai essayé d'utiliser Summpy
J'ai essayé d'utiliser coturn
J'ai essayé d'utiliser Pipenv
J'ai essayé d'utiliser matplotlib
J'ai essayé d'utiliser "Anvil".
J'ai essayé d'utiliser Hubot
J'ai essayé d'utiliser ESPCN
J'ai essayé d'utiliser openpyxl
J'ai essayé AWS CDK!
J'ai essayé d'utiliser Ipython
J'ai essayé d'utiliser PyCaret
J'ai essayé d'utiliser cron
J'ai essayé d'utiliser ngrok
J'ai essayé d'utiliser face_recognition
J'ai essayé d'utiliser Jupyter
J'ai essayé d'utiliser doctest
J'ai essayé d'utiliser du folium
J'ai essayé d'utiliser jinja2
J'ai essayé AWS Iot
J'ai touché AWS Chalice
J'ai essayé d'utiliser du folium
J'ai essayé d'utiliser la fenêtre de temps
J'ai essayé d'utiliser l'API Detect Labels d'AWS Rekognition
J'ai essayé d'utiliser easydict (mémo).
J'ai essayé la reconnaissance faciale avec Face ++
J'ai essayé d'utiliser RandomForest
J'ai essayé d'utiliser BigQuery ML
J'ai essayé d'utiliser Amazon Glacier
J'ai essayé d'utiliser git inspector
J'ai essayé d'utiliser magenta / TensorFlow
J'ai essayé d'utiliser l'émojinateur Slack
J'ai essayé d'obtenir une AMI en utilisant AWS Lambda
J'ai essayé d'utiliser Rotrics Dex Arm # 2
J'ai essayé d'utiliser Rotrics Dex Arm
J'ai essayé d'utiliser GrabCut d'OpenCV
J'ai essayé d'utiliser Thonny (Python / IDE)
J'ai essayé l'apprentissage par renforcement avec PyBrain
J'ai essayé l'apprentissage en profondeur avec Theano
J'ai essayé d'utiliser le notebook jupyter d'une manière ou d'une autre
[Kaggle] J'ai essayé le sous-échantillonnage en utilisant un apprentissage déséquilibré
J'ai essayé d'utiliser l'API checkio
J'ai essayé le traitement asynchrone en utilisant asyncio
[AWS] J'ai essayé d'utiliser EC2, RDS, Django. Construction de l'environnement à partir de 1
J'ai essayé d'utiliser Amazon SQS avec django-celery
J'ai essayé d'utiliser Azure Speech to Text.
J'ai essayé de gratter
J'ai essayé de jouer au jeu ○ ✕ en utilisant TensorFlow
J'ai essayé d'utiliser l'API de données YOUTUBE V3
J'ai essayé d'utiliser du sélénium avec du chrome sans tête
J'ai essayé de dessiner une ligne en utilisant une tortue
[Kaggle] J'ai essayé l'apprentissage d'ensemble avec LightGBM
J'ai essayé d'utiliser PyEZ et JSNAPy. Partie 2: J'ai essayé d'utiliser PyEZ