【Cloud Run】関数デプロイでImportError: libexpat.so.1: cannot open shared object file: No such file or directory

こんにちは、フリーランスエンジニアの太田雅昭です。

Cloud Runでの関数デプロイ

Cloud FunctionsはCloud Run Functionsとリブランディングされました。しかしこの辺りまた整理がついていないのか、Cloud Run 関数と、Cloud Runで関数をデプロイするのとで、動作が違うようです。具体的には、以下の点で違いがあります。

  • Cloud Run 関数 => VPC接続が面倒
  • Cloud Runでの関数デプロイ => VPC接続が簡単

Cloud Run 関数では、VPC接続にサーバーレスVPCアクセスが必要となります。しかしCloud Runでの関数デプロイは必要ありません。これは朗報だと、Cloud Runでの関数デプロイをしようとしました。

No such file or directory

下記のrequirements.txtです。

functions-framework==3.*
youtube_transcript_api==0.6.3

この、youtube_transcript_apiをインポートすると、デプロイ時にエラーになりました。libexpat.so.1がないとのことです。これはrequirements.txtでは解決しない問題です。

ベースイメージを変更して解決

Python3.11を指定していたのですが、さらにベースイメージも選択できます。Ubuntu 22か、Ubuntu 22 Fullが選べます。これを、Ubuntu 22 Fullに変更することで、問題は解決しました。ふう。