Tous les produits
Search
Centre de documentation

Function Compute:Configurer un montage OSS

Dernière mise à jour :Sep 29, 2026

Object Storage Service (OSS) est un service de stockage cloud massif, sécurisé, économique et hautement fiable. Vous pouvez monter un compartiment OSS sur Function Compute, ce qui permet à votre fonction d'interagir avec OSS comme s'il s'agissait d'un système de fichiers local. Cette approche simplifie l'accès aux ressources et les flux de travail de traitement des données.

Limites

  • Une fonction Function Compute prend en charge jusqu'à cinq cibles de montage NAS et cinq cibles de montage OSS dans la même région.

  • Les répertoires locaux des cibles de montage NAS et OSS doivent être uniques au sein de l'environnement d'exécution de la fonction.

    Pour plus d'informations sur la configuration des cibles de montage NAS, consultez Configurer un système de fichiers NAS.

Prérequis

Procédure

Étape 1 : Configurer une cible de montage OSS

  1. Connectez-vous à la console Function Compute. Dans le volet de navigation de gauche, choisissez Function Management > Functions.

  2. Dans la barre de navigation supérieure, sélectionnez une région. Sur la page Functions, cliquez sur le nom de la fonction cible.

  3. Sur la page des détails de la fonction, cliquez sur l'onglet Configuration. Cliquez sur Advanced Settings à droite de Modify. Dans le panneau Advanced Settings, repérez la section Storage, activez l'option Mount OSS, configurez les paramètres, puis cliquez sur Deploy.

    Paramètre

    Description

    Exemple

    OSS Mount Target : Configurez la cible de montage OSS.

    Compartiment

    Sélectionnez un compartiment existant. Pour en créer un nouveau, cliquez sur Create OSS Bucket afin d'ouvrir la console OSS. Pour obtenir des informations sur les frais associés à OSS, consultez Présentation de la facturation OSS.

    example-bucket

    Bucket Subdirectory

    Spécifiez un sous-répertoire dans le compartiment. Il doit s'agir d'un chemin absolu. Si vous laissez ce champ vide ou le définissez sur /, le répertoire racine du compartiment est monté.

    /files

    OSS Endpoint

    Lorsque vous sélectionnez un compartiment, le système choisit automatiquement son endpoint. Vous pouvez sélectionner Custom Endpoint pour modifier l'adresse de l'endpoint. Pour obtenir la liste des endpoints OSS par région, consultez Régions et endpoints.

    Remarque
    • Si le compartiment et votre fonction Function Compute se trouvent dans la même région, utilisez un endpoint interne.

    • Si le compartiment se trouve dans une autre région, utilisez un endpoint public. Cela entraîne des frais de transfert de données sortantes.

    Default Endpoint

    Local directory of a function

    Spécifiez un répertoire local dans l'environnement d'exécution de la fonction. Le répertoire doit être un sous-répertoire de /home, /mnt ou /data.

    /mnt/oss

    Permissions on the local directory of the function

    Sélectionnez les autorisations pour le répertoire local. Vous pouvez choisir Read-only ou Read and Write.

    Lecture/écriture

    Remarque

    La fonctionnalité de montage OSS dépend de la configuration réseau de la fonction. Si votre fonction est configurée pour accéder uniquement à un VPC et que l'option Allow Default NIC to Access Internet est définie sur No, la fonction doit pouvoir accéder à Internet via le VPC spécifié pour utiliser un endpoint OSS public. Pour plus de détails, consultez Configurer une adresse IP publique statique.

Étape 2 : Accéder aux fichiers du répertoire monté

Après avoir configuré la cible de montage OSS, vous pouvez accéder aux fichiers du répertoire monté comme s'ils étaient locaux.

  1. Sur la page des détails de la fonction, cliquez sur l'onglet Code. Saisissez votre code dans l'éditeur, puis cliquez sur Deploy.

    Le code suivant fournit un exemple.

    import os
    
    def handler(event, context):
        # Mount directory
        mount_path = '/mnt/oss'
        
        # List files in the mount directory
        files = os.listdir(mount_path)
        print("Files in OSS mount:", files)  
        # Read a specific file from the mount directory
        file_path = os.path.join(mount_path, 'example.txt')
        if os.path.exists(file_path):
            with open(file_path, 'r') as file:
                content = file.read()
                print("Content of example.txt:", content)
        else:
            print("example.txt does not exist.")
        # Write a file to the mount directory
        write_path = os.path.join(mount_path, 'output.txt')
        with open(write_path, 'w') as file:
            file.write("Hello, OSS mount!")
            print("Wrote to output.txt in OSS mount.")
        
        return "Function execution completed."
      
    Remarque

    Dans le code, remplacez example.txt par le nom d'un fichier réel existant dans votre répertoire OSS monté.

  2. Une fois le code déployé, cliquez sur Code dans l'onglet Test Function.

    Une fois l'exécution terminée, vous pouvez consulter les résultats en bas de l'onglet Code. L'onglet Log Output affiche le contenu du fichier example.txt lu depuis le répertoire OSS. Vous pouvez également vous rendre dans la console OSS pour vérifier que le fichier output.txt a bien été écrit dans le répertoire monté correspondant.

FAQ

Erreur de montage OSS : bucket not found

Vérifiez que l'endpoint d'accès OSS et le nom du compartiment sont corrects.

Erreur de montage OSS : host resolv error ou deadline exceeded

Vérifiez que l'adresse de l'endpoint est correcte.

  • L'erreur host resolv error se produit si l'adresse de l'endpoint ne peut pas être résolue.

  • Les endpoints internes ne peuvent pas être utilisés entre différentes régions. L'utilisation d'un endpoint interne pour une fonction située dans une autre région provoque un délai de connexion dépassé, entraînant l'erreur deadline exceeded.

Erreur de montage : invalid credentials

Vérifiez que le rôle RAM configuré pour votre fonction dispose des autorisations nécessaires pour accéder à OSS. Pour plus de détails, consultez Accorder à une fonction des autorisations d'accès à d'autres services cloud via un rôle de fonction. Les autorisations requises sont les suivantes :

  • Read-only : Nécessite les autorisations oss:ListObjects et oss:GetObject.

  • Read and Write : Nécessite les autorisations oss:ListObjects, oss:GetObject, oss:PutObject, oss:DeleteObject, oss:ListParts et oss:AbortMultipartUpload.

Remarque

L'action oss:ListObjects s'effectue au niveau du compartiment. Par conséquent, lorsque vous accordez l'accès à un compartiment spécifique, la stratégie d'autorisation doit inclure un ARN de ressource au niveau du compartiment, tel que acs:oss:*:*:bucketName. Pour plus d'informations, consultez Ressource OSS.

Input/output error lors de la lecture des fichiers montés.

Vérifiez la classe de stockage de votre compartiment OSS. Si la classe de stockage est Archive ou Cold Archive, les objets du compartiment sont gelés et doivent être restaurés avant de pouvoir y accéder. Définissez la classe de stockage de votre compartiment OSS sur Standard.

Comment afficher les fichiers dans le répertoire local

  1. Sur la page des détails de la fonction, cliquez sur l'onglet Instance. Dans la liste des instances à l'état Running, sélectionnez une instance et cliquez sur Connect to Instance dans la colonne Actions.

  2. Une fois connecté à l'instance, vous pouvez exécuter des commandes pour afficher les informations sur les fichiers du répertoire local configuré. Par exemple :

    root@sr-65b30dd4-4f47295574cd41849c5f:/code# cd /mnt/oss
    root@sr-65b30dd4-4f47295574cd41849c5f:/mnt/oss# ls
     my.zip   output.txt  's (1).yaml'   下载.html   下载.json
    root@sr-65b30dd4-4f47295574cd41849c5f:/mnt/oss# cd ../
    root@sr-65b30dd4-4f47295574cd41849c5f:/mnt# ls
    oss
    root@sr-65b30dd4-4f47295574cd41849c5f:/mnt#

Erreur d'accès à la cible de montage : Transport endpoint is not connected

Cette erreur se produit lorsque la fonctionnalité de montage OSS échoue en raison d'une mémoire insuffisante, ce qui peut être causé par des spécifications de mémoire faibles ou une utilisation élevée de la mémoire. Augmentez la spécification de mémoire de votre fonction en fonction de vos besoins métier. Un minimum de 512 Mo est recommandé lors de l'utilisation d'une cible de montage OSS.

Persistance des données dans les répertoires de fonction

Les données écrites dans le répertoire d'une fonction sont supprimées lorsque l'instance de fonction est détruite. Pour garantir la persistance des données, vous pouvez monter un système de fichiers NAS ou un compartiment OSS. Pour plus de détails, consultez Configurer un système de fichiers NAS et Configurer un montage OSS.

Accès en lecture seule pour un compartiment

Développer pour afficher un exemple de stratégie d'autorisation. Remplacez bucketName dans l'exemple par le nom de votre compartiment. Pour plus d'informations, consultez Présentation des stratégies RAM.

{
  "Version": "1",
  "Statement": [
    {
      "Action": [
        "oss:ListObjects",
        "oss:GetObject"
      ],
      "Resource": [
        "acs:oss:*:*:bucketName",
        "acs:oss:*:*:bucketName/*"
      ],
      "Effect": "Allow"
    }
  ]
}

Accès en lecture/écriture pour un compartiment

Développer pour afficher un exemple de stratégie d'autorisation. Remplacez bucketName dans l'exemple par le nom de votre compartiment. Pour plus d'informations, consultez Présentation des stratégies RAM.

{
  "Version": "1",
  "Statement": [
    {
      "Action": [
        "oss:ListObjects",
        "oss:GetObject",
        "oss:PutObject",
        "oss:DeleteObject",
        "oss:AbortMultipartUpload",
        "oss:ListParts"
      ],
      "Resource": [
        "acs:oss:*:*:bucketName",
        "acs:oss:*:*:bucketName/*"
      ],
      "Effect": "Allow"
    }
  ]
}

Accès en lecture seule pour un sous-répertoire

Développer pour afficher un exemple de stratégie d'autorisation. Remplacez bucketName par le nom de votre compartiment et bucketPath par le sous-répertoire spécifique. Pour plus d'informations, consultez Présentation des stratégies RAM.

{
  "Version": "1",
  "Statement": [
    {
      "Action": "oss:ListObjects",
      "Effect": "Allow",
      "Resource": [
        "acs:oss:*:*:bucketName"
      ],
      "Condition": {
        "StringLike": {
          "oss:Prefix": [
            "bucketPath/*"
          ]
        }
      }
    },
    {
      "Action": [
        "oss:GetObject"
      ],
      "Effect": "Allow",
      "Resource": [
        "acs:oss:*:*:bucketName/bucketPath/*"
      ]
    }
  ]
}

Accès en lecture/écriture pour un sous-répertoire

Développer pour afficher un exemple de stratégie d'autorisation. Remplacez bucketName par le nom de votre compartiment et bucketPath par le sous-répertoire spécifique. Pour plus d'informations, consultez Présentation des stratégies RAM.

{
  "Version": "1",
  "Statement": [
    {
      "Action": "oss:ListObjects",
      "Effect": "Allow",
      "Resource": [
        "acs:oss:*:*:bucketName"
      ],
      "Condition": {
        "StringLike": {
          "oss:Prefix": [
            "bucketPath/*"
          ]
        }
      }
    },
    {
      "Action": [
        "oss:GetObject",
        "oss:PutObject",
        "oss:DeleteObject",
        "oss:AbortMultipartUpload",
        "oss:ListParts"
      ],
      "Effect": "Allow",
      "Resource": [
        "acs:oss:*:*:bucketName/bucketPath/*"
      ]
    }
  ]
}

Les fichiers apparaissent vides lors des opérations d'écriture

Lorsque vous écrivez dans un fichier via une cible de montage OSS, le système télécharge généralement le contenu vers OSS uniquement après que vous avez explicitement appelé la méthode flush() ou fermé le fichier.

Performances lentes pour la compression ou le transfert de fichiers

OSS ne prend pas nativement en charge les API de système de fichiers. Lorsque vous montez un compartiment OSS en tant que répertoire, Function Compute émule le comportement des API de système de fichiers en combinant et en encapsulant les API OSS. Par exemple, comme OSS ne prend pas en charge les écritures aléatoires, la modification d'un fichier existant sur une cible de montage OSS oblige Function Compute à télécharger l'intégralité du fichier source depuis OSS, à le modifier, puis à le retélécharger.

Les performances sont généralement bonnes pour les opérations où les API de système de fichiers correspondent directement aux fonctions d'API OSS, telles que les lectures et écritures séquentielles de fichiers. Cependant, les opérations nécessitant la combinaison de plusieurs API OSS, comme les opérations de lecture et d'écriture aléatoires utilisées dans la compression ou la décompression de fichiers, impliquent de nombreuses interactions avec OSS et sont donc plus lentes que sur un système de fichiers local.

Synchronisation entre les instances de fonction

Non. Les instances de fonction sont indépendantes les unes des autres, de sorte que l'accès à une cible de montage OSS n'est pas synchronisé entre elles. Par exemple, si l'instance A crée un fichier dans la cible de montage, l'instance B pourrait ne pas voir ce fichier immédiatement.