[PYTHON] Ich habe versucht, AWS Chalice zu verwenden

Überblick

Es ist ein Framework, das automatisch AWS Gateway-Einstellungen und IAM-Rollen ab AWS Lambda bereitstellen kann.

:ought_balloon: Ich habe versucht, ein Framework zu finden, mit dem eine Webanwendung mit Lambda mit explosiver Geschwindigkeit erstellt werden kann.

Ich habe es versucht

1. 1. Installation

$ pip install chalice

2. Legen Sie die AWS-Anmeldeinformationen fest

Sie müssen ~ / .aws / config`` ~ / .aws / credentials konfigurieren. (Bitte beachten Sie andere Artikel)

3. 3. Erstellen Sie ein neues Projekt

$ chalice new-project handson
$ cd handson

4. Bestätigung des erstellten Projekts

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

app.py ist das Hauptprogramm.

from chalice import Chalice

app = Chalice(app_name='handson')

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

An die Methode wird ein Decoder angehängt, und der im Argument festgelegte Pfad wird zur API-Gateway-Einstellung.

@app.route('/XXX')

5. Lokaler Start


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

Wenn Sie eine Anfrage in einem anderen Terminal senden, wird die als Gegenleistung für app.py festgelegte Zeichenfolge zurückgegeben.

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

6. Bereitstellung in 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/

Bei der Bereitstellung wird (1) IAM-Rolle (2) Lambda (3) API-Gateway erstellt und angehängt.

Wenn Sie die Bühneneinstellung ändern möchten, müssen Sie sie zu .chalice / config.json hinzufügen

.chalice/config.json


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

Bereitstellung durch Angabe der Stufe

$ 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. Löschen Sie die bereitgestellte

$ chalice delete
$ chalice delete --stage prod

Löschen Sie die durch die Bereitstellung erstellte (in diesem Fall diese drei IAM-Rollen, Lambda, API-Gateway).

Da Stage sowohl dev als auch prod bereitstellt, führen wir einen Befehl aus, um sie zu löschen.

Impressionen

Im Fall von aws + python ist dies sehr praktisch. Außerdem freue ich mich auf immer mehr Dienstleistungen. Danach gibt es verschiedene Charis-Methoden, die gerundet sind. Die Lernkosten scheinen also niedriger zu sein als beim serverlosen Framework.

Punkte der Besorgnis

Referenz

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

Ich habe versucht, AWS Chalice zu verwenden
Ich habe versucht, parametrisiert zu verwenden
Ich habe versucht, Mimesis zu verwenden
Ich habe versucht, anytree zu verwenden
Ich habe versucht, aiomysql zu verwenden
Ich habe versucht, Summpy zu verwenden
Ich habe versucht, Coturn zu verwenden
Ich habe versucht, Pipenv zu verwenden
Ich habe versucht, Matplotlib zu verwenden
Ich habe versucht, "Anvil" zu verwenden.
Ich habe versucht, Hubot zu verwenden
Ich habe versucht, ESPCN zu verwenden
Ich habe versucht, openpyxl zu verwenden
Ich habe AWS CDK ausprobiert!
Ich habe versucht, Ipython zu verwenden
Ich habe versucht, PyCaret zu verwenden
Ich habe versucht, Cron zu verwenden
Ich habe versucht, ngrok zu verwenden
Ich habe versucht, face_recognition zu verwenden
Ich habe versucht, Jupyter zu verwenden
Ich habe versucht, doctest zu verwenden
Ich habe versucht, Folium zu verwenden
Ich habe versucht, jinja2 zu verwenden
Ich habe AWS Iot ausprobiert
Ich habe AWS Chalice berührt
Ich habe versucht, Folium zu verwenden
Ich habe versucht, das Zeitfenster zu verwenden
Ich habe versucht, die Detect Labels-API von AWS Rekognition zu verwenden
Ich habe versucht, easydict (Memo) zu verwenden.
Ich habe versucht, das Gesicht mit Face ++ zu erkennen
Ich habe versucht, RandomForest zu verwenden
Ich habe versucht, BigQuery ML zu verwenden
Ich habe versucht, Amazon Glacier zu verwenden
Ich habe versucht, Git Inspector zu verwenden
Ich habe versucht, Magenta / TensorFlow zu verwenden
Ich habe versucht, Slack Emojinator zu verwenden
Ich habe versucht, mit AWS Lambda einen AMI zu erhalten
Ich habe versucht, Rotrics Dex Arm # 2 zu verwenden
Ich habe versucht, Rotrics Dex Arm zu verwenden
Ich habe versucht, GrabCut von OpenCV zu verwenden
Ich habe versucht, Thonny (Python / IDE) zu verwenden.
Ich habe versucht, mit PyBrain verstärkt zu lernen
Ich habe versucht, mit Theano tief zu lernen
Ich habe irgendwie versucht, ein Jupyter-Notebook zu verwenden
[Kaggle] Ich habe versucht, mit unausgeglichenem Lernen zu unterabtasten
Ich habe versucht, die checkio-API zu verwenden
Ich habe versucht, asynchrone Verarbeitung mit Asyncio
[AWS] Ich habe versucht, EC2, RDS, Django zu verwenden. Umweltbau ab 1
Ich habe versucht, Amazon SQS mit Django-Sellerie zu verwenden
Ich habe versucht, Azure Speech to Text zu verwenden.
Ich habe versucht zu kratzen
Ich habe versucht, ○ ✕ mit TensorFlow zu spielen
Ich habe versucht, YOUTUBE Data API V3 zu verwenden
Ich habe versucht, Selen mit Headless-Chrom zu verwenden
Ich habe versucht, mit einer Schildkröte eine Linie zu ziehen
[Kaggle] Ich habe versucht, Ensemble mit LightGBM zu lernen
Ich habe versucht, PyEZ und JSNAPy zu verwenden. Teil 2: Ich habe versucht, PyEZ zu verwenden