4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【SAP CP】CF環境にpythonで作るWebAPI

Last updated at Posted at 2020-12-14

はじめに

この記事は SAP Advent Calendar 2020 の12月15日分の記事として執筆しています

今回は、Phthon で WebAPI を作成して、CF環境上で動かしてみたいと思います。
python歴3日くらいでも WebAPI が作成できました。

STEP 1: WebAPI を Python で作ろう

今回のプログラムで使用するモジュールのインストール準備をします。

まずは、一括インストール用に「requirements.txt」を準備します。
このファイルを利用すると、異なる環境間でのPython パッケージを管理し
必要に応じてインストールすることが出来ます。

requirements.txt
Flask==0.12.2
flask-cors

requirements.txt を保存後は、python の パッケージ管理ソフトを使用して
必要なモジュールのインストールをします。

$ pip install -r requirements.txt

CF環境で使用するPython のバージョンを指定します。

runtime.txt
python-3.6.12

CF環境のデプロイ定義ファイルを作成します。
<アプリ名> には、CF環境へデプロイ時のアプリケーション名を指定します。

manifest.yml
applications:
- name: <アプリ名>
  path: .
  memory: 256M
  command: python server.py

WebAPI をPython で作りたいと思います。
以下にコードを記載しています。

server.py
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 から確認出来ます。

image.png

接続に成功すると、email とパスワードで認証が入ります。
登録した email とパスワードを使用してログインします。

image.png

接続先の組織を指定します。
image.png

ここで指定する <組織> も、SAP Cloud Platform Cockpit から確認出来ます。

デプロイ先のCF環境が指定できましたので、CF環境へデプロイします。

cf push <アプリ名>

STEP 3: 実行

デプロイに成功すると、SAP Cloud Platform Cockpit にアプリケーションが追加され
Status が RUNNING と表示されています。

image.png

では、作成したAPIを実行しましょう。
Application Routes に記載された URL をクリックします。

今回は '/' へアクセスすると動くように作成しているので
成功すると以下のような画面が表示されます。

image.png

最後に

今回は Python3.6.12 を使用していますが、CF環境で利用できる PHPのバージョンは変動するようです。
過去に自分が試作したときは、Python3.5.10 を使用していたのですが
今回の投稿に向けて、CF環境へ同じプログラムのデプロイを試みようとしたところ、Python3.5.10 は利用出来なくなっていました。
あまり古いバージョンのPythonは、利用しないほうが良いかもしれません。

参考URL

4
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?