すべてのプロダクト
Search
ドキュメントセンター

Function Compute:Web 関数を使用した Web アプリケーションの作成

最終更新日:Apr 21, 2026

Function Compute の Web 関数を使用すると、Web アプリケーションや API サービスを簡単に構築できます。Web 関数は、Java SpringBoot、Python Flask、Node.js Express など、多くの一般的な言語の Web フレームワークと互換性があり、既存のアプリケーションを迅速に移行できます。Function Compute は、基盤となるコンピューティングリソースを管理します。ブラウザや URL を介してサービスにアクセスすると、システムは需要に応じてインスタンスを自動的にプロビジョニングし、スケーリングします。トラフィックがない場合、インスタンスは自動的に解放され、使用したリソースに対してのみ料金が発生します。

概要

このトピックでは、Function Compute の Web 関数を使用して Flask アプリケーションをデプロイする方法について説明します。全体的なプロセスは次のとおりです。

  1. Web アプリケーションの開発とテスト:サンプルコードを使用してローカルマシン上にプロジェクトを作成します。API コードを編集およびテストして、API が期待どおりに動作することを確認します。既存のアプリケーションを移行する場合は、このステップをスキップできます。

  2. コードパッケージの生成:必要な依存関係をローカルのプロジェクトディレクトリにインストールします。その後、プロジェクトを ZIP ファイルにパッケージ化して Function Compute にデプロイします。

  3. アプリケーションのアップロードとデプロイ:関数作成パラメーターを設定し、コードパッケージをアップロードして関数を作成します。

  4. Web 関数のテスト:Web 関数を呼び出して、Flask アプリケーションが期待どおりに実行されていることを確認します。

前提条件

Alibaba Cloud アカウントの作成

Alibaba Cloud アカウントを作成し、実名認証を完了します。

Function Compute の有効化

2024 年 8 月 27 日以降に Alibaba Cloud アカウントを登録し、実名認証を完了した場合、Function Compute を有効化せずに使用できます。初めて Function Compute コンソールにログインする際に、画面の指示に従って無料リソースパッケージを申請することもできます。詳細については、「無料トライアル」をご参照ください。

2024 年 8 月 27 日より前に Alibaba Cloud アカウントを登録した場合は、次の手順に従ってサービスを有効化してください。

  1. Function Compute 製品ページに移動します。

  2. [コンソール] をクリックして有効化ページを開きます。 今すぐ有効化する をクリックしてサービスを有効化し、Function Compute コンソールを開きます。

    説明
    • Alibaba Cloud アカウントを使用してサービスを有効化し、RAM ユーザーを使用して関数などのリソースを管理することを推奨します。最小権限の原則に基づいて RAM ユーザーに権限を付与できます。詳細については、「RAM ユーザーへの権限付与」をご参照ください。

  3. (任意) 初めて Function Compute コンソールにログインする際に、Alibaba Cloud サービスの承認 ダイアログボックスで OK をクリックして、サービスリンクロールを作成します。このロールにより、Function Compute が他のクラウドサービスにアクセスできるようになります。

    ロールが作成されると、Function Compute は VPC、ECS、Log Service (SLS)、Container Registry などの他のサービスからご利用のリソースにアクセスできるようになります。

操作手順

以下のいずれかの方法を使用して、Web 関数を作成し、コードをデプロイできます。

  • Function Compute コンソールで関数を作成する:この方法では、単一の関数を迅速に作成でき、軽量なアプリケーションの構築や迅速な検証に適しています。

  • Serverless Devs コマンドラインツールを使用する:この方法は、複雑な本番プロジェクトの管理や自動デプロイに適しています。YAML 設定ファイルを使用して、複数の関数とそれに関連するクラウドリソースを管理できます。詳細については、「クイックスタート」をご参照ください。

プロセスを簡略化するため、このトピックでは Function Compute コンソールで関数を作成する方法について説明します。

ステップ 1:アプリケーションの開発とテスト

説明

既存の Flask アプリケーションを移行する場合は、このステップをスキップしてステップ 2:コードパッケージの生成に進んでください。

  1. ローカルマシンで新しいコマンドラインウィンドウを開き、次のコマンドを実行して、必要な Flask および tabulate ライブラリをインストールします。

    pip install Flask tabulate
  2. code という名前のフォルダと、その中に app.py という名前のファイルを作成します。ファイルに次のサンプルコードを貼り付けます。このコードは、API としてパッケージ化されたシンプルなカレンダーサービスを実装します。この API は、2025 年 1 月などの年と月を受け取り、その月のカレンダーテーブルを返します。

    import calendar
    from flask import Flask, request
    from tabulate import tabulate
    import logging
    import json
    
    logger = logging.getLogger()
    app = Flask(__name__)
    
    
    @app.route("/", methods=["POST"])
    def get_month_calendar():
        # リクエスト ID を取得し、ログを出力します。
        requestId = request.headers.get('x-fc-request-id', '')
        logger.info("FC Invoke Start RequestId: " + requestId)
        # リクエストの内容を取得し、リクエストのフォーマットをチェックします。
        data = json.loads(request.stream.read().decode('utf-8'))
        if not ('year' in data and 'month' in data):
            message = "Request must be in format like {'year': '1999', 'month': '12'}"
            return message
    
        # カレンダーテーブルを取得します。
        result = print_calendar(year=int(data['year']), month=int(data['month']))
        # 結果が返される前に関数の実行が完了したことを示すログを出力します。
        logger.info("FC Invoke End RequestId: " + requestId)
        return result
    
    
    def print_calendar(year, month):
        # 指定された年月のカレンダーマトリックスを取得します。
        cal = calendar.monthcalendar(year, month)
        # その月に属さない日付を 0 から空の文字列に変更します。
        cal = list(map(lambda sublist: list(map(lambda x: '' if x == 0 else x, sublist)), cal))
        # テーブルヘッダーを作成します。
        headers = ["Mo", "Tu", "We", "Th", "Fr", "Sa", "Su"]
    
        # tabulate を使用してカレンダーテーブルを出力します。
        return tabulate(cal, headers=headers, tablefmt="grid", stralign='center', numalign='center')
    
    
    if __name__ == "__main__":
        app.run(host='0.0.0.0', port=9000)
    
  3. python3 app.py コマンドを実行して Flask アプリケーションを実行します。出力に Running on http://127.0.0.1:9000 が表示された場合、Flask アプリケーションは実行中です。その後、cURL コマンドを使用してアプリケーションをテストできます。

    python3 app.py 
     * Serving Flask app 'app'
     * Debug mode: off
    WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead.
     * Running on http://127.0.0.1:9000
     * Running on http://47.100.XX.XX:9000
    Press CTRL+C to quit
  4. 新しいターミナルウィンドウを開き、cURL を使用してサンプルリクエストを送信します。コマンドが成功すると、カレンダーテーブルが返されます。

    curl -X POST http://127.0.0.1:9000 -d '{"year": "2000", "month": "1"}'

    image

これで、プロジェクトをローカルで作成し、テストが完了しました。

ステップ 2:コードパッケージの生成

Function Compute に適したコードパッケージをローカルでビルドします。コードパッケージには、次の内容が含まれている必要があります。

  • Web アプリケーションに必要なプロジェクトファイル。

  • アプリケーションにランタイムに含まれていない依存関係がある場合は、それらをコードパッケージに追加する必要があります。ランタイムの組み込みの依存関係については、「組み込みの依存関係」をご参照ください。

  1. 依存関係のインストール:Web アプリケーションプロジェクトのルートディレクトリで、次のコマンドを実行して、必要な依存関係 (この例では tabulate) をそのディレクトリにインストールします。このコマンドは、プロジェクトのルートディレクトリに依存関係をインストールします。

    説明

    Python Web 関数ランタイムには、すでに Flask ライブラリが含まれています。サンプルアプリケーションを動作させるには、tabulate ライブラリのみをインストールする必要があります。

    pip install -t . tabulate
  2. プロジェクトのルートディレクトリにあるすべてのファイルをパッケージ化します。

    Linux または macOS

    プロジェクトのルートディレクトリで、zip code.zip -r ./* コマンドを実行します。このコマンドは、プロジェクトファイルと依存関係を ZIP ファイルにパッケージ化し、コードパッケージを作成します。

    説明

    ディレクトリに対する読み取りおよび書き込み権限があることを確認してください。

    Windows

    プロジェクトディレクトリに移動し、すべてのファイルを選択して右クリックし、ZIP ファイルにパッケージ化します。これにより、プロジェクトファイルと依存関係が ZIP ファイルにパッケージ化され、コードパッケージが作成されます。

ステップ 3:関数の作成とデプロイ

  1. Web 関数タイプの選択Function Compute コンソールにログインします。左側のナビゲーションウィンドウで、関数管理 > 関数リスト をクリックします。上部のナビゲーションバーで、関数を作成するリージョンを選択します。表示されたページで、関数を作成 をクリックし、画面の指示に従って Web 関数 を作成します。

  2. ランタイムの選択:次の図に示すように、カスタム実行時 を選択します。このランタイムには、Flask フレームワークで必要な依存関係が含まれています。image

    説明
    • Web 関数には カスタム実行時 を使用することを推奨します。カスタム実行時 を使用すると、起動コマンドとリッスンポートを指定でき、同時リクエスト処理をサポートします。組み込み実行時 はこれらの機能を提供せず、他のクラウドサービスによって生成されるイベントの処理により適しています。

    • コンテナ化されたデプロイを希望する場合は、カスタムイメージ を使用して Web 関数を作成できます。このランタイムも同時リクエスト処理をサポートしますが、依存関係はご自身で管理する必要があります。

    • ランタイムの詳細な比較については、「ランタイムの選択」をご参照ください。

  3. コードパッケージのデプロイ:図に示すように、ステップ 2 で作成した ZIP コードパッケージをアップロードします。起動コマンドを python3 app.py に、リッスンポートを 9000 に設定します。既存の Flask アプリケーションを移行する場合は、実際の起動コマンドとポートに基づいて設定を変更してください。たとえば、Flask のデフォルトポートは 5000 です。

    作成 をクリックし、関数が作成されるのを待ちます。image

ステップ 4:関数のテスト

  1. 関数 URL の取得:新しく作成された関数の詳細ページで、トリガー タブをクリックします。HTTP トリガーの設定で、パブリックエンドポイントをコピーします。

    テスト環境で認証が不要な場合は、HTTP トリガーの作成時または作成後に、トリガーの設定で 認証方法認証不要 に変更できます。

    image

  2. 関数のテスト:cURL、Postman、または任意の HTTP クライアントを使用して関数を呼び出し、Flask アプリケーションが期待どおりに動作することを確認できます。次の例では cURL コマンドを使用します。URL を前のステップでコピーしたエンドポイントに置き換えてください。

    curl https://******.cn-hangzhou.fcapp.run -d '{"year": "2025", "month": "1"}' 

    Web API は 2025 年 1 月のカレンダー情報を返します。以下は出力のサンプルです。

    image

    説明
    • デフォルトの HTTP トリガー設定を使用すると、コマンドは「MissingRequiredHeader」エラーを返します。テスト環境の場合、トリガーの 認証方法認証不要 に変更できます。

    • このステップのサンプルコマンドと出力は、サンプルコードにのみ適用されます。既存のアプリケーションを移行する場合は、実際の API 名とパラメーターに基づいてサービスを呼び出してください。詳細については、「cURL を使用した関数のテスト」をご参照ください。

  3. (任意) ブラウザからの関数へのアクセス:HTTP トリガーが提供するパブリックエンドポイントは、ブラウザで直接開くことができず (強制ダウンロードがトリガーされる場合があります)、テスト目的でのみ使用されます。ブラウザからのアクセスを有効にし、本番環境で使用するためには、関数にカスタムドメイン名をバインドすることを推奨します。詳細については、「カスタムドメイン名の設定」をご参照ください。

(任意) ステップ 5:リソースのクリーンアップ

Function Compute は従量課金制のサービスです。未使用の関数に対しては課金されません。ただし、OSS に保存されたデータや File Storage NAS、作成されたトリガーなど、関連するクラウドリソースに対して料金が発生する場合があります。

関数を削除する必要がある場合は、Function Compute コンソールにログインします。左側のナビゲーションウィンドウで、関数管理 > 関数リスト をクリックします。リージョンを選択します。対象の関数の 操作 列で、削除 をクリックします。表示されるダイアログボックスで、関数がトリガーなどのリソースにバインドされていないことを確認し、削除を確定します。

高度な操作

Web アプリケーションを Web 関数に作成してデプロイしたので、必要に応じて次の高度な操作を実行できます。

  • コンソールでのコード開発:このトピックでは、既存のアプリケーションの移行に役立つローカル開発に焦点を当てていますが、WebIDE を使用してデプロイを簡素化することもできます。この方法では、ローカルでコードパッケージを生成する必要がなく、迅速な開発イテレーションに適しています。詳細については、「WebIDE の使用」をご参照ください。

    説明

    WebIDE は Python、Node.js、PHP のみをサポートしています。Java や Go などの他の言語では、コンパイルおよびパッケージ化された ZIP ファイルまたはバイナリファイルのみをアップロードできます。

  • Serverless Application Center を使用したプロジェクトの継続的デプロイ:コードのビルドとデプロイ (CI/CD) を Function Compute に自動化するには、Serverless Application Center を使用します。詳細については、「Serverless Application Center を使用した既存の Function Compute プロジェクトの継続的デプロイメントの実装」をご参照ください。

  • ログ記録の設定:デバッグ、トラブルシューティング、またはセキュリティ監査を容易にするために、関数のログ記録を設定することを推奨します。詳細については、「ログ記録機能の設定」をご参照ください。

参考

さまざまな言語の依存関係パッケージの追加方法の詳細については、次のトピックをご参照ください。

Python

Python コードパッケージのデプロイ

Node.js

Node.js コードパッケージのデプロイ

Java

Java コードパッケージのコンパイルとデプロイ

Go

Go コードパッケージのコンパイルとデプロイ

C#

C# コードパッケージのコンパイルとデプロイ

PHP

PHP コードパッケージのデプロイ