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

File Storage NAS:Function Compute 関数へのファイルシステムのマウント

最終更新日:Sep 12, 2026

File Storage NAS (NAS) は Function Compute とシームレスに連携します。関数に NAS ファイルシステムを設定することで、ローカルファイルシステム上のファイルと同じように NAS ファイルにアクセスできます。これにより、永続ストレージが提供され、ローカルディスク容量の制限が解消され、異なる関数インスタンス間でファイルデータを共有できるようになります。このトピックでは、関数に NAS ファイルシステムを設定する方法について説明します。

前提条件

制限

  • Function Compute 関数は、単一リージョンで最大 5 つの NAS マウントターゲットをサポートします。

  • 関数のランタイム環境で NAS マウントターゲットに指定されたローカルディレクトリは、競合してはなりません。

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 上に存在しない場合、FC は自動的に作成します。新しいディレクトリの所有者は指定したユーザーとユーザーグループになり、権限として 777 が付与されます。

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

    /

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

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

    説明

    /bin、/opt、/var、/dev など、一般的な Linux および Unix のシステムディレクトリやそのサブディレクトリは使用しないでください。使用した場合、マウントが失敗する可能性があります。

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

    /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 のユーザーとユーザーグループ

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

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

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

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

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

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

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

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

関連ドキュメント

Function Compute で NAS を使用するシナリオとストレージタイプ間の違いの詳細については、「関数のストレージタイプの選択」をご参照ください。