AWSラムダおよびAPIゲートウェイでのFlasksqlalchemyアプリのデプロイ

user1867151

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/からのルーティングの例を以下に示します

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を実行するにはLAMBDALAMBDA_PROXYの2つの方法があることを知っておく必要があるかもしれません(最初の図のIntegration Requestボックスを参照)。

短いバージョンの違いは次のとおりです。

  • LAMBDAモードはリクエスト本文を自動的に前処理し、Lambda関数にPythonオブジェクトを提供しeventます。
  • LAMBDA_PROXYは生のHTTPリクエストを提供します。Lambda関数内でコンテンツを自分で変換する必要があります。

SQL Alchemyに関しては、すべてのSQL Alchemyライブラリコードとその依存関係をLambda関数と一緒に圧縮し、Lambdaコンソールにアップロードするだけです。変更なしで機能します。

Lambda関数にはファイルシステムアクセスがないためSQLiteLambdaでは機能しないことに注意してくださいデータを別の場所(Amazon RDS(MySQL、PostgreSQLなど)など)に配置してから、LambdaがRDSデータベースと同じVPC(Amazon内部ルーター)に接続されていることを確認する必要があります。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

ラムダのAWSゲートウェイマップパス

分類Dev

Windowsオーディオおよびビデオキャプチャソフトウェアパラダイム

分類Dev

プリローダーで画像をフェードインおよびフェードアウトします

分類Dev

特定のコマンドを追加せずに、ゲートウェイでwwanおよびwanのアップストリームのデフォルトインターネットを有効にする方法

分類Dev

CakePHP 3:1つのアプリで認証をフォームおよびダイジェスト

分類Dev

AndroidStudioのGoogleドライブにファイルをプログラムでアップロードおよびダウンロードする方法

分類Dev

.netコアWebアプリケーションプロジェクトを使用して、AzureでタイプAPIアプリのアプリサービスを開発およびデプロイします

分類Dev

AWSAPIゲートウェイ+ラムダ+ Nodejsを使用したプライベートおよびパブリックIP

分類Dev

AWS apiゲートウェイのデプロイでデプロイゾーンがグレー表示されるのはなぜですか?

分類Dev

AWSへのラムダアプリケーションのデプロイ

分類Dev

Google AppEngineアプリケーション-kleinマイクロウェブフレームワークで502の不正なゲートウェイエラー

分類Dev

プライベートサブネットでラムダ関数のプライベートAPIゲートウェイを作成する

分類Dev

階層と複数のオプションのドロップダウンリスト(HTML)およびアイテム間を移動する(子ノード)

分類Dev

チームプロジェクトのGitおよびTFVCリポジトリタイプは、チームプロジェクト専用ですか?

分類Dev

コマンドでハードドライブをシャットダウン/スリープおよびウェイクアップする方法は?

分類Dev

AWS APIゲートウェイステージを特定のラムダ関数エイリアスにポイントする方法は?

分類Dev

マイクロサービスベースのアーキテクチャにおけるアップストリームおよびダウンストリームサービスとは何ですか?

分類Dev

ロードおよびサイズ変更ウィンドウでのメディアクエリ動的アクティブ/無効化スクリプト

分類Dev

Muxミドルウェアおよびカスタムコンテキスト実装でのボイラープレートの削減

分類Dev

AWS-エラー504-ゲートウェイタイムアウト-Flaskアプリケーション

分類Dev

Unityプライベートアウェイクアップデートおよび開始メソッドはどのように機能しますか?

分類Dev

AWS APIゲートウェイ、同じ名前と異なるパラメーターで取得および投稿

分類Dev

Android 6.x(Marshmallow)でプログラムによる静的IPとゲートウェイの設定

分類Dev

Allegro 4.4ゲームプログラミングライブラリをズームインおよびズームアウトするにはどうすればよいですか?

分類Dev

最小限のダウンタイムでJava Webアプリケーションをデプロイするためのベストプラクティス?

分類Dev

リクエストボディ変数/アイテムに応じて異なるawsラムダを実行する方法(aws apiゲートウェイ)

分類Dev

SAMテンプレートを使用したAWSプロキシAPIゲートウェイでのIPホワイトリスト

分類Dev

Node.jsおよびnginxの504ゲートウェイタイムアウトnginx / 1.4.6(Ubuntu)

分類Dev

XNA(Windows)ゲームプロジェクトでのXNA(Windows)ゲームライブラリの使用

Related 関連記事

  1. 1

    ラムダのAWSゲートウェイマップパス

  2. 2

    Windowsオーディオおよびビデオキャプチャソフトウェアパラダイム

  3. 3

    プリローダーで画像をフェードインおよびフェードアウトします

  4. 4

    特定のコマンドを追加せずに、ゲートウェイでwwanおよびwanのアップストリームのデフォルトインターネットを有効にする方法

  5. 5

    CakePHP 3:1つのアプリで認証をフォームおよびダイジェスト

  6. 6

    AndroidStudioのGoogleドライブにファイルをプログラムでアップロードおよびダウンロードする方法

  7. 7

    .netコアWebアプリケーションプロジェクトを使用して、AzureでタイプAPIアプリのアプリサービスを開発およびデプロイします

  8. 8

    AWSAPIゲートウェイ+ラムダ+ Nodejsを使用したプライベートおよびパブリックIP

  9. 9

    AWS apiゲートウェイのデプロイでデプロイゾーンがグレー表示されるのはなぜですか?

  10. 10

    AWSへのラムダアプリケーションのデプロイ

  11. 11

    Google AppEngineアプリケーション-kleinマイクロウェブフレームワークで502の不正なゲートウェイエラー

  12. 12

    プライベートサブネットでラムダ関数のプライベートAPIゲートウェイを作成する

  13. 13

    階層と複数のオプションのドロップダウンリスト(HTML)およびアイテム間を移動する(子ノード)

  14. 14

    チームプロジェクトのGitおよびTFVCリポジトリタイプは、チームプロジェクト専用ですか?

  15. 15

    コマンドでハードドライブをシャットダウン/スリープおよびウェイクアップする方法は?

  16. 16

    AWS APIゲートウェイステージを特定のラムダ関数エイリアスにポイントする方法は?

  17. 17

    マイクロサービスベースのアーキテクチャにおけるアップストリームおよびダウンストリームサービスとは何ですか?

  18. 18

    ロードおよびサイズ変更ウィンドウでのメディアクエリ動的アクティブ/無効化スクリプト

  19. 19

    Muxミドルウェアおよびカスタムコンテキスト実装でのボイラープレートの削減

  20. 20

    AWS-エラー504-ゲートウェイタイムアウト-Flaskアプリケーション

  21. 21

    Unityプライベートアウェイクアップデートおよび開始メソッドはどのように機能しますか?

  22. 22

    AWS APIゲートウェイ、同じ名前と異なるパラメーターで取得および投稿

  23. 23

    Android 6.x(Marshmallow)でプログラムによる静的IPとゲートウェイの設定

  24. 24

    Allegro 4.4ゲームプログラミングライブラリをズームインおよびズームアウトするにはどうすればよいですか?

  25. 25

    最小限のダウンタイムでJava Webアプリケーションをデプロイするためのベストプラクティス?

  26. 26

    リクエストボディ変数/アイテムに応じて異なるawsラムダを実行する方法(aws apiゲートウェイ)

  27. 27

    SAMテンプレートを使用したAWSプロキシAPIゲートウェイでのIPホワイトリスト

  28. 28

    Node.jsおよびnginxの504ゲートウェイタイムアウトnginx / 1.4.6(Ubuntu)

  29. 29

    XNA(Windows)ゲームプロジェクトでのXNA(Windows)ゲームライブラリの使用

ホットタグ

アーカイブ