DEVELOPER BLOG

開発者ブログ

HOME > 開発者ブログ > 【クラウド入門】PythonとFlaskでRestful APIを開発する - PrismScaler

【クラウド入門】PythonとFlaskでRestful APIを開発する - PrismScaler

1. はじめに

こんにちは!株式会社Definerのライターチームです! 今回は、PythonとFlaskでRestful APIを開発する方法について気になりますよね。 実際の画面や、資源を見ながら詳しく解説していきましょう。

2. 目的・ユースケース

この記事では、FlaskでRestful APIを作成したいときに、参考になる情報やプラクティスをまとめています。

3. Restful APIとは

まず、Restful APIについておさらいします。   Restful APとは、以下を満たすAPIのことです。 ・Client-Server (クライアントとサーバーの分離) ・Stateless (ステートレス性) ・Cache (キャッシュ可能性) ・Uniform Interface (統一されたインターフェース) ・Layered System (階層化されたシステム・アーキテクチャー)   例えば、HTTPベースのREST APIについて実例を見ていきます。 ・URIベースのエンドポイントでリソースを決める 例 api/user_listなら、ユーザ一覧が対応   ・HTTPメソッドでリソースの操作を決める 例 POSTなら、リソースを追加   HTTPベースのREST APIは、上記の条件を満たします。

4. 設定ファイルの準備

まずは、Lambdaのセットアップをしていきます。 Lambda関数の作成に必要な、AWS SAMの設定ファイルを準備します。   ①設定ファイルの用意 以下のように、template.yamlとrequirements.txtを用意します。  
## template.yaml

AWSTemplateFormatVersion: '2010-09-09'
Transform: AWS::Serverless-2016-10-31

Resources:
  TestFunction:
    Type: AWS::Serverless::Function
    Properties:
      FunctionName: 'test'
      CodeUri: hello_world/
      Handler: app.lambda_handler
      Runtime: python3.9
      Events:
        ApiRoot:
          Type: Api
          Properties:
            Path: '/'
            Method: ANY
        ApiProxy:
          Type: Api
          Properties:
            Path: '/{proxy+}'
            Method: ANY
                
 
requirements.txtには、以下の三行を追記します。
requests
Flask
aws-wsgi                  

5. Lambdaの実装

続いて、Lambdaを実装していきます。   ①Lambdaサンプルコードの準備 以下のコードをapp.pyにコピペします。  
import awsgi
from flask import Flask, request, render_template
app = Flask(__name__)

@app.route('/hello', methods=['GET'])
def hello_get():
    return {'msg': 'hello world'}

def lambda_handler(event, context):
    return awsgi.response(app, event, context)                
 
②Lambdaのデプロイ
「sam build」「sam deploy」コマンドで、Lambdaをデプロイします。
 
③APIのテスト
APIのエンドポイントURLを控え、CurlコマンドでAPIコールします。
想定通りのレスポンスが戻ってきました!
 
## ビルド
sam build

## デプロイ
sam deploy --guided


## APIのテスト
curl -X GET https:/${APIエンドポイントURL}/${ステージ名}/hello

## テスト結果
{"msg":"hello world"}                  

6. 引用・参考記事

7. 独自ソリューション「PrismScaler」について

PrismScalerは、開発・運用を要さずにたった3ステップで、AWSやAzure、GCPなどのマルチクラウド基盤構築を実現するWebサービスです。 エンジニアの大変な作業を肩代わり ・自動構築 ・自動監視 ・構成可視化 クラウド基盤に関わる作業を以上のように効率化します。 SRE/DevOpsエンジニアが行う大変な作業を肩代わりします。 高品質な汎用クラウド基盤の実現 ・クラウド基盤構築/クラウド移行 ・クラウドの保守運用・コスト最適化 など幅広い利用シーンを想定しています。IaaSやPaaSを適切に組み合わせた数百を超える高品質な汎用クラウド基盤を容易に実現できます。 興味を持たれた方には、無料で資料を提供しております。 お気軽にご相談ください。

8. お問合せ

株式会社Definerでは、 ・ITの上流から下流まで一気通貫のワンストップソリューションをご提供。 ・AIやクラウドのITインフラなど、先進的なIT技術のコンサルティングから要件定義 / 設計開発 / 実装、保守運用に至るまでの統合的な支援にコミット。 ・少ないエンジニアで事業が成長する仕組みづくりの実現。 ・エンジニアが喜ぶ、採用しやすい環境づくりの実現。 ・高速なアジャイル開発環境の実現。 ・自社プロダクトとしてPrismScalerを展開。 上記事業内容を進行しております。 ※「開発者ブログ」では、エンジニアの入門編として有益な情報を無料公開しています。 ご相談やお問い合わせは「株式会社Definer」へ。

9. Definerに関して。

・ Definer Incは、ITの上流から下流まで一気通貫のワンストップソリューションをご提供しております。 ・ AIやクラウドのITインフラなど、先進的なIT技術のコンサルティングから要件定義 / 設計開発 / 実装、保守運用に至るまでの統合的な支援にコミットしています。 ・ DevOpsとCI/CDコンサルティングにより「少ないエンジニアで事業が成長する仕組みづくり」「エンジニアが喜ぶ、採用しやすい環境づくり」「高速なアジャイル開発環境」を実現しています。 ・ また、自社プロダクトとしてPrismScalerを展開しております。PrismScalerは、AWS、Azure、GCPなどのマルチクラウド / ITインフラの高品質かつ迅速な、「自動構築」「自動監視」「問題検知」「構成可視化」を実現します。