Cloud Run でのコード実行

Cloud Run を使用して AI エージェントをホストする主な利点は、安全な実行環境を使用してコードを分離することです。Cloud Run でコード サンドボックス ツールを構築し、コンテナで実行することで、任意のプログラミング言語を使用してアプリケーション コードを実行できます。

安全な 2 層サンドボックス

Cloud Run は、個々の VM と同等のハードウェアをベースにしたレイヤ(x86 仮想化)とソフトウェア カーネル レイヤからなる 2 つのサンドボックス レイヤを使用して、すべてのインスタンスを分離します。詳細については、セキュリティ設計の概要をご覧ください。

コードをデプロイすると、Cloud Run はコードをサンドボックス環境内に閉じ込めます。この分離により、大規模言語モデル(LLM)によって生成されたコードなど、信頼できないコードをより安全に実行できます。信頼できないコードを実行する場合は、Cloud Run サービスで IAM 権限を制限し、VPC ファイアウォール ルールを使用して、コードがインターネットに呼び出しを行うのを防ぎます。

コード実行モード

Cloud Run には、コード実行用に次のモードが用意されています。

  • 非同期実行: メインのアプリケーション フローを中断しないように、実行時間の長いタスクやバックグラウンド タスクには Cloud Run ジョブを使用してタスクを非同期で実行します。たとえば、Cloud Storage にコードをアップロードし、必要な依存関係をインストールしてから、結果を処理して Cloud Storage に保存する Cloud Run ジョブを実行します。

  • 同期実行: 即時応答が必要なプロセスには、Cloud Run サービスを使用します。Cloud Run サービスの最大タイムアウトは 1 時間です。これにより、コードを実行するのに十分な時間が確保されます。インスタンスが一度に 1 つのリクエストを処理するように制限するには、同時実行の値を 1 に設定します。リクエストの本文の一部として実行するコードを取得し、レスポンスで結果を返してから、コンテナ インスタンスを終了することもできます。

    次の図は、コード実行の 2 つのモードを示しています。

    非同期実行の場合、コードは Cloud Storage にアップロードされ、Cloud Run ジョブとして実行されます。ジョブは実行結果を Cloud Storage に送信して保存します。同期実行の場合、エージェントはリクエスト本文にコードを含めて Cloud Run サービスにリクエストを送信します。このサービスのタイムアウトは 1 時間で、同時実行数は 1 です。Cloud Run サービスはコードを処理してサービス インスタンスに送信し、サービス インスタンスはエージェントにレスポンスを返します。
    図 1. Cloud Run のコード実行モード

次のステップ