After you configure an Apsara File Storage NAS (NAS) mount target for a service in Function Compute, you can write code in a function of the service to access files in the NAS file system the same way as you do in an on-premises file system. This topic provides sample function code that is used to read data from and write data to a NAS file system.

Prerequisites

Create a function that writes data to NAS

  1. Log on to the Function Compute console. In the left-side navigation pane, click Services & Functions.
  2. In the top navigation bar, select a region. On the Services page, click the desired service.
  3. On the Functions page, click the name of the desired function.
  4. On the function details page, click the Code tab to write code in the code editor.
    The following sample code uses Python 3 as an example.
    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    
    import random
    import subprocess
    import string
    import os
    
    def handler(event, context):
      # report file system disk space usage and check NAS mount target
      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)
        content = "NAS here I come"
        os.mkdir(new_dir)
        fw = open(new_dir + file_name, "w+")
        fw.write(content)
        fw.close()
        # Showing the folder tree in 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))
      return 'success'
    
    def randomString(n):
      return ''.join(random.SystemRandom().choice(string.ascii_uppercase + string.digits) for _ in range(n))                     

Create a function that read data from NAS

  1. Log on to the Function Compute console. In the left-side navigation pane, click Services & Functions.
  2. In the top navigation bar, select a region. On the Services page, click the desired service.
  3. On the Functions page, click the name of the desired function.
  4. On the function details page, click the Code tab to write code in the code editor.
    The following sample code uses Python 3 as an example.
    # -*- coding: utf-8 -*-
    
    def handler(event, context):
    
        f = open("/mnt/test/test.txt", "r")
    
        print(f.readline())
        f.close()
        return 'ok'
    The result of the execution of this function is the content written by the function created in Create a function that writes data to NAS.