Zappaを使うと、AWS Lambda上にてウェブアプリをお手軽にDeployさせることができます。おちラボで動かしているのはFlaskのアプリなんですが、1つだけ問題が。。。。
ディレクトリ階層に余分なprefixがつく問題
ZappaでアップロードしたURLには、/dev/みたいな余分なURL(Stageという概念ですね)が付いちゃいます。これはAPI Gatewayの仕様らしく、回避不能のようです。api的な使い方だったら別にそれを前提にしておけばいいんですが、アプリとしてDeployする場合、アプリ内で自身の別URLを呼ぶ場合に都合が悪くなります。例えば、
- (ローカル環境)/update
- (Lambda環境) /dev/update
というふうに、”/dev”みたいなstage表記がもれなく付いてきます。静的にURLを記述しちゃうとローカルで動くけどLambdaにデプロイするとURLがNot foundでエラーになったりするわけです。
解決策:動的にURLを定義する
まあ、当たり前の解決策なんですが、実行環境に合わせて動的に定義するしかないです。例えば以下のようにosの環境を調べておいてからstageを渡すという方法ですね。下記の場合は、ローカルがWindows環境を想定していますので、まあLambdaのOSがWindowsなわけがないので(Amazon Linuxのはず)、これでOKでしょう。
0 件のコメント:
コメントを投稿