さくらのクラウドにAppRun がβリリースされました。
せっかくなので触ってみようと思い、触れてみましたが、今回はログが見えないと言う反応も見ていたので書いていきます。
リリース直後はお知らせに「失敗」になるケースがあるって書いてあったのでそれも含め原因わからんなーとなった人も多いかと思います。私もログないしわからんなーと思いました。
なので、いろいろドキュメントを読もうとAPIドキュメントも読んでみたら、statusを取れるAPIがあり、responseには、messageの中にエラーが入ってるいることに気がつきました。
該当のAPIは↓のリンクです。
manual.sakura.ad.jp
実際にAPIで確認すると、statusとmessageが入ったresponseが返ってきます。
{
"status": "UnHealthy",
"message": "Component is exited: Container failed with: failed to start containerd task \"6b98748c392605b3b3b29336f1854c5136d4d4f706b6c5f711d0d24d5aa29270\": OCI runtime start failed: starting container: starting sub-container [python app.py]: creating process: failed to load /usr/local/bin/python: exec format error: unknown: starting container: starting sub-container [python app.py]: creating process: failed to load /usr/local/bin/python: exec format error\n"
}
このpythonの exec format errorは、
buildするときに --platformを指定してbuildあげれば解消するもので、F&Qにも書かれているやつです。サポート | さくらのクラウド マニュアル
原因がわかるとのはとても助かりますね。
docker build --platform linux/amd64 -t my-app .
docker imageを直してデプロイして問題なければ以下のように表示されるし、APIでみたステータスもUnHealthyからHealthyになります。

{
"status": "Healthy",
"message": ""
}
デプロイに時間かかったりするので、statusをAPIで確認することもできます。
{
"status": "Deploying",
"message": ""
}
まとめ
ログが見えないっていうのがネックになるっていうのはよくわかります。
自分もブラウザで見れると便利だと思うしログはみたいと思ってます。
ですが、今はまだAPIでしか見れないので、AppRunでステータスが失敗になり最初の1歩で躓いてしまった人が、「ワカラナイ...」って状態からAPIを使って抜け出すきっかけになると嬉しいです。
今回確認に使ったコード
hello worldって返すだけのflaskのアプリです。
github.com