FlaskアプリとsqlalchemyアプリをAWSラムダとAPIゲートウェイに移行してサーバーレスにする方法を理解するのに役立つ優れたリソースを見つけることができません。たとえば、以下のように、flask_sqlalchemyドキュメントから取得したサンプルコードがあります。
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:////tmp/test.db'
db = SQLAlchemy(app)
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(80), unique=True, nullable=False)
email = db.Column(db.String(120), unique=True, nullable=False)
def __repr__(self):
return '<User %r>' % self.username
このコードをAWSlambdaに移行するにはどうすればよいですか。それも可能ですか。たとえば、線app = Flask(__name__)
はそこにあるべきではありませんか?アプリ変数がない場合、db変数をどのように初期化しますか?
誰かが私にこれらの概念をクリアする良いチュートリアルへのイントロやリンクを教えてもらえますか?
よろしくお願いします。
まず、AWS Lambdaでは、ルーティングにFlaskを使用しなくなりました。代わりに、ルーティングにAWS APIGatewayを使用してください。https://apievangelist.com/2017/10/23/a-simple-api-with-aws-dynamodb-lambda-and-api-gateway/からのルーティングの例を以下に示します。
写真の右端にあるように、「Lambda」ボックスには、アップロードしたLambda関数の名前が表示されます。PythonのLambdaについては、https: //docs.aws.amazon.com/lambda/latest/dg/python-programming-model-handler-types.htmlを参照してください。
基本的に、Pythonラムダの主なものは次のとおりです。
def handler_name(event, context):
...
return some_value
イベントとコンテキストから、パス、HTTPメソッド、ヘッダー、パラメーター、本文など、すべてを取得できます(などflask.request
)。また、Lambdaを実行するにはLAMBDAとLAMBDA_PROXYの2つの方法があることを知っておく必要があるかもしれません(最初の図のIntegration Requestボックスを参照)。
短いバージョンの違いは次のとおりです。
event
ます。SQL Alchemyに関しては、すべてのSQL Alchemyライブラリコードとその依存関係をLambda関数と一緒に圧縮し、Lambdaコンソールにアップロードするだけです。変更なしで機能します。
Lambda関数にはファイルシステムアクセスがないため、SQLiteはLambdaでは機能しないことに注意してください。データを別の場所(Amazon RDS(MySQL、PostgreSQLなど)など)に配置してから、LambdaがRDSデータベースと同じVPC(Amazon内部ルーター)に接続されていることを確認する必要があります。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加