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

Function Compute:NAS ファイルシステムの設定

最終更新日:Jun 22, 2026

Function Compute (FC) では、複数のアプリケーションや関数が同じデータセットへのアクセスを共有する必要がある場合があります。たとえば、機械学習アプリケーションでは、トレーニング済みモデルを複数の推論関数間で共有する必要があります。関数に NAS ファイルシステムを設定して、このデータを保存できます。これにより、ファイル共有が可能になり、データ管理が簡素化され、ローカルディスク容量の制限を克服できます。関数に NAS ファイルシステムを設定すると、FC 関数はローカルファイルシステム上のファイルと同じように NAS ファイルの読み書きができます。

前提条件

  • Function Compute

    関数は作成済みで、VPC にアクセスできるよう設定されている必要があります。詳細については、「関数の作成」および「ネットワーク設定」をご参照ください。

    説明

    NAS マウントターゲットは VPC 内でのみ追加できます。そのため、NAS ファイルシステムが存在する特定の VPC にアクセスするように、関数のネットワーク設定を構成する必要があります。

  • File Storage NAS

    NAS ファイルシステムを作成し、マウントターゲットを追加しておく必要があります。詳細については、「ファイルシステムの作成」および「マウントターゲットの追加」をご参照ください。

制限

  • Function Compute では、1 つの関数で、同一リージョン内の最大 5 つの NAS マウントターゲットと 5 つの Object Storage Service (OSS) マウントターゲットをサポートします。

  • NAS と OSS のマウントターゲットのローカルディレクトリは競合してはなりません。

NAS ファイルシステムの設定

  1. Function Compute コンソールにログインします。左側のナビゲーションペインで、関数管理 > 関数リストを選択します。

  2. 上部のナビゲーションバーで、リージョンを選択します。 関数リスト ページで、対象の関数をクリックします。

  3. 関数の詳細ページで、設定 タブを選択し、詳細設定 の横にある 変更 をクリックします。詳細設定 パネルで ストレージ セクションに移動し、NAS ファイルシステムのマウントを有効にし、必要な設定を構成してから、デプロイ をクリックします。

    NAS ファイルシステムは、自動設定 または カスタム設定 のいずれかを使用して設定できます。

    自動設定

    システムは、Alibaba-Fc-V3-Component-Generated という名前の汎用 NAS ファイルシステムと、同じ名前の VPC、vSwitch、セキュリティグループを自動的に作成します。

    同じリージョンで 自動設定 を再度使用すると、システムは NAS ファイルシステムと VPC 設定を新規作成するのではなく、既存のものを再利用します。 料金の詳細については、「VPC の課金」および「汎用 NAS の課金」をご参照ください。

    カスタム設定

    NAS ファイルシステムを手動で選択し、ユーザー、ユーザーグループ、マウントターゲットなどのパラメータを設定する必要があります。

    次の表で主要なパラメータについて説明します。

    パラメータ

    説明

    [NAS ファイルシステム]

    既存の NAS ファイルシステムを選択します。

    NAS ファイルシステムを作成するには、NAS ファイルシステムの作成 をクリックし、ファイルストレージコンソールで作成します。

    重要

    NFS プロトコルを使用する NAS ファイルシステムのみをサポートしています。SMB プロトコルを使用する NAS ファイルシステムはサポートされていません。

    01d394****

    [ユーザー]、[ユーザーグループ]

    カスタムユーザー ID とユーザーグループ ID を指定します。指定しない場合、デフォルトで root ユーザー (UID=0 および GID=0) が設定されます。詳細については、「NAS ユーザーとユーザーグループ」をご参照ください。

    1

    [リモートディレクトリ]

    • 汎用 NAS ファイルシステムの場合、このディレクトリは / で始まる必要があります。

    • エクストリーム NAS ファイルシステムの場合、このディレクトリは /share で始まる必要があります。

    リモート NAS に指定されたディレクトリが存在しない場合、Function Compute が自動的にそのディレクトリを作成します。 作成されたディレクトリは、指定したユーザーおよびユーザーグループが所有者となり、777 の権限が付与されます。

    詳細については、「リモートディレクトリ」をご参照ください。

    /

    [関数ローカルディレクトリ]

    /home/mnt/tmp、または /data のサブディレクトリを使用することを推奨します。

    説明

    /bin/opt/var/dev などの一般的な Linux および Unix システムディレクトリやそのサブディレクトリに NAS ファイルシステムをマウントしないでください。マウントに失敗することがあります。

    詳細については、「関数のローカルディレクトリ」をご参照ください。

    /mnt/nas

    説明
    • 複数の関数間で NAS リソースを共有するには、各関数に同じユーザーとユーザーグループを設定します。

    • NAS に書き込まれるファイルは、関数内でローカルに作成されるファイルと同じ権限になります。

マウントの確認

NAS にアクセスする関数コードの準備

NAS ファイルシステムを設定したら、マウント用に指定したローカルディレクトリパスを使用して、コード内でアクセスできます。

  1. 関数詳細ページで、コード タブをクリックします。コードエディターでコードを記述し、デプロイメントコード をクリックします。

    このトピックでは、Python イベント駆動型関数を例として使用します。このコードは、NAS ファイルシステムにコンテンツを書き込み、そのファイルシステムからコンテンツを読み取ります。

    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    
    import random
    import subprocess
    import string
    import os
    
    def handler(event, context):
        # ファイルシステムのディスク容量使用状況を表示し、NAS マウントターゲットを確認
        out, err=subprocess.Popen(['df', '-h'], stdout=subprocess.PIPE).communicate()
        print('disk: ' + str(out))
        lines = [ l.decode() for l in out.splitlines() if str(l).find(':') != -1 ]
        nas_dirs = [ x.split()[-1] for x in lines ]
        print('uid : ' + str(os.geteuid()))
        print('gid : ' + str(os.getgid()))
    
        for nas_dir in nas_dirs:
            sub_dir = randomString(16)
            file_name = randomString(6)+'.txt'
            new_dir = nas_dir + '/' + sub_dir + '/'
            print('test file: ' + new_dir + file_name)
            # NAS ファイルに書き込み
            content = "NAS here I come"
            os.mkdir(new_dir)
            fw = open(new_dir + file_name, "w+")
            fw.write(content)
            fw.close()
            # NAS マウント上のディレクトリツリーを表示
            for home, dirs, files in os.walk(nas_dir):
                level = home.replace(nas_dir, '').count(os.sep)
                indent = ' ' * 2 * (level)
                print('{}{}/'.format(indent, os.path.basename(home)))
                subindent = ' ' * 2 * (level + 1)
                for f in files:
                    print('{}{}'.format(subindent, f))
            # NAS ファイルから読み取り
            f = open(new_dir + file_name, "r")
            print(f.readline())
            f.close()
        
        return 'success'
    
    def randomString(n):
        return ''.join(random.SystemRandom().choice(string.ascii_uppercase + string.digits) for _ in range(n))
      

結果の確認

  1. コードがデプロイされた後、コード タブで 関数のテスト をクリックします。

    実行が完了すると、コード タブの下部で結果を確認できます。ログ出力 タブでは、関数が NAS ファイルへの書き込みと読み取りに成功したことを確認できます。

    C9JFL0.txt
    DCFIC887M7R74WYH/
    5CXI5H.txt
    H0630SH2QHPL9MHZ/
    EUV7ZA.txt
    H4UNM032L2TDLPPQ/
    YXDBPM.txt
    HYMF79FH11AYW66D/
    LU3WNG.txt
    Z3QNEH0MY0K3VM6G/
    9D3FM2.txt
    fc-1/
    modelscope-60c13a-model-download-func/
    NAS here I come
    FC Invoke End RequestId: 1-66878b18-16cd285c-27f5980efe23
  2. (オプション) 関数の実行後、インスタンスにログインして、関数のローカルディレクトリ内のファイルを表示し、ログ出力と一致することを確認できます。

    1. 関数詳細ページで、インスタンス タブをクリックします。 対象のインスタンスの 操作 列で、インスタンスに接続 をクリックします。

      実行中のインスタンスがない場合は、コード タブで 関数のテスト をクリックして関数を再度実行し、インスタンスを作成します。

    2. インスタンスにログインしたら、コマンドを実行して、設定した関数のローカルディレクトリ内のファイルを表示できます。

      root@c-668b4cff-xxx:/code# cd /mnt/nas
      root@c-668b4cff-xxx:/mnt/nas# ls
      0Q0V5ZYWMW7SLUYV  BVT5FA0OV9ZLIZMU  DCFIC887M7R74WYH  F8I2CGH79QQGPZKC  HO63OSH2QHPL9MHZ  H4UNM032L2TDLPPQ  HYMF79FH11AYW66D  KEDRGMD67X64A6FD  Z3QNEH0MY0K3VM6G  fc-1  modelscope-60c13a-model-download-func
      root@c-668b4cff-xxx:/mnt/nas# cd ../
      root@c-668b4cff-xxx:/mnt# cd nas/Z3QNEH0MY0K3VM6G
      root@c-668b4cff-xxx:/mnt/nas/Z3QNEH0MY0K3VM6G# ls
      9D3FM2.txt
      root@c-668b4cff-xxx:/mnt/nas/Z3QNEH0MY0K3VM6G#

関連概念

NAS ユーザーとユーザーグループ

UserID と GroupID の値は 0 から 65534 の範囲で指定できます。これらの値を指定しない場合、両方ともデフォルトで 0 に設定され、それぞれ root ユーザー ID と root グループ ID に対応します。一貫した読み書きアクセスを確保するために、必要に応じてファイルの所有者と対応するグループ権限を設定する必要があります。たとえば、複数の関数で NAS ファイルリソースを共有する場合は、これらの関数の NAS ファイルシステムを設定する際に、同じユーザーとユーザーグループを使用する必要があります。

リモートディレクトリと関数のローカルディレクトリ

NAS ファイルシステムをマウントすると、関数の環境内の関数ローカルディレクトリが、NAS ファイルシステム内のリモートディレクトリにマッピングされます。

  • [リモートディレクトリ]

    リモートディレクトリは、NAS ファイルシステム上のディレクトリパスです (例: /workspace/document)。このパスは、マウントターゲット (例: xxxx-nas.aliyuncs.com) と組み合わされて、マウント用の完全なアドレスとなります。完全なマウントソースは xxxx-nas.aliyuncs.com:/workspace/document のようになります。

    マウントターゲットを見つけるには、NAS コンソールにログインし、お使いのファイルシステムをクリックしてから、[マウントの使用状況]をクリックします。

  • [関数ローカルディレクトリ]

    関数のランタイム環境内のローカルディレクトリは、ローカルファイルシステム上のマウントポイントとして機能します。/home/mnt/tmp、または /data のサブディレクトリを使用することを推奨します。/bin/opt/var/dev などの一般的な Linux および Unix システムディレクトリやそのサブディレクトリに NAS ファイルシステムをマウントしないでください。

関連ドキュメント

  • FC は、File Storage NAS、Object Storage Service (OSS)、一時ディスク、レイヤーなど、複数のストレージタイプをサポートしています。これらのストレージタイプのユースケースと違いを理解するには、「関数のストレージタイプの選択」をご参照ください。

  • 画像、動画、ドキュメントなどの大量の非構造化データを保存する場合は、Object Storage Service (OSS) の使用を推奨します。詳細については、「OSS マウントターゲットの設定」をご参照ください。

  • Serverless Devs を使用して NAS ファイルシステムを関数にマウントすることもできます。詳細については、「一般的な Serverless Devs コマンド」をご参照ください。