はじめに
この記事は SAP Advent Calendar 2020 の12月15日分の記事として執筆しています
今回は、Phthon で WebAPI を作成して、CF環境上で動かしてみたいと思います。
python歴3日くらいでも WebAPI が作成できました。
STEP 1: WebAPI を Python で作ろう
今回のプログラムで使用するモジュールのインストール準備をします。
まずは、一括インストール用に「requirements.txt」を準備します。
このファイルを利用すると、異なる環境間でのPython パッケージを管理し
必要に応じてインストールすることが出来ます。
Flask==0.12.2
flask-cors
requirements.txt を保存後は、python の パッケージ管理ソフトを使用して
必要なモジュールのインストールをします。
$ pip install -r requirements.txt
CF環境で使用するPython のバージョンを指定します。
python-3.6.12
CF環境のデプロイ定義ファイルを作成します。
<アプリ名> には、CF環境へデプロイ時のアプリケーション名を指定します。
applications:
- name: <アプリ名>
path: .
memory: 256M
command: python server.py
WebAPI をPython で作りたいと思います。
以下にコードを記載しています。
import os
import json
import pickle
from flask import Flask, request, abort
from flask_cors import CORS
app = Flask(__name__)
CORS(app)
port = int(os.environ.get('PORT', 3000))
@app.route('/')
def hello():
return "Hello World"
@app.errorhandler(404)
def error_not_found(error):
result = "{\"message\": \"pickle file not found\"}"
return result, 404
if __name__ == '__main__':
app.run(host='0.0.0.0', port=port)
STEP 2: CF環境へデプロイ
CF環境へ作成したプログラムをデプロイします。
ここでは、トライアル環境へアップしてみます。
実行環境を指定してログインします。
$ cf api <APIエンドポイント>
ここで指定する は、SAP Cloud Platform Cockpit から確認出来ます。
接続に成功すると、email とパスワードで認証が入ります。
登録した email とパスワードを使用してログインします。
ここで指定する <組織> も、SAP Cloud Platform Cockpit から確認出来ます。
デプロイ先のCF環境が指定できましたので、CF環境へデプロイします。
cf push <アプリ名>
STEP 3: 実行
デプロイに成功すると、SAP Cloud Platform Cockpit にアプリケーションが追加され
Status が RUNNING
と表示されています。
では、作成したAPIを実行しましょう。
Application Routes に記載された URL をクリックします。
今回は '/' へアクセスすると動くように作成しているので
成功すると以下のような画面が表示されます。
最後に
今回は Python3.6.12 を使用していますが、CF環境で利用できる PHPのバージョンは変動するようです。
過去に自分が試作したときは、Python3.5.10 を使用していたのですが
今回の投稿に向けて、CF環境へ同じプログラムのデプロイを試みようとしたところ、Python3.5.10 は利用出来なくなっていました。
あまり古いバージョンのPythonは、利用しないほうが良いかもしれません。
参考URL